4 Związek generalizacji-specjalizacji

Wielkość: px
Rozpocząć pokaz od strony:

Download "4 Związek generalizacji-specjalizacji"

Transkrypt

1 4 Związek generalizacji-specjalizacji 4.1 Wstęp Wykład omawia jeden z podstawowych związków pomiędzy klasami związek generalizacji-specjalizacji. Generalizacja-specjalizacja jest bardzo silnym narzędziem obiektowości, dzięki któremu analityk jest w stanie skonstruować model pojęciowy, który nie tylko znacznie lepiej opisuje dziedzinę problemową, ale takŝe, a moŝe przede wszystkim, lepiej nadaje się do modyfikacji, niŝ to ma miejsce na przykład w podejściu relacyjnym. Wykład stara się oddać całą złoŝoność problemu, prezentując wszystkie najwaŝniejsze zagadnienia. 4.2 Generalizacja-specjalizacja W perspektywie pojęciowej, generalizacja-specjalizacja (w skrócie zwana generalizacją lub specjalizacją) jest związkiem łączącym pewną klasę, tzw. nadklasę, z innymi klasami, tzw. podklasami, przy czym nadklasa modeluje byty bardziej ogólne niŝ byty modelowane przez podklasy 1. W perspektywie projektowej, ze związkiem generalizacji ściśle związany jest mechanizm dziedziczenia 2, dzięki któremu inwarianty są importowane z nadklasy do podklas. Oznacza to, Ŝe podklasa posiada wszystkie własności swojej nadklasy; poza tym podklasa moŝe posiadać (i zazwyczaj posiada) takŝe pewne dodatkowe własności. Dziedziczenie inwariantów jest tranzytywne (przechodnie). Struktury związków generalizacji tworzą drzewa klas (lub inne struktury bez pętli) zwane hierarchiami generalizacji (specjalizacji, dziedziczenia). Rys. 1 ilustruje dwa równowaŝne sposoby przedstawiania hierarchii klas, gdzie klasa Zwierzę jest nadklasą klasy Zwierzę hodowlane, która z kolei jest nadklasą dla klas Krowa, Świnia, Struś i Kura. generalization specjalization Animal Breed animal Cow Pig Ostrich Hen Animal Breed animal Cow Pig Ostrich Hen Rys. 1. RównowaŜne sposoby przedstawiania hierarchii klas 1 O nadklasie mówi się czasami, Ŝe jest generalizacją podklasy, natomiast o podklasie mówi się, Ŝe jest specjalizacją nadklasy. 2 PoniewaŜ terminy generalizacja-specjalizacja i dziedziczenie są silnie powiązane, często uŝywa się ich zamiennie.

2 Tak jak powiedzieliśmy, hierarchia generalizacji nie moŝe zawierać pętli (Rys. 2). MoŜe jednak być kratą (Rys. 3), która modeluje dziedziczenie wielokrotne (omawiane w podrozdziale 4.2.6). K1 K2 K3 Rys. 2. Hierarchia niepoprawna ze względu na pętlę K1 K2 K3 Rys. 3. Hierarchia typu krata K4 Jednym z często popełnianych błędów jest konstruowanie hierarchii klas w oparciu wyłącznie o podobieństwo atrybutów. Tworząc hierarchię naleŝy mieć na uwadze to, Ŝe klasy w hierarchii muszą posiadać zbliŝoną semantykę i charakteryzować się następującą własnością: obiekt podklasy jest szczególnym przypadkiem (rodzajem) obiektu nadklasy, ale zaleŝność odwrotna nie jest prawdziwa. Przykład przedstawiony jest na Rys. 4, gdzie klasa Indeks została niesłusznie uznana za podklasę klasy Osoba. Co prawda, indeks jest opisywany przez takie atrybuty jak imię, nazwisko i rok urodzenia, jednak w sposób oczywisty nie jest szczególnym rodzajem osoby. Person name surname birth date Student semester Index index No. Rys. 4. Przykład nieprawidłowej specjalizacji Wystąpienie klasy a związek generalizacji-specjalizacji W literaturze wyróŝnia się dwa rodzaje wystąpień klasy: wystąpienia bezpośrednie, wystąpienia pośrednie.

3 KaŜdy obiekt jest wystąpieniem bezpośrednim tej klasy, której jest członkiem, oraz wystąpieniem pośrednim wszystkich jej nadklas. Na przykład, dla klasy Student i jej nadklasy Osoba: Obiekt klasy Osoba jest bezpośrednim wystąpieniem tej klasy i nie jest pośrednim wystąpieniem Ŝadnej innej klasy, poniewaŝ Osoba nie jest podklasą Ŝadnej innej klasy. Obiekt klasy Student jest bezpośrednim wystąpieniem klasy Student i pośrednim wystąpieniem klasy Osoba Ekstensja klasy a związek generalizacji-specjalizacji W literaturze moŝna spotkać następujące trzy szczegółowe definicje ekstensji: Ekstensja klasy K jest to zbiór wszystkich wystąpień K (bezpośrednich i pośrednich) i jej podklas, przy czym wystąpienia te zawierają jedynie atrybuty klasy K. Ekstensja klasy K jest to zbiór, jak poprzednio, wszystkich wystąpień K i jej podklas, ale brane są pod uwagę wszystkie atrybuty. Ekstensja klasy K jest to zbiór bezpośrednich wystąpień K. W niniejszym wykładzie będziemy posługiwać się pierwszą z powyŝszych definicji. Przykładowa ekstensja dla klasy Osoba i jej podklasy Pracownik zgodna z tą definicją przedstawiona jest na Rys. 5. extent of the Person class :Person : Osoba name = Teofil surname = Jeleń Person name surname age () name = Wanda surname = Niemiec name = Zenon surname = Nowak name = Barbara surname = Wyka Student index No. grades grades avg () : Student : Student name = Wanda name = Zenon surname = Niemiec surname = Nowak index No. = index No. = grades = 4, 5, 5, 3 grades = 3.5, 4, 4 extent of the Student class : Student name = Barbara surname = Wyka index No. = grades = 5, 4.5, 5, 3.5 Rys. 5. Przykładowa ekstensja klasy Osoba i jej podklasy Student Klasa abstrakcyjna a klasa konkretna Klasa abstrakcyjna jest to klasa, która nie ma i nie moŝe posiadać wystąpień bezpośrednich. Klasa abstrakcyjna słuŝy zatem wyłącznie jako nadklasa dla innych klas, stanowiąc swego rodzaju wspólną część definicji grupy klas o podobnej semantyce. UML pozwala na oznaczenie bytu abstrakcyjnego (klasy czy metody abstrakcyjnej) za pomocą wartości etykietowanej {abstract = TRUE} (lub w skrócie {abstract}; patrz wykład poświęcony mechanizmom rozszerzalności) lub poprzez napisanie nazwy bytu kursywą (co jednak jest mało praktyczne dla diagramów rysowanych ręcznie).

