Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie obiektowe Podstawy Programowania dla geoinformatyków Wykład 4 Rafał Witkowski, 2015.

Podobne prezentacje


Prezentacja na temat: "Programowanie obiektowe Podstawy Programowania dla geoinformatyków Wykład 4 Rafał Witkowski, 2015."— Zapis prezentacji:

1 Programowanie obiektowe Podstawy Programowania dla geoinformatyków Wykład 4 Rafał Witkowski, 2015

2 Paradygmat programowania obiektowego paradygmat programowania, w którym programy definiuje się za pomocą obiektów — elementów łączących stan (czyli zmienne, nazywane najczęściej polami lub atrybutami) i zachowanie (czyli procedury, tu: metody). paradygmat programowaniaobiektówpolamimetody Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań.

3 Paradygmat programowania obiektowego Największym atutem programowania, projektowania oraz analizy obiektowej jest zgodność takiego podejścia z rzeczywistością – mózg ludzki jest w naturalny sposób najlepiej przystosowany do takiego podejścia przy przetwarzaniu informacji. Programowanie zorientowane obiektowo polega na zbudowaniu w programie modeli obiektów ze świata rzeczywistego. Praca programisty polega na ożywieniu tych obiektów oraz sprawienia aby zaczęły ze sobą współpracować.

4 Programowanie obiektowe, a proceduralne Podejście obiektowe różni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów. programowania proceduralnego procedury W programowaniu obiektowym tworzy się świat, a nie kod. Kod (implemetacja) jest tylko uruchomieniem/włożeniem życia w ten świat

5 Zalety programowania obiektowego Modelowanie świata rzeczywistego – Dzieje się to w sposób łatwiejszy dla człowieka. Można to robić nie umiejąc programować w żadnym języku programowania Powtórne użycie kodu (ang. reusablity) – Kod raz zapisany może zostac wykorzystany wielokrotnie. Realizowane jest to dzięki dziedziczeniu (metody z nadklasy są dostępne w klasach pochodnych).

6 Zalety programowania obiektowego Rozszerzalność (ang. extensibility) – Dzieje się to w sposób łatwiejszy dla człowieka. Można to robić nie umiejąc programować w żadnym języku programowania Powtórne użycie kodu (ang. reusablity) – Kod raz zapisany może zostac wykorzystany wielokrotnie. Realizowane jest to dzięki dziedziczeniu (metody z nadklasy są dostępne w klasach pochodnych).

7 Zalety programowania obiektowego Większa skuteczność w wykrywaniu błędów – Dzięki związaniu metod z obiektami nie są możliwe błędy niepoprawnegowywołania funkcji z nieuprawnionymi argumentami (metody operują na danych związanych z obiektem). Mnimializowana jest więc ilość błędów niepoprawnego użycia funkcji. Prostota w programowaniu interfejsów użytkownika – Programowanie zorientowane obiektowo wprost odpowiada potrzebom tworzenia „okienowych” interejsów użytkownika. Okna mogą być postrzegane jako obiekty, składające się z innych obiektów (przyciski, elementy menu, itd.)

8 Analiza obiektowa Celem analizy obiektowej (object-oriented analysis) jest udzielenie odpowiedzi na pytanie: jak system ma działać? Zadania realizowane podczas analizy: – utworzenie logicznego modelu systemu opisującego sposób realizacji przez system postawionych wymagań (model logiczny pomija większość szczegółów implementacyjnych), – określenie podstawowego „słownika” wiedzy dziedzinowej w celu ułatwienia analizy i następnie konstruowania aplikacji. Realizowane jest to poprzez znalezienie i opisanie obiektów - rozumianych jako koncepty – w rozpatrywanej dziedzinie. Tworzone modele zapisywane są przy pomocy notacji definiowanych w językach modelowania (np. UML).

9 Projektowanie obiektowe Celem projektowania obiektowego jest udzielenie odpowiedzi na pytanie: jak system ma zostać zaimplementowany? Zadania realizowane podczas projektowania: – opracowanie szczegółowego opisu implementacji systemu, – zdefiniowanie obiektów wykorzystywanych w programie. Realizowane jest to poprzez określenie zasad współpracy obiektów w taki sposób aby zrealizowane były wymagania (określenie atrybutów, metod, itd.). Struktura tworzonego oprogramowania powinna jak najbardziej zachowywać ogólną strukturę modelu stworzonego w poprzedniej fazie. W fazie projektowania wykorzystuje się tą samą notację, co w fazie analizy.

