Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.

Podobne prezentacje


Prezentacja na temat: "Języki i techniki programowania prowadzący dr Grzegorz Filipczyk."— Zapis prezentacji:

1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk

2 2 Struktura przedmiotu Języki i techniki programowania Semestr II Wykład 18 godz. Ćwiczenia 14 godz. Semestr III Wykład 18 godz. Egzamin Ćwiczenia 14 godz.

3 3 UWAGA zmiana nazwy przedmiotu stara nazwa PROGRAMOWANIE KOMPUTERÓW I nowa nazwa JĘZYKI I TECHNIKI PROGRAMOWANIA

4 4 Tematyka zajęć w semestrze zimowym 2005/2006

5 5 Wykład 1 WPROWADZENIE DO TECHNOLOGII OBIEKTOWEJ

6 6 Technologia obiektowa (ang. object-oriented technology) Jest dziedziną stosunkowo młodą w tworzeniu systemów komputerowych. Nie jest jednak niczym nowym w dziedzinie filozofii i psychologii

7 7 Encyklopedia Britannica podaje: W percepcji świata ludzie używają stale trzech metod organizacji, które przenikają całe ich myślenie

8 8 Pierwsza metoda organizacji rzeczywistości Różnicowanie na poszczególne obiekty i ich atrybuty Na przykład rozróżnienie między drzewem i jego rozmiarami oraz relacja przestrzenna do innych obiektów

9 9 Druga metoda organizacji rzeczywistości Rozróżnienie między całymi obiektami i ich częściami składowymi Na przykład kiedy kontrastuje się drzewo z gałęziami, z których się składa

10 10 Trzecia metoda organizacji rzeczywistości Tworzenie klas obiektów i rozróżnianie ich Na przykład konstrukcja klasy wszystkich drzew i klasy wszystkich kamieni oraz rozróżnienie między nimi

11 11 Przesłanki przemawiające za podejściem obiektowym Systemy służące ludziom powinny być zbudowane z zgodnie z ich możliwością percepcji rzeczywistości Systemy budowane w oparciu o powyżej zacytowane metody organizacji rzeczywistości będą przez ludzi najwydajniej tworzone, a potem najlepiej akceptowane

12 12 Geneza technologii obiektowej Jej korzenie sięgają lat siedemdziesiątych, dotyczą w szczególności dwóch dziedzin, nad którymi wówczas pracowano: symulacji i interfejsu użytkownika Zauważono wtedy, że zamiast dotychczasowego oddzielenia danych od algorytmu, korzystniejsze jest podzielenie systemu na oddzielne jednostki i zdefiniowanie zachowania takiej jednostki

13 13 Rozwój technologii obiektowej Od tego czasu minęło wiele lat, więc dziedzina ta miała czas na osiągnięcie stanu dojrzałego i obudowanie się w dziedziny pomocnicze W ten sposób z początkowego stadium zainteresowania programowaniem, metody obiektowe weszły w fazę projektowania, a później analizy Obiekty stopniowo zdobywają coraz to nowe obszary oprogramowania, od tradycyjnych, a więc interfejsu użytkownika i symulacji, przeszły już do bankowości, zarządzania, systemów przemysłowych, a także systemów operacyjnych i baz danych

14 Obiekty i klasy

15 15 Obiekty Pojęcie obiektu jest elementarnym pojęciem teorii klasyfikacji, jest sposobem postrzegania świata przez człowieka Obiektem jest np. ta sala wykładowa, ten komputer stojący na biurku. Obiektem jest w zasadzie wszystko, co możemy określić jako całość. Obiekt konceptualny zdefiniowany jest przez Wielki Słownik Języka Polskiego jako: "przedmiot, rzecz; przedmiot poznania i działalności człowieka".

16 16 Obiekt w ujęciu systemu informatycznego Definicja wprowadzona przez Coada i Yourdona: Obiekt Obiekt to abstrakcja czegoś w dziedzinie problemu, odzwierciedlająca zdolności systemu do przechowywania informacji o tym, interakcji z tym czymś, lub obie te rzeczy; kapsułka z wartościami atrybutów i wyłącznie na nich działającymi usługami

17 17 Klasy obiektów Obiekty można łączyć w klasy. Klasę można widzieć jako grupę obiektów jednego typu, to znaczy takich, które część cech mają wspólną

18 18 Klasa w ujęciu systemu informatycznego Definicja według Coada i Yourdona: Klasa Klasa to opis obiektu lub obiektów z jednolitym zbiorem atrybutów i usług, zawierający opis tworzenia nowych obiektów w klasie

