sposoby implementacji podstawowych struktur dziedziczenia w javie n.
Skip this Video
Loading SlideShow in 5 Seconds..
Sposoby implementacji podstawowych struktur dziedziczenia w Javie PowerPoint Presentation
Download Presentation
Sposoby implementacji podstawowych struktur dziedziczenia w Javie

play fullscreen
1 / 20
Download Presentation

Sposoby implementacji podstawowych struktur dziedziczenia w Javie - PowerPoint PPT Presentation

verena
163 Views
Download Presentation

Sposoby implementacji podstawowych struktur dziedziczenia w Javie

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Sposoby implementacji podstawowych struktur dziedziczenia w Javie Wojtek Maykowski KArol Muszyński

  2. Spis Treści • Wstęp (dziedziczenie, Java). • Metody obejścia braku dziedziczenia. • Disjoint, Complete. • Overlapping. • Incomplete. • Dynamic. • Wielodziedziczenie ( Multi Inheritance). • Dziedziczenie Wieloaspektowe (Multi-Aspect).

  3. 1.1. Wstęp. Dziedziczenie - jest to związek pomiędzy nadklasą a podklasą, polegający na przenoszeniu cech z nadklasy do podklasy. Podklasa oprócz odziedziczonych cech (atrybuty, operacje) najczęściej posiada też własne elementy, co czyni ją bardziej wyspecjalizowaną. Agregacja - jest to asocjacja określająca związek „część – całość” pomiędzy klasami.

  4. 1.2. Wstęp. Java: • Klasa, a interfejs; • Słowa kluczowe: class, interface, abstract, extends, implements; Przyklady: Interface A{} public class B{} public class abstract Przykladowa extends B, implements A{}

  5. 2.1. Metody obejścia braku dziedziczenia. A Użycie jednej tabeli dla całego drzewa klas poprzez zsumowanie wszystkich występujących atrybutów i powiązań w tym drzewie oraz dodanie dodatkowego atrybutu - dyskryminatora wariantu. Użycie oddzielnych tabel dla każdej klasy konkretnej. Usunięcie klas abstrakcyjnych i przesunięcie ich atrybutów/powiązań do klas konkretnych. Użycie tabel dla każdej klasy. Zamiana dziedziczenia na powiązania łączące nadklasę ze wszystkimi podklasami. 1 A B C dyskr B C A 2 A B A C B C A A 3 0..1 0..1 B C B C

  6. 3. Disjoint i Complete. Osoba public abstract class Osoba{} public class Pracownik extends Osoba{} public class Student extends Osoba{} { disjoint } { complete } Student Pracownik

  7. 4.1. Overlapping. Osoba Osoba { overlapping} 0..1 0..1 Student Pracownik Student Pracownik

  8. 4.2. Overlapping. Osoba public class Osoba{ public Pracownik pracownik; public Student student; } public class Pracownik{ } public class Student{ } 0..1 0..1 Student Pracownik

  9. 5. Incomplete. Osoba public class Osoba{} public class Pracownik extends Osoba{} public class Student extends Osoba{} { incomplete } Student Pracownik {…}

  10. 6.1. Dynamic. Osoba Osoba << dynamic >> { XOR } 0..1 0..1 0..1 Pucybut Klepacz KieroProj Pucybut Klepacz KieroProj

  11. 6.2. Dynamic. Osoba public class Osoba{ public IZajecie izajecia; } public class Pucybut{} public class Klepacz{} public class KieroProj{} { XOR } 0..1 0..1 0..1 Pucybut Klepacz KieroProj << Interface >> IZajecie

  12. 7.1.1 Wielodziedziczenie (Multi Inheritance).Przykład 1 – Diagram. Osoba Osoba Student Pracownik 0..1 0..1 Student Pracownik Student/Pracownik

  13. 7.1.2. Wielodziedziczenie(Multi Inheritance). Przykład 1 – Przykladowy Kod. Osoba public class Osoba{ public Pracownik pracownik; public Student student; } public class Pracownik{} public class Student{} 0..1 0..1 Student Pracownik

  14. 7.2.1 Wielodziedziczenie (Multi Inheritance).Przykład 2 – Diagram. << interface >> Osoba << interface >> IStudiujacy IPracujacy Student Pracownik StudentPracownik

  15. 7.2.2. Wielodziedziczenie(Multi Inheritance).Przykład 2 – Przykladowy Kod. public abstract class Osoba{} public Interface IStudiujacy{} public Interface IPracujacy{} public class Pracownik extends Osoba implements IPracujacy{} public class Student extends Osoba implements IStudiujacy{} public class StudentPracownik extends Osoba implements IStudiujacy, IPracujacy{}

  16. 8.1.1. Dziedziczenie Wieloaspektowe (Multi-Aspect). Przykład 1 – Diagram. Osoba Mezczyzna Kobieta Katolik Satanista Satanistka Katoliczka << Interface >> IInaczejModlacySie << Interface >> IModlacySie

  17. 8.1.2. Dziedziczenie Wieloaspektowe (Multi-Aspect). Przykład 1 – Przykladowy Kod. public class abstract Osoba{} public Interface IModlacySie{} public Interface IInaczejModlacySie public class abstract Mezczyzna extends Osoba{} public class abstract Kobieta extends Osoba{} public class Satanista extends implements IInaczejModlacySie{} public class Katolik extends implements IModlacySie{} public class Satanistka extends implements IInaczejModlacySie{} public class Katoliczka extends implements IModlacySie{}

  18. 8.2.1. Dziedziczenie Wieloaspektowe (Multi-Aspect). Przykład 2 – Diagram. Wodny Łagodny typ usposobienie POKEMON Lądowy Neutralny Złośliwy Powietrzny 0..1 Wodny Łagodny 0..1 POKEMON Lądowy Neutralny 0..1 Złośliwy Powietrzny { XOR }

  19. 8.2.2. Dziedziczenie Wieloaspektowe (Multi-Aspect). Przykład 2 – Przykladowy Kod. 0..1 Łagodny Wodny 0..1 POKEMON Neutralny Lądowy 0..1 Złośliwy Powietrzny { XOR } public abstract class Pokemon{ public Lagodny lagodny; public Neutralny neutralny; public Zlosliwy zlosliwy; } public class Wodny extends Pokemon{} public class Lądowy extends Pokemon {} Public class Powietrzny extends Pokemon {}

  20. Materiały • Ewa Stemposz, Kazimierz Subieta - Wykłady do przedmiotu PRI; • Bruce Eckel - Thinking In Java; • http://www.ii.uib.no/Erolfwr/thesisdoc/ • G.Booch, J.Rumbaugh, I.Jacobson - UML przewodnik użytkownika WNT Warszawa 2002