Realizacja w Javie rodzajw dziedziczenia wykorzystywanych w UML
- Slides: 21
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: – Disjoint – Overlapping – Complete – Incomplete – Multi-inheritance – Multi-aspect – Dynamiczne • Implementacja poszczególnych rodzajów dziedziczenia w Javie.
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).
Przykład dziedziczenia: Osoba Imie Nazwisko Data urodzenia Wiek() Student Pracownik Numer indeksu Numer grupy Data zatrudnienia Pensja
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 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 współdzielona. zależność może być
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.
Disjoint perspektywa 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. Osoba Imie Nazwisko Data urodzenia Wiek() {disjoint } Student Pracownik Numer indeksu Numer grupy Data zatrudnienia Pensja
Disjoint perspektywa projektowa Osoba Imie Nazwisko Data urodzenia Wiek() 0. . 1 {xor} 0. . 1 Student Pracownik Numer indeksu Numer grupy Data zatrudnienia Pensja
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; } } {
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);
Overlapping perspektywa pojęciowa • Czyli podział, w którym osoba może być jednocześnie studentem i pracownikiem, ale nie musi. Osoba {overlapping} Student Pracownik
Overlapping perspektywa projektowa Osoba 0. . 1 Student 0. . 1 Pracownik
Complete perspektywa 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. {abstract} Osoba {complete} Student Pracownik
Incomplete • Czyli podział klas niecałkowity. • Nie wsystkie podklasy zostały zdefiniowane, nadklasa nie jest klasą abstrakcyjną. • Istnieje możliwość dodania nowych klas. Osoba {incomplete} Student Pracownik
• 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.
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.
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.
Multi – inheritance perspektywa pojęciowa • Czyli wielokrotne (wielodziedziczenie) - ma miejsce, gdy klasa dziedziczy inwarianty z więcej niż jednej klasy. Osoba {overlapping} Student Pracownik Osoba/Pracownik
Multi – inheritance perspektywa 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 Student 0. . 1 Pracownik
Multi – aspect • Czyli dziedziczenie wieloaspektowe – oznacza, że występuje wiele aspektów (dyskryminatorów) dziedziczenia np. napęd i teren. Pojazd {overlapping} napęd teren {overlapping} Pojazd wiatrowy Pojazd silnikowy Pojazd lądowy Pojazd wodny
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» zawód Osoba Kierownik Inżynier Sprzedawca
- Dziedziczenie wieloaspektowe
- Realizacja podstawy programowej w edukacji wczesnoszkolnej
- Nowa podstawa programowa religia
- Realizacja przyrostowa
- Realizacja algorytmu euklidesa w wersji z odejmowaniem
- Uml 1 vs uml 2
- Uml
- Ternary relationship example
- Multiplicidad uml
- Pu uml
- Uml zustandsdiagramm getränkeautomat
- Uml
- Boundary class in uml
- Uml empac
- Kompozycja uml
- Er diagram vs uml
- Slidetodoc.com
- Uml
- Crude analysis uml
- Web application extension (wae)
- Dalam uml, kubus menunjukkan
- Diagramme de séquence