1 / 20

Sposoby implementacji podstawowych struktur dziedziczenia w Javie

Sposoby implementacji podstawowych struktur dziedziczenia w Javie. Wojtek Maykowski KArol Muszyński. Spis Treści. Wstęp (dziedziczenie, Java). Metody obejścia braku dziedziczenia. Disjoint, Complete. Overlapping. Incomplete. Dynamic. Wielodziedziczenie ( Multi Inheritance).

verena
Download Presentation

Sposoby implementacji podstawowych struktur dziedziczenia w Javie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related