1 / 47

Szkolenie dla NaviExpert, 21.02.2011

Szkolenie dla NaviExpert, 21.02.2011. Wprowadzenie. 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.

gamada
Download Presentation

Szkolenie dla NaviExpert, 21.02.2011

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Szkolenie dla NaviExpert, 21.02.2011 Wprowadzenie

  2. 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

  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

  4. Obiektowość Abstrakcja Polimorfizm Hermetyzacja Odpowiedzialność Elastyczność Dziedziczenie Powtórne użycie Modularyzacja

  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.

  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

  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.

  8. Obiektowość a podejście strukturalne • Rozwiązanie 1 (dekompozycja funkcjonalna) • Utwórz listę ocen i uczniów, którzy je otrzymali • Dla każdego ucznia z listy • określ jego ocenę • określ sposób postępowania • przekaż informacje uczniowi

  9. Obiektowość a podejście strukturalne • Rozwiązanie 2 (obiektowe) • Nauczyciel • Utwórz listę ocen i Uczniów, którzy je otrzymali • Utwórz informację o sposobie postępowania w zależności od otrzymanej oceny • Udostępnij oceny i informację • Uczeń • Znajdź swoją ocenę na liście udostępnionej przez Nauczyciela • Określ sposób postępowania na podstawie oceny • Postąp zgodnie z instrukcją

  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

  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

  12. Abstrakcja Abstrakcja • zdolność programu do pomijania niektórych aspektów informacji • przedmioty abstrakcji: dane, zachowanie

  13. Polimorfizm 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)

  14. Interfejsy «Interface» Komunikator komunikator.zadzwon() zadzwon() odbierz() Telefon Tel. komórkowy Tel. satelit. zadzwon() zadzwon() zadzwon() odbierz() odbierz() odbierz() Interfejs: część klasy, która definiuje jej kontrakt (odpowiedzialność) Zasada 1 Odwołania przez interfejs (a nie klasę) poprawiają abstrakcję systemu

  15. Wielokrotne interfejsy «Interface» Komunikator Komunikator zadzwon() odbierz() Telefon Tel. komórkowy Tel. satelit. Zegarek zadzwon() zadzwon() zadzwon() odbierz() odbierz() odbierz() czas() «Interface» Czasomierz czas() Komunikator komunikator = new TelefonKomorkowy(); komunikator.zadzwon();

  16. Wielokrotne interfejsy «Interface» Komunikator zadzwon() odbierz() Telefon Tel. komórkowy Tel. satelit. Zegarek zadzwon() zadzwon() zadzwon() odbierz() odbierz() odbierz() czas() Czasomierz «Interface» Czasomierz czas() Czasomierz czasomierz = new Zegarek(); czasomierz.czas();

  17. Wielokrotne interfejsy «Interface» Komunikator Komunikator zadzwon() odbierz() Telefon Tel. komórkowy Tel. satelit. Zegarek zadzwon() zadzwon() zadzwon() odbierz() odbierz() odbierz() czas() Czasomierz «Interface» Czasomierz czas() Komunikator komorka = new TelefonKomorkowy(); Czasomierz komorka = new TelefonKomorkowy();

  18. Dziedziczenie a implementacja interfejsów «Interface» Komunikator Zegarek zadzwon() odbierz() czas() Telefon Telefon kom. Zegar ścienny zadzwon() zadzwon() odbierz() odbierz() czas() czas() • Zegar ściennyjest rodzajem Zegarka. Posiada wszystkie jego cechy • Zegar ściennydziedziczy zarówno typ, jak i implementację • Telefon i Telefon kom. są Komunikatorami. Oba obiekty mogą dzwonić i odbierać rozmowy • Telefon i Telefon kom. współdzielą tylko typ

  19. «Interface» Zegarek Zegar ścienny Czasomierz czas() czas() czas() Zegar ścienny «Interface» Zegarek ręczny Zegar cyfr. czas() czas() czas() wyswietl() wyswietl() Dziedziczenie klas a dziedziczenie interfejsów Dziedziczenie klas przekazuje typ i implementację Dziedziczenie interfejsów przekazuje tylko typ

  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ą

  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.

  22. Hermetyzacja obiektu Przykład Jedynie Kolekcja ma dostęp do Ocen. Nauczyciel kontaktuje się jedynie z Kolekcją.

  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);

  24. Hermetyzacja danych (1) Przykład Ocena może zmienić swoją wartość Konstruktor tworzy ułomny obiekt Ocena ocena = new Ocena(Ocena.BDB);

  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));

  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

  27. Rodzaje relacji: asocjacja • Komunikatornależy doUżytkownika • Komunikator może zmienić Użytkownika, Użytkownik może zmienić Komunikator • Użytkownikzna 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

  28. Rodzaje relacji: agregacja • KatalogzawieraKsiąż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

  29. Rodzaje relacji: kompozycja • Książkaskłada się zRozdziałó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

  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

  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

  32. Dziedziczenie a kompozycja Zasada 3 Należy preferować kompozycję ponad dziedziczenie

  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

  34. Spójność obiektu 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

  35. Powiązania między obiektami 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

  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

  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

  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ść

  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

  40. Karty CRC

  41. Karty CRC

  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

  43. Przykład 1 Przykład 1 Czy taki projekt jest uzasadniony?

  44. Przykład 1

  45. Przykład 2 Przykład 2 Czy taki projekt jest uzasadniony?

  46. Przykład 2

  47. 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

More Related