Programowanie obiektowe

Podobne dokumenty
Programowanie obiektowe

Diagramy klas. dr Jarosław Skaruz

Zaawansowane programowanie w C++ (PCP)

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Programowanie obiektowe

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

Dokumentacja do API Javy.

Programowanie obiektowe

Decorator (dekorator)

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie obiektowe

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016

Programowanie obiektowe

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania

Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Programowanie obiektowe

Klasy abstrakcyjne i interfejsy

Dziedziczenie. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe i refaktoryzacja

Testowanie oprogramowania Wzorce projektowe

Aplikacje w środowisku Java

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Kurs WWW. Paweł Rajba.

Java: interfejsy i klasy wewnętrzne

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie obiektowe - wykład 5

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

Programowanie obiektowe i zdarzeniowe

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

Programowanie obiektowe - 1.

Programowanie obiektowe

Wzorce projektowe Michał Węgorek

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Programowanie obiektowe

Wprowadzenie do programowania aplikacji mobilnych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Technologia Programowania 2016/2017 Wykład 4

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Wzorce projektowe. dr inż. Marcin Pietroo

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie w języku Java WYKŁAD

PRZEWODNIK PO PRZEDMIOCIE

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Programowanie obiektowe

Scala - programowanie obiektowo-funkcyjne

Przykładowa implementacja

Programowanie obiektowe

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

Programowanie i projektowanie obiektowe

Interfejsy i klasy wewnętrzne

Wzorce projektowe. dr inż. Marcin Pietroo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Programowanie Obiektowe i C++

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

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Enkapsulacja, dziedziczenie, polimorfizm

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

WYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Wykład 7: Pakiety i Interfejsy

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie obiektowe

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Wzorce projektowe strukturalne cz. 1

Wykład 5 Okna MDI i SDI, dziedziczenie

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Dziedziczenie. Tomasz Borzyszkowski

Programowanie Obiektowe i C++ Marcin Benke

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Wzorce projektowe. dr Jarosław Skaruz

Technologie i usługi internetowe cz. 2

Wprowadzenie do projektu QualitySpy

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:

hierarchie klas i wielodziedziczenie

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

PHP 5 język obiektowy

Programowanie i projektowanie obiektowe

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

Metodyki zwinne wytwarzania oprogramowania

Szablony funkcji i szablony klas

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

Programowanie obiektowe

Transkrypt:

Wykład 12 Marcin Młotkowski 16 maja 2018

Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 482 / 537

Dziedziczenie Dziedziczenie a składanie Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 483 / 537

Dziedziczenie Dziedziczenie a składanie Kiedy dziedziczyć Wskazówka Podklasa przedefiniowuje operację nadklasy lub dodaje nową funkcjonalność Marcin Młotkowski 484 / 537

