InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (1) Plan szkolenia 08.45 – 10.15 Część.

Slides:



Advertisements
Podobne prezentacje
Projektowanie Aplikacji Komputerowych
Advertisements

Programowanie obiektowe
Związki w UML.
Programowanie obiektowe
Modelowanie klas i obiektów
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Kamil Łącki Dominik Strzelichowski
Programowanie obiektowe w Javie
25/08/ Języki programowania 1 Piotr Górczyński Obiekty i zdarzenia.
Propozycja metodyki nauczania inżynierii oprogramowania
Co UML może zrobić dla Twojego projektu?
Szkolenie dla NaviExpert, Wprowadzenie.
Bartosz Walter Prowadzący: Bartosz Walter
Refaktoryzacja czyli odświeżanie kodu
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Marcin Kujawa Michał Łobarzewski
Dziedziczenie i jego rodzaje
Zasady zaliczenia Warunki uzyskania zaliczenia:
Wykład 8 Wojciech Pieprzyca
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Projektowanie - wprowadzenie
Model dziedziny. Świat rzeczywisty i jego model Świat rzeczywisty (dziedzina problemu) Świat obiektów (model dziedziny) Samochód Osoba Dom Modelowanie.
Wykład 4 Analiza i projektowanie obiektowe
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Źródła: podręcznikopracował: A. Jędryczkowski.
Programowanie strukturalne i obiektowe
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
WPROWADZENIE W ŚWIAT OBIEKTÓW
Dziedziczenie Maciek Mięczakowski
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Projektowanie obiektowe
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Programowanie obiektowe – język C++
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ą
PWSZ Gniezno // codefly 2009
2 Odizolowanie danych od kodu może prowadzić do przypadkowych zmian danych przez funkcje, które nie są z nimi logicznie związane. Ponadto modyfikacja.
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)
Diagram klas Diagramy klas służą do obrazowania statycznych aspektów projektowanych systemów jako: Projekt struktury logicznej baz danych Projekt składników.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Hibernate Podstawy.
Zakres Wzorce projektowe ( -Adapter (str , wykład wzorce projektowe.
Zakres Wzorce projektowe - kreacyjne -Factory Method -Abstract Factory.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Projektowanie bazy danych z użyciem diagramów UML Obiektowe projektowanie relacyjnej bazy danych Paweł Jarecki.
Geneza obiektowości Obiektowość jest stosunkowo nową ideologią, która wynika z zaobserwowanych wad istniejącego świata i podaje jakąś receptę, jak te wady.
Wzorce Projektowe w JAVA
Programowanie Zaawansowane
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Asocjacja,Kompozycja,Agregacja
Programowanie Obiektowe – Wykład 6
(według:
Programowanie Obiektowe – Wykład 2
Wprowadzenie do programowania obiektowego
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
PGO Porównywanie obiektów
Refaktoryzacja czyli odświeżanie kodu
Zapis prezentacji:

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (1) Plan szkolenia – Część I - Projektowanie obiektowe – przerwa kawowa – Część II Wzorce projektowe – przerwa kawowa – Część III Refaktoryzacja – obiad

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (2) Wprowadzenie do obiektowości – plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (3) Plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (4) Obiektowość Hermetyzacja Polimorfizm Dziedziczenie Abstrakcja Elastyczność ModularyzacjaPowtórne użycie Odpowiedzialność

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (5) Obiekt Definicja (powszechna) Obiekt w języku obiektowym reprezentuje obiekt w świecie rzeczywistym; jest strukturą posiadającą tożsamość, stan (pola) i zachowanie (metody). Definicja 2 (ogólniejsza) Obiekt jest elementem modelu pojęciowego obdarzonym odpowiedzialnością za pewien obszar świata rzeczywistego. Sposób realizacji tej odpowiedzialności zależy od samego obiektu.

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (6) Plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (7) Obiektowość a podejście strukturalne Przykład Nauczyciel wystawia oceny uczniom. W zależności od oceny oraz rodzaju egzaminu, za który została wystawiona, uczeń zalicza przedmiot, podchodzi do poprawki lub prosi o zaliczenie warunkowe. Nauczyciel odpowiada za przekazanie każdemu z uczniów informacji o sposobie dalszego postępowania.

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (8) Obiektowość a podejście strukturalne Rozwiązanie 1 (dekompozycja funkcjonalna) 1.Utwórz listę ocen i uczniów, którzy je otrzymali 2.Dla każdego ucznia z listy a)określ jego ocenę b)określ sposób postępowania c)przekaż informacje uczniowi

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (9) Obiektowość a podejście strukturalne Rozwiązanie 2 (obiektowe) Nauczyciel 1.Utwórz listę ocen i Uczniów, którzy je otrzymali 2.Utwórz informację o sposobie postępowania w zależności od otrzymanej oceny 3.Udostępnij oceny i informację Uczeń 1.Znajdź swoją ocenę na liście udostępnionej przez Nauczyciela 2.Określ sposób postępowania na podstawie oceny 3.Postąp zgodnie z instrukcją

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (10) Obiektowość a podejście strukturalne Wnioski Podział odpowiedzialności pozwolił uprościć algorytmy zmniejszyć powiązania między obiektami zwiększyć otwartość systemu na zmiany

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (11) Plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (12) Abstrakcja zdolność programu do pomijania niektórych aspektów informacji przedmioty abstrakcji: dane, zachowanie

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (13) Polimorfizm poly (gr. wiele ) morph (gr. postać ) – współistnienie różnych metod, które mogą zostać wywołane w odpowiedzi na komunikat zdolność do traktowania obiektu jako jednostki abstrakcyjnej Polimorfizm w Javie Dziedziczenie i pokrywanie metod Interfejsy i ich implementacje Typy generyczne (polimorfizm parametryczny)

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (14) Interfejsy komunikator.zadzwon() Komunikator zadzwon() odbierz() TelefonTel. komórkowyTel. satelit. Interfejs: część klasy, która definiuje jej kontrakt (odpowiedzialność) Zasada 1 Odwołania przez interfejs (a nie klasę) poprawiają abstrakcję systemu zadzwon() odbierz() zadzwon() odbierz() zadzwon() odbierz() «Interface»

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (15) Wielokrotne interfejsy Komunikator zadzwon() odbierz() «Interface» TelefonTel. komórkowyTel. satelit. zadzwon() odbierz() zadzwon() odbierz() zadzwon() odbierz() Komunikator Komunikator komunikator = new TelefonKomorkowy(); komunikator.zadzwon(); Czasomierz czas() Zegarek czas() «Interface»

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (16) Wielokrotne interfejsy Komunikator zadzwon() odbierz() «Interface» TelefonTel. komórkowyTel. satelit. zadzwon() odbierz() zadzwon() odbierz() zadzwon() odbierz() Czasomierz Czasomierz czasomierz = new Zegarek(); czasomierz.czas(); Czasomierz czas() Zegarek czas() «Interface»

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (17) Wielokrotne interfejsy Komunikator zadzwon() odbierz() «Interface» TelefonTel. komórkowyTel. satelit. zadzwon() odbierz() zadzwon() odbierz() zadzwon() odbierz() Czasomierz Komunikator komorka = new TelefonKomorkowy(); Czasomierz komorka = new TelefonKomorkowy(); Czasomierz czas() Zegarek czas() «Interface» Komunikator

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (18) Dziedziczenie a implementacja interfejsów Telefon zadzwon() odbierz() Telefon kom. zadzwon() odbierz() czas() Komunikator zadzwon() odbierz() Telefon i Telefon kom. są Komunikatorami. Oba obiekty mogą dzwonić i odbierać rozmowy Telefon i Telefon kom. współdzielą tylko typ Zegarek czas() Zegar ścienny czas() Zegar ścienny jest rodzajem Zegarka. Posiada wszystkie jego cechy Zegar ścienny dziedziczy zarówno typ, jak i implementację «Interface»

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (19) Dziedziczenie klas a dziedziczenie interfejsów Zegarek czas() Zegar ścienny czas() Zegar cyfr. czas() wyswietl() Czasomierz czas() Zegar ścienny czas() Zegarek ręczny czas() wyswietl() «Interface» Dziedziczenie klas przekazuje typ i implementację Dziedziczenie interfejsów przekazuje tylko typ

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (20) Hermetyzacja Definicja (powszechna) Hermetyzacja oznacza ukrywanie danych przed niepożądanym dostępem Definicja 2 (ogólniejsza) Hermetyzacja oznacza ukrywanie każdej decyzji projektowej, która może ulec zmianie: interfejsu, implementacji, zachowania metody, danych Zasada 2 Należy identyfikować zmienność i hermetyzować ją

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (21) Hermetyzacja typu Przykład Kolekcja zarządza Ocenami, nie wiedząc o podziale na oceny z Egzaminu i Poprawkowe. Klasa Ocena ukrywa informację o swoich podklasach.

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (22) Hermetyzacja obiektu Przykład Jedynie Kolekcja ma dostęp do Ocen. Nauczyciel kontaktuje się jedynie z Kolekcją.

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (23) Hermetyzacja danych (1) Przykład Ocena może zmienić swoją wartość Konstruktor tworzy ułomny obiekt Ocena ocena = new Ocena(); ocena.ustawWartosc(Ocena.BDB);

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (24) Hermetyzacja danych (1) Przykład Ocena może zmienić swoją wartość Konstruktor tworzy ułomny obiekt Ocena ocena = new Ocena(Ocena.BDB);

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (25) Hermetyzacja danych (2) Przykład Wykładowca wystawia oceny Kto jeszcze może wystawić oceny? Kolekcja oceny = nauczyciel.oceny(); oceny.dodaj(new Ocena(Ocena.BDB));

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (26) Plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (27) Rodzaje relacji: asocjacja Komunikator należy do Użytkownika Komunikator może zmienić Użytkownika, Użytkownik może zmienić Komunikator Użytkownik zna swój Komunikator, Komunikator nie wie, kto jest jego właścicielem Istnienie Użytkownika nie ma wpływu na istnienie Komunikatora i vice wersa

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (28) Rodzaje relacji: agregacja Katalog zawiera Książki Książka może należeć do wielu Katalogów jednocześnie Istnienie Katalogu nie ma wpływu na istnienie Książki i vice versa

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (29) Rodzaje relacji: kompozycja Książka składa się z Rozdziałów, Rozdział jest częścią Książki Rozdział może należeć tylko do jednej Książki Istnienie Książki decyduje o istnieniu Rozdziału i vice versa

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (30) Rodzaje relacji: dziedziczenie Odrzutowiec jest rodzajem Samolotu Odrzutowiec może zastąpić Samolot Odrzutowiec posiada niejawną instancję Samolotu związek między Odrzutowcem i Samolotem jest nierozerwalny

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (31) Rodzaje relacji: realizacja Pojazd potrafi poruszać się Samochód, Łódź i Samolot poruszają się w specyficzny dla siebie sposób Samochód, Łódź i Samolot mogą zastąpić dowolny Pojazd

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (32) Dziedziczenie a kompozycja DziedziczenieKompozycja relacja utrwalona w czasie kompilacji przekazuje podklasie typ i implementację silnie wiąże nadklasę i podklasę (hermetyzacja!) relacja zmienna w trakcie wykonywania programu nie zapewnia istnienia obiektu wiąże obiekty jedynie poprzez typ Zasada 3 Należy preferować kompozycję ponad dziedziczenie

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (33) Plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (34) Spójność obiektu wielkość porządkowa (wysoka – niska) opis współpracy elementów obiektu stopień powiązania metod i pól obiektu przy wypełnienia nałożonej na niego odpowiedzialności Zasada 4 Prawidłowo zaprojektowana klasa jest spójna

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (35) Powiązania między obiektami wielkość porządkowa (wysoka – niska) lub przedziałowa opis zależności pomiędzy obiektami stopień powiązania obiektów, które nie są spokrewnione Zasada 5 Niski stopień powiązań wspiera abstrakcję i hermetyzację w systemie

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (36) Plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (37) Obiekty-referencje tożsamość: referencja do obiektu liczność: jeden obiekt w rzeczywistości = jeden obiekt w systemie zmienność: tak porównywanie: przez porównanie referencji tworzenie: dedykowana klasa-fabryka przeznaczenie: duże złożone obiekty

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (38) Obiekty-wartości tożsamość: wartości pól obiektu liczność: jeden obiekt w rzeczywistości – wiele obiektów w systemie zmienność: nie porównywanie: przez porównanie wartości pól tworzenie: konstruktor przeznaczenie: małe obiekty reprezentujące wartość

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (39) Plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (40) Karty CRC Klasa Odpowiedzialność Współdziałanie

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (41) Karty CRC Klasa Nauczyciel Odpowiedzialność wystawianie ocen udostępnianie ocen uczniom Współdziałanie Kolekcja: dodawanie i usuwanie ocen Uczeń: udostępnianie ocen

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (42) Plan wykładu Istota obiektowości Obiektowość a podejście strukturalne Mechanizmy obiektowości Rodzaje relacji między obiektami Kryteria jakości projektu obiektowego Obiekty-referencje i obiekty-wartości Karty CRC Przykłady

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (43) Przykład 1 Czy taki projekt jest uzasadniony?

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (44) Przykład 1

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (45) Przykład 2 Czy taki projekt jest uzasadniony?

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (46) Przykład 2

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (47) Przykład 3 MatkaDziecko 0..n 1 Przykład 3 Który z rodzajów relacji jest lepszym rozwiązaniem? Dlaczego?

InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (48) Podsumowanie Kluczowym elementem obiektowości jest odpowiedzialność Mechanizmy obiektowe pomagają realizować właściwy przydział odpowiedzialności Obiekty mogą być powiązane za pomocą kilku rodzajów relacji Spójność i powiązania określają jakość systemów obiektowych Karty CRC są prostą metodą projektowania systemów z uwzględnieniem odpowiedzialności obiektów