19 19 Klasa Klasę można pojmować jako wzór czy też szablon, z którego tworzone są obiekty. Innymi słowy obiekt jest egzemplarzem (ang. instance) klasy. Podejście to znajduje odbicie w niektórych obiektowych językach programowania, gdzie klasa jest po prostu typem obiektu.

20 Relacje między obiektami i klasami

21 21 Relacja złożenia Relacja złożenia występująca w świecie systemów jest reprezentacją relacji zachodzących w świecie rzeczywistym. Złożenie (ang. aggregation) zachodzi wtedy, gdy jeden obiekt (klasa) jest częścią innego obiektu (klasy). Dla przykładu ten slajd jest częścią tej prezentacji (na poziomie obiektów). Można powiedzieć ogólniej, że slajd jest częścią prezentacji lub prezentacja składa się ze slajdów (na poziomie klas).

22 22 Relacja złączenia Relacja złączenia (ang. association) reprezentuje sytuację, kiedy obiekt (klasa) jest skojarzony z innym obiektem (klasą). Na przykład mieszkanie jest skojarzone z lokatorem. Nie można powiedzieć, że któreś jest częścią któregoś, a więc relacja złączenia nie jest tożsama z relacją złożenia. Na poziomie obiektów mówimy: "Lokatorem mieszkania pod jedynką jest Jan Kowalski", na poziomie klas "Klasa mieszkanie jest złączona z klasą lokator".

23 23 Atrybuty Obiekty posiadają również atrybuty. Wielki Słownik Języka Polskiego podaje definicję: Atrybut Atrybut: Zewnętrzna cecha danej rzeczy, wyróżniająca ją spośród innych; istotna cecha, właściwość, przymiot czegoś. Przykład - mieszkanie Jana Kowalskiego ma numer: jeden. Przenosząc to na poziom klas należy powiedzieć, że każde mieszkanie ma numer. "Numer" jest atrybutem klasy "mieszkanie".

24 24 Dziedziczenie Dziedziczenie (ang. inheritance), generalnie rzecz biorąc, reprezentuje specjalizacje. Na przykład mieszkanie jest rodzajem lokalu; innymi słowy pojecie "mieszkanie" specjalizuje pojęcie "lokal". Klasa dziedzicząca (ang. subclass, inheriting class) dziedziczy wszystkie atrybuty oraz relacje złożenia i złączenia po klasie, od której dziedziczy, czyli klasie bazowej (ang. base class, inherited class, superclass). Na przykład lokal musi mieć powierzchnię, ale mieszkanie jeszcze ma osoby w nim mieszkające. Klasa "mieszkanie" dziedziczy więc atrybut "powierzchnia" po klasie "lokal" i definiuje nowe złączenie z klasą "Osoba" w celu reprezentacji faktu zamieszkiwania kogoś w mieszkaniu.

25 Zachowanie klas

26 26 Dynamiczne modelowanie systemów obiektowych Do tej pory rozpatrywaliśmy statyczne modelowanie systemów obiektowych. Została przedstawiona jego struktura tworzona przez klasy. Rozmieszczenie klas w systemie nie wyczerpuje jednak jego opisu. System musi mieć jeszcze zdefiniowaną stronę dynamiczną, czyli swoje zachowanie.

27 27 Usługi W systemie obiektowym jego zachowanie definiowane jest na poziomie klasy, poprzez usługi (metody). Obiekt może przesłać innemu obiektowi wiadomość (ang. pass the message) i spowodować w ten sposób jego określone zachowanie

28 28 Przykład: klasa "samochód" posiada usługę "zapalanie "Jan Kowalski" "samochód Kowalskiego" W działającym systemie obiekt "Jan Kowalski" może przesłać obiektowi "samochód Kowalskiego" wiadomość "zapal", co spowoduje, że ten ostatni zmieni swój stan

29 29 Kontrakt Nowoczesne metody projektowania systemów obiektowych wskazują tutaj filozofię kontraktu jako wzorzec - jeden obiekt daje drugiemu wiadomość i otrzymuje coś w zamian (wielkość, której zażądał, potwierdzenie wykonania czy choćby odebrania)

30 30 Usługi Dziedziczone są podobnie jak własności. Innymi słowy usługa zapewniana przez klasę bazową będzie zapewniana również przez klasę dziedziczącą

31 31 Przykład Przypuśćmy, że mamy do czynienia z systemem, w którym klasa "samochód" jest klasą bazową dla klas "samochód ciężarowy" i "samochód osobowy". Jeśli usługa "zapal" została zdefiniowana w klasie "samochód", to będą nią dysponować także klasy dziedziczące. pokrewieństwo świata obiektowego ze światem rzeczywistym przewagę nad tradycyjnym podejściem Własność ta jest cechą pokazującą z jednej strony pokrewieństwo świata obiektowego ze światem rzeczywistym (jeśli kierowca umie zapalać jeden samochód, poradzi sobie i z innym), z drugiej zaś strony przewagę nad tradycyjnym podejściem - w nieobiektowym systemie należałoby wyspecyfikować, jaki samochód się zapala.