4 W odróŝnieniu od klasy abstrakcyjnej, klasa konkretna moŝe mieć (ma prawo mieć) wystąpienia bezpośrednie. Jest moŝliwe, Ŝe w danej chwili klasa konkretna nie posiada Ŝadnych instancji. Przykłady klas abstrakcyjnych i konkretnych są przedstawione na Rys. 6. Zwróćmy uwagę na stereotyp «instanceof» oznaczający związek pomiędzy klasą a jej wystąpieniem. Legal person {abstract} Natural person Firm «instanceof» «instanceof» «instanceof» :Natural person :Firm :Firm Sequence first next Int sequence... implementations Char sequence... implementations Rys. 6. Klasa abstrakcyjna a klasa konkretna PoniewaŜ klasa abstrakcyjna pełni rolę nadklasy dla innych klas (równieŝ dla innych klas abstrakcyjnych), nie moŝe być liściem w hierarchii dziedziczenia. ZastrzeŜenie to nie dotyczy oczywiście klasy konkretnej, która moŝe występować w dowolnym miejscu hierarchii. RozwaŜmy diagram z Rys. 7: tylko klasy K1 i K3 mogą potencjalnie być klasami abstrakcyjnymi; kaŝda z klas moŝe być klasą konkretną. K1 K2 K3 K4 K5 Rys. 7. Diagram dla ilustracji zagadnienia klas abstrakcyjnych i konkretnych

5 4.2.4 Metoda abstrakcyjna Jak juŝ wspomnieliśmy w wykładzie poświęconym obiektom i klasom, metoda abstrakcyjna posiada sygnaturę, ale nie posiada implementacji. Klasa zawierająca przynajmniej jedną metodę abstrakcyjną jest klasą abstrakcyjną, gdyŝ nie moŝna tworzyć obiektów, dla których brakuje implementacji pewnych operacji. Definicja implementacji metody abstrakcyjnej musi znajdować się w którejś z podklas klasy abstrakcyjnej. Dla przykładu rozwaŝmy Rys. 8: sygnatura operacji oblicz wypłatę znajduje się w klasie abstrakcyjnej Pracownik, natomiast kaŝda z jej podklas (będących klasami konkretnymi) zawiera właściwą dla siebie implementację tej operacji. Employee {abstract} earned in current year birth date calculate salary (){abstract} calculate age () Wage employee regular wage holiday wage calculate salary () Full-time employee week s wage calculate salary () Contractor month s wage calculate salary () Rys. 8. Przykład metody abstrakcyjnej Klasa abstrakcyjna moŝe zawierać abstrakcyjne metody, ale nie musi. Natomiast klasa konkretna musi zawierać implementacje tych metod abstrakcyjnych, które nie zostały zaimplementowane w Ŝadnej z jej nadklas Specjalizacja jednoaspektowa i wieloaspektowa Podklasy danej klasy są wyróŝniane na podstawie pewnego kryterium (pewnej własności) zwanego aspektem specjalizacji (lub dyskryminatorem); zazwyczaj takim kryterium jest rodzaj. Dyskryminator jest elementem opcjonalnym, co oznacza, Ŝe moŝe, ale nie musi, być specyfikowany na diagramie; jeŝeli występuje, to jest umieszczany przy symbolu specjalizacji. Przykład przedstawia diagram na Rys. 9, który identyfikuje róŝne rodzaje wyposaŝenia, róŝne rodzaje pomp oraz róŝne rodzaje zbiorników (dla uproszczenia podklasy klas Pompa i Zbiornik nie zostały umieszczone na diagramie). Equipment name manufacturer price specjalization aspect (discriminator) equipment type Pump suction pressure expression pressure flow pump type Radiator surface pipe diameter typ zbiornika Tank volume pressure Rys. 9. Przykład specjalizacji jednoaspektowej

