Rozszerzenia składni C vs. C++

Podobne dokumenty
Modelowanie obiektowe

Analiza obiektowa. Analiza obiektowa. Analiza obiektowa. Obiektowe metody inżynierii oprogramowania OBIEKTOWE METODY INŻYNIERII OPROGRAMOWANIA

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie

Analiza obiektowa. Analiza obiektowa. Analiza obiektowa. Obiektowe metody inżynierii oprogramowania OBIEKTOWE METODY INŻYNIERII OPROGRAMOWANIA

Lab 9 Podstawy Programowania

Analiza obiektowa. Analiza obiektowa. Analiza obiektowa. Analiza obiektowa. Analiza obiektowa. Analiza obiektowa. Podejście obiektowe składowe modelu:

Język C++ Różnice między C a C++

Podstawy programowania skrót z wykładów:

Podstawy Programowania Obiektowego

Wykład 3 Składnia języka C# (cz. 2)

Wskaźniki. Informatyka

Wykład 5: Klasy cz. 3

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Wykład 8: klasy cz. 4

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Język C zajęcia nr 11. Funkcje

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Definiowanie własnych klas

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY

Programowanie obiektowe - 1.

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Modelowanie danych, projektowanie systemu informatycznego

Podejście obiektowe - podstawowe pojęcia

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

PARADYGMATY PROGRAMOWANIA Wykład 4

Szablony funkcji i szablony klas

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład 1: Wskaźniki i zmienne dynamiczne

Szablony klas, zastosowanie szablonów w programach

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Język C++ zajęcia nr 2

DYNAMICZNE PRZYDZIELANIE PAMIECI

Wykład 4: Klasy i Metody

1 Projektowanie systemu informatycznego

ZASADY PROGRAMOWANIA KOMPUTERÓW

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

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

Rozdział 4 KLASY, OBIEKTY, METODY

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Paweł Kurzawa, Delfina Kongo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

MATERIAŁY DO ZAJĘĆ II

Zaawansowane programowanie w języku C++ Klasy w C++

Materiały do zajęć VII

Definicje klas i obiektów. Tomasz Borzyszkowski

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Tablice (jedno i wielowymiarowe), łańcuchy znaków

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Bazy danych. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Wykład 3: Model związków encji.

Modelowanie i Programowanie Obiektowe

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

Wskaźniki w C. Anna Gogolińska

Technologie i usługi internetowe cz. 2

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

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

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

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

Materiały do laboratorium MS ACCESS BASIC

Zaawansowane programowanie w języku C++ Programowanie obiektowe

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Język ludzki kod maszynowy

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. Słownik programisty: Struktury jako typy abstrakcyjne

Projektowanie logiki aplikacji

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Programowanie komputerowe. Zajęcia 4

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Zmienne, stałe i operatory

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Wstęp do programowania

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

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

Deklaracja struktury w C++

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

Projektowanie systemów informatycznych. Roman Simiński siminskionline.pl. Modelowanie danych Diagramy ERD

Programowanie, część I

Transkrypt:

