Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Podobne dokumenty
Charakterystyka oprogramowania obiektowego

Wykład 1 Inżynieria Oprogramowania

Model przypadków użycia - rola diagramów aktywności Część 2 Wykładowca Dr inż. Zofia Kruczkiewicz

Diagramy czynności tworzenie modelu przypadków użycia Wykład 2

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Modelowanie i Programowanie Obiektowe

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

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

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Podstawy Programowania Obiektowego

Technologie obiektowe

Programowanie obiektowe

Programowanie obiektowe - 1.

Podstawy programowania III WYKŁAD 4

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

Programowanie obiektowe

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

Programowanie obiektowe

Diagramy klas. WYKŁAD Piotr Ciskowski

UML w Visual Studio. Michał Ciećwierz

Projektowanie logiki aplikacji

Programowanie obiektowe

Podstawy modelowania programów Kod przedmiotu

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Projektowanie zwinne

Diagramy czynności Na podstawie UML 2.0 Tutorial

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

Analiza i projektowanie aplikacji Java

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Literatura. J. Nilsson: Applying Domain-Driven Design and Patterns,With Examples in C# and.net, Addison-Wesley Professional, 2006

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

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Świat rzeczywisty i jego model

Analiza i projektowanie obiektowe 2017/2018. Wykład 3: Model wiedzy dziedzinowej

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

Programowanie Zespołowe

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

Diagramy klas. dr Jarosław Skaruz

Podstawy projektowania systemów komputerowych

Język Java część 2 (przykładowa aplikacja)

UML cz. II. UML cz. II 1/38

Technologie i usługi internetowe cz. 2

Język programowania. Andrzej Bobyk

Język Java część 2 (przykładowa aplikacja)

problem w określonym kontekście siły istotę jego rozwiązania

Podejście obiektowe - podstawowe pojęcia

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Modelowanie obiektowe

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Rysunek 1: Przykłady graficznej prezentacji klas.

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Fazy analizy (modelowania) oraz projektowania FAZA ANALIZY:

Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy

Zasady organizacji projektów informatycznych

Podstawy Programowania Programowanie Obiektowe

Programowanie obiektowe

Modelowanie. Wykład 1: Wprowadzenie do Modelowania i języka UML. Anna Kulig

Zalety projektowania obiektowego

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym

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

Technologie informacyjne - wykład 12 -

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

Dziedziczenie jednobazowe, poliformizm

Autor: Bączkowski Karol Promotor: dr inż. Paweł FIGAT

Szablony klas, zastosowanie szablonów w programach

Wprowadzenie do systemów informacyjnych

Projekt systemu informatycznego

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Zaawansowane programowanie w C++ (PCP)

Spis treúci. 1. Wprowadzenie... 13

Programowanie obiektowe

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Wykorzystanie standardów serii ISO oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Diagramu Związków Encji - CELE. Diagram Związków Encji - CHARAKTERYSTYKA. Diagram Związków Encji - Podstawowe bloki składowe i reguły konstrukcji

Programowanie MorphX Ax

WPROWADZENIE DO UML-a

Testowanie oprogramowania

PRZEWODNIK PO PRZEDMIOCIE

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

PRZEWODNIK PO PRZEDMIOCIE

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Techniki modelowania programów Kod przedmiotu

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Laboratorium 5 - Projektowanie programów zorientowanych obiektowo. Indywidualny projekt programistyczny

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Historia modeli programowania

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Transkrypt:

Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wymagania 4. Problemy z podejściem nieobiektowym 5. Podejście obiektowe rozwiązanie pewnych problemów podejścia nieobiektowego

Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego

System informatyczny Nieformalny system informacyjny: zasoby osobowe - ludzie Formalny system informacyjny: procedury zarządzania, bazy wiedzy Techniczny system informacyjny: Sprzęt Oprogramowanie Bazy danych, bazy wiedzy System informatyczny jest to zbiór powiązanych ze sobą elementów nieformalnych, formalnych i technicznych, którego funkcją jest przetwarzanie danych przy użyciu techniki komputerowej Techniczny system informacyjny zorganizowany zespół środków technicznych (komputerów, oprogramowania, urządzeń teletransmisyjnych itp.) służący do gromadzenia, przetwarzania i przesyłania informacji