6 Alternatywną metodę 3 zamodelowania specjalizacji z Rys. 9, zgodnie z którą jest definiowana tylko jedna klasa, ilustruje Rys. 10. Zwróćmy uwagę na ograniczenie oraz na to, Ŝe atrybuty specyficzne dla poszczególnych rodzajów wyposaŝenia są tutaj atrybutami opcjonalnymi. Ponadto, w celu łatwego określenia rodzaju wyposaŝenia wprowadzono atrybut rodzaj wyposaŝenia. Dla diagramu z Rys. 9 atrybut ten nie jest potrzebny, poniewaŝ rodzaj wyposaŝenia jest wyraŝany poprzez przynaleŝność obiektu do ekstensji odpowiedniej klasy. Equipment name manufacturer price suction pressure expression pressure flow surface pipe diameter volume pressure equipment type attributes specific for particular type of equipment: pump: suction pressure, expression presure, flow radiator: surface, pipe diameter tank: volume, pressure Rys. 10. Zamodelowanie specjalizacji za pomocą jednej klasy z atrybutami opcjonalnymi i dodatkowym atrybutem Identyfikowanie podklas na podstawie aspektu specjalizacji tworzy podział podklas, przy czym nie istnieje ograniczenie na liczbę tego rodzaju podziałów, które moŝna potencjalnie utworzyć; innymi słowy, nie istnieje ograniczenie na liczbę aspektów, według których moŝna identyfikować podklasy. W przykładzie przedstawionym na Rys. 9 dla klas WyposaŜenie, Pompa i Zbiornik podklasy zostały zidentyfikowane na podstawie tylko jednego aspektu (odpowiednio: rodzaj wyposaŝenia, rodzaj pompy oraz rodzaj zbiornika), czyli dla tych klas został ustanowiony tylko jeden podział ich podklas. Tego rodzaju przypadek określa się terminem specjalizacja jednoaspektowa w odróŝnieniu od specjalizacji wieloaspektowej, która oznacza utworzenie co najmniej dwóch podziałów. Przykład specjalizacji wieloaspektowej przedstawiony na Rys. 11 obrazuje sytuację, gdy utworzono dwa podziały podklas klasy Pojazd według następujących aspektów: napęd wykorzystywany do ich poruszania zidentyfikowano pojazdy napędzane siłą wiatru oraz pojazdy silnikowe; teren, po którym się poruszają zidentyfikowano pojazdy lądowe oraz pojazdy wodne. Vehicle {overlapping} propulsion terrain terrain {overlapping} Wind vehicle Engine vehicle Land vehicle Sea vehicle Rys. 11. Przykład specjalizacji wieloaspektowej NiezaleŜnie od klasyfikacji specjalizacji na jednoaspektową i wieloaspektową, UML wyróŝnia następujące rodzaje podziałów (w nawiasach podane są ich oznaczenia w języku angielskim, stosowane w niniejszym wykładzie): podział rozłączny (disjont), kiedy przecięcie zbiorów obiektów podklas jest zbiorem pustym; podziałem dualnym jest podział nierozłączny (overlapping); podział rozłączny jest podziałem domyślnym, dlatego nie musi być oznaczany na diagramie; podział kompletny (complete), kiedy zidentyfikowano wszystkie podklasy; podziałem dualnym jest podział niekompletny (incomplete); podziałem domyślnym jest podział kompletny. Oznaczenie rodzaju podziału jest umieszczane na diagramie przy symbolu specjalizacji, której dotyczy. 3 Metoda ta jest stosowana przede wszystkim w fazie projektowania w sytuacji, gdy środowisko implementacji nie wspiera pojęcia specjalizacji.

7 Zwróćmy uwagę, Ŝe na Rys. 11 Ŝaden z obu podziałów nie jest rozłączny, co oznacza, Ŝe istnieją pojazdy, które posiadają silnik i mogą być poruszane siłą wiatru oraz pojazdy, które mogą poruszać się zarówno po wodzie, jak i po lądzie. Zazwyczaj dla specjalizacji jednoaspektowej dyskryminator jest opuszczany, poniewaŝ zakłada się, Ŝe nazwy podklas dostarczają wystarczającej informacji o tym, co stanowiło kryterium podziału. W przypadku specjalizacji wieloaspektowej przedstawienie dyskryminatora jest obowiązkowe. Elipsa Nie naleŝy mylić słowa kluczowego incomplete, które oznacza podział niekompletny, z innym elementem składniowym, tzw. elipsą (inaczej: opuszczeniem), specyfikowanym w postaci wielokropka (... ). RóŜnica polega na tym, Ŝe incomplete oznacza podział niekompletny, czyli w rozwaŝanej dziedzinie problemowej zostały zidentyfikowane równieŝ takie podklasy, dla których nie określono jeszcze kompletnej definicji. Dla odróŝnienia elipsa oznacza, Ŝe niektóre z zidentyfikowanych klas (w pełni zdefiniowanych) ale np. nieistotnych dla aktualnie rozwaŝanego problemu, zostały pominięte, czyli nie są przedstawione na danym diagramie. Przykład zastosowania elipsy pokazuje Rys Specjalizacja wielokrotna Specjalizacja wielokrotna 4 modeluje sytuację, w której dana klasa jest specjalizacją więcej niŝ jednej klasy, czyli dziedziczy bezpośrednio z więcej niŝ jednej nadklasy. RozwaŜmy przykład z Rys. 12: podklasami klasy Osoba są klasy Pracownik oraz Student; w celu zamodelowania faktu istnienia osób, które jednocześnie pracują i studiują, utworzona została klasa Pracujący student, która jest jednocześnie specjalizacją klasy Pracownik (na oznaczenie tego, Ŝe osoba pracuje) i specjalizacją klasy Student (na oznaczenie tego, Ŝe osoba studiuje). Person surname Employee salary Student index No. Rys. 12. Przykład specjalizacji wielokrotnej Working student Mimo iŝ specjalizacja wielokrotna moŝe być w pewnych sytuacjach bardzo przydatna, koncepcja ta jest przedmiotem krytyki ze strony niektórych specjalistów. NajpowaŜniejszą ze wskazywanych przez nich wad jest to, Ŝe specjalizacja wielokrotna łączy w jednym miejscu definicje kilku niezaleŝnych i przez to zazwyczaj niekompatybilnych bytów. Jedną z konsekwencji jest konflikt nazw, czyli sytuacja, kiedy w dwóch lub więcej nadklasach danej klasy istnieją inwarianty o dokładnie takich samych nazwach. Poprzez dziedziczenie inwarianty te stają się własnościami jednej klasy, podczas gdy klasa nie moŝe posiadać kilku róŝnych własności o takich samych nazwach. Klasyczny juŝ przykład konfliktu nazw przedstawiony jest na Rys. 13: klasa Amfibia dziedziczy od swoich nadklas dwa atrybuty i dwie metody o takich samych nazwach. Powstaje wobec tego konflikt nazw, który prowadzi do następujących pytań: Który z atrybutów max prędkość powinna odziedziczyć klasa Amfibia? Czy znaczenie metody prędkość eksploat () zaleŝy od wybranej ścieŝki dziedziczenia? 4 Odpowiednikiem występującej w perspektywie pojęciowej specjalizacji wielokrotnej jest w perspektywie projektowej tzw. wielodziedziczenie (wielokrotne dziedziczenie).

