PLAN Wstęp Smalltalk (Alan Kay, Xerox, Palo Alto)

Slides:



Advertisements
Podobne prezentacje
Projektowanie Aplikacji Komputerowych
Advertisements

Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Projektowanie systemowe
Modelowanie klas i obiektów
Zaawansowane metody programowania – Wykład V
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Analiza i Projektowanie Obiektowe
25/08/ Języki programowania 1 Piotr Górczyński Obiekty i zdarzenia.
ZŁOŻONOŚĆ OBLICZENIOWA
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Obiektowe metody projektowania systemów
Kurs Pascala – spis treści
Wykład I dr inż. Adam Piotrowski
Struktury.
Dziedziczenie i jego rodzaje
Zasady zaliczenia Warunki uzyskania zaliczenia:
Inżynieria Oprogramowania dla Fizyków
Programowanie zorientowane obiektowo 1 Programowanie zorientowane obiektowo (object-oriented programming) jest to metodologia programowania bazująca na.
Wykład 8 Wojciech Pieprzyca
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład I
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Programowanie obiektowe W1 Wprowadzenie
Projektowanie - wprowadzenie
Wykład 4 Analiza i projektowanie obiektowe
Źródła: podręcznikopracował: A. Jędryczkowski.
Informatyka I - Wykład ANSI C
Programowanie strukturalne i obiektowe
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
WPROWADZENIE W ŚWIAT OBIEKTÓW
Dziedziczenie Maciek Mięczakowski
JAVA.
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.
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
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.
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.
Unified Modeling Language - Zunifikowany Język Modelowania
Modelowanie obiektowe Diagramy klas
Programowanie w języku C++
Metody numeryczne metody rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane tą drogą wyniki są na ogół przybliżone, jednak.
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
Programowanie obiektowe
OOPSmalltalk - Licznik, metodologia1 Analiza i projektowanie obiektowe 3 fazy: –analiza problemu - modelowanie (m.in. podział na klasy) –projektowanie.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Platforma .Net.
Programowanie Zaawansowane
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Wstęp do programowania Wykład 1
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 
Visual Basic przygotował Michał Miłek Visual Basic – język programowania wysokiego poziomu i narzędzie programistyczne firmy Microsoft. Składnia jest oparta.
Testy jednostkowe. „Test jednostkowy (unit test) to fragment kodu, który sprawdza inny fragment kodu”
InMoST: Innowacyjne metody wytwarzania oprogramowania – II edycja (c) Bartosz Walter Wprowadzenie do obiektowości (1) Plan szkolenia – Część.
Programowanie Obiektowe – Wykład 6
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

PLAN Wstęp Smalltalk (Alan Kay, Xerox, Palo Alto) Idee programowania obiektowego Smalltalk (Alan Kay, Xerox, Palo Alto) dlaczego tak przykład języka w pełni obiektowego łatwość obiektowego projektowania i programowania duża biblioteka gotowych klas Elementy analizy i projektowania obiektowego C++ (Bjarne Stroustrup, Bell Laboratories, AT&T) praktycznie i szeroko używany język obiektowy wada obiektowość “ginie” w składni i niskopoziomowości języka C Inne języki obiektowe Java, Eiffel, Objective C, ...

Literatura 1. Peter Coad, Jill Nicola, Programowanie Obiektowe, Prentice Hall 1992 (README 1993) 2. Peter Coad, Edward Yourdon, Analiza Obiektowa, Prentice Hall 1991 (README 1994) 3. Peter Coad, Edward Yourdon, Projektowanie Obiektowe, Prentice Hall 1991 (README 1994) 4. David A. Taylor, Technika obiektowa, Addison - Wesley, 1990 (Helion, 1994) 5. James Martin, James Odell, Podstawy metod obiektowych, Prentice Hall 1994 (WNT 1998) 6. R. Dumnicki, A. Kasprzyk, M.. Kozłowski, Analiza i projektowanie obiektowe, Helion 1998 7.Grady Booch, Object - Oriented Design with Applications, 1991 8. James Rumbaough i in., Object_Oriented Modelling and Design, 1991 9. Ian Graham, Object-Oriented Methods, 1994 10. Adele Goldberg, David Robson, Smalltalk-80, Addison-Wesley, 1989 11. Digitalk, Smalltalk/V for Windows, Digitalk Inc. 1992 12. Wilf LaLonde, John Pugh, Inside Smalltalk, Prentice Hall, 1990