Warstwy aplikacji (Java EE)

Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania

Model procesu wytwarzania oprogramowania - czyli model cyklu życia oprogramowania Tworzenie technicznego systemu informacyjnego jest powiązane z: budową oprogramowania: co i jak wykonać? zarządzaniem procesem tworzenia oprogramowania: kiedy wykonać? wdrażaniem oprogramowania Modelowanie struktury i dynamiki systemu Perspektywa koncepcji co należy wykonać? model problemu np. przedsiębiorstwa wymagania analiza (model konceptualny ) testy modelu Implementacja systemu, Perspektywa specyfikacji jak należy używać? projektowanie (model projektowy: architektura sprzętu i oprogramowania; dostęp użytkownika; przechowywanie danych) testy projektu struktury i dynamiki generowanie kodu Perspektywa implementacji jak należy wykonać? programowanie (specyfikacja programu : deklaracje, definicje; dodatkowe struktury danych: struktury pojemnikowe, pliki, bazy danych) testy oprogramowania wdrażanie testy wdrażania

Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wymagania

Wymagania określają, co program ma robić Wymagania są najczęściej niekompletne Wymagania wprowadzają w błąd Wymagania nie są wyczerpująco określone Wymagania zawsze się zmieniają, gdyż: Pogłębia się zrozumienie swoich potrzeb przez klienta Pogłębia się zrozumienie dziedziny zastosowań przez programistę Zmieniają się technologie Wniosek Skoro zmiany wymagań są nieuniknione, to należy zmniejszyć wrażliwość tworzonego oprogramowania na te zmiany.

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

Podejście nieobiektowe przy tworzeniu oprogramowania podczas analizy dekompozycja funkcjonalna Przykład 1: Edycja figur Edytor graficzny Wstawianie nowej figury Edycja figury Narysowanie figury

Konsekwencje podejścia nieobiektowego opartego na dekompozycji funkcjonalnej przy zmianach wymagań (1) Program zarządzający funkcjami edytora graficznego Problem odpowiedzialności. Program musi zarządzać wieloma funkcjami edytora Edytor graficzny Wstawianie nowej figury Edycja figury Narysowanie figury Problem zbyt wielu zmian w programie: zmianom towarzyszą błędy. Pozostałe funkcje w programie muszą ulec zmianie, jeśli kod funkcji Wstawianie nowej figury rozszerzy się o nowy typ figury: Edycja figury Narysowanie figury

Przykład 2: Obliczanie wartości rachunku Sklep Spożywczo Przemysłowy ABC Jan Kowalski ul. Leśna 1, xx-xxx Jakieś miasto NIP xxx-xxx-xx-xx Dn. 07r-09-24 nr wydr.8212 PARAGON FISKALNY xxxxxxxxxxxxx Nazwa produktu1 xxxxx 1*6.79 A To jest ilość xxxxxxxxxxxxx zakupioneg Nazwa produktu2 xxxx o towaru 4*0.59 B Nazwa produktu3 xxx 0.6*4.59 D xxxxxxxxxxxxx Nazwa produktu1 xxxxx 2*2.49 A Sp.op.A 11.77 PTU A = 22.00% 2.12 Sp.op.B 2.36 PTU B = 7.00% 0.15 Sp.op.D 2.75 PTU D = 3.00% 0.08 Razem PTU 2.35 To jest cena brutto towarów z danej kategorii podatku RAZEM ZŁ 16.88 To jest cena jednostkowa brutto To są kategorie podatków To są kwoty tara wynikające z istniejących kategorii podatków

Konsekwencje podejścia nieobiektowego opartego na dekompozycji funkcjonalnej przy zmianach wymagań (2) Centralizacja odpowiedzialności Rozwiązanie 1. Sporządzanie rachunków podejście nieobiektowe 1. Rachunek: oblicza cenę brutto zakupionego produktu (wg atrybutów: cena netto, podatek, promocja) zna liczbę zakupionych produktów 2. Rachunek podaje swoją wartość: sumuje wartość zakupu każdego produktu obliczając cenę brutto na podstawie atrybutów danego produktu i mnożąc cenę brutto przez liczbę zakupionego produktu. Wnioski: Duża odpowiedzialność rachunku w obliczaniu wartości rachunku oraz duża wrażliwość na zmiany algorytmów obliczania wartości zakupu produktu Zmiany działania rachunku w odniesieniu jednego produktu mogą wpływać w przypadkowy sposób na obsługę innych produktów i powodować błędy.

Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wymagania 4. Problemy z podejściem nieobiektowym 5. Podejście obiektowe rozwiązanie pewnych problemów podejścia nieobiektowego