8 Vehicle { recomended speed equals 50% of max speed } Land vehicle max speed recomended speed () Sea vehicle max speed recomended speed() Car Amphibia Yacht Rys. 13. Przykład konfliktu nazw Problem ten jest rozwiązywany róŝnie w róŝnych środowiskach implementacyjnych. Na przykład w języku Eiffel konflikt nazw jest traktowany jako błąd, czyli twórca diagramu musi zadbać o to, aby do konfliktu nie dochodziło Dziedziczenie dynamiczne Dotychczas niejawnie zakładaliśmy, Ŝe obiekt jest wystąpieniem danej klasy przez cały okres swojego istnienia. Jak łatwo zauwaŝyć, załoŝenie to ma powaŝną wadę, gdyŝ uniemoŝliwia zamodelowanie w prosty sposób sytuacji, w której rodzaj danego bytu moŝe się zmieniać w trakcie jego Ŝycia. RozwaŜmy następujący przykład: osoba pracuje jako menedŝer, inŝynier albo sprzedawca, ale moŝe, jeŝeli zechce, zmienić swój zawód. Tego rodzaju informację wygodnie jest przedstawić za pomocą dziedziczenia dynamicznego, które dopuszcza, aby obiekt w trakcie swojego istnienia zmieniał klasę, której jest członkiem, bez zmieniania swojej toŝsamości 5. Dziedziczenie dynamiczne wymaga, aby podklasa importowała inwarianty ze swoich nadklas w czasie działania programu. Hierarchię dziedziczenia dynamicznego dla rozwaŝanego przykładu przedstawia Rys. 14. Zwróćmy uwagę na dyskryminator zawód, który został opatrzony stereotypem «dynamic» na oznaczenie dziedziczenia dynamicznego. Stereotyp ten został wprowadzony przez znanego metodologa M. Fowlera, nie jest jednak stereotypem predefiniowanym w UML. Oznacza to, Ŝe chcąc umieścić go na diagramie, naleŝy podać jego definicję w dokumentacji projektu 6. Woman Person «dynamic» occupation Manager Engineer Man gender Shop assistant Rys. 14. Przykład dziedziczenia dynamicznego Pojęcie dziedziczenia dynamicznego, mimo Ŝe wydaje się być poŝytecznym środkiem w modelowaniu pojęciowym, jak dotąd nie zostało w pełni zaimplementowane w Ŝadnym z popularnych języków modelowania lub programowania Rozszerzenia i ograniczenia w podklasie Jak juŝ powiedzieliśmy wcześniej, podklasa posiada oprócz swoich własności takŝe wszystkie własności swoich nadklas. Co prawda podklasa nie moŝe omijać lub zmieniać atrybutów nadklasy, moŝe jednak wprowadzać pewne zmiany do innych własności, m.in.: Podklasa moŝe zmodyfikować ciało metody z nadklasy, jednak bez zmiany specyfikacji tej metody jest to tzw. przesłanianie metod (patrz podrozdział 4.2.9). Modyfikacja moŝe polegać na całkowitej zmianie metody 5 Informację tę moŝna takŝe zamodelować za pomocą specjalnego dodatkowego atrybutu. Rozwiązanie to okazuje się być jednak nieefektywne, jeŝeli podklasy uczestniczące w dynamicznym dziedziczeniu bardzo się między sobą róŝnią, co zazwyczaj ma miejsce. 6 Uwaga ta dotyczy oczywiście kaŝdej niestandardowej konstrukcji uŝywanej na diagramie.

9 bądź tylko na jej rozszerzeniu. W przypadku rozszerzenia niektóre środowiska implementacji dostarczają środki umoŝliwiające wykorzystanie przesłanianej metody z nadklasy w ciele metody z podklasy. Podklasa moŝe dowolnie dodawać nowe atrybuty i metody, czyli rozszerzać zbiór posiadanych własności. Podklasa moŝe ograniczać wartości atrybutów, np. Koło jest podklasą klasy Elipsa, gdzie obie średnice elipsy są sobie równe. NaleŜy jednak pamiętać, Ŝe ograniczenia mogą spowodować, iŝ część metod przestanie być poprawna; na przykład, dozwolona dla obiektu klasy Elipsa zmiana jednej średnicy jest niedopuszczalna w obiekcie podklasy Koło, gdyŝ w jego przypadku obie średnice muszą być zmieniane jednocześnie Przesłanianie metod Przesłanianie metod jest mechanizmem, zgodnie z którym metoda z klasy bardziej wyspecjalizowanej moŝe przesłonić metodę z klasy bardziej ogólnej. Mechanizm przesłaniania wykorzystywany jest w sytuacji, gdy metoda implementująca daną operację w podklasie wymaga uŝycia innego algorytmu niŝ ten, na którym oparto implementację operacji w nadklasie. Przesłanianie pozwala rozbudować hierarchię bez konieczności wprowadzania zmian do struktur juŝ istniejących, dlatego jest waŝnym mechanizmem wspierającym ponowne uŝycie. Przesłanianie jest ściśle powiązane z polimorfizmem metod i wymaga dynamicznego wiązania. Zagadnienie przesłaniania metod jest zilustrowane na Rys. 15, gdzie dwie metody implementują operację obliczania objętości bryły: Metoda policz objętość () w klasie abstrakcyjnej Bryła oblicza objętość bryły według wzoru (1). Metoda ta, nie będąc metodą abstrakcyjną, jest dziedziczona przez podklasy Prostopadłościan i Walec, które nie posiadają własnych implementacji operacji obliczania objętości. PoniewaŜ objętość stoŝka jest obliczana inaczej niŝ objętość prostopadłościanu czy walca (wzór (2)), metoda policz objętość () w klasie StoŜek przesłania metodę zdefiniowaną w nadklasie Bryła. Solid figure {abstract} base s area hight calculate volume () equation (1) volume = bases s area * hight } Cuboid Cylinder Cone... calculate volume () equation (2) volume = 1/3 of base s area * hight Rys. 15. Przykład ilustrujący przesłanianie metod Dyskutowany diagram klas moŝe zostać zbudowany takŝe w inny sposób: metoda abstrakcyjna w klasie Bryła i dwie metody implementujące operację obliczania objętości w podklasach Prostopadłościan i Walec; implementacja operacji w podklasie StoŜek bez zmian. Jednak z uwagi na moŝliwość ponownego uŝycia, którego jedną z podstaw stanowi idea budowy hierarchii klas, to rozwiązanie jest w sposób oczywisty gorsze od rozwaŝanego powyŝej PrzeciąŜanie metod PrzeciąŜanie jest to mechanizm, zgodnie z którym znaczenie danego symbolu (np. operatora czy funkcji) zaleŝy od kontekstu jego uŝycia, czyli na przykład od liczby i/lub typu argumentów: metody przesuń (x, y) i przesuń (x, y, z) róŝnią się liczbą argumentów; metody przesuń (int, int) i przesuń (float, float) róŝnią się typami argumentów; metody przesuń (int, float, int) i przesuń (float, int) róŝnią się zarówno liczbą, jak i typami argumentów.

