Projektowanie i programowanie obiektowe II - Wykład I

Slides:



Advertisements
Podobne prezentacje
Projektowanie Aplikacji Komputerowych
Advertisements

Programowanie obiektowe
Związki w UML.
Projektowanie aplikacji równoległych Jarosław Kuchta.
Programowanie obiektowe
Modelowanie przypadków użycia
Modelowanie klas i obiektów
Projektowanie w cyklu życia oprogramowania
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania
Zaawansowane metody programowania – Wykład V
Badania operacyjne. Wykład 1
Inżynieria Oprogramowania II
Co UML może zrobić dla Twojego projektu?
Bartosz Walter Prowadzący: Bartosz Walter
Inteligentne Systemy Informacyjne
Zasady zaliczenia Warunki uzyskania zaliczenia:
Unified Modeling Language Wykład 3 Diagram klas
Diagramy klas w języku UML
Diagram czynności (Activity Diagrams)
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Praca Inżynierska „Analiza i projekt aplikacji informatycznej do wspomagania wybranych zadań ośrodków sportowych” Dyplomant: Marcin Iwanicki Promotor:
Modele baz danych - spojrzenie na poziom fizyczny
Projektowanie - wprowadzenie
Analiza, projekt i częściowa implementacja systemu obsługi kina
Wykład 4 Analiza i projektowanie obiektowe
Wykład 5 UML - Unified Modeling Language
Wykład 3 Analiza i projektowanie strukturalne
Teoria relacyjnych baz danych
C.d. wstępu do tematyki RUP
Unified Modeling Language graficzny język wizualizacji, specyfikowania, tworzenia i dokumentowania systemów informatycznych.
Inżynieria Oprogramowania
UML 2.x Robert Pająk.
Model przestrzenny Diagramu Obiegu Dokumentów
Wykład 1 – część pierwsza
Źródła: podręcznikopracował: A. Jędryczkowski.
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
WPROWADZENIE W ŚWIAT OBIEKTÓW
Związki w UML Do zrobienia jest: -Przerysować jak ktoś ma Visio te dwa diagramy tak żeby podmienić tylko nazwy a reszta Taka sama, -I dodać po jednym zdaniu.
Podsumowanie metodologii OMT
Programowanie obiektowe – język C++
1 Analiza obiektowa Peter Coad / Edward Yourdon Analiza obiektowa wydawnictwo: Oficyna Wydawnicza READ ME, Warszawa 1994 dr Waldemar Wolski.
Programowanie obiektowe 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
1 Każdy obiekt jest scharakteryzowany poprzez: tożsamość – daje się jednoznacznie wyróżnić; stan; zachowanie. W analizie obiektowej podstawową strukturą
Modelowanie obiektowe Diagramy UML – diagram przypadków użycia
Unified Modeling Language - Zunifikowany Język Modelowania
Wprowadzenie do UML dr hab. inż. Kazimierz Subieta profesor PJWSTK.
Modelowanie obiektowe Diagramy klas
Programowanie w języku C++
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Interakcja człowiek – komputer Podstawy metod obiektowych mgr inż. Marek Malinowski Zakład Matematyki i Fizyki Wydz. BMiP PW Płock.
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Diagram klas Kluczowymi elementami są: klasy (class)
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Diagram obiektów Diagram obiektów ukazuje elementy i związki z diagramu klas w ustalonej chwili. Diagram obiektów jest grafem złożonym z wierzchołków i.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Projekt modułu Nazwa całego projektu Nazwa modułu Imię i Nazwisko Inżynieria Oprogramowania II dzień, godzina rok akademicki W szablonie na niebiesko zamieszczone.
Projektowanie bazy danych z użyciem diagramów UML Obiektowe projektowanie relacyjnej bazy danych Paweł Jarecki.
Wzorce Projektowe w JAVA
Wstęp do systemów informatycznych Diagramy klas. Odbiór świata  Myślenie o dziedzinie problemu powinno być możliwie zbliżone do myślenia o systemie 
Inżynieria systemów informacyjnych
Programowanie Obiektowe – Wykład 2
Projekt modułu BANK INTERNETOWY Moduł funkcji banku
Wykład 1 – część pierwsza
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Projektowanie i programowanie obiektowe II - Wykład I dr inż. Wojciech Tarnawski e-mail:wojciech.tarnawski@pwr.wroc.pl www.pwsz.legnica.edu.pl/~tarnawskiw  Copyright by Wojciech Tarnawski