Konsekwencje podejścia obiektowego przy zmianach wymagań - decentralizacja odpowiedzialności Rozwiązanie 2. Sporządzanie rachunków podejście obiektowe 1. Rachunek: posiada kolekcję zakupów oblicza swoją wartość: sumuje kolejno wartości zakupionych produktów otrzymane od zakupów umieszczonych w kolekcji 2. Zakup: posiada zakupiony produkt oraz ilość zakupionego towaru potrafi obliczyć swoją wartość: pobiera od każdego produktu cenę brutto i mnoży otrzymaną wartość przez liczbę tego produktu 3. Produkt: każdy produkt posiada atrybuty opisujące: nazwę, ceną netto oraz dodatkowe opcjonalnie atrybuty: podatek, promocję każdy produkt potrafi sam obliczyć tę cenę brutto uwzględniając indywidualnie cenę netto oraz dodatkowe atrybuty (podatek, promocja) Wnioski: Mała odpowiedzialność rachunku w zakresie obliczania wartości rachunku, mała wrażliwość na zmiany algorytmów obliczania wartości zakupu produktu dotyczącego np.. zmiany ceny brutto. Czynności te realizują różne typy produktów. Zmiany w funkcjach produktów nie wywołują efektów ubocznych (błędów)

Obiektowość Obiekt posiada zestaw własnych danych z operacjami (metodami) wspólnymi z innymi podobnymi obiektami są to składowe klasy. Obiekt jest odpowiedzialny za siebie. Przykłady obiektów Produkt: zna swoje atrybuty potrafi obliczyć swoją cenę brutto na podstawie ceny netto oraz dodatkowych atrybutów jak podatek oraz promocja. Zakup: wie, jaki i ile produktu zakupiono potrafi obliczyć swoją wartość na podstawie otrzymanej ceny brutto i liczby zakupionego produktu Rachunek: wie, ilu dokonano zakupów sumując wartości wszystkich zakupów uzyskuje swoją wartość.

Perspektywy rozumienia obiektów Perspektywa koncepcji (modelu konceptualnego) - obiekt jest zbiorem różnego rodzaju odpowiedzialności Perspektywa specyfikacji (modelu projektowego) - obiekt jest zbiorem metod (zachowań), które mogą być wywoływane przez metody tego obiektu lub innych obiektów Perspektywa implementacji (kodu źródłowego) - obiekt składa się z kodu metod i danych oraz interakcji między nimi

Sposób identyfikacji obiektów oraz ich odpowiedzialności w prostych projektach Wyszukanie bytów w dziedzinie problemu Rzeczowniki w opisie problemu pozwalają określić obiekty np. Rachunek, Zakup, Produkt Czasowniki zawarte w opisie problemu są metodami tych obiektów: np. Rachunek ma metodę: obliczwartośćrachunku, Zakup ma metodę: obliczwartośćzakupu, Produkt ma metodę: obliczcenębrutto Rodzaj odpowiedzialności obiektów można określić wg akcji wykonywanych przez te obiekty

Sposób identyfikacji klas w prostych projektach Klasa zawiera metody używane przez wiele obiektów tej klasy np. klasa TProdukt zawiera metody używane przez wiele obiektów Produkt o różnych wartościach tych samych typów atrybutów Klasa zawiera opis danych (atrybutów) używanych przez obiekt Klasa określa sposób dostępu do danych i metod Wniosek: Obiekt jest instancją klasy