10 W praktyce programistycznej powszechne jest przeciąŝanie operatora równości = (oczywiście jeŝeli pozwala na to środowisko implementacyjne), który moŝe słuŝyć do porównania liczb całkowitych, liczb rzeczywistych, napisów, identyfikatorów, struktur itd. Podobnie operator dodawania + moŝe oznaczać dodawanie liczb lub konkatenację napisów. PrzeciąŜanie, w odróŝnieniu od przesłaniania, nie wymaga dynamicznego wiązania, gdyŝ znaczenie operatora moŝna wywnioskować na podstawie statycznej analizy tekstu programu. 4.3 Podsumowanie Generalizacja-specjalizacja to obok obiektu i klasy jeden z najwaŝniejszych wyróŝników podejścia obiektowego. Związek ten pozwala oddać w wygodny sposób bardzo waŝną informację jaką jest istnienie w dziedzinie problemowej bytów bardziej i mniej ogólnych. Sam problem jest na tyle złoŝony, Ŝe termin generalizacja-specjalizacja kryje w sobie takŝe inne bliskie pojęcia, jak np. metoda abstrakcyjna, specjalizacja jedno- i wieloaspektowa oraz przesłanianie metod. Co więcej, wciąŝ opracowywane są nowe idee powiązane z generalizacją-specjalizacją, aby związek ten uczynić jak najbardziej wygodnym w uŝyciu; przykładem moŝe być dziedziczenie dynamiczne. 4.4 Przykładowe pytania i problemy do rozwiązania 1. Krótko scharakteryzuj koncepcję związku generalizacji-specjalizacji. 2. Co to jest metoda abstrakcyjna i w jakim celu jest wykorzystywana? 3. Czy klasa abstrakcyjna moŝe być liściem w hierarchii dziedziczenia klas? 4. Jaka jest róŝnica pomiędzy specjalizacją jednoaspektową a specjalizacją wieloaspektową? Odpowiedź zilustruj przykładami. 5. Diagram klas dla wypoŝyczalni płyt DVD (Wykład 2, podrozdział. 2.12) uzupełnij o związki generalizacjispecjalizacji i metody abstrakcyjne.

3 Obiekt a klasa. 3.1 Wstęp. 3.2 Obiekt ToŜsamość obiektu a jego identyfikator

3 Obiekt a klasa. 3.1 Wstęp. 3.2 Obiekt ToŜsamość obiektu a jego identyfikator 3 Obiekt a klasa 3.1 Wstęp Wykład zawiera wprowadzenie do obiektowego modelu danych poprzez omówienie jego dwóch podstawowych pojęć: obiekt i klasa. Zrozumienie tych pojęć oraz związku pomiędzy nimi jest

Bardziej szczegółowo

Po lewej przykłady klas. Stereotypy zostały tu wykorzystane do metaklasyfikacji metod.

Po lewej przykłady klas. Stereotypy zostały tu wykorzystane do metaklasyfikacji metod. 1. Klasa; notacja w UML 2. Dziedziczenie: jednoaspektowe wieloaspektowe wielokrotne dynamiczne 3. Klasa parametryzowana 4. Rozszerzenia i ograniczenia w podklasie 5. Wystąpienie klasy 6. Klasa abstrakcyjna

Bardziej szczegółowo

Rysunek 1: Przykłady graficznej prezentacji klas.

Rysunek 1: Przykłady graficznej prezentacji klas. 4 DIAGRAMY KLAS. 4 Diagramy klas. 4.1 Wprowadzenie. Diagram klas - w ujednoliconym języku modelowania jest to statyczny diagram strukturalny, przedstawiający strukturę systemu w modelach obiektowych przez

Bardziej szczegółowo

Paweł Kurzawa, Delfina Kongo

Paweł Kurzawa, Delfina Kongo Paweł Kurzawa, Delfina Kongo Pierwsze prace nad standaryzacją Obiektowych baz danych zaczęły się w roku 1991. Stworzona została grupa do prac nad standardem, została ona nazwana Object Database Management