Cel przedmiotu (wykład + lab.): Zapoznanie z metodami projektowania i analizy obiektowo zorientowanych systemów informatycznych. (podstawy modelowania obiektowego i notacji graficznej w ujednoliconym języku modelowania UML - Unified Modeling Language, niezależnie od konkretnego języka programowania)  Copyright by Wojciech Tarnawski

Literatura Oprogramowanie P. Coad, E. Yourdon, Analiza obiektowa, Oficyna Wydawnicza READ ME, Warszawa 1994. P. Coad, E. Yourdon, Projektowanie obiektowe, Oficyna Wydawnicza READ ME, Warszawa 1994. M. Flasiński, Wstęp do analitycznych metod projektowania systemów informatycznych, WNT Warszawa 1997. J. Grębosz, Symfonia C++ t. III, Oficyna Wydawnicza Kallimach, Kraków 1996. Gamma Erich, Helm Richard, Johnson Ralph, Vlissides John, Wzorce projektowe, seria Inżynieria oprogramowania Oprogramowanie STAR UML ObjectIf Środowisko MS Visual 2005-2008 …  Copyright by Wojciech Tarnawski

Plan przedmiotu Wprowadzenie, przegląd i porównanie stosowanych technik programowania, podstawowe koncepcje programowania obiektowego: abstrakcja, modularność i hermetyzacja, relacyjność, typowanie, współbieżność Analiza i identyfikacja zachowań systemu obiektowo zorientowanego Projektowanie systemu obiektowo zorientowanego przy pomocy języka modelowania UML (języka graficznego (grafów, diagramów) do modelowania różnych perspektyw systemu informatycznego) Wzorce projektowe – teoria i praktyka  Copyright by Wojciech Tarnawski

Przegląd technik programowania (wg historycznej hierarchii): Programowanie liniowe (BASIC, ASSEMBLER, ...) Programowanie proceduralne (Pascal, C, Fortran,...) Programowanie z ukrywaniem danych (C, Pascal - wprowadzenie pojęć: rekord, struktura) Programowanie oparte o obiekty (C++, Object Pascal - wprowadzenie pojęć: klasa, obiekt) Programowanie obiektowo zorientowane lub programowanie obiektowe (C++, SmallTalk, Java - wprowadzenie pojęć: dziedziczenie, polimorfizm (funkcje wirtualne) )  Copyright by Wojciech Tarnawski