Program obiektowy obliczanie wartości rachunku 1. Start programu 2. Utworzenie instancji klasy TRachunek 3. Utworzenie w instancji klasy TRachunek instancji klasy TKolekcja zawierającej instancje klasy TZakup; każda instancja klasy TZakup zawiera instancję klasy TProdukt oraz liczbę zakupionego produktu 4. Wywołanie metody obliczwartośćrachunku instancji klasy TRachunek, w której: 4.1. instancja klasy TRachunek pobiera instancję klasy TZakup i wywołuje jej metodę obliczwartośćzakupu 4.1.1. w metodzie obliczwartośćzakupu instancja klasy TZakup wywołuje metodę obliczcenębrutto instancji klasy TProdukt 4.1.1.1.w metodzie obliczcenębrutto instancja klasy TProdukt oblicza cenę brutto na podstawie własnych atrybutów i zwraca wartość do metody obliczwartośćzakupu instancji klasy TZakup 4.1.2. Metoda obliczwartośćzakupu oblicza wartość zakupu (mnoży otrzymaną ceną brutto od instancji TProdukt razy liczbę produktów) i zwraca wartość metody obliczwartośćrachunku 4.2. Metoda obliczwartośćrachunku dodaje otrzymaną wartość do wartości rachunku 4.3. Metoda obliczwartośćrachunku powtarza krok 4.1 tak długo, aż wyczerpie instancje klasy TZakup w instancji kolekcji. Po jej wyczerpaniu przechodzi do p.4.4 4.4. Metoda obliczwartośćrachunku, jeśli zostaną wyczerpane te instancje, zwraca wartość bieżącego rachunku 5. Koniec programu

Schemat blokowy algorytm obliczania wartości rachunku 1 2 3 4 4.1 4.1.1 4.1.1.1 4.1.2 4.2 nie 4.3 4.4 tak 5

Diagram sekwencji UML obiektowy sposób przedstawienia scenariusza obliczania rachunku 4 4 obliczwartośćrachunku pętla 4 4.1 obliczwartośćzakupu 4.1.1 obliczcenębrutto 4.1.1.1 4.3 4.2 4.1.2 4.4 5

Paradygmaty obiektowości Abstrakcja klas Dziedziczenie Hermetyzacja Polimorfizm Agregacja

Paradygmaty obiektowości Abstrakcja klas W programie Obliczanie wartości rachunku wystąpiła klasa typu TKolekcja zawierająca instancje klasy typ TZakup. W przypadku wprowadzenia nowej klasy typu TZakup1 np. z powodu zmiany strategii obliczania wartości zakupu towaru mogłaby ulec zmianie również klasa TKolekcja. Aby uniezależnić się od tego zjawiska umieszcza się w kolekcji taki typ klasy, który pozwala na umieszczanie instancji klas wyspecjalizowanych w odniesieniu do tej klasy np. klasy TZakup i TZakup1. Sama klasa uogólniona np. TObiekt nie może posiadać instancji służy jedynie do uogólnienia wybranych właściwości wielu klas obsługiwanych przez jedną klasę TKolekcja. Taka uogólniona klasa nazywa się klasą abstrakcyjną. Klasa abstrakcyjna może wystąpić w perspektywach koncepcji, specyfikacji lub implementacji.

Abstrakcja klas Moduły wysokopoziomowe nie powinny zależeć od modułów niskopoziomowych. Obie grupy modułów powinny zależeć od abstrakcji (np. klasy modułu strategii używają klas abstrakcyjnych/interfejsów, które są implementowane przez klasy modułu mechanizmu, które z kolei używają własnych klas abstrakcyjnych /interfejsów zaimplementowanych przez klasy modułu narzędzi. Zmiana implementacji klas warstwy mechanizmu nie wpływa na sposób ich użycia przez klasy z warstwy strategii oraz zmiana implementacji klas w warstwie narzędzi nie wpływa na sposób użycia tych klas w warstwie mechanizmu oraz nie wpływa na sposób użycia klas warstwy mechanizmu przez klasy warstwy strategii) Abstrakcje nie powinny zależeć od szczegółowych rozwiązań. To szczegółowe rozwiązania powinny zależeć od abstrakcji. Wsparcie zasady: otwarte dla rozbudowy, ale zamknięte dla modyfikacji

Abstrakcja klas Warstwy niższe zależą od wyższych Eliminacja zależności przechodniej: warstwa strategii warstwa narzędzi Eliminacja zależności bezpośredniej: warstwa strategii warstwa mechanizmu 26