32 32 Usługi/metody Metody składają się z sekwencji innych metod i/lub modyfikacji własności. Na przykład metoda "zapal" klasy "samochód" może być rozłożona na następujące przesłania wiadomości do innych obiektów i zmiany stanu: - włącz instalację elektryczną (wiadomość "włącz" do instalacji) - włącz dopływ paliwa (wiadomość "odemknij się" do zaworu paliwa) - uruchom rozrusznik (wiadomość "rusz" do rozrusznika) - wyłącz rozrusznik jeśli silnik chodzi (wiadomość "wyłącz" do rozrusznika) - ustaw znacznik "silnik włączony" (modyfikacja atrybutu "włączony") Jak widać metody klas wykazują daleko idące pokrewieństwo z funkcjami i procedurami w systemie strukturalnym.

33 33 Obostrzenia Stosunkowo młodą cechą usług w systemach obiektowych są ich formalne obostrzenia (ang. constraints). Obostrzenia są szczególne użyteczne w systemach wymagających dużej niezawodności (np. obiekty przemysłowe). Na obostrzenia składają się trzy rzeczy: warunki wstępne (ang. preconditions), warunki końcowe (ang. postconditions) niezmienniki (ang. invariants). Warunki wstępne muszą być spełnione przy rozpoczęciu metody, warunki końcowe po jej wykonaniu, a niezmienniki określają własności, których metoda nie może zmieniać. W naszym motoryzacyjnym przykładzie warunkiem wstępnym metody "zapal" jest stan "silnik wyłączony" (atrybut wyzerowany), warunkiem końcowym "silnik włączony" (atrybut ustawiony), zaś niezmiennikiem np. stan skrzyni biegów.

34 34 Polimorfizm Metody klasy mogą nie tylko przechodzić na klasy dziedziczące. Mogą być przez nie także zmieniane. Rozpatrzmy dalej przykład samochodu. Samochód może mieć silnik benzynowy lub wysokoprężny. Zapłon w tych silnikach jest inny. Można więc zdefiniować klasę "silnik" i dziedziczące od niej klasy "silnik benzynowy" i "silnik wysokoprężny". Klasa "samochód" składa się, przez relacje złożenia, obok innych z klasy "silnik". Metoda "start" może być dla każdego typu silnika zmieniona (przedefiniowana), będzie inna dla silnika benzynowego, a inna dla silnika Diesla, co jest naturalne i odzwierciedla cechy rzeczywistych silników samochodowych. Z punktu widzenia klasy korzystającej z usługi nie jest istotne jednak, w jaki sposób klasa używana wywiązuje się ze swej powinności po przesłaniu jej wiadomości. "Samochód" "wie", że jego "silnik" rozumie wiadomość "start" (posiada tę usługę) i nie jest istotne, jaki jest silnik, byle zapalił. Różne typy silnika mogą startować rożnie (metoda "start" jest polimorficzna), jednak dopóki silnik startuje, samochód może działać.

35 35 Hermetyzacja Technologia obiektowa zapewnia mechanizm hermetyzacji (zwanej tez czasem kapsułkowaniem, ang. encapsulation), pozwalający na ograniczenie kompetencji do modyfikacji własności klasy. Odbywa się to przez ukrywanie informacji (ang. information hiding) w taki sposób, żeby była niedostępna z zewnątrz. Żaden obiekt nie może bezpośrednio zmieniać atrybutów, połączeń, ani złożeń innego obiektu, jedynie może przesyłać mu wiadomości.

36 Analiza i projektowanie obiektowe

37 37 Metoda Coad/Yourdon Metoda opisana w trzytomowym podręczniku napisanym przez trio Peter Coad, Edward Yourdon i Jill Nicola. Sama metoda jest prosta, kładzie mniej więcej jednakowy nacisk na analizę i projektowanie oraz posiada dobre przejście do programowania. Metoda jest wspomagana przez darmowe narzędzia CASE.

