Mapowanie różnych typów dziedziczenia do Javy Bartosz Rybak Michał Malczewski
Plan prezentacji... Kilka podstawowych słów kluczowych Disjoint Ovelapping Incomplete Complete Wielodziedziczenie Dziedziczenie wieloaspektowe Dziedziczenie dynamiczne
Kilka podstawowych słów kluczowych Class Extends Abstract Interface Implements
Disjoint – podział rozłączny Przecięcie zbiorów obiektów podklas jest zbiorem pustym. Domyślny podział. Implementacja podziału rozłącznego nie nastręcza żadnych problemów – jest to domyślny sposób.
Overlapping Przecięcie zbiorów obiektów podklas nie musi być zbiorem pustym Implementacja wymaga wprowadzenia kilku zmian do diagramu.
Obejście overlappingu poprzez zastosowanie dodatkowej klasy class Komputer { } class Laptop extends Komputer { class KomputerAMD class LaptopAMD
Obejscie ovelappingu poprzez zastosowanie kompozycji class Komputer { Laptop laptop; KomputerAMD komputerAMD; } class Laptop { class KomputerAMD {
Incomplete – podział niekompletny Nie zdefiniowano wszystkich podklas. Jest podziałem domyślnym w trakcie implemenmtacji (np. w języku Java) mimo, że w trakcie projektowania nie; implementacja nie wymaga więc żadnych dodatkowych działań
Complete – podział kompletny Zdefiniowano wszystkie podklasy
Complete, Incomplete – implementacja Pojęcia Complete i Incomplete są wykorzystywane w modelu pojęciowym. Nie mają odniesienia w trakcie implementacji. Disjoint jest podziałem domyślnym. class Komputer { } class Przenosny extends Komputer { class Stacjonarny extends Komputer { class Tablet extends Komputer {
Multi-inheritance - wielodziedziczenie polega na jednoczesnym dziedziczeniu po wielu wielu klasach nadrzędnych naraz Java nie obsługuje wielodziedziczenia
Wielodziedziczenie – obejście przez zastosowanie dodatkowej podklasy class Komputer { } class Laptop extends Komputer { class Komputer_WIFI class Laptop_WIFI
Wielodziedziczenie – obejście przez kompozycję class Komputer { Laptop laptop; Komputer_WIFI komputerWIFI; } class Laptop extends Komputer { class Komputer_WIFI wspomniec o tym, żeby implementacja zapewniala automatyczne kasowanie elementow z kompozycji
Wielodziedziczenie – obejście przez wykorzystanie interfejsów class Komputer {} interface IPrzenosny {} interface IKomunikacjaBezprzewodowa {} class Laptop extends Komputer implements IPrzenosny { } class Komputer_WIFI implements IKomunikacjaBezprzewodowa{ class Laptop_WIFI implements IPrzenosny, IKomunikacjaBezprzewodowa{
Dziedziczenie wieloaspektowe
Dziedziczenie wieloaspektowe – obejście przez kompozycję wspomniec o tym ze pierwszy poziom to klasy abstrakcyjne
Dziedziczenie wieloaspektowe – obejście przez kompozycję (2) class Komputer { KomputerWPenymWieku wiek; KomputerJakoNarzedzie narzedzie; } abstract class KomputerWPenymWieku { abstract class KomputerJakoNarzedzie{ class UrzadzeniePasjansowe extends KomputerJakoNarzedzie { class KomputerInformatyka extends KomputerJakoNarzedzie { } class KomputerPrezesa class StaryKomputer extends KomputerWPenymWieku { class NowyKomputer
Realizajca dziedziczenia wieloaspektowego z wykorzystaniem dziedziczenia i kompozycji
Realizajca dziedziczenia wieloaspektowego z wykorzystaniem dziedziczenia i kompozycji cd. class Komputer { KomputerWPenymWieku wiek; } abstract class KomputerWPenymWieku { abstract class KomputerJakoNarzedzie extends Komputer{ class UrzadzeniePasjansowe extends KomputerJakoNarzedzie { class KomputerInformatyka class KomputerPrezesa extends KomputerJakoNarzedzie { } class StaryKomputer extends KomputerWPenymWieku { class NowyKomputer
Dziedziczenie wieloaspektowe – obejście przez zagnieżdżoną specyfikację
Dziedziczenie wieloaspektowe – obejście przez zagnieżdżoną specyfikację cd. abstract class Komputer { } abstract class KomputerMlodszyNizRok extends Komputer { abstract class KomputerStarszyNizRok class StaryKomputerInformatyka class MlodyKomputerInformatyka class ...itakdalej
Dynamic - dziedziczenie dynamiczne obiekt nie musi być wystąpieniem jednej klasy przez cały okres swojego życia podstawowy sposób implementacji polega na tworzeniu nowego obiektu i przepisywaniu pól ze starego
Dziedziczenie dynamiczne – implementacja przez kompozycje class Komputer { Laptop laptop; Stacjonarny stacjonarny; Tablet tablet; } class Laptop { class Stacjonarny { class Tablet {
Dziedziczenie dynamiczne – wykorzystanie interfejsu Laptop laptop = new Laptop(); Tablet tablet = new Tablet(); IKomputer jakisKomputer; // komputer jest laptopem jakisKomputer = laptop; // komputer jest tabletem jakisKomputer = tablet; interface IKomputer { } class Laptop implements IKomputer { class Tablet
Zadanie 1 Firma Kafar zajmuje się wynajmem ochroniarzy. Potrzebny jest jej system który będzie przechowywał informacje o pracownikach administracji firmy oraz o ochroniarzach. Zaprojektuj diagram pojęciowy i implementacyjny odpowiedni do danego problemu, przy założeniu że pracownik administracji nie może być ochroniarzem.
Zadanie 2 Firma X zajmuje się przechowywaniem informacji o wyborcach w danym okręgu. Każdy wyborca może być jednocześnie kandydatem w tych samych wyborach. Zaprojektuj diagram pojęciowy i implementacyjny odpowiedni do tego problemu.
Zadanie 3 Firma X potrzebuje systemu który umożliwi jej przechowywanie informacji na temat osób zatrudnionych w firmie. Szefowi zależy bardzo na podziale osób ze względu na stanowiska oraz ze względu na typ ubezpieczenia jakim pracownicy są objęci. . Zaprojektuj diagram pojęciowy i implementacyjny odpowiedni do tego problemu.
Zadanie 4 Firma Kabut zwróciła się do ciebie z prośba stworzenia systemu do przechowywania danych o samochodach pracowników. Samochody mogą być prywatne lub służbowe. Każdy samochód służbowy może być po 3 latach odkupiony przez pracownika. Zaprojektuj diagram pojęciowy i implementacyjny odpowiedni do tego problemu.