Bardziej szczegółowo

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania MAS dr. Inż. Mariusz Trzaska Wykład 10 Realizacja różnych modeli dziedziczenia w obiektowych językach programowania Zagadnienia o o o o o o Omówienie różnych rodzajów dziedziczenia, klas abstrakcyjnych

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

1. Mapowanie diagramu klas na model relacyjny.

1. Mapowanie diagramu klas na model relacyjny. Rafał Drozd 1. Mapowanie diagramu klas na model relacyjny. 1.1 Asocjacje Wpływ na sposób przedstawienia asocjacji w podejściu relacyjnym ma przede wszystkim jej liczność (jeden-do-jednego, jeden-do-wielu,

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Charakterystyka oprogramowania obiektowego

Charakterystyka oprogramowania obiektowego Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu Ŝycia oprogramowania 3. Wymagania 4. Problemy z podejściem nieobiektowym

Bardziej szczegółowo

Inżynieria oprogramowania. Część 5: UML Diagramy klas

Inżynieria oprogramowania. Część 5: UML Diagramy klas UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI Opracował: mgr inż. Przemysław Pardel v1.01 2010 Inżynieria oprogramowania Część 5: UML Diagramy klas ZAGADNIENIA DO ZREALIZOWANIA (3H) 1. Diagram klas... 3 Zadanie

Bardziej szczegółowo

hierarchie klas i wielodziedziczenie

hierarchie klas i wielodziedziczenie Programowanie Obiektowe (język C++) Wykład 15. hierarchie klas i wielodziedziczenie Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Hierarchie klas Dziedziczenie wprowadza relację

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne) Bazy danych 1 Wykład 5 Metodologia projektowania baz danych (projektowanie logiczne) Projektowanie logiczne przegląd krok po kroku 1. Usuń własności niekompatybilne z modelem relacyjnym 2. Wyznacz relacje

Bardziej szczegółowo

Kompozycja i dziedziczenie klas

Kompozycja i dziedziczenie klas Związki między klasami: jest i zawiera Programowanie obiektowe Przkład: Pojazd Kompozycja i dziedziczenie klas Silnik Pojazd silnikowy Rower Wóz konny Paweł Rogaliński Instytut Informatyki, Automatyki

Bardziej szczegółowo

Programowania w Javie

Programowania w Javie Programowania w Javie Działanie kaŝdego programu polega na przetwarzaniu danych. Zaczniemy więc od zapoznania się z typami danych Javy. Aby przetwarzać dane, trzeba umieć na nich operować. Do tego słuŝą

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

MAS dr. Inż. Mariusz Trzaska

MAS dr. Inż. Mariusz Trzaska MAS dr. Inż. Mariusz Trzaska Wykład 3 Model obiektowy cz. 1 Klasa; notacja w UML Dziedziczenie: jednoaspektowe wieloaspektowe wielokrotne dynamiczne Zagadnienia Klasa parametryzowana Rozszerzenia i ograniczenia

Bardziej szczegółowo

Dziedziczenie jednobazowe, poliformizm

Dziedziczenie jednobazowe, poliformizm Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas. Materiały dla studentów

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas. Materiały dla studentów Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas Materiały dla studentów Projekt współfinansowany

Bardziej szczegółowo

TECHNOLOGIE OBIEKTOWE. Wykład 3

TECHNOLOGIE OBIEKTOWE. Wykład 3 TECHNOLOGIE OBIEKTOWE Wykład 3 2 Diagramy stanów 3 Diagram stanu opisuje zmiany stanu obiektu, podsystemu lub systemu pod wpływem działania operacji. Jest on szczególnie przydatny, gdy zachowanie obiektu

Bardziej szczegółowo

Modelowanie obiektowe

Modelowanie obiektowe Modelowanie obiektowe ZPO 2018/2019 Dr inż. W. Cichalewski Materiały wykonane przez W. Tylman Diagramy klas Diagramy klas Zawiera informacje o statycznych związkach między elementami (klasami) Są ściśle

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Laboratorium nr 10. Temat: Połączenia relacji

Laboratorium nr 10. Temat: Połączenia relacji Laboratorium nr 10 Temat: Połączenia relacji Dotychczas omawiane zapytania zawsze dotyczyły jednej relacji. MoŜliwe jest jednak pisanie zapytań, które odczytują i łączą dane z wielu relacji. Celem tego

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language) Zagadnienia (1/3) Rola modelu systemu w procesie analizy wymagań (inżynierii wymagań) Prezentacja różnego rodzaju informacji o systemie w zależności od rodzaju modelu. Budowanie pełnego obrazu systemu

Bardziej szczegółowo

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE. C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

Dziedziczenie. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,

Bardziej szczegółowo

.NET Klasy, obiekty. ciąg dalszy

.NET Klasy, obiekty. ciąg dalszy .NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,

Bardziej szczegółowo

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Modelowanie diagramów klas w języku UML Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Czym jest UML - Unified Modeling Language - Rodzina języków modelowania graficznego - Powstanie na przełomie lat 80

Bardziej szczegółowo

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego. Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze

Bardziej szczegółowo

Instrukcja warunkowa i złoŝona.

Instrukcja warunkowa i złoŝona. Instrukcja warunkowa i złoŝona. Budowa pętli warunkowej. JeŜeli mielibyśmy przetłumaczyć instrukcję warunkową to brzmiałoby to mniej więcej tak: jeŝeli warunek jest spełniony, to wykonaj jakąś operację

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki

Bardziej szczegółowo

MODELOWANIE OBIEKTOWE

MODELOWANIE OBIEKTOWE (Wykład na podstawie literatury: M.Śmiałek Zrozumieć UML 2.0, Helion 2005) UML Unified Modeling Language (język do specyfikowania, wizualizowania, konstruowania i dokumentacji tzw. artefactów oraz czynności

Bardziej szczegółowo

Bazy Danych 2008 Część 1 Egzamin Pisemny

Bazy Danych 2008 Część 1 Egzamin Pisemny Bazy Danych 2008 Część Egzamin Pisemny. Zagadnienia związane z CDM a) Model danych SłuŜy do wyraŝania struktury danych, projektowanego lub istniejącego systemu. Przez strukturę rozumiemy typ danych, powiązania