Klasy abstrakcyjne Paradygmaty obiektowości Dziedziczenie Klasy TZakup oraz TZakup1, które są klasami wyspecjalizowanymi klasy abstrakcyjnej np. TObiekt, powstają dzięki dziedziczeniu po klasie abstrakcyjnej i są nazywane klasami pochodnymi. Można utworzyć wiele klas, które dziedziczą od klasy TObiekt wspólne dane i metody związane z przechowywaniem w kolekcji i mogą różnie implementować obliczanie wartości zakupionego produktu dodając nowe atrybuty i nowe metody np.: w klasie pochodnej TZakup obliczanie wartości zakupu polega na pomnożeniu ilości produktu przez cenę brutto otrzymaną od swojego produktu w klasie pochodnej TZakup1 obliczanie wartości zakupu polega na obliczeniu tej wartości po dobraniu korekty ceny zakupu w zależności od ilości zakupionego produktu

Dziedziczenie specjalizacja klas służy do implementowania podtypów(część elementów podtypu zawiera się w klasie bazowej oraz część stanowi rozszerzenie) wspiera wieloużywalność kodu

Paradygmaty obiektowości Klasy abstrakcyjne Dziedziczenie Hermetyzacja W systemach obiektowych rozróżnia się następujące rodzaje dostępu: publiczny dla obiektów dowolnej klasy chroniony tylko dla obiektów danej klasy i obiektów pochodnych prywatny tylko dla obiektów danej klasy. Dostęp prywatny do składowych obiektów typu TZakup oznacza, że obiekt typu TRachunek nie zna jego atrybutów typu TProdukt oraz ilości produktu. To samo dotyczy nowych atrybutów w klasie TZakup1. Oznacza to brak wrażliwości kodu klasy TRachunek na zmiany w kodzie prywatnych składowych tych klas. Natomiast klasa TRachunek jest zainteresowana wartością zakupu obliczaną przez obiekty typu TZakup i TZakup1 za pomocą metody obliczwartośćzakupu, dlatego dostęp do tej metody musi być publiczny. Ewentualne błędy w klasie TRachunek nie powodują błędów w klasach TZakup i TZakup1 oraz błędy w tych klasach nie powodują błędów w kodzie klasy TRachunek. Wynika to z separacji kodu wywoływanych metod publicznych.

Hermetyzacja określenie praw dostępu do składowych klasy ukrywanie logiki przetwarzania własnych atrybutów wsparcie dla uogólniania i specjalizacji

Paradygmaty obiektowości Klasy abstrakcyjne Dziedziczenie Hermetyzacja Polimorfizm Obiekt typu TKolekcja w obiekcie TRachunek może przechowywać obiekty różnych typów klas pochodnych klasy TObiekt np. obiekty typu TZakup i TZakup1. Obiekty tych klas mogą mieć różny algorytm obliczania wartości zakupionego towaru w metodzie obliczwartośćzakupu, wynikający z dziedziczenia. Dla obiektu typu TRachunek nie jest ważny ten sposób, tylko wynik obliczeń wartości zakupu po wywołaniu tej metody - dlatego nie musi on rozróżniać typów obiektów TZakup i TZakup1. Taka właściwość klas pochodnych jest nazywana polimorfizmem.

Polimorfizm uogólnianie klas, czyli wynik wyróżnienia typu obiektowego, który całkowicie obejmuje inny typ obiektowy polimorfizm opiera się na przedefiniowaniu metod wirtualnych nadtypów w podtypach. Oznacza to, że musi istnieć możliwość zastępowania typów bazowych ich typami pochodnymi. wsparcie zasady: otwarte dla rozbudowy, ale zamknięte dla modyfikacji

Paradygmaty obiektowości Klasy abstrakcyjne Dziedziczenie Hermetyzacja Polimorfizm Agregacja Obiekt klasy TRachunek składa się z instancji kolekcji obiektów klas pochodnych od klasy abstrakcyjnej typu TObiekt. Obiekty klasy TZakup lub TZakup1 zawierają obiekty typu TProdukt. Taka właściwość polegająca na tym, że obiekt zawiera inne obiekty, nazywa się agregacją. Jest to inny sposób budowy klasy niż budowa nowej klasy za pomocą dziedziczenia.

Agregacja składanie klas (kompozycja) agregacja silna (czasy życia obiektu agregowanego i agregującego są te same) agregacja słaba (czas życia obiektu agregowanego jest niezależny od czasu życia obiektu agregującego).