38 38 Metoda Rumbaugha (OMT) Metoda Object Modelling Technique, stworzona przez Jamesa Rumbaugh i innych z laboratoriów General Electric. Opisana w książce "Object - Oriented Modelling", uważana jest za jedną z najdojrzalszych metod. Nacisk położony jest na projektowanie - w metodzie istnieją trzy podejścia do systemu modelowanie statyczne, dynamiczne i funkcyjne. Pierwsze określa strukturę klas, drugie zachowanie systemu pod wpływem zdarzeń (ang. events), trzecie zaś przepływ informacji. Zarzuca się tej metodzie słabe wsparcie pierwszej fazy analizy, identyfikacji obiektów. Istnieje kilka narzędzi CASE do tej metody, choć, niestety, stosunkowo drogich.

39 39 Metoda Wirfs-Brock Opisana przez Rebecce Wirfs-Brock w książce "Object - Oriented Design: a Responsibility Approach". Kładzie nacisk na początkową fazę analizy - odnalezienie klas i sformułowanie ich kompetencji (ang. responsibilities). Znana przede wszystkim z powodu tzw. kart CRC (Class, Resposibilities and Collaboration cards), które doskonale pomagają w pierwszym stadium analizy.

40 40 Metoda ObjectOry Stworzona i opisana przez Ivara Jacobsona w jego książce "Object Oriented Software Engineering – a Use Case approach". Bardzo różna od wszystkich innych metod, oparta na filozofii aktorów i ról. Jako jedyna kompleksowo traktuje projektowanie, nie dzieląc go na statyczne i dynamiczne. Wspomagana przez narzędzie CASE napisane przez twórców metody.

41 41 Metoda Fusion Stworzona przez Dereka Colemana i innych w firmie Hewlett-Packard. Jak sama nazwa wskazuje, jest próbą połączenia tego, co najlepsze z czterech innych metod: Rumbaugh, Wirfs-Brock, Booch i metod formalnych. Posiada bardzo dobre wsparcie wszystkich faz tworzenia systemu obiektowego i jest wspomagana przez niedrogie narzędzie CASE.

42 42 Jakość systemów obiektowych Systemy obiektowe w ogólności prezentują wyższą jakość od systemów strukturalnych, dzięki mechanizmom hermetyzacji, rozproszenia kompetencji, polimorfizmu i obostrzeń. Dzięki temu technologia obiektowa wydaje się być tak obiecującą w dziedzinie sieci komputerowych, gdzie niezawodność jest zdecydowanym priorytetem. Podejmowane są próby połączenia metod formalnych z obiektowymi jednak daleko jeszcze do spójnej metody.

43 Obiektowe języki programowania

44 44 Język C++ Najpopularniejszym językiem obiektowym jest z pewnością C++. Bjarne Stroustrup z AT&T Bell Laboratories, definiując go jako rozszerzenie C przeszczepił technologię obiektową na grunt typowego programowania. C++ dało wielu doświadczonym programistom nowe, potężne narzędzie do tworzenia systemów. Można zaryzykować tezę, że obecna popularność obiektów jest zasługą C++. C++ nie gwarantuje, że systemy tworzone przy jego użyciu będą obiektowe. Z badań przeprowadzonych przez AT&T wynika, ze znaczna liczba systemów tworzonych przy użyciu C++ nie posiada w tekście słowa kluczowego class! Wydaje się jednak, że C++ będzie zmierzać do miejsca, gdzie dziś znajduje się C, a wiec oprogramowania systemowego i pomocniczego (zwanego "underware).

45 45 Smalltalk Smalltalk, zdefiniowany przez zespół pod kierunkiem Adele Goldberg w Xerox PARC jest krańcowo różny od C++, choć u jego podstaw tkwi ta sama, obiektowa filozofia. Smalltalk jest w pełni obiektowym językiem (wszystko w nim jest obiektem), o bardzo naturalnej składni i posiadającym doskonale narzędzia programistyczne. Jego zaleta jest też posiadanie standardowej biblioteki klas, dzięki czemu programista od razu dostaje użyteczne narzedzia i dobre przykłady. Język ten trzyma programistę bardziej w ryzach, ale wyrabia od razu dobre nawyki i wymusza myślenie kategoriami obiektowymi.

46 46 Język Eiffel Z innych obiektowych języków programowania warto wymienić język Eiffel zdefiniowany przez Bertranda Meyera. Jest to niewątpliwie dojrzałe narzędzie do implementacji systemów obiektowych, o przejrzystej konstrukcji i dużych możliwościach. W chwili obecnej jego wadą jest z pewnością brak powszechnie akceptowanego standardu, a także przyjaznego środowiska.

47 47 Inne języki wspomagające programowanie obiektowe Java C# Objective-C Visual Basic Object Pascal (Delphi) CLOS (COMMON LISP Object System) Python PHP

48 Dziękuję za uwagę


Pobierz ppt "Języki i techniki programowania prowadzący dr Grzegorz Filipczyk."

Podobne prezentacje


Reklamy Google