MAS – Referat 1 Mapowanie różnych typów dziedziczenia z UML do Javy

Slides:



Advertisements
Podobne prezentacje
Sposoby obejścia dziedziczenia
Advertisements

Tomasz Pieciukiewicz Rafał Hryniów
Mapowanie dziedziczenia z UML do Java
Mapowanie różnych typów dziedziczenia do Javy
E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, Wykład 8, Slajd 1 Projektowanie systemów informacyjnych Ewa Stemposz, Kazimierz Subieta.
E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, Wykład 8, Slajd 1 Projektowanie systemów informacyjnych Ewa Stemposz, Kazimierz Subieta.
E. Stemposz. UML i Analiza Obiektowa, Wykład 3, Slajd 1/18 Wykład 3 Model obiektowy (1) dr inż. Ewa Stemposz
Proces doboru próby. Badana populacja – (zbiorowość generalna, populacja generalna) ogół rzeczywistych jednostek, o których chcemy uzyskać informacje.
1 Badania operacyjne – metody optymalizacji w problemach decyzyjnych.
OBOWIĄZKI INFORMACYJNE BENEFICJENTA Zintegrowane Inwestycje Terytorialne Aglomeracji Wałbrzyskiej.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
InMoST, Analiza architektury metodą ATAM Jerzy Nawrocki
Teoria gry organizacyjnej Każdy człowiek wciąż jest uczestnikiem wielu różnych gier. Teoria gier zajmuje się wyborami podejmowanymi przez ludzi w warunkach.
Sposób oraz zakres gromadzonych informacji regulują następujące przepisy prawne: 1.ustawa z dnia 19 lutego 2004 r. o systemie informacji oświatowej (Dz.
Ryzyko a stopa zwrotu. Standardowe narzędzia inwestowania Analiza fundamentalna – ocena kondycji i perspektyw rozwoju podmiotu emitującego papiery wartościowe.
Mikroekonomia dr hab. Maciej Jasiński, prof. WSB Wicekanclerz, pokój 134A Semestr zimowy: 15 godzin wykładu Semestr letni: 15.
Trening cardio Gdy chcemy zrzucić kilka kilogramów i pozbyć się cellulitu, warto zdecydować się na trening cardio, który nie tylko pomoże spalić tłuszcz,
Prawdy oczywiste Kiedy zarejestrować działalność? - Księgowość bez tajemnic! INFOLINIA: |
Równowaga rynkowa w doskonałej konkurencji w krótkim okresie czasu Równowaga rynkowa to jest stan, kiedy przy danej cenie podaż jest równa popytowi. p.
Porównywarki cen leków w Polsce i na świecie. Porównywarki w Polsce.
1 Organizacje a kontrakt psychologiczny We współczesnym świecie człowiek otoczony jest szeregiem kontraktowych zobowiązań. To pewien rodzaj powiązań, zależności,
KOSZTY W UJĘCIU ZARZĄDCZYM. POJĘCIE KOSZTU Koszt stanowi wyrażone w pieniądzu celowe zużycie majątku trwałego i obrotowego, usług obcych, nakładów pracy.
„Gdański model aktywizacji społeczności lokalnych” Gdańsk, 27 kwietnia 2009.
WYKŁAD 6 Regionalizacja 1. Regionalizm a regionalizacja 2 Proces wyodrębniania regionów nazywany jest regionalizacją, w odróżnieniu od regionalizmu, który.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Perceptrony proste nieliniowe i wielowarstwowe © Kazimierz Duzinkiewicz, dr hab.
Damelo przedstawia Kolekcję stylowych rowerów miejskich Ul. Tylna 4C/51, Łódź Damelo - rowery dla kobiet.
Renata Maciaszczyk Kamila Kutarba. Teoria gier a ekonomia: problem duopolu  Dupol- stan w którym dwaj producenci kontrolują łącznie cały rynek jakiegoś.
Obliczanie procentu danej wielkości Radosław Hołówko.
Jak tworzymy katalog alfabetyczny? Oprac.Regina Lewańska.
Dziedziczenie, polimorfizm, Interfejsy
Dolnośląski Wojewódzki Urząd Pracy
Projektowanie systemów informacyjnych
WYPEŁNIANIE FORMULARZA – KRÓTKI KURS
Programowanie Obiektowe – Wykład 1
Kluczowe elementy skutecznej strategii analizy danych internetowych
Logika dla prawników Podział logiczny.
T.15 Wybór narzędzi dla reengineeringu (szczegóły).
Schematy blokowe.
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
SYSTEM KWALIFIKACJI, AWANSÓW I SPADKÓW
On-the-Fly Garbage Collection
Projektowanie systemów informacyjnych
Liczby pierwsze.
Akademia C# lab. 9 Zdarzenia i delegaty.
Moje szczęście.
Programowanie obiektowe
Wstęp do Informatyki - Wykład 3
Materiały pochodzą z Platformy Edukacyjnej Portalu
Bezpieczeństwo dostępu do danych w systemie Windows
A ty dla kogo żyjesz? Dla kogo są Twoje kroki i zmagania każdego dnia?
ZAWODOWCY Konkurs pt.”Zawodowcy” realizowany w ramach programu z zakresu doradztwa zawodowego w SP nr 370 w Warszawie.
Podstawy informatyki Zygfryd Głowacz.
Dobrobyt.
Modelowanie i analiza systemów informatycznych
ALGORYTMY I STRUKTURY DANYCH
Strukturalne wzorce projektowe
Zmienne i typy danych w C#
Proste obliczenia w arkuszu kalkulacyjnym
Implementacja rekurencji w języku Haskell
Wyrównanie sieci swobodnych
Obsługa bazy danych z poziomu phpMyAdmin
Nowe podejście do zamówień publicznych
Program na dziś Wprowadzenie Logika prezentacji i artykułu
Autor: Magdalena Linowiecka
Projektowanie systemów informatycznych Wykład 3 – Obiekt a klasa
Instrukcja podpięć przedmiotów w USOSie
Zapis prezentacji:

MAS – Referat 1 Mapowanie różnych typów dziedziczenia z UML do Javy Prowadzący: mgr Tomasz Pieciukiewicz Wykonali: Wojtek Wirzbicki Jakub Staszczyk K1 K2 K3 K4 K5 18/11/19

Agenda: Podstawowe informacje o dziedziczeniu Disjoint Overlapping Complete Incomplete Multi-Inheritance Multi-Aspect Dynamic Podsumowanie - Zadania 18/11/19

Odrobina teorii 1 Dziedziczenie – Związek między nadklasą a podklasą, polegający na przenoszeniu wszystkich cech nadklasy do podklasy. Specjalizacja – Dodawanie nowych cech do podklasy Osoba Osoba specjalizacja generalizacja Pracownik Pracownik Asystent Adiunkt Docent Profesor Asystent Adiunkt Docent Profesor 18/11/19

Odrobina teorii 2 Tworzac hierarchie dziedziczenia należy mieć na uwadze to, ze klasy w hierarchi musza posiadac zblizona semantyke i charakteryzowac się nastepujaca wlasnoscia - obiekt podklasy jest szczegolnym przypadkiem rodzajem obiektu nadklasy, ale zaleznosc odwrotna nie jest poprawna. Nie należy konstruowac hierarchi klas wylacznie w oparciu o podobienstwo atrybutow Podstawowe pojecia: Wystapienie bezposrednie – wystapienie klasy ktorej jest czlonkiem. Wystapienie posrednie – wystapienie klasy ktorej jest czlonkiem i wszystkich jej nadklas. Ekstensja klasy – zbior wszystkich wystapienklasy i jej podklas, przy czym wystapienia te zawieraja jedynie atrybuty klas. Klasa abstrakcyjna – nie może posiadac bezposredniego wystapienia Klasa konkretna – moze mieć wystapienia bezposredniego, może nie posiadac zadnych instancji 18/11/19

Sposoby obejscia dziedziczenia Użycie jednej tabeli dla całego drzewa klas poprzez zsumowanie wszystkich występujących atrybutów i powiązań w tym drzewie oraz dodanie dodatkowego atrybutu - dyskryminatora wariantu. Użycie oddzielnych tabel dla każdej klasy konkretnej. Usunięcie klas abstrakcyjnych i przesunięcie ich atrybutów/powiązań do klas konkretnych. Użycie tabel dla każdej klasy. Zamiana dziedziczenia na powiązania łączące nadklasę ze wszystkimi podklasami. A A B C dyskr B C A A B A C B C A A 0..1 0..1 B C B C 18/11/19

Zalety i wady każdej z trzech metod Łatwość implementacji Łatwość dostępu do danych Łatwość przypisania OID Związanie informacji Szybkość dostępu Wspomaganie dla polimorfizmu Konsumpcja pamięci Jedna tabela dla hierarchii Prosta Bardzo duże Bardzo szybki Słabe Duża Tabela dla klasy konkretnej Średnia Prosta Duże Szybki Średnie Mała Tabela dla każdej klasy Trudna Średnia Małe Wolny Duże Mała Cecha 18/11/19

Uml -> Java UML JAVA class Owoc{ double waga, cena; }   class Jablko extends Owoc{ string gatunek; class Melon extends Owoc{ string srednica; 18/11/19

Disjoint Dziedziczenie typu Disjoint jest jednym z rodzaji dziedziczenia jednoaspektowego. Jest to dziedziczenie rozlaczne tzn przeciecie zbior obiektow podklas jest zbiorem pustym (Kowalski nie może być jednocześnie student i pracownikiem). Na diagramie projektowyn jest ono zaznaczane za pomoca aspektu dziedziczenia zwanego (dyskryminatorem). Dyskryminator typu disjoint może być pominiety na diagramie projektowym gdyz jest on zaznaczany domyslnie. Jeśli jest umieszczony zaznaczmy go przy symbolu dziedziczenia DISJOINT – jest to dziedziczenie rozlaczne domyslne możemy je wpisac w miejsce dyskryminatora Osoba {dyskryminator} Student Pracownik Nauczyciel 18/11/19

Overlapping Overlapping – jest to dziedziczenie nierozlaczne Osoba Dziedziczenie typu Overlapping jest kolejnym z rodzaji dziedziczenia jednoaspektowego. Oznacza ono ze podklasy mogą nachodzic na siebie (Kowalski może być jednocześnie studentem i pracownikiem) Na diagramie projektowyn jest ono zaznaczane za pomoca slowa Overlapping w miejscu dyskryminatora, nie może ono być pominiete na diagramie projektowym gdyz nie jest zaznaczane domyslnie Overlapping – jest to dziedziczenie nierozlaczne Osoba {Overlaping} Student Pracownik Nauczyciel 18/11/19

Perspektywa projektowa zastosowano dziedziczenie zastosowano kompozycję Dyskryminator wymuszajacy rozlacznosc (albo) Osoba Osoba 0..1 {xor} 0..1 Zastąpienie dzedziczenia kompozycja Student Pracownik Student Pracownik Osoba Osoba Zezwolenie na nakladalnosci {overlapping} 0..1 0..1 Student Pracownik Student Pracownik 18/11/19

Implementacja zastosowano Disjoint zastosowano Overlaping public abstract class Osoba { private String nazwisko; private String adres; } public class Student extends Osoba { private String[] oceny; public LinkedList myRezerwacja;  } public class Pracownik extends Osoba { private Date dataZatrudnienia = null; private float pensja = 0; public class Osoba{ public Pracownik pracownik; public Student student; private String nazwisko; private String adres; } public class Pracownik{ private String[] oceny; public LinkedList myRezerwacja; public class Student{ private Date dataZatrudnienia = null; private float pensja = 0; Java automatycznie obslyguje zwiazew dziedziczenia rozlacznego 18/11/19

Complete 1 Diagram pojeciowy 18/11/19

Complete 2 Podsumowanie : Wszystkie klasy na danym poziomie drzewa dziedziczenia są zdefiniowane. Brak możliwości wymuszenia w javie tego typu dziedziczenia w Javie. Suma ektensji klas specjalizowanych jest równa ektensji nadklasy. 18/11/19

Incomplete 1 Diagram pojeciowy 18/11/19

Incomplete 2 Podsumowanie : Nadklasa nie jest klasą abstrakcyjną. Nie wszystkie klasy zostały zdefiniowane 18/11/19

Multi-Inheritance 1 Diagram pojeciowy 18/11/19

Implementacja 1 Diagram implementacyjny Sposób 1 18/11/19

Przykład implementacja class Zwierzak{ public String nazwa; public ZwierzakLadowy zwierzakLadowy; public ZwierzakWodny zwierzakWodny; } class ZwierzakLadowy{ double waga; public Zwierzak zwierzak; public ZwierzakLadowy(Zwierzak zwierzak){ this.zwierzak = zwierzak; class ZwierzakWodny{ double wypornosc; public ZwierzakWodny(Zwierzak zwierzak){ Class Foka extends Zwierzak{} 18/11/19

Implementacja 2 Perspektywa projektowa Sposób 2 18/11/19

Multi-Inheritance 2 Podsumowanie : Dziedziczenie po więcej niż jednej klasie – problemy z implementacją w Javie. Problemy z dziedziczeniem składowych o tej samej nazwie. 18/11/19

Multi-Aspect Pracownik Osoba Emeryt Pracownik godzinowy Pracownik Specyfikacja wieloaspektowa sluży do nodelowania sytuacji, w ktorej można wyroznic co najmniej dwa podzialy ekstensji klasy zgodnie z okreslonym aspektem. Oznacza to ze osoby można podzielic ze względu na stosunek do emerytury i na rodzaj zatrudnienia jednoczesnie (Kowalski jest pracownikiem godzinowym i jednoczesnie nieemerytowalna ) Dla dziedziczenia wieloaspektowego aspekty dziedziczenia nie mogą być opuszczane. Pracownik Osoba Emeryt status płacowy stosunek do emerytury Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Osoba nie emerytowana Osoba emerytowana Aspekt dziedziczenia Bywa konieczna, ale często komplikuje optymalizacje oprogramowania. 18/11/19

Perspektywa projektowa 1 Wykonanie za pomoca delegacji i rol Prspektywa projektowa dziedziczenia wieloaspektowego może byc realizowana za pomoca delegacji i rol. Każdy z aspektow specjalizacji jest realizowany za pomoca osobnej hierarchii dziedziczenia i jest polaczony z nadklasa za pomoca kompozycji. Klasy niekonkretne sa klasami abstrakcyjnymi Klasy abstrakcyjne Pracownik Osoba Emeryt Status placowy Status do emerytury Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Osoba nie emerytowana Osoba emerytowana 18/11/19

Perspektywa projektowa 2 Wykonanie za pomoca dziedziczenia i delegacji Korzen hierarchi specjalizacji wedlod aspektu status placowy jest podklasa klasy Osoba, natomiast drogi korzen jest polaczony za pomoca kompozycji. Możliwe jest podejscie dualne (odwrotne). W tym rozwiazaniu klasy Osoba, Pracownik, Emeryt sa klasami abstrakcyjnymi uzycie dziedziczenie uzycie delegacja Pracownik Osoba Emeryt Status placowy Status do emerytury Pracownik godzinowy Pracownik etatowy Pracownik na zlecenie Osoba nie emerytowana Osoba emerytowana 18/11/19

Perspektywa projektowa 3 Wykonanie za pomoca zagniezdzonej specjalizacji Jest tu tworzona wielowarstwowa hierarchia dzidziczenia. Najpierw dokonano specjalizacjiklasy Pracownik wedlug aspektu status placowy, a nastepnie dla kazdej z klas tej warstwy dokonujemy specjalizacji wedlog aspektu stosunek do emerytury. Można to wykonac również dualnie. Patrz nastepna strona 18/11/19

Pracownik status płacowy Pracownik godzinowy Pracownik etatowy na zlecenie stosunek do emerytury stosunek do emerytury stosunek do emerytury Pracownik godzinowy nie emerytowany Pracownik godzinowy emerytowany Pracownik etatowy nie emerytowany Pracownik etatowy emerytowany Pracownik na zlecenie nie emerytowany Pracownik na zlecenie emerytowany 18/11/19

Pracownik stosunek do emerytury Pracownik emerytowany Pracownik nie emerytowany status płacowy status płacowy Pracownik emerytowany godzinowy Pracownik emerytowany etatowy Pracownik emerytowany na zlecenie Pracownik nie emerytowany godzinowy Pracownik nie emerytowany etatowy Pracownik nie emerytowany na zlecenie 18/11/19

Zalecenia przy wyborze Jeżeli klasa ma kilka nadklas, wszystkie jednakowo ważne, najlepiej użyć delegacji, która zachowuje symetrię modelu. Jeżeli jedna nadklasa wyraźnie dominuje, ma zdecydowanie więcej cech niż pozostałe lub może powodować wąskie gardło w wydajności, a inne wydają się być mniej ważne, tę jedną najlepiej zaimplementować poprzez dziedziczenie, zaś pozostałe przez delegację. Jeżeli liczba kombinacji klas jest mała, można rozpatrywać zagnieżdżoną generalizację. Przy zagnieżdżonej generalizacji, najważniejszy czynnik - o czym może zaświadczać np. zdecydowanie większa liczba cech - powinien być pierwszym kryterium podziału; pozostałe dalej, w hierarchii ważności. Unikać zagnieżdżonych generalizacji, jeżeli duża ilość kodu musi być powtórzona. 18/11/19

Implementacja public PrZawodowy nieemeryt; public abstract class Osoba{ private String nazwisko; private String adres; public PrEmerytalnt emeryt; public PrZawodowy nieemeryt; } public class PrGodzinowy extends Osoba{ private float pensja = 0; public class PrEtatowy extends Osoba{ public class PrNaZlecenie extends Osoba{ 18/11/19

Dynamic «dynamic» Kobieta Manager Osoba Inżynier Mężczyzna Sprzedawca W momencie gdy podczas rodzaj danego bytu może się zmieniac podczas dzialania programu mamy do czynienia z dziedziczeniem dynamicznym tzn (Kowalski jest obecnie studentem ale zawsze może zostac zatrudniony i będzie tez pracownikiem). Przypadek ten jest możliwy dzieki dziedziczeniu dynamicznemu które dopuszcza zmiane specyfikacji obiektu podczas swojego istnienia, bez zmieniania swojej tozsamosci. Dziedziczenie dynamiczne wymaga, aby importowala inwarianty ze swoich nadklas podczas dzialania programu.Do zaznaczenia dziedziczenia dynamicznego uzywa się stereotypu <<dynamic>> przy dyskryminatorze. Pojecie dziedziczenia dynamicznego nie zostalo jeszcze wpelni zaimplementowane w zadnym z popularnych jezykow programowania i modelowania. «dynamic» Kobieta Manager zawód Osoba Inżynier płeć Mężczyzna Sprzedawca {mandatory} 18/11/19

Perspektywa projektowa Perspektywa pojeciowa Perspektywa projektowa Osoba {abstract} Osoba {dynamic} {xor} 0..1 0..1 0..1 Menażer Analityk Projektant Menażer Analityk Projektant Zachowując realizację z wykorzystaniem dziedziczenia, przy każdej zmianie specjalizacji Osoby powstaje nowy obiekt jednej z trzech podklas: Menażer, Analityk czy Projektant. Własności odziedziczone z klasy Osoba są każdorazowo przepisywane. W przypadku realizacji z wykorzystaniem kompozycji, usuwany jest obiekt związany ze starą specjalizacją, tworzony jest obiekt przechowywujący własności związane z nową specjalizacją oraz tworzone jest powiązanie między nowym obiektem a obiektem klasy Osoba, przechowującym dane osobowe. Klasa Osoba nie może być klasą abstrakcyjną. 18/11/19

Zadania 1 System ma przechowywać dane o pracownikach szkoły (imię, nazwisko). Pracownicy dzielą się ze względu na rolę na wykładowców i asystentów a także ze względu na posiadany stopień naukowy, na magistrów i profesorów. Jaki typ dziedziczenia zastosujemy na diagramie pojęciowym? Uzasadnij wybór. Zaproponuj diagram pojęciowy. 18/11/19

Zadania 2 System ma przechowywać dane o klientach (imię, nazwisko) i pracownikach (imię, nazwisko, pensja). Pracownicy mogą być klientami. Jaki typ dziedziczenia zastosujemy na diagramie pojęciowym? Uzasadnij wybór. Zaproponuj diagram pojęciowy. 18/11/19

Podsumowanie - Materialy Ewa Stemposz, Kazimierz Subieta - Wykłady do przedmiotu PRI; Jacek Plodzien, Ewa Stemposz – Analiza i projektowanie systemow informacyjnych. Bruce Eckel - Thinking In Java; G.Booch, J.Rumbaugh, I.Jacobson - UML przewodnik użytkownika WNT Warszawa 2002 http://www.ii.uib.no/Erolfwr/thesisdoc/ Inne materialy z internrtu Milej Lektury 18/11/19