1 / 21

Realizacja w Javie rodzajów dziedziczenia wykorzystywanych w UML.

Realizacja w Javie rodzajów dziedziczenia wykorzystywanych w UML. Tomasz Świerzyński Grzegorz Zadroga. Główne zagadnienia:. Definicja dziedziczenia. Perspektywa pojęciowej i projektowa. Omówienie elementów Javy wykorzystanych w referacie. Omówienie pojęcia interfejs. Rodzaje dziedziczenia:

heller
Download Presentation

Realizacja w Javie rodzajów dziedziczenia wykorzystywanych w UML.

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. Realizacja w Javie rodzajów dziedziczenia wykorzystywanych w UML. Tomasz Świerzyński Grzegorz Zadroga

  2. Główne zagadnienia: • Definicja dziedziczenia. • Perspektywa pojęciowej i projektowa. • Omówienie elementów Javy wykorzystanych w referacie. • Omówienie pojęcia interfejs. • Rodzaje dziedziczenia: • Disjoint • Overlapping • Complete • Incomplete • Multi-inheritance • Multi-aspect • Dynamiczne • Implementacja poszczególnych rodzajów dziedziczenia w Javie.

  3. Co to jest dziedziczenie? • Dziedziczenie czyli generalizacja lub specjalizacja jest związkiem pomiędzy klasami, łączącymi klasę bardziej ogólną (nadklasę) z jedną lub więcej klas (tzw. podklas) będących jej specjalizacjami. Klasa, będąca specjalizacją danej klasy, oprócz atrybutów nadklasy może posiadać (i z reguły posiada) też swoje atrybuty. Dziedziczenie inwariantów do klas jest tranzytywne (przechodnie).

  4. Przykład dziedziczenia:

  5. Perspektywa pojęciowa i projektowa • Elementy UML związane z przejściem z pojęciowej perspektywy na projektową perspektywę dziedziczenia. - asocjacja – jest to powiązanie ze sobą dwóch lub więcej klas. - agregacja - jest szczególnym rodzajem asocjacji wyrażającym zależność część-całość. Np. silnik jest częścią samochodu. - kompozycja - jest silniejszym rodzajem agregacji. Dzięki kompozycji, podobiekty Student czy Pracownik sąmocniej związane z obiektem Osoba. Oznacza to, część nie może istnieć bez całości i że część nie może być współdzielona.

  6. Co to jest klasa w Javie? • Klasa definiuje atrybuty obiektów (dane związane z obiektami) oraz operacje, które na tych obiektach można wykonać. • Atrybuty czyli pola klasy. Są reprezentowane przez zmienne i/lub stałe, które są określonych typów i oczywiście muszą być odpowiednio deklarowane. • Operacje wprowadzamy poprzez definicje metod klasy. • Obiekty danej klasy tworzy się za pomocą konstruktora, który nadaje wartości poszczególnym polom obiektu. • Może być utworzonych wiele obiektów danej klasy, czyli klasa jest szablonem dla obiektu.

  7. Disjointperspektywa pojęciowa • Czyli podział rozłączny. Jest to podział domyślny. Oznacza, że np. dana osoba nie może być jednocześnie pracownikiem i studentem.

  8. Disjointperspektywa projektowa 0..1 0..1 {xor}

  9. class Osoba{ int rok_urodzenia ,telefon; String imie,nazwisko,adres; Osoba (String im, String naz, String adr,int tele){ imie = im; nazwisko = naz; adres = adr; telefon = tele; } } class Student extends Osoba { int numer_indeksu; String tryb_studiow; Student(int nr, String tryb,String im, String naz, String adr,int rok,int tele) { super(im,naz,adr,tele); numer_indeksu = nr; tryb_studiow = tryb; } } class Pracownik extends Osoba{ int pensja; String tryb_pracy; Pracownik(int pen, String tryb,String im, String naz, String adr,int rok,int tele,int ni){ super(im,naz,adr,tele); pensja = pen; tryb_pracy = tryb; } }

  10. Tworzenie nowych obiektów klas Student stud = new Student(1234,"dzienne","Jarek","Michon","Krucza",65465); Pracownik prac = new Pracownik(4657,"pul etatu","Pawel","Wrona","Kompanji 1",8765432);

  11. Overlappingperspektywa pojęciowa • Czyli podział, w którym osoba może być jednocześnie studentem i pracownikiem, ale nie musi.

  12. Overlappingperspektywa projektowa Osoba 0..1 0..1 Student Pracownik

  13. Completeperspektywa pojęciowa • Czyli podział całkowity, jest to podział domyślny. • Wszystkie klasy zostały już określone i żadna nowa nie będzie dodawana. • Nadklasa jest klasą abstrakcyjną. • Perspektywa projektowa oraz implementacja w Javie jest identyczna jak w przypadku dziedziczenia Disjoint.

  14. Incomplete • Czyli podział klas niecałkowity. • Nie wsystkie podklasy zostały zdefiniowane, nadklasa nie jest klasą abstrakcyjną. • Istnieje możliwość dodania nowych klas.

  15. Dziedziczenie typu incomplete wymaga tworzenia nowych klas, ich atrybutów oraz metod. • Niestety w Javie musi być z góry okreslona ilość klas i ich inwariantów. • Datego kod dziedziczenbia typu incomplete nie będzie różił się od kodu dziedziczenia typu complete i nie oznaczamy w kodzie czy dziedziczenie jest typu complete czy incomplete.

  16. Interfejs • Zdażają się sytuacje, kiedy w jednej podklasie musimy wykożystać metody z dwóch nadklas. • W jawje jedna klasa nie może dziedziczyć jednocześnie z dwóch nadklas. • Problem ten możemy rozwiązać za pomocą interfejsu – jest to jakby uboższa klasa, która nie zawiera zmiennych, tylko publiczne abstrakcyjne metody i/lub publiczne statyczne stałe.

  17. Interfejs c.d. • Implementacja powyższych metod musi zawierać się w klasach dziedziczących. • Jeśli klasa kożysta z interfeiju, musi zawierać implementację wszystkich metod interfacu.W przeciwnym razie klasa ta musi być abstrakcyjna. • Klasa może implementować wiele interfejsów. • Interfejsy podobnie jak i klasy wyznaczają typy zmiennych. • Wszystkie klasy pochodne wobec klasy implementującej dany interfejs, prawem dziedziczenia,także będą implementowac ten interfejs.

  18. Multi – inheritanceperspektywa pojęciowa • Czyli wielokrotne (wielodziedziczenie) - ma miejsce, gdy klasa dziedziczy inwarianty z więcej niż jednej klasy.

  19. Multi – inheritanceperspektywa projektowa • Ponieważ w Javie klasa nie możne dziedziczyć wielokrotnie (nie może dziedziczyć z klasy, która sama jest klasą dziedziczącą), zalecane jest użycie perspektywy projektowej z dziedziczenia typu Overlapping. Osoba 0..1 0..1 Student Pracownik

  20. Multi – aspect • Czyli dziedziczenie wieloaspektowe – oznacza, że występuje wiele aspektów (dyskryminatorów) dziedziczenia np. napęd i teren. Pojazd {overlapping} teren teren napęd {overlapping} Pojazd wiatrowy Pojazd silnikowy Pojazd lądowy Pojazd wodny

  21. Dynamic • Czyli dziedziczenie dynamiczne – obiekt może zmieniać w czasie przynależność do klas, dyskryminator określa w której klasie dany obiekt się aktualnie znajduje. • Np. osoba może zmieniać wykonywany zawód (dyskryminator). «dynamic» Kierownik zawód Osoba Inżynier Sprzedawca

More Related