Referat nr 1
Referat nr 1
Mapowanie różnych
Mapowanie różnych
typów dziedziczenia
typów dziedziczenia
z UML do Javy
z UML do Javy
przygotowali:
przygotowali:
Jarek i Piotr
Jarek i Piotr
iloczyn kartezjanski
iloczyn kartezjanski
–
–
gdy specyficzne właściwości
gdy specyficzne właściwości
-
z kolei traci sens jak duzo klas
z kolei traci sens jak duzo klas
Wieloaspektowe:
Wieloaspektowe:
agregacja lub il. kart.
agregacja lub il. kart.
agregacja: duzo podobietkow danego
agregacja: duzo podobietkow danego
obiektu, mozemy je pogubic
obiektu, mozemy je pogubic
iloczyn kart.: duzzzo klas;-) za duzo
iloczyn kart.: duzzzo klas;-) za duzo
wariant mieszany: bardziej nas
wariant mieszany: bardziej nas
interesuje dziedziczeniem a to co
interesuje dziedziczeniem a to co
mniej agregacja
mniej agregacja
Dynamiczne:
Dynamiczne:
przepisywanie wszystkie informacje do
przepisywanie wszystkie informacje do
jednego obiektu lub
jednego obiektu lub
kompozycja.agregacja -> ma to
kompozycja.agregacja -> ma to
zalete taka, ze tozsamosc obiektow
zalete taka, ze tozsamosc obiektow
nie zmienia się, odwolania do tego
nie zmienia się, odwolania do tego
obiektu dzialaja, przy przepisywaniu
obiektu dzialaja, przy przepisywaniu
referencje bum! ;-)
referencje bum! ;-)
Kompozycja: buuuu z metodami,
Kompozycja: buuuu z metodami,
kiepsko to wyglada…
kiepsko to wyglada…
1. Część teoretyczna – prezentacja
1. Część teoretyczna – prezentacja
Mapowanie różnych typów
Mapowanie różnych typów
dziedziczenia z UML do Javy:
dziedziczenia z UML do Javy:
•
Disjoint
Disjoint
•
Overlapping
Overlapping
•
Complete
Complete
•
Incomplete
Incomplete
•
Multi-Inheritance
Multi-Inheritance
•
Multi-Aspect
Multi-Aspect
•
Dynamic
Dynamic
Dziedziczenie
Dziedziczenie
•
W programowaniu obiektowym to
W programowaniu obiektowym to
możliwość rozszerzania (ang.
możliwość rozszerzania (ang.
Extend
Extend
)
)
istniejących klas, czyli w terminologii UML
istniejących klas, czyli w terminologii UML
– definiowania podklas.
– definiowania podklas.
Możemy wykorzystać kod już istniejących
Możemy wykorzystać kod już istniejących
klas
klas
(nie musimy wnikać w bezpośrednią ich
(nie musimy wnikać w bezpośrednią ich
implementację), przy konstruowaniu
implementację), przy konstruowaniu
nowych podklas.
nowych podklas.
•
Zdefiniowana nowa, rozszerzona klasa
Zdefiniowana nowa, rozszerzona klasa
(
(
podklasa
podklasa
), dziedziczy wszystkie atrybuty i
), dziedziczy wszystkie atrybuty i
metody klasy, którą rozszerza (po tzw.
metody klasy, którą rozszerza (po tzw.
nadklasie
nadklasie
– klasie, na której została oparta
– klasie, na której została oparta
jej definicja).
jej definicja).
Przykład w UML
Przykład w UML
Student :
name
born
Age
Person:
nr_index
nadklasa
podklasa
czyli, zakładając, że
wszystkie atrybuty i metody
nadklasy były publiczne
Monika
1980
s2033
24
:Student
Disjont – podział rozłączny
Disjont – podział rozłączny
/przykład
/przykład
VS/
VS/
•
mamy z nim do czynienia, kiedy przecięcię
mamy z nim do czynienia, kiedy przecięcię
zbiorów obiektów podklas jest zbiorem pustym
zbiorów obiektów podklas jest zbiorem pustym
Sposoby obejścia dziedziczenia
Sposoby obejścia dziedziczenia
Braki specyficznych rodzajów dziedziczenia
Braki specyficznych rodzajów dziedziczenia
można obejść wprowadzając dodatkowe:
można obejść wprowadzając dodatkowe:
•
kompozycje
kompozycje
•
asocjacje
asocjacje
•
agregacje
agregacje
Każdy z tych związków reprezentuje się za pomocą
Każdy z tych związków reprezentuje się za pomocą
atrybutów w klasach.
atrybutów w klasach.
Overlapping
Overlapping
•
Overlapping – przecięcie zbiorów podklas
Overlapping – przecięcie zbiorów podklas
nie jest zbiorem pustym
nie jest zbiorem pustym
Pojazd
Pojazd
lądowy
Pojazd
wodny
{ overlapping
}
Overlapping
Overlapping
/przykład VS/
/przykład VS/
•
Obejście poprzez wprowadzenie dodatkowej
Obejście poprzez wprowadzenie dodatkowej
klasy zawierającej sumę atrybutów innych
klasy zawierającej sumę atrybutów innych
podklas.
podklas.
Pojazd
Pojazd
lądowy
Pojazd
wodny
{disjoint,
complete}
Pojazd
wodno -
lądowy
Overlapping -wady
Overlapping -wady
•
Obejście poprzez wprowadzenie dodatkowej
Obejście poprzez wprowadzenie dodatkowej
klasy zawierającej sumę atrybutów innych
klasy zawierającej sumę atrybutów innych
podklas.
podklas.
Wady rozwiązania
Wady rozwiązania
:
:
•
dodawanie nowej klasy – pociąga za sobą tworzenie
dodawanie nowej klasy – pociąga za sobą tworzenie
dużej ilości klas łączących poszczególne kategorie
dużej ilości klas łączących poszczególne kategorie
•
szybkie rozrastanie się hierarchii klas
szybkie rozrastanie się hierarchii klas
Complete – dziedziczenie
Complete – dziedziczenie
całkowite
całkowite
Dziedziczeniem całkowitym nazywamy sytuację kiedy
Dziedziczeniem całkowitym nazywamy sytuację kiedy
zbiór podklas wyczerpuje wszystkie mozliwości z
zbiór podklas wyczerpuje wszystkie mozliwości z
rozważanego problemu, lub kiedy projektant zablokuje
rozważanego problemu, lub kiedy projektant zablokuje
możliwość rozszerzania zbioru o nowe klasy.
możliwość rozszerzania zbioru o nowe klasy.
KolorRGB
Czerony (Red)
Niebieski (Blue) Zielony (Green)
{complete}
{abstract}
Incomplete – dziedziczenie
Incomplete – dziedziczenie
niecałkowite
niecałkowite
Dziedziczeniem niecałkowitym nazywamy sytuację
Dziedziczeniem niecałkowitym nazywamy sytuację
kiedy zbiór podklas nie wyczerpuje wszystkich
kiedy zbiór podklas nie wyczerpuje wszystkich
możliwości z rozważanego problemu, kiedy projektant
możliwości z rozważanego problemu, kiedy projektant
daje możliwość rozszerzania zbioru o nowe klasy, lub
daje możliwość rozszerzania zbioru o nowe klasy, lub
też po prostu inne niektóre klasy np.: nieistotne dla
też po prostu inne niektóre klasy np.: nieistotne dla
rozważanego problemu zostały pominięte.
rozważanego problemu zostały pominięte.
Kolor
Czerony (Red)
Niebieski (Blue) Zielony (Green)
{incomplete}
{abstract}
Dziedziczenie in / complete C#
Dziedziczenie in / complete C#
•
W C# nie ma zaimplementowanej
W C# nie ma zaimplementowanej
możliwości zaznaczenia czy dane
możliwości zaznaczenia czy dane
dziedziczenie jest pełne czy nie.
dziedziczenie jest pełne czy nie.
•
Nie ma możliwości takiej implementacji
Nie ma możliwości takiej implementacji
nadklasy aby wymusić określoną liczbę
nadklasy aby wymusić określoną liczbę
klas dziedziczących, stąd używamy tych
klas dziedziczących, stąd używamy tych
pojęć tylko na etapie projektowania.
pojęć tylko na etapie projektowania.
Multi-Inheritance – wielokrotne
Multi-Inheritance – wielokrotne
•
mamy z nim do czynienia gdy klasa dziedziczy
mamy z nim do czynienia gdy klasa dziedziczy
po wielu klasach
po wielu klasach
UML:
POJAZD
Pojazd
Lądowy
Pojaz
Wodny
Amfibia
Multi-Inheritance – wielokrotne
Multi-Inheritance – wielokrotne
jego brak zastepujemy
jego brak zastepujemy
kompozycją
kompozycją
POJAZ
D
Nazwa pojazdu
WŁAŚCIWOŚC
I
POJAZDU
LĄDOWEGO
WŁAŚCIWOŚC
I
POJAZDU
WODNEGO
0..1
0..
1
Multi-Inheritance – wielokrotne
Multi-Inheritance – wielokrotne
jego wady
jego wady
POJAZ
D
POJAZD
LĄDOWY
POJAZD
WODNY
POJAZD
POWIETRZN
Y
Problemy pojawiają się gdy do istniejącej hierarchii klas dodajemy
Problemy pojawiają się gdy do istniejącej hierarchii klas dodajemy
nową.
nową.
Multi-Aspect -dziedziczenie
Multi-Aspect -dziedziczenie
wieloaspektowe
wieloaspektowe
Dziedziczenie ze względu na rodzaj atrybutów.
Pojazd
{overlapping}
Pojazd
wiatrowy
Pojazd
silnikowy
Pojazd
lądowy
Pojazd
wodny
napęd
teren
teren
{overlapping}
Taka struktura da się zrealizować bez jakichkolwiek
przekształceń z punktu widzenia składni języka.
Wada: brak powiązania informacji
Multi-Aspect -dziedziczenie
Multi-Aspect -dziedziczenie
wieloaspektowe
wieloaspektowe
Schemat zastępczy:
POJAZD
WŁ.
NAPĘDU
WŁ.
TERENU
1..
*
1..
*
SILNI
K
ŻAGIE
L
{ abstract
}
{ abstract
}
LĄD
WODA
Dynamic - dziedziczenie dynamiczne
Dynamic - dziedziczenie dynamiczne
Osoba
Manager
Inżynier
Sprzedawca
«
dynamic
»
zawód
•
Osoba może zmieniać zawód,
Osoba może zmieniać zawód,
co może być modelowane poprzez
co może być modelowane poprzez
tzw. dziedziczenie dynamiczne.
tzw. dziedziczenie dynamiczne.
przykładowe zadania
przykładowe zadania
zadanie 1.
Firma "X" zajmuje sie wynajmem samochodow.
Potrzebuje system przechowujacy dane o samochodach do
wypozyczenia
(marka, model, silnik, cena wynajmu) jak i o samochodach
sluzbowych pracownikow (marka, model, silnik, data zakupu).
Samochod do wynajmu nie moze być: samochodem sluzbowym i
odwrotnie
zadanie 2.
Duza firma zajmujaca sie dystrybucja produktow na rynku
krajowym potrzebuje
system przechowujacy system o pracownikach:
- magazynier (imie, nazwisko, adres zamieszkania, data
urodzenia, data zatrudnienia)
- handlowiec (imie, nazwisko, adres zamieszkania, data
urodzenia, znane jezyki obce, data zatrudnienia)
- menadzer (imie, nazwisko, adres zamieszkania, data
urodzenia, kwalfikacje zawodowe, data zatrudnienia)
Kazda osoba moze byc w danej chwili zatrudniona tylko na
jednym stanowisku.
System musi umozliwiac awans jak i degradacje pracownikiow.
zadania sprawdzające nasza
zadania sprawdzające nasza
skuteczność;-)
skuteczność;-)
zadanie 3.
Wypożyczalnia kaset video potrzebuje system przechowujacy dane
o pracownikach (imie, nazwisko, data zatrudnienia, adres,
stanowisko)
i o klientach (imie, nazwisko, adres, data dodania do bazy,
przyslugujacy rabat).
Kazdy z pracownikow moze byc rowniez klientem wypozyczalni i
wypozyczac kasety.
zadanie 4.
Uczelnia to zbiór osób, mniej lub bardziej
zrównoważonych. Wsród nich jest studentka Marysia.
Do wtorku była tylko albo aż studentką PJWSTK, w
środę dołączyła do grona pracowników zatrudnionych
na uczelni, którzy dziela się na naukowych i
administracyjnych. Gdy spotkałem ją w czwartek była
studentka i pracownikiem administracyjnym naszej
uczelni.
rozwiazanie zad.1 przykładowego
•
Disjoint
Disjoint
mamy z nim do czynienia,
mamy z nim do czynienia,
kiedy przecięcię zbiorów
kiedy przecięcię zbiorów
obiektów podklas jest
obiektów podklas jest
zbiorem pustym
zbiorem pustym
rozwiazanie zad.2 przykładowego
•
Dynamiczne
Dynamiczne
Osoba
Manager
Inżynier
Sprzedawca
«
dynamic
»
zawód
rozwiazanie zadań testowych:
rozwiazanie zad. 3
rozwiazanie zad. 3
Overlapping – przecięcie zbiorów
Overlapping – przecięcie zbiorów
podklas nie jest zbiorem pustym
podklas nie jest zbiorem pustym
rozwiazanie zad. 4
rozwiazanie zad. 4
dziedziczenie wielokrotne – obiekt
dziedziczenie wielokrotne – obiekt
Marysia klasy pracujący student
Marysia klasy pracujący student
dziedziczy po klasie student i po
dziedziczy po klasie student i po
klasie pracownik uczelni.
klasie pracownik uczelni.
dziękujemy za uwagę…
dziękujemy za uwagę…