Podstawowe koncepcje i pojęcia programowania obiektowego ABSTRAKCJA - zasada ignorowania tych aspektów przedmiotu, które nie są istotne z punktu widzenia bieżącego problemu, by móc pełniej skoncentrować się na właściwych. Programowanie obiektowe = modelowanie świata rzeczywistego na wysokim poziomie abstrakcji (np. C++ - język wysokiego poziomu, gdzie program widziany jest jako sekwencja instrukcji operujących na pojęciach (danych) z dziedziny problemu (liczby, znaki, obiekty).  Copyright by Wojciech Tarnawski

Formowanie klasy i obiektu ABSTRAKCJA DANYCH- zasada polegająca na zdefiniowaniu nowego typu danych tzw. KLASY, która jak najlepiej odzwierciedla fragment otaczającego nas świata wraz z operacjami, które możemy na tych danych zrealizować. WNIOSEK: Stosując abstrakcję danych projektant systemu obiektowo zorientowanego może zdefiniować pewien wycinek rzeczywistości (klasę) przez skoncentrowanie się na pewnym zasadniczym pojęciu (problemie) ignorując szczegóły. Klasa opisana składa się ze składników: tj. atrybutów (pól) oraz operacji (metod), które mają wyłączność na operowanie tymi atrybutami. Podając określone szczegóły (np. nadając wartości atrybutom klasy) opisujemy OBIEKT, czyli element danej klasy  Copyright by Wojciech Tarnawski

- stan obiektu (stan wewnętrzny) - wartości atrybutów obiektów (pola) OBIEKTEM (instancją, przejawem), nazywamy element należący do pewnej dziedziny (klasy), który jest specyfikowany w tej dziedzinie przez: - stan obiektu (stan wewnętrzny) - wartości atrybutów obiektów (pola) - sposób zachowania - interakcje z innymi obiektami (także innych klas) - tożsamość unikatową - każdy obiekt w systemie posiada unikalny identyfikator  Copyright by Wojciech Tarnawski

Przykład formowania klasy i obiektu Przypadek ze świata realnego: audycja telewizyjna typu talk-show o tytule: „Szymon Majewski Show” z poniedziałku 12.12.2005 Audycja jest nagrywana, emitowana i oglądana przez widzów Do uformowania klasy i obiektu potrzebujemy np.: tytułu - „Szymon Majewski Show” czasu emisji - poniedziałek, 12.12.2005, godz. 21:30 kto był zaproszony - Doda Elektroda, ...  ...  Copyright by Wojciech Tarnawski

Klasa: audycja telewizyjna typu talk-show nr audycji czas emisji OBIEKT Klasa: audycja telewizyjna typu talk-show nr audycji czas emisji kto był zaproszony ... zmodyfikuj czas emisji zmień zaproszonych gości Obiekt: „Szymon Majewski Show” 23 poniedziałek, 12.12.2005, godz. 21:30 Doda Elektroda,... Zmiana z 21:30 na 22:00 zmień Dodę na Mandarynę Nazwa Atrybuty Operacje  Copyright by Wojciech Tarnawski

Każda klasa musi mieć nazwę, która ją jednoznacznie identyfikuje Atrybut to nazwana właściwość klasy, określa zbiór wartości, jakie mogą przyjmować obiekty klasy. Operacje to implementacje pewnej usługi, której wykonania można zażądać od każdego obiektu tej klasy. Operacje możemy określić także przy pomocy tzw. Sygnatury : nazwy i listy parametrów Przykład sygnatury: zmodyfikuj czas emisji (string godzina) Podstawowe rodzaje operacji realizowanych przez obiekty: - konstrukcja (tworzenie) obiektu - modyfikacja stanu obiektu - selekcja (udostępnienie informacji o obiekcie) - iteracja ( sekwencyjny dostęp do składowych obiektu) - destrukcja (niszczenie) obiektu Operacje charakteryzujemy przy pomocy: warunków wstępnych, semantyki (opis przebiegu), warunków końcowych, sytuacji wyjątkowych  Copyright by Wojciech Tarnawski

Podział obiektów ze względu na ich związki operatorowe z innymi obiektami w systemie obiektowo zorientowanym: Aktorzy - obiekty, które dokonują operacji na innych obiektach, ale nigdy nie podlegają operacjom ze strony innych obiektów Serwery - obiekty podlegające operacjom ze strony innych obiektów i nie operujące na innych obiektach Agenci - obiekty, które operują na innych obiektach i mogą być przedmiotem operacji ze strony innych obiektów Inne uwagi: klasa może mieć dowolną liczbę atrybutów, a nawet nie mieć ich wcale symbol klasy nie musi zawierać wszystkich atrybutów i operacji, jeśli jest ich wiele (wtedy w odpowiedniej sekcji na końcu umieszczamy wielokropek  Copyright by Wojciech Tarnawski

Rodzaje hermetyzacji składowych klasy: MODULARNOŚĆ (enkapsulacja=„kapsułkowanie”) cecha umożliwiająca utrzymanie razem powiązanych ze sobą składników obiektu. Dzięki kapsułkowaniu otrzymujemy pewien moduł zawierający dane i metody na nich operujące. TYPOWANIE - pojedynczy obiekt jest określonego typu (obiekt z danej klasy) HERMETYZACJA (widoczność składników klasy, ukrywanie informacji zawartych w klasie) - wynikająca z abstrakcji danych cecha zapewniająca bezpieczeństwo obiektowi (jego składnikom), uniemożliwiająca dostęp z zewnątrz poprzez inne obiekty Rodzaje hermetyzacji składowych klasy: - składowe publiczne (+) : widzialne dla wszystkich innych obiektów klas widzialnych z danej klasy - składowe chronione (#): widzialne tylko dla obiektów podklas tej klasy (p. dziedziczenie) - składowe prywatne (-): najbardziej „intymny” obszar klasy, który nie jest widzialny przez obiekty innych klas. Istnieje możliwość dopuszczenia składowych prywatnych danego obiektu dla innych obiektów przez tzw. „zaprzyjaźnienie”  Copyright by Wojciech Tarnawski

Wyróżniamy następujące rodzaje związków (relacji): Relacyjność (hierarchizacja) - cecha umożliwiająca podanie relacji (związków, hierarchii) między obiektami z wcześniej zdefiniowanych klas. Wyróżniamy następujące rodzaje związków (relacji): - powiązanie (agregacja, komunikacja) - uogólnienie (dziedziczenie) - zależność (związek użycia) Szersze omówienie w dalszej części wykładu  Copyright by Wojciech Tarnawski

Ze względu na współbieżność modelowane systemy dzielimy na: WSPÓŁBIEŻNOŚĆ - możliwość konstrukcji systemu informatycznego w oparciu o system wieloprocesorowy lub wielowątkowy Ze względu na współbieżność modelowane systemy dzielimy na: - systemy sekwencyjne: w danym momencie mamy do czynienia z jednym obiektem, który jest czynny, pozostałe są nieczynne. Aktywacja innego obiektu następuje po przesłaniu komunikatu od obiektu czynnego - systemy współbieżne: więcej niż jeden obiekt może być czynny w danym momencie, obiekty takie są przez cały czas czynne i nie potrzebują aktywacji z zewnątrz.  Copyright by Wojciech Tarnawski

System obiektowy Model logiczny Model fizyczny Model klas Model dynamiczny Model funkcjonalny Opisuje zachowanie się systemu w czasie, umożliwia definicję wzajemnej współpracy i komunikacji między obiektami Opisuje wszystkie możliwe stany obiektów i związane z nimi zdarzenia (cykle życiowe obiektów) Opisuje: Tożsamość Atrybuty Operacje Związki  Copyright by Wojciech Tarnawski

Projektowanie systemów informatycznych obiektowo zorientowanych (plan projektu) 1. Identyfikacja zachowań systemu 2. Identyfikacja klas obiektów występujących w systemie 3. Klasyfikacja obiektów - pod względem dziedziczenia ( związek uogólniania) - pod względem zawierania się w sobie (powiązanie:agregacja) 4. Określenie powiązań komunikacji i związków użycia między obiektami ze zdefiniowanych klas. 5. Precyzyjna specyfikacja składowych klas (atrybutów i operacji) 6. Składanie modelu logicznego - określenie sekwencji działań obiektów (model funkcjonalny, model dynamiczny, przesyłanie komunikatów)  Copyright by Wojciech Tarnawski

Ad. 1 Identyfikacja zachowań systemu (usystematyzowanie wiedzy o problemie) A) Przedstawienie krótkiego streszczenia. Powinno ono zawierać jasne i zwięzłe podanie tego, co chce się zaprojektować, czyli cel przedsięwzięcia, motywację, genezę itp. B) Analiza wymagań użytkownika . Szczegółowy opis rzeczywistości (tzw. „scenariusz działania”), którą zamierzamy informatyzować, np. w formie eseju lub w postaci wypunktowanej. Określamy podstawowe założenia projektowe. Jeśli informatyzujemy tylko część systemu, to powinniśmy określić jego miejsce, jakie zajmuje on w całej architekturze. W szczególności opisujemy komunikację z resztą systemu.  Copyright by Wojciech Tarnawski