13. Bjarne Stroustrup, Język C++, WNT, 1994 wiele innych książek o C++ 14. Kernighan, Ritchie, Język ANSI C, WNT 1994 15. Lemay, Perkins, Java 1.1, Helion 1998 16. Jan Bielecki, Java po C++, 1996 17. Jan Bielecki, Java od podstaw, 1996 wiele innych książek o Javie 20. Gerald Massini, ..... Object Oriented Languages, Academic Press, 1991

HISTORIA Algol-60 Pascal Simula-67 C Loglan Modula 2 Smalltalk Ada C++ inne języki hybrydowe Java Simula-67: lata 60-te Smalltalk: lata 70-te, rozwój w latach 90-tych Loglan: lata 70/80 Ada: początek lat 80 C++: początek lat 80-tych Java: połowa lat 90-tych popularność programowania obiektowego: lata 90

PROGRAM OBIEKT Programowanie modularne: Program = algorytmy + struktury danych Programowanie obiektowe: Program = zbiór obiektów komunikujących się poprzez komunikaty modelowanie systemu jeden model może być użyty do wielu zadań OBIEKT atrybuty: zmienne określające stan obiektu (ukryte) akcje: operacje, jakie obiekt może wykonywać na swoich atrybutach komunikat: polecenie wykonania akcji i zwrócenia wyniku atrybuty akcje k1 k5 k2 k6 k3 k4

Programowanie obiektowe Pascal type prostokąt = record x1, y1, x2, y2 : real end; var p, q : prostokąt; funkction przecina (p, q : prostokąt):boolean; ...... begin if przecina (p, q ) then ..... Programowanie obiektowe P przecina przecina: Q Q przecina ... P przecina: Q ... Smalltalk ... P -> przecina (Q) C++ ... P.przecina (Q) C++ lub Java Nie wykonujemy operacji na atrybutach obiektów: Każemy obiektom samym wykonywać akcje

Stosy Klasa Stos: jakaś impementacja stosu operacje pop, push, topelem, empty S - obiekt klasy Stos pop S := Stos new S push: elem. ... S. pop. push : elem

Klasy i obiekty Klasa = wzorzec dla obiektów, typ obiektów określa atrybuty (nazwy, rodzaj, typy) obiektów i akcje, jakie są dopuszczalne w obiekcie tej klasy. imię nazwisko adres wypisz swoje dane Człowiek Jan Nowak Warszawa Anna Kwas Toruń Tomasz Wnuk Warszawa wypisz swoje dane Obiekt dowolnej klasy

Dziedziczenie Nadklasa Podklasa Generalizacja Specjalizacja Podklasa jest pewną specjalizacja nadklasy wielokąt czworokąt prostokąt kwadrat równoległobok sześciokąt trójkąt figura okrąg " kwadrat jest prostokątem" "prostokąt jest figurą" "okrąg jest figurą" "równoległobok jest wielokątem"

Metody obiektowe Obiekt Klasa Abstrakcja Hermetyzacja Dziedziczenie Modelowanie dziedziny problemu poprzez znalezienie jej najważniejszych komponentów - obiektów, ich własności, zachowania i wzajemnej współpracy. Obiekt Abstrakcja czegoś z dziedziny problemu, odzwierciedlająca zdolności systemu do przechowywania informacji o tym, interakcji z tym czymś; kapsułka z wartościami atrybutów i wyłącznie na nich działającymi operacjami. Obiekt ma tożsamość Klasa Zbiór obiektów , które mają takie same właściwości (atrybuty) i zachowanie (metody). Wzorzec dla obiektów. Typ obiektów. Wykonując model dziedziny problemu (świata rzeczywistego) posługujemy się klasami, jako pojęciem “meta” w stosunku do obiektu. Abstrakcja Uproszczony opis (specyfikacja) obiektu ignorujący te jego aspekty, które nie są ważne z punktu widzenia bieżącego celu. Hermetyzacja Proces ukrywania tych elementów abstrakcji (obiektu), które implementują jego strukturę i zachowanie; hermetyzacja służy do rozdzielenia interfejsu widocznego z zewnątrz od wewnętrznych sekretów realizacji. Dziedziczenie Relacja między klasami mówiąca o tynm, że dana klasa (podklasa) współdzieli strukturę i zachowanie zdefiniowane w jednej lub wielu klasach (nadklasach). Podklasa najczęściej jest specjalizacją swojej nadklasy poprzez doprecyzowanie lub rozszerzenie odziedziczonej sytuktury i zachowania. B jest podklasą A B “jest rodzajem” A