10 Programowanie obiektowe Implementacja (kodowanie) projektu oprogramowania w wybranym środowisku implementacyjnym: – wykorzystanie języka obiektowego, – powtórne użycie już istniejących bibliotek obiektowych, – wykorzystanie narzędzi szybkiego wytwarzania aplikacji, – wykorzystanie generatorów kodu. Podjęcie kroków mających doprowadzić do wytworzenia niezawodnego oprogramowania: – unikanie niebezpiecznych technik, – zasada ograniczonego dostępu, – stosowanie kompilatorów sprawdzających zgodność typów.

11 Struktury Struktura pozwala przechowywać połączone ze sobą dane różnego typu i łączy je w pojedyncze obiekty. Np. gdy chcemy zapisać dane osobowe jakiegoś człowieka (imię, nazwisko i wiek), nie da się tego zrobić przy pomocy jednej zmiennej lub tablicy, gdyż dane takie zawierają trzy parametry różnego typu. Wówczas możemy zdefiniować strukturę, w której zapamiętamy naraz wszystkie te trzy rzeczy. Strukturę deklaruje się przy użyciu słowa kluczowego struct oraz nazwy struktury. Po niej w nawiasach klamrowych umieszcza się deklaracje zmiennych, które wchodzą w skład tej struktury. Po nawiasie klamrowym może wystąpić nazwa zmiennej określonego właśnie przed chwilą typu. Jeśli nie pojawia się nazwa zmiennej, to w tym miejscu wyjątkowo po nawiasie klamrowym zamykającym trzeba umieścić średnik.

12 Struktury Składnia struktury: struct nazwa_struktury { typ_1 nazwa_pola_1; typ_2 nazwa_pola_2;... typ_N nazwa_pola_N; }; // W tym miejscu przed średnikiem można od razu zadeklarować zmienną tego typu. Na przykład: struct Osoba { char imie[20], nazwisko[50]; int wiek; }; Osoba pewna_osoba; pewna_osoba.wiek = 23;

13 Unie Unia jest bardzo podobna do struktury, jednakże wszystkie jej pola zajmują ten sam obszar pamięci. Jedyną różnicą składniową jest używanie słowa kluczowego union w miejsce struct.

14 Unie Składnia Unii. Np: union nazwa_unii { char tablica_znakowa[4]; int wartosc; } u;