Dziedziczenie Dziedziczenie a składanie Zły przykład class ListaJednokier { Object obj; ListaJednokier nast; void dodaj(object obj); } class ListaDwukier : ListaJednokier { ListaDwukier poprz; ListaDwukier nast; void dodaj (Object obj); // na początek void nakoniec (Object obj); // na koniec } Marcin Młotkowski 485 / 537

Dziedziczenie Dziedziczenie a składanie Analiza przykładu Klasa ListaDwukier ma zupełnie inną implementację niż klasa ListaJednokier, nie korzysta ani z odziedziczonych pól, ani z odziedziczonych metod. Klasy ListaDwukier i ListaJednokier mają podobne interfejsy. Marcin Młotkowski 486 / 537

Dziedziczenie Dziedziczenie a składanie Morał Identyczny interfejs nie musi implikować dziedziczenia. Przesłanką do dziedziczenia jest wykorzystanie implementacji z nadklasy (dziedziczenie implementacji) i rozszerzenie funkcjonalności Marcin Młotkowski 487 / 537

Dziedziczenie Dziedziczenie a składanie Co z tym zrobić Wspólna klasa abstrakcyjna abstract class ListaAbstrakcyjna { void public dodaj(object obj); } Wspólny interfejs interface ILista { void dodaj(object obj); } Marcin Młotkowski 488 / 537

Dziedziczenie Dziedziczenie a składanie Przypomnienie Klasy powinne mieć precyzyjnie określone zadanie. W przypadku "szerokiej" funkcjonalności klasy lepiej poskładać ją z mniejszych. Marcin Młotkowski 489 / 537

Dziedziczenie Dziedziczenie a składanie Przykład Wersja prosta class osoba { string Imie, Nazwisko; public void edycja() {... } public void odczyt() {... } public void zapis() {... } } Bardziej uniwersalna class osoba { string Imie, Nazwisko; Edytor e = new EdytorQt(); BazaDanych bd = new BSDQLite(); } Marcin Młotkowski 490 / 537

Dziedziczenie Dziedziczenie a składanie Wzorce projektowe Poznane wzorce Singleton MVC Szablon i Strategia Marcin Młotkowski 491 / 537

Dziedziczenie Dziedziczenie a składanie Wzorce projektowe Poznane wzorce Singleton MVC Szablon i Strategia Źródło wzorców Wzorce projektowe, E. Gamma, R. Helm, R. Johnson, J. Vlissides Marcin Młotkowski 491 / 537

Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 492 / 537

* obiektowe Analiza obiektowa Analiza obiektowa Projektowanie obiektowe Marcin Młotkowski 493 / 537

Implementacja klas wskazanych w analizie Implementacja związków Uszczegółowienie, tj. dodanie klas Marcin Młotkowski 494 / 537

Analiza obiektowa Klasa Podklasa InnaPodklasa Marcin Młotkowski 495 / 537

Implementacja schematu Dziedziczenie abstract class Klasa {... } class Podklasa : Klasa {... } class InnaPodklasa : Klasa {... } Marcin Młotkowski 496 / 537

Bardziej skomplikowane zadanie Osoba Pracownik Czytelnik PracownikCzytelnik Marcin Młotkowski 497 / 537

Implementacja Analiza obiektowa Implementować w języku posiadającym wielodziedziczenie: Python, C++. Marcin Młotkowski 498 / 537

Spłaszczenie hierarchii Osoba Pracownik Czytelnik PracownikCzytelnik Marcin Młotkowski 499 / 537

Podział na role Analiza obiektowa Osoba Role Pracownik Czytelnik Marcin Młotkowski 500 / 537

Agregacja przypomnienie Zamówienie PozycjaZamówienia 1 0..* Marcin Młotkowski 501 / 537

Kolekcje Kolekcje pojawiają się jako dodatkowe klasy, nieuwzględniony w ogólnym projekcie Kolekcje są obecne w większości (wszystkich?) liczących się środowiskach programistycznych Marcin Młotkowski 502 / 537

Samodzielna implementacja kolekcji, 1. podejście class Osoba { String Nazwisko; Osoba następnik; void dołącz(osoba o) {... } } Marcin Młotkowski 503 / 537

Samodzielna implementacja kolekcji, 1. podejście class Osoba { String Nazwisko; Osoba następnik; void dołącz(osoba o) {... } } Ocena implementacji Klasa łączy funkcje listy i Osoby Wymaga implementacji mechanizmów listowych dla każdej klasy osobno Kłopot z listą pustą Marcin Młotkowski 503 / 537

Implementacja kolekcji, 2. podejście class Lista { Osoba val; Lista następnik; void dołącz(osoba o){... } } Marcin Młotkowski 504 / 537

Implementacja kolekcji, 2. podejście class Lista { Osoba val; Lista następnik; void dołącz(osoba o){... } } Ocena implementacji Klasa Osoba jest czystą klasą Kłopot listą pustą Marcin Młotkowski 504 / 537

Implementacja kolekcji, 3. podejście class Lista { ElemListy lista; bool empty(); void dołącz(osoba o); } class ElemListy { Osoba val; ElemListy następnik; } Marcin Młotkowski 505 / 537

Ocena implementacji Zalety Klasy mają dokładnie określone zadania Klasę Lista można wykorzystywać do przechowywania obiektów innych klas Wady Rośnie liczba klas i zależności między nimi. Marcin Młotkowski 506 / 537

Implementacja związków między obiektami Poprzez referencje Utworzenie nowej klasy reprezentującej związek Marcin Młotkowski 507 / 537

Przykład Analiza obiektowa Małżeństwo Prosty system zwykła referencja Marcin Młotkowski 508 / 537

Przykład Analiza obiektowa Małżeństwo Prosty system zwykła referencja Urząd Stanu Cywilnego Żona Ślub + datazawarcia + świadkowie + symb_dokum Mąż Marcin Młotkowski 508 / 537

Skąd się jeszcze biorą obiekty Przechowywanie danych Interfejsy użytkownika Aplikacja jako obiekt (singleton)... Marcin Młotkowski 509 / 537