Nowe symbole komentarzy: //. tu jest komentarz Możliwość mieszania instrukcji i deklaracji zmiennych w jednym bloku kodu Możliwość deklarowania zmiennych np. w instrukcji sterującej pętli for, np.: for (int i=0; i<100; i++) Rozszerzenia składni C w środowisku C++ Nowy typ podstawowy bool. Zmienne bool przyjmują dwie wartości true i false. Ze względu na wsteczną zgodność jednak pozostawiono domyślną konwersję typu bool na int. Pisząc w C można jednak było sobie samemu zrobić typ bool : typedef enum {TRUE = 1, FALSE = 0 bool; Deklaracja zmiennych strukturalnych bez słowa struct, np.: struct Struktura { int a; char c; ; Struktura X; 1 2 Przekazywanie argumentów przez odniesienie (referencję): void fun(int &k) Taki zapis oznacza, że funkcji zostanie przekazane odniesienie do zmiennej. Kopia, która zostanie utworzona, będzie korzystała z podanego adresu zewnętrznej zmiennej. Przykład deklaracji: Przekazywanie argumentów przez odniesienie (referencję): void fun(int &k) W czasie wykonania funkcji nazwa parametru k będzie tylko inną nazwą zmiennej podanej w argumencie wywołania Wywołanie: int m = 1; void fun(int &k){ fun(m); k += 2; ; spowoduje, że zmienna m po zakończeniu działania funkcji będzie miała Jak to działa? wartość 3. 3 4 Przekazywanie argumentów przez odniesienie (referencję): Uwaga: Wywołanie obydwu poniższych funkcji: void fun(int &k) void fun(int k) wygląda identycznie: fun(m); Natomiast takie wywołanie: fun(m+n); jest dozwolone tylko w przypadku funkcji: void fun(int k) Przekazywanie argumentu przez wartość, odniesienie i wskaźnik void fun(int x, int& y, int *z) { x = 2*x; y = 3*y; *z = 4* (*z); x przekazywany przez wartość pracuje na kopii y przekazywany przez odniesienie pracuje na oryginale z przekazywany przez wskaźnik pracuje na adresie oryginału Wywołanie: int a=1,b=2,c=3; fun(a,b,&c); 5 6 1