Jakość Oprogramowania Poprawność (correctness) program ma robić dokładnie (i poprawnie) to, co zostało zdefiniowane w specyfikacji Odporność (robustness) program ma zachowywać się sensownie w każdej (nawet nieprzewidzianej) sytuacji Modyfikowalność i rozszerzalność program musi być łatwo dostosowywalny do zmian w specyfikacji Możliwość wielokrotnego użycia elementów projektu i programu (reusability) typowe fragmenty programu muszą dać się łatwo użyć w innych programach lub w tym samym programie Kompatybilność Efektywność Przenaszalność

Jak osiągnąć cele jakości oprogramowania? Modularność, programowanie strulturalne, wielokrotny użytek procedur Pascal, Modula 2, C Wielokrotny użytek całych struktur danych, ochrona danych Modula 2 Wielokrotny użytek struktutur danych i obiektów, hermetyzacja (encapsulation) poprzez klasy i dziedziczenie języki obiektowe Użycie metodologii obiektowej (od analizy, poprzez projekt do programu): przyspiesza proces tworzenia systemu poprzez wielokrotne użycie elementów ułatwia modyfikowalność i rozszerzalność pozwala szybko stworzyć prototyp

? Polimorfizm: możliwość różnych realizacji w różnych klasach figura ?? narysuj klasa abstrakcyjna - nie może być obiektów dokładnie tej klasy wielokąt nowy atrybut - lista wierzchołków przedefiniowuje operację narysuj nowa operacja - ile wierzchołków lista wierzchołków narysuj ile wierzchołków kwadrat środek ile wierzchołków dziedziczy listę wierzchołków dziedziczy operację narysuj przedefiniowuje ile wierzchołków nowa operacja - środek okrąg środek promień narysuj nowe atrybuty - środek i promień przedefiniowuje operację narysuj Polimorfizm: możliwość różnych realizacji w różnych klasach operacji tak samo nazwanej ? wykonywana jest odpowiedznia operacja narysuj, w zależności od klasy obiektu narysuj

Realizacja polimorfizmu Odbieranie komunikatu Hierarchia dziedziczenia klas klasa A kierunek wyszukiwania metody (operacji) klasa B klasa C klasa D klasa E Na zmiennej x przechowywany jest obiekt klasy E. komunikat x akcja powoduje wyszukiwanie metody akcja kolejno w klasach E, C, A i wykonanie pierwszej znalezionej metody (jeśli jej nie ma, to błąd) Na zmiennej x jest obiekt klasy Kwadrat: x narysuj wykonanie metody z klasy Wielokąt Na zmiennej x jest obiekt klasy Okrąg: x narysuj wykonanie metody z klasy Okrąg

Charakteryzacja programowania obiektowego Programowanie z obiektami Obiekty jako typy danych, ukrywające swój stan, ale potrafiące wykonywać na nim operacje. Programowanie przez symulację Programujemy aplikacje używając symulacji lub animacji. Obiekty modelują świat rzeczywisty. To jest styl nazywany programowaniem przez personifikację. Obliczenia przeprowadzane poprzez przesyłanie komunikatów Działanie obiektu w odpowiedzi na komunikat są określone przez metody. Użycie polimorfizmu (wirtualizacja) komunikaty są różnie interpretowane, zależnie od odbiorcy. Dziedziczenie nowe klasy są definiowane jako specjalizacje klas już istniejących. Używanie bogatej biblioteki klas “wielokrotnego użytku”