15 Klasy Klasy są pewnymi strukturami, które oprócz pól (atrybutów) posiadają też metody, czyli pewne funkcje, które dana klasa może wykonywać. Klasa to typ danych, podobnie jak char, int, struct Deklaracja klasy w języku C++ wygląda następująco: class nazwa_klasy { // składowe klasy: pola i metody };

16 Klasy Składniki klasy: – zbiór „danych składowych” - atrybuty (zero lub więcej) – zbiór „funkcji składowych” - metody (zero lub więcej) – słowa kluczowe rozstrzygające o widoczności składowych klasy (public, private, protected) Deklaracja klasy to wskazanie jakie elementy są związane z daną klasą

17 Klasy Atrybuty (dane składowe) – zmienne dowolnego typu wykorzystywane do przechowywania danych związanych z klasą – Przykład class Czas { public: int rok; int miesiac; int dzien; } Metody (funkcje składowe): – funkcje związane z klasą wykorzystywane do przeprowadzania operacji na danych – Przykład: class Czas { public: void Wyswietl(void); void UstawCzas(time x); };

18 Obiekty W oparciu o klasę tworzymy obiekty np. Czas spotkanie; Sama definicja klasy nie definiuje żadnych obiektów Obiekt utworzony zgodnie z daną klasą nazywamy instancją lub wystąpieniem klasy. Związki pomiędzy obiektem, a klasą: – atrybuty są przechowywane w pamięci niezależnie dla każdej instancji danej klasy – metody są przechowywane jednokrotnie dla danej klasy W definicji klasy nie jest możliwe przypisywanie wartości początkowych dla atrybutów Zasady odwoływania się do składowych obiektu: spotkanie.miesiac = 3; spotkanie.Wyswietl(); spotkanie.ustalMiesiac(4);

19 Obiekty Obiekt jest osobą miejscem lub rzeczą obserwowaną w świecie rzeczywistym, którego dotyczy system informatyczny Obiekt jest odróżnialny od innych obiektów, ma nazwę i dobrze określone granice W programowaniu obiektowym obiekt reprezentuje to, co system musi wiedzieć i robić z rzeczywistą osobą, miejscem lub rzeczą Obiekty mogą być dowolnie złożone oraz dowolnie duże Dla każdego obiektu wyróżniamy: – tożsamość obiektu – stan obiektu – zachowanie obiektu

20 Obiekty Co jest obiektem: – osoba Jan Kowalski – konto Jana Kowalskiego – samochód Toyota Corolla, numer rejestracyjny PWA 9999, kolor zielony, rocznik 1992 – pogoda w dniu 21 lutego 2001 Co nie jest obiektem: – kolor zielony – zachód słońca – zmiana czasu

21 Obiekty Tożsamość obiektu pozwala wyróżnić dany obiekt spośród innych obiektów W praktyce implementacyjnej tożsamość obiektu oznacza, że posiada on unikalny wewnętrzny identyfikator nadawany automatycznie przez system, niezależnie od woli projektanta lub programisty (tożsamość = trwały wewnętrzny identyfikator) Może się zdarzyć, że z punktu widzenia programisty dwa obiekty są nierozróżnialne ze względu na swoje własności i zachowanie. Niemniej są to zawsze dwa różne obiekty

22 Metody Zachowanie obiektu - zestaw operacji które wolno stosować dla danego obiektu Implemetacja operacji to metody Aktualny stan obiektu jest dostępny jedynie poprzez metody Metoda działa wykorzystując wewnętrzne informacje obiektu, przede wszystkim wartości atrybutów Metoda = „mała procedura” (niezbyt duży stopień skomplikowania, nie angażowanie zbyt dużych zasobów z zewnątrz klasy oraz brak efektów ubocznych na środowisko spoza wnętrza obiektu)

23 Klasy Klasa jest miejscem przechowywania tych informacji dotyczących obiektów, które są dla nich niezmienne, wspólne lub dotyczą całej ich populacji. Takie informacje nazywane są inwariantami obiektów. Inwarianty dotyczące jednego obiektu mogą być przechowywane w wielu klasach tworzących hierarchię lub inną strukturę dziedziczenia. Obiekt przypisany do klasy zawierającej jego inwarianty jest nazywany jest wystąpieniem lub instancją

24 Cechy programowania obiektowego Abstrakcja Hermetyzacja (!) Polimorfizm Dziedziczenie

25 Abstrakcja Każdy obiekt w systemie służy jako model abstrakcyjnego "wykonawcy", który może wykonywać pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowano dane cechy. Procesy, funkcje lub metody mogą być również abstrahowane, a kiedy tak się dzieje, konieczne są rozmaite techniki rozszerzania abstrakcji.

26 Hermetyzacja Z ang. Encapsulation, czasem Enkapsulacja zamknięcie pewnego zestawu bytów programistycznych (danych i funkcji) w jedną „kapsułę” o dobrze ograniczonych granicach, oddzielenie abstrakcyjnej specyfikacji kapsuły od jej implementacji, ukrycie części informacji zawartej w kapsule dla operacji z zewnątrz obiektu. Zasada hermetyzacji głosi, że programista ma tyle wiedzieć o tworzonym bycie programistycznym ile mu trzeba, aby go efektywnie używać. Wszystko co może być przed programistą ukryte powinno być ukryte. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko własne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój interfejs, który określa dopuszczalne metody współpracy.interfejs

27 Polimorfizm Referencje i kolekcje obiektów mogą dotyczyć obiektów różnego typu, a wywołanie metody dla referencji spowoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Jeśli dzieje się to w czasie działania programu, to nazywa się to późnym wiązaniem lub wiązaniem dynamicznym. Referencjetypu Niektóre języki udostępniają bardziej statyczne (w trakcie kompilacji) rozwiązania polimorfizmu – na przykład szablony i przeciążanie operatorów w C++.szablonyprzeciążanie operatorów C++

28 Dziedziczenie Porządkuje i wspomaga polimorfizm i enkapsulację umożliwia definiowanie i tworzenie specjalizowanych obiektów na podstawie bardziej ogólnych. Dla obiektów specjalizowanych nie trzeba redefiniować całej funkcjonalności, lecz tylko tę, której nie ma obiekt ogólniejszy. W typowym przypadku powstają grupy obiektów zwane klasami, oraz grupy klas zwane drzewami. Odzwierciedlają one wspólne cechy obiektów.

29 Programowanie zgodnie z paradygmatem Atrybuty deklarujemy w sekcji prywatnej (private) W celu zapewnienia dostępu do atrybutów wprowadzamy tzw. akcesory (metody przypisujące i zwracające wartości atrybutów) Metody tworzone z myślą o wykorzystaniu przez inne klasy deklarujemy w sekcji publicznej ( public) Metody tworzone jedynie z myślą o wykorzystaniu w obrębie danej klasy deklarujemy w sekcji prywatnej (private) W sekcjiprotected deklarujemy atrybuty i metody, które mają być wykorzystane w klasach pochodnych Wskazane jest aby metody danej klasy wykonywały operacje związane z atrybutami tej klasy Klasy nie powinny się komunikować przy pomocy zmiennych globalnych

30 Przykład (Moment na kreatywność studentów)


Pobierz ppt "Programowanie obiektowe Podstawy Programowania dla geoinformatyków Wykład 4 Rafał Witkowski, 2015."

Podobne prezentacje


Reklamy Google