Przekazywanie argumentu przez wartość, odniesienie i wskaźnik void fun(int x, int& y1, int &y2) { x = 2*x; y1 = 3*y1; y1 = y2; y1 = 2*y1; Raz zainicjalizowana zmienna referencyjna reprezentuje tę samą zmienną aż do końca swego istnienia, tzn. nie można sprawić, żeby zmienna referencyjna zaczęła od pewnego momentu działania kodu reprezentować inną zmienna. W szczególności, instrukcja y1 = y2 nie spowoduje, że zmienne referencyjne y1 i y2 zaczną reprezentować tę samą zmienną. Przekazywanie tablic w argumencie wywołania funkcji przez odniesienie void funtab(double t[]) // nieznany rozmiar void funref(double (&t)[6]) // znany rozmiar Wywołanie: double tab[] = { 0 ; /* tablica zer */ funtab(tab); funref(tab); funtab t jest typu double*; rozmiar tablicy nie jest znany (jest dowolny) funref t jest typu odniesienie do sześcioelementowej tablicy elementów typu double 7 8 Przekazywanie tablic w argumencie wywołania funkcji przez odniesienie void funref(double (&t)[6]) / * Nawias: (&t) jest konieczny. */ double (&t)[6] double &t[6] Bez nawiasu jest to tablica odniesień do zmiennych typu double coś takiego nie istnieje w C (!). Funkcje statyczne funkcje zadeklarowane jako static, np.: static int inc(int &x) { return ++x; Funkcje te są widoczne tylko w obrębie pliku, w którym zostały zadeklarowane, w przeciwieństwie do pozostałych funkcji globalnych, które są widoczne we wszystkich plikach należących do projektu Przy używaniu operatora odniesienia podawanie wymiaru tablicy jest konieczne. Tablica czteroelementowa to nie to samo co tablica pięcioelementowa. Wywołując funtab możemy podać tablicę dowolnego rozmiaru. W funref musi być to tablica dokładnie 6-elementowa. 9 10 Funkcje rozwijane zadeklarowane z wykorzystaniem słowa kluczowego inline, np.: inline int pow2(int x) { return x*x; W miejscach wywołania funkcji kompilator umieszcza kod funkcji zamiast jej wywołania. W ten sposób powstaje szybszy kod (jeżeli funkcja zawiera niewielki kod, to przyrost objętości programu jest minimalny, za to otrzymujemy zysk w postaci większej szybkości) Przeciążanie funkcji zadeklarowanie kilku funkcji o tej samej nazwie, ale różnym zestawie argumentów wywołania, np.: int fun(int a); int fun(double a); int fun(char a); Aby funkcję były uważane za różne, muszą różnić się sygnaturą. W skład sygnatury wchodzą: nazwa funkcji i lista typów argumentów. Typ zwracany nie należy do sygnatury. 11 12 2

Przeciążanie funkcji Różnienie się sygnaturą nie jest warunkiem wystarczającym, np.: void fun(int k); void fun(int &k); różnią się sygnaturą, ale to nie wystarcza, aby jednoznacznie rozstrzygnąć, którą funkcję wywołać w przypadku: int k = 0; fun(k); Dynamiczny przydział pamięci: Funkcje biblioteczne malloc, calloc, realloc i free zostają zastąpione słowami kluczowymi C++: new i delete Ogólna postać wyrażenia alokującego: new typ; gdzie typ jest typem zmiennej, która ma zostać zaalokowana na stercie, np.: new int; new char[100]; Wyrażenie new zwraca wskaźnik do nowo utworzonego obiektu dokładnie takiego typu, o jakiego przydzielenie został poproszony, np.: char *buffer = new char[100]; 13 14 Dynamiczny przydział pamięci: Ogólna postać wyrażenia zwalniającego: delete wskaźnik; gdzie wskaźnik przechowuje adres do zmiennej dynamicznej i jest dokładnie takiego typu, jak ten zaalokowany na stercie, np.: delete x; delete []buffer; Uwaga: jeżeli była alokowana tablica, to należy ją zwalniać używając składni właściwej dla tablic Stałe wyliczeniowe w C: umożliwiają definiowanie typów, wraz ze zmiennymi do których można przypisać wartości enum dzien {PON, WT, SR, CZW, PT, SOB, NIE; enum srodektransportu {SAMOCHOD, TRAMWAJ, AUTOBUS, ROWER, NOGI; Przykład: enum KOLOR { czerwony,zielony,niebieski; enum KOLOR ulubionykolor; ulubionykolor = czerwony; 15 16 Różne właściwości Stałe wyliczeniowe w C++: Nie wymagane już jest pisanie słowa enum, np.: enum KOLOR ulubionykolor = czerwony; // OK. w C i C++ KOLOR nielubianykolor = seledynowy; // OK. tylko w C++ enum już nie jest tożsamy z typem int (brak konwersji), np.: ulubionykolor = 2; // OK. tylko w C Funkcje tak samo jak zmienne mają swoje miejsce w pamięci, gdzie są zapisane. Można więc uzyskać ich adres. Podobnie jak adres tablicy jest zwracany przez jej nazwę, podaną bez nawiasu kwadratowego, adres funkcji uzyskuje się za pomocą nazwy funkcji pozbawionej listy argumentów. Można tworzyć tablice wskaźników do funkcji i wywoływać funkcje nie po nazwie, a po numerze w tablicy 17 18 3

Różne właściwości Wskaźniki do funkcji - przykład: int suma (int a, int b) { return a+b; int main () { int (*wsk_suma)(int, int); // zmienna wskaźnikowa wsk_suma = suma; // przypisanie adresu funkcji printf("4+5=%d\n", (*wsk_suma)(4,5)); return 0; Różne właściwości Tablice wskaźników do funkcji - przykład: void ErrMsg() { printf("blad\n"); ; void OKMsg() { printf("ok\n"); ; void YesMsg() { printf("tak\n"); ; void NoMsg() { printf("nie\n"); ; void (*func_table[])() = {ErrMsg, OKMsg, YesMsg, NoMsg ; int main () { srand( (unsigned)time( NULL ) ); double r = rand(); int i = floor(4*r/rand_max); (*func_table[i])(); return 0; 19 20 Obiektowe metody inżynierii oprogramowania 1. (OOA Object Oriented Analysis) 2. Projektowanie obiektowe (OOD Object Oriented Design) OBIEKTOWE METODY INŻYNIERII OPROGRAMOWANIA 3. Programowanie obiektowe (OOP Object Oriented Programming) Peter Coad, Edward Yourdon 21 22 służy zbudowaniu modelu rzeczywistości wg pewnych zasad. ANALIZA OBIEKTOWA Trzymanie się tych zasad: daje spójną reprezentację stanowiącą podstawę analizy (co budować) i projektowania (jak budować), pozwala na identyfikację wspólnych cech atrybutów i usług, pozwala na budowę specyfikacji poddających się zmianom, pozwala na powtórne wykorzystanie wyników analizy dla rodzin systemów, pozwala na lepsze wzajemne zrozumienie analityka i eksperta w danej dziedzinie zastosowania. 23 24 4

Zarządzanie złożonością w analizie: Przyjęcie powszechnie stosowanych metod organizacji tworzenie klas obiektów i rozróżnianie ich; rozróżnienie między obiektem a jego atrybutami; rozróżnienie między całym obiektem a jego składowymi. Abstrakcja proceduralna pomijanie niektórych szczegółów rzeczy lub procesów wybierając tylko pewną istotną część na danym poziomie uogólnienia; definiujemy atrybuty oraz usługi, które mają wyłączność na manipulowanie tymi atrybutami. Zarządzanie złożonością w analizie: Hermetyzacja zasada używana przy budowie całościowej struktury programu: każda składowa programu powinna zamykać w sobie jedną decyzję projektową; styk z każdym modułem powinien być zdefiniowany tak, aby odkrywać możliwie mało ze swej wewnętrznej struktury. Dziedziczenie uproszczenie definicji klas podobnych do już definiowanych przez wykorzystanie tych zdefiniowanych w definicji nowych; opisuje generalizację i specjalizację czyniąc wspólne atrybuty i usługi jawnymi wewnątrz hierarchii klas. 25 26 Zarządzanie złożonością w analizie: Skojarzenie wiązanie ze sobą idei podobnych lub rzeczy które zdarzają się w tym samym czasie lub w podobnych okolicznościach. Komunikaty porozumiewanie się między obiektami. Skala pokazanie relacji między obiektami (części do całości) dla wyobrażenia sobie np. dużego lub bardzo małego obiektu. Zarządzanie złożonością w analizie: Kategorie zachowania reakcja na zdarzenie, zachowanie ze względu na podobieństwo ewolucji (zmiany w czasie), zachowanie ze względu na podobieństwo funkcji. 27 28 Metody analizy: 1. inne niż obiektowe Rozkład funkcjonalny Metoda przepływu danych (Data Flow Diagrams) Modelowanie informacji (Entity Relationship Diagrams) Rozkład funkcjonalny (nieobiektowy) Dekompozycja algorytmiczna podział algorytmu na odrębne czynności: każdy projektowany moduł programowy systemu określa znaczący krok w procesie przetwarzania. 2. podejście obiektowe (o tym będzie dalej) 29 30 5

Metoda przepływu danych (Data Flow Diagrams) (nieobiektowy) Graficzna prezentacja, tzw. diagram przepływu danych w procesie; zawiera następujące rodzaje elementów: - funkcje (procesy), - magazyny danych, - źródła i odbiorcy, - przepływy (znaki pokazujące kierunek przesyłu danych) Modelowanie informacji (Entity Relationship Diagrams) (nieobiektowy) Graficzna prezentacja logicznej struktury danych w bazie danych. Występujące pojęcia: encje (grupy lub kategorie danych) oraz atrybuty (podgrupy wewnątrz encji)). Relacje wewnątrz modelu: 1. Obowiązkowe 2. Opcjonalne 3. Wielu-do-wielu 4. Jeden-do-wielu 5. Jeden-do-jeden 6. Rekurencyjne 31 32 Modelowanie informacji (Entity Relationship Diagrams) (nieobiektowy) Graficzna prezentacja logicznej struktury danych w bazie danych: Podejście obiektowe Rodzaj dekompozycji, w której zamiast wyszczególniać czynności wyodrębnia się obiekty, na których dokonywane mogą być operacje. Data i miejsce urodzenia PESEL nazwisko kierowca imię adres 1 1 posiada kategorie Prawo jazdy numer Data wydania Data ważności Organ wydający Różnice: Dekompozycja algorytmiczna opisuje kolejność czynności dekompozycja obiektowa opisuje uczestniczące w czynnościach obiekty oraz wzajemne oddziaływanie obiektów na siebie. Dekompozycja algorytmiczna i obiektowa są sobie przeciwstawne nie można ich przeprowadzić jednocześnie. 33 34 Podejście obiektowe składowe modelu: Pojęcia Obiekty Związki miedzy pojęciami Atrybuty obiektów Usługi obiektów Komunikaty między obiektami Pojęcia są środkiem służącym do rozpoznawania: Materialne osoba, ołówek, samochód Niematerialne czas, jakość, firma Role doktor, pacjent, właściciel Opinie wydajna praca, wysoka płaca, dobry przykład Relacyjne małżeństwo, posiadanie Zdarzenia sprzedaż, zakup, załamanie rynku Inne zestaw, liczba, ikona, obraz, sygnał, proces Pojęcia pozwalają nadać znaczenie obiektom w naszym świecie. 35 36 6

Trójka pojęciowa: 1. Symboliczna reprezentacja, np. : nazwa, ikonka, znaczek 2. Intensja treść pojęcia, pełna definicja pojęcia 3. Ekstensja zakres pojęcia, zbiór wszystkich rzeczy i wyobrażeń abstrakcyjnych, do których stosuje się dane pojęcie. 37 Typ obiektowy opis obiektu z jednolitym zbiorem atrybutów i usług, zawierający opis tworzenia nowych obiektów w klasie Obiekty coś, do czego da się zastosować jakieś pojęcie. Obiekt jest egzemplarzem pojęcia (instancją). Struktura i zachowanie obiektu są określone przez pojęcia, które się do niego odnoszą: Pojęcie typ obiektowy Obiekt to kapsułka ze zdefiniowanymi wartościami atrybutów i wyłącznie na nich działającymi usługami. Większość obiektów istnieje tylko przez pewien okres. 38 Struktury - związki między typami obiektowymi Odwzorowania: np. zatrudnia przypisuje obiekt typu organizacja związanym z nim obiektom typu zatrudniony. Odwzorowania mogą być jedno- lub wielowartościowe. 1. A jest zawsze związane z jednym B 2. A jest zawsze związane z jednym lub wieloma B 3. A jest zawsze związane z żadnym lub tylko jednym B 4. A jest zawsze związane z żadnym, jednym lub wieloma B Struktury - związki między typami obiektowymi Relacje: Mogą obejmować kilka typów obiektów, np. umowa o prace jest typem związków, którego krotki są niezmiennymi parami obiektów typu osoba i organizacja 39 40 Struktury - podtypy i nadtypy obiektów: Podtyp typ obiektowy, którego zbiór wszystkich elementów zawiera się w większym zbiorze, oraz definicja jest bardziej wyspecjalizowana niż definicja innego typu Nadtyp - typ obiektowy, którego zbiór zawiera wszystkie elementy jednego lub więcej typów, oraz definicja jest ogólniejsza niż definicja innych typów Np.: organizm zwierzę ssak - pies Atrybuty dane (stan systemu), dla których każdy obiekt ma swoją własną wartość Każdy typ obiektowy jest opisany przez atrybuty. Atrybuty są szczegółowo opisane w specyfikacji obiektu. Atrybuty opisują wartości trzymane w obiekcie, aby wyłącznie usługi tego obiektu mogły nimi manipulować. Atrybuty i specjalne usługi na nich działające traktujemy jako nierozłączną całość. Jeżeli inny obiekt chce odczytać wartości w obiekcie lub działać na nich w inny sposób, musi zrobić to poprzez specyfikację powiązania odpowiadającego komunikatowi, który spowoduje realizację usługi zdefiniowanej dla tego projektu. 41 42 7

Definiowanie usług Usługa zdefiniowane zachowanie obiektu, które jest on zobowiązany przejawić. Usługi stosują się do atrybutów obiektu. Definiując nowe usługi wyróżniamy następujące działania: Identyfikacja stanów obiektu Identyfikacja wymaganych usług Identyfikacja powiązań odpowiadających komunikatom Specyfikacja usług Zebranie w jedną całość dokumentacji analizy Zbiór powiązanych ze sobą obiektów o pewnej funkcjonalności można nazywać systemem. Raz uruchomiony system działa obiekty oddziałują na siebie, zmieniając swój stan i tworząc nowe obiekty powiązane z tym systemem, a także usuwając już istniejące. Perpetuum mobile projekt: Leonardo da Vinci, Muzeum w Monachium, Niemcy http://www.leifiphysik.de/themenbereiche/arbeit-energie-und-leistung/geschichte 43 44 Stan obiektu kolekcja powiązań obiektu z innymi obiektami i typami obiektowymi w pewnym okresie czasu życie obiektu: W systemie obiekty powstają, istniejąc zmieniają wielokrotnie swój stan, oraz są usuwane Zmiana stanu jest zmianą powiązań (atrybutów i/lub związków) obiektu Istotna zmiana stanu obiektu nazywana jest zdarzeniem Rodzaje zdarzeń: tworzenie, kończenie, łączenie/rozłączanie, inne Analityk nie potrzebuje wiedzy o każdym możliwym zdarzeniu: klasyfikuje je tworząc typy zdarzeń, np. zamiast definiowania zdarzenia wczoraj mój pies ugryzł nowego listonosza w lewą nogę tworzy typ: pies ugryzł osobę Zdarzenia są historią obiektów 45 46 życie systemu: Zmienność systemu wyraża się przez procesy Procesy odczytują i zmieniają stany obiektów Operacje to jednostki przetwarzania, z których składają się procesy Każda operacja wymaga obiektów, na których może operować (jeden lub więcej) Operacje mogą zwraca nowe obiekty Operacje są też związane z typami zdarzeniowymi efektem operacji mogą być zdarzenia Ograniczenia, przy spełnieniu których operacja wykona się poprawnie, to warunki wstępne Ograniczenia jakie musza zachodzić w wyniku zakończenia operacji to warunki końcowe Operacje zegarowe: emitują zdarzenia - tyknięcia zegara Metody są izolowane od rozważań o przyczynach i skutkach, tj.: Metoda działa tak samo niezależnie od tego, jakie zdarzenie ją wywołało i jaki jest stan obiektów (wystarczy że spełniają ograniczenia) Metoda w swym działaniu nie uwzględnia tego, jakie następne metody wywoła zdarzenie jej zakończenia Można je specyfikować jako moduły zawierające różnorodne składniki: ciągi zdarzeń, wywołań i warunków sterujących; są to zagnieżdżone struktury operacji. Specyfikacja sposobu wykonania operacji to metoda 47 48 8

Wyzwalacz połączenie zdarzenia i wywoływanego procesu Reprezentowanie struktury obiektów model relacji binarnych (diagram obiektowy) wyraża związki między typami Rodzaje wyzwalaczy == reguły wyzwalania Wyzwalacz może wyzwalać wiele procesów, które mogą być wykonywane sekwencyjnie lub równolegle 49 50 Reprezentowanie zachowania obiektów Maszyny skończone: stany, przejścia między stanami (zależą od zdarzeń). Specyfikacje oparte na scenariuszach (diagramy sieci Petriego). Specyfikacje decyzyjne wyrażone za pomocą tabeli decyzyjnej i drzewa decyzyjnego. 51 9