Bardziej szczegółowo

Diagramy klas. WYKŁAD Piotr Ciskowski

Diagramy klas. WYKŁAD Piotr Ciskowski Diagramy klas WYKŁAD Piotr Ciskowski przedstawienie statyki systemu graficzne przedstawienie statycznych, deklaratywnych elementów dziedziny przedmiotowej oraz związków między nimi obiekty byt, egzemplarz

Bardziej szczegółowo

Modelowanie danych, projektowanie systemu informatycznego

Modelowanie danych, projektowanie systemu informatycznego Modelowanie danych, projektowanie systemu informatycznego Modelowanie odwzorowanie rzeczywistych obiektów świata rzeczywistego w systemie informatycznym Modele - konceptualne reprezentacja obiektów w uniwersalnym

Bardziej szczegółowo

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Modelowanie danych. Model związków-encji

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Modelowanie danych. Model związków-encji Modelowanie danych. Model związków-encji Plan wykładu Wprowadzenie do modelowania i projektowania kartograficznych systemów informatycznych Model związków-encji encje atrybuty encji związki pomiędzy encjami

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas. Materiały dla nauczyciela

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas. Materiały dla nauczyciela Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Laboratorium modelowania oprogramowania w języku UML Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram

Bardziej szczegółowo

1 Projektowanie systemu informatycznego

1 Projektowanie systemu informatycznego Plan wykładu Spis treści 1 Projektowanie systemu informatycznego 1 2 Modelowanie pojęciowe 4 2.1 Encja....................................... 5 2.2 Własności.................................... 6 2.3 Związki.....................................

Bardziej szczegółowo

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka Gramatyki, wyprowadzenia, hierarchia Chomsky ego Teoria automatów i języków formalnych Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną gdzie: G =

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 4 Ćwiczenia w narzędziu CASE diagram czynności. Materiały dla studenta

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 4 Ćwiczenia w narzędziu CASE diagram czynności. Materiały dla studenta Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Laboratorium modelowania oprogramowania w języku UML Ćwiczenie 4 Ćwiczenia w narzędziu CASE diagram

Bardziej szczegółowo

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Laboratorium nr 5 Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Celem ćwiczenia jest zaprezentowanie zagadnień dotyczących stosowania w zapytaniach języka SQL predefiniowanych funkcji agregujących.

Bardziej szczegółowo

UML. zastosowanie i projektowanie w języku UML

UML. zastosowanie i projektowanie w języku UML UML zastosowanie i projektowanie w języku UML Plan Czym jest UML Diagramy przypadków użycia Diagramy sekwencji Diagramy klas Diagramy stanów Przykładowe programy Visual Studio a UML Czym jest UML UML jest

Bardziej szczegółowo

UML w Visual Studio. Michał Ciećwierz

UML w Visual Studio. Michał Ciećwierz UML w Visual Studio Michał Ciećwierz UNIFIED MODELING LANGUAGE (Zunifikowany język modelowania) Pozwala tworzyć wiele systemów (np. informatycznych) Pozwala obrazować, specyfikować, tworzyć i dokumentować

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 5 Ćwiczenia w narzędziu CASE diagram przypadków uŝycia. Materiały dla nauczyciela

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 5 Ćwiczenia w narzędziu CASE diagram przypadków uŝycia. Materiały dla nauczyciela Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Ćwiczenie 5 Ćwiczenia w narzędziu CASE diagram przypadków uŝycia Materiały dla nauczyciela Projekt

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Obiekty i klasy w Pythonie Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) PO w. III Jesień 2013 1 / 23 Klasy i obiekty Klasy w implementacji

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke 2.10.2006 Dzisiaj Co umiemy Paradygmaty programowania Co będzie na wykładach Zasady zaliczania Programowanie obiektowe Co umiemy Programowałem w C++ Programowałem

Bardziej szczegółowo

Mechanizm dziedziczenia

Mechanizm dziedziczenia Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia

Bardziej szczegółowo

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych Mariusz Trzaska Modelowanie i implementacja systemów informatycznych Notka biograficzna Dr inż. Mariusz Trzaska jest adiunktem w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych, gdzie zajmuje się

Bardziej szczegółowo

MAS dr. Inż. Mariusz Trzaska

MAS dr. Inż. Mariusz Trzaska MAS dr. Inż. Mariusz Trzaska Wykład 5 Model obiektowy cz. 3 Zagadnienia Dziedziczenie asocjacji Asocjacje pochodne Redukcja liczności Role wielowartościowe Trochę więcej o agregacji Agregacja rekursywna

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie teoretyczne. Rozważana

Bardziej szczegółowo

PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU>

PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU> Załącznik nr 4.4 do Umowy nr 35-ILGW-253-.../20.. z dnia... MINISTERSTWO FINANSÓW DEPARTAMENT INFORMATYKI PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT WERSJA numer wersji

Bardziej szczegółowo

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ Opis działania raportów w ClearQuest Historia zmian Data Wersja Opis Autor 2008.08.26 1.0 Utworzenie dokumentu. Wersja bazowa dokumentu. 2009.12.11 1.1

Bardziej szczegółowo

Dziedziczenie. Zadanie 1

Dziedziczenie. Zadanie 1 Dziedziczenie Zadanie 1 Napisz klasę KolorowyPunkt, która dziedziczy po klasie Punkt a dodatkowo przechowuje informacje o kolorze. Uzupełnij ją o metody umożliwiające pobieranie i ustawianie koloru. Pamiętaj

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram sekwencji. Materiały dla studentów

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram sekwencji. Materiały dla studentów Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Laboratorium modelowania oprogramowania w języku UML Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram

Bardziej szczegółowo

Podstawy projektowania systemów komputerowych

Podstawy projektowania systemów komputerowych Podstawy projektowania systemów komputerowych Diagramy klas UML 1 Widok logiczny Widok logiczny Widok fizyczny Widok przypadków użycia Widok procesu Widok konstrukcji Używany do modelowania części systemu

Bardziej szczegółowo

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje: Program 6 Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje: Funkcja pobierz_osobe wczytuje dane osoby podanej jako argument. Funkcja wypisz_osobe

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy PODSTAWOWE ELEMENTY JĘZYKA JAVA TYPY DANYCH, OPERATORY I INSTRUKCJE 1. Definicja klasy, dziedziczenie, implementowanie metod interfejsów class nazwa_klasy //ciało klasy Klasa: przed słowem class moŝe wystąpić

Bardziej szczegółowo

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Abstrakcja Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Świat rzeczywisty jest bardzo złoŝony i nie jest moŝliwe

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych

Bardziej szczegółowo

Tablice, DataGridView

Tablice, DataGridView Tablice, DataGridView Gdy rośnie liczba danych do przechowywania w programie, a następnie ich obrobienia - pojawiają się nowe struktury danych (moŝna by powiedzieć pojemniki na dane) zwane tablicami. Tablica

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 4 Ćwiczenia w narzędziu CASE diagram czynności. Materiały dla nauczyciela

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 4 Ćwiczenia w narzędziu CASE diagram czynności. Materiały dla nauczyciela Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Laboratorium modelowania oprogramowania w języku UML Ćwiczenie 4 Ćwiczenia w narzędziu CASE diagram

Bardziej szczegółowo

Programowanie deklaratywne

Programowanie deklaratywne Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne

Bardziej szczegółowo

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 10 - klasy abstrakcyjne i interfejsy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 17 maja 2017 1 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

Programowanie deklaratywne

Programowanie deklaratywne Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne

Bardziej szczegółowo

XV. Wskaźniki Odczytywanie adresu pamięci istniejących zmiennych Wskaźniki pierwsze spojrzenie.

XV. Wskaźniki Odczytywanie adresu pamięci istniejących zmiennych Wskaźniki pierwsze spojrzenie. XV. Wskaźniki 15.1. Odczytywanie adresu pamięci istniejących zmiennych Język C++ w bardzo łatwy sposób umoŝliwia nam pobieranie adresu pamięci wybranych zmiennych. Wskaźnik zajmuje zazwyczaj 4 bajty bez

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 9.

Programowanie 2. Język C++. Wykład 9. 9.1 Ukrywanie metod, metody nadpisane... 1 9.2 Metody wirtualne, wirtualny destruktor... 2 9.3 Metody czysto wirtualne... 6 9.4 Klasy abstrakcyjne... 7 9.5 Wielodziedziczenie... 9 9.1 Ukrywanie metod,

Bardziej szczegółowo

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne Przykład 1 metody i atrybuty statyczne public class Napis1 { static String wynik; public static void Inicjuj() {wynik = ""; PODEJŚCIE OBIEKTOWE public static void Dopisz_do_wyniku(char ch) { wynik+="\nkod

Bardziej szczegółowo

Przepływy danych. Oracle Designer: Modelowanie przepływów danych. Diagramy przepływów danych (1) Diagramy przepływów danych (2)

Przepływy danych. Oracle Designer: Modelowanie przepływów danych. Diagramy przepływów danych (1) Diagramy przepływów danych (2) Przepływy danych Oracle Designer: Modelowanie przepływów danych Cele: zobrazowanie funkcji zachodzących w organizacji, identyfikacja szczegółowych informacji, przetwarzanych przez funkcje, pokazanie wymiany

Bardziej szczegółowo

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego: Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów

Bardziej szczegółowo

Modelowanie związków encji. Oracle Designer: Diagramy związków encji. Encja (1)

Modelowanie związków encji. Oracle Designer: Diagramy związków encji. Encja (1) Modelowanie związków encji Oracle Designer: Modelowanie związków encji Technika określania potrzeb informacyjnych organizacji. Modelowanie związków encji ma na celu: dostarczenie dokładnego modelu potrzeb

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

5 Zagadnienia dotyczące asocjacji

5 Zagadnienia dotyczące asocjacji 5 Zagadnienia dotyczące asocjacji 5. Wstęp Wykład przedstawia kolejny waŝny związek pomiędzy klasami asocjację. Asocjacja jako bardzo poŝyteczne narzędzie jest wykorzystywana w inŝynierii oprogramowania

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Język UML w modelowaniu systemów informatycznych

Język UML w modelowaniu systemów informatycznych Język UML w modelowaniu systemów informatycznych dr hab. Bożena Woźna-Szcześniak Akademia im. Jan Długosza bwozna@gmail.com Wykład 8 Diagram pakietów I Diagram pakietów (ang. package diagram) jest diagramem

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu Dane wejściowe Oracle Designer Generowanie bazy danych Diagramy związków encji, a w szczególności: definicje encji wraz z atrybutami definicje związków między encjami definicje dziedzin atrybutów encji

Bardziej szczegółowo

Faza analizy (modelowania) Faza projektowania

Faza analizy (modelowania) Faza projektowania Faza analizy (modelowania) Faza projektowania Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie: co i przy jakich ograniczeniach system ma robić? Wynikiem tej analizy jest zbiór wymagań

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram sekwencji. Materiały dla nauczyciela

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram sekwencji. Materiały dla nauczyciela Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Laboratorium modelowania oprogramowania w języku UML Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram

Bardziej szczegółowo

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017 Wykład 12 7 czerwca 2017 Czym jest UML? UML składa się z dwóch podstawowych elementów: notacja: elementy graficzne, składnia języka modelowania, metamodel: definicje pojęć języka i powiazania pomiędzy

Bardziej szczegółowo