Realizacja w Javie rodzajów dziedziczenia wykorzystywanych w UML

background image

Realizacja w Javie

rodzajów dziedziczenia

wykorzystywanych w

UML.

background image

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.

background image

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).

background image

Przykład dziedziczenia:

Osoba
Imie
Nazwisko
Data

urodzenia

Wiek()

Student
Numer

indeksu
Numer

grupy

Pracownik
Data

zatrudnienia
Pensja

background image

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.

background image

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.

background image

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()

Student
Numer

indeksu
Numer

grupy

Pracownik
Data

zatrudnienia
Pensja

{disjoint

}

background image

Disjoint

perspektywa projektowa

0..1

0..1

{xor}

Osoba
Imie
Nazwisko
Data

urodzenia

Wiek()

Student
Numer

indeksu
Numer

grupy

Pracownik
Data

zatrudnienia
Pensja

background image

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;
}
}

background image

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);

background image

Overlapping

perspektywa pojęciowa

• Czyli podział, w którym osoba może być jednocześnie studentem i

pracownikiem, ale nie musi.

Osoba

Student

Pracownik

{overlapping}

background image

Overlapping

perspektywa projektowa

Osoba

Student

Pracownik

0..1

0..1

background image

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.

Osoba

Student

Pracownik

{complete}

{abstract

}

background image

Incomplete

• Czyli podział klas niecałkowity.

• Nie wsystkie podklasy zostały zdefiniowane, nadklasa nie

jest klasą abstrakcyjną.

• Istnieje możliwość dodania nowych klas.

Osoba

Student

Pracownik

{incomplete}

background image

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.

background image

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.

background image

• 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.

Interfejs c.d.

background image

Multi – inheritance

perspektywa pojęciowa

• Czyli wielokrotne (wielodziedziczenie) - ma miejsce, gdy

klasa dziedziczy inwarianty z więcej niż jednej klasy.

Osoba

Student

Pracownik

Osoba/Pracowni

k

{overlappin

g}

background image

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

Student

Pracownik

0..1

0..1

background image

Multi – aspect

• Czyli dziedziczenie wieloaspektowe – oznacza, że występuje

wiele aspektów (dyskryminatorów) dziedziczenia
np. napęd i teren.

Pojazd

{overlapping}

Pojazd

wiatrowy

Pojazd

silnikowy

Pojazd

lądowy

Pojazd

wodny

napęd

teren

teren

{overlapping}

background image

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).

Osoba

Kierownik

Inżynier

Sprzedawca

zawód

«

dynamic

»


Document Outline


Wyszukiwarka

Podobne podstrony:
Wzory rodowodów i rodzaje dziedziczenia
Identyfikacja Procesów Technologicznych, Realizacja liniowych modeli dyskretnych z wykorzystaniem si
W jakich dziedzinach wykorzystywane są prognozy
Modelowanie z wykorzystaniem UML
Halawa Mateusz Telewizyjne realizmy i ich rodzaj str 128 153
podzial na rodzaje dziedziczenia
podsumowanie zespół,rodzaj dziedziczenia,gen,częstość
podzial na rodzaje dziedziczenia
wykorzystanie liczb charakterystycznych do?dania rodzaju i jakości tłuszczu ćw 2
Omów rodzaje i sposoby realizacji ochrony przed porażeniem prądem elektrycznym
JAK I. KRASICKI REALIZOWAŁ DEWIZĘ „BAWIĄC UCZYĆ - do wykorzystania, 2431, Prace, język polski
NOWE RODZAJE RYZYKA W DZIEDZINIE BHP
Pompy wykorzystywane w ratownictwie chemicznym rodzaje, parametry, zastosowanie
RODZAJE I WŁAŚCIWOŚCI PODŁOŻY WYKORZYSTYWANYCH WE FLORYSTYCE

więcej podobnych podstron