Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

T: Różnice pomiędzy programowaniem strukturalnym a obiektowym.

Podobne prezentacje


Prezentacja na temat: "T: Różnice pomiędzy programowaniem strukturalnym a obiektowym."— Zapis prezentacji:

1 T: Różnice pomiędzy programowaniem strukturalnym a obiektowym

2 1. Programowanie strukturalne jest paradygmatem (podstawą, fundamentem) programowania. 2. W programowaniu strukturalnym stosuje się moduły, które to komunikują się ze sobą odpowiednio zaplanowanymi interfejsami. 3. Kod programu dzielony jest na funkcje wywołane z jej parametrami, dzięki czemu nie korzystają ze zmiennych globalnych. 4. Jako struktury algorymiczne stosuje się: sekwencję operacji, funkcję warunkową, pętle (iterację) oraz rekurencję.

3 1. Podstawą programowania obiektowego jest wprowadzenie pojęcia obiektu. Wewnątrz, którego wyróżniamy jego atrybuty oraz metody. 2. Najważniejsza cechy programowania obiektowego: abstrakcja, hermetyzacja, dziedziczenie, polimorfizm.

4 Abstrakcja – każdy obiekt to pewien model, który wykonuje pewne prace, opisuje i zmienia swój stan oraz komunikuje się z innymi obiektami. przykład z człowiekiem jako mężczyzną i kobietą. Hermetyzacja - enkapsulacja (ukrywanie implementacji) – zapewnia, że obiekt nie może zmienić stanu atrybutów innych obiektów w nieoczekiwany sposób, a jedynie metody są uprawnione do zmiany jego stanu.

5 Dziedziczenie - nazywamy mechanizm współdzielenia metod między klasami, klasa może dziedziczyć po innej klasie, oznacza to, że oprócz swoich własnych atrybutów oraz metod, uzyskuje także te pochodzące z klasy, z której dziedziczy. Polimorfizm - to cecha dzięki której jeden interfejs może być stosowany do wykonania różnych zadań. przykład z metodą daj_głos dla klasy pies i kot

6 Programowanie strukturalne wykorzystuje funkcje, te funkcje pracują na pewnych zmiennych i oddają wynik. Jednak nie komunikują się między sobą. Programowanie obiektowe grupuje zmienne i metody w jedną całość, czyli obiekt. Wywołanie metody powoduje zmianę stanu obiektu, jego atrybutów. W podejściu obiektowym zmienne powiązane są logicznie ze sobą tak jak w rzeczywistości. Zmiana jednego atrybutu może zmienić wartość innego.

7 T: Obiektowość jako podstawa naturalnego postrzegania świata

8 Wszystko może być obiektem. drzewa, kwiaty, rzeki, domy, miasta, ludzie, samochód …

9 Zanim stworzymy jakiś obiekt, trzeba ustalić czym ten obiekt będzie. W zależności od tego, czy chcemy stworzyć wirtualny samochód, czy motor, należy określić dwie rzeczy: jakie atrybuty będzie miał ten obiekt, jakie będzie miał metody działania.

10 T: Definicje klas i obiektów.

11 Klasa to byt programistyczny określający jakie atrybuty i metody będą miały obiekty, które zostaną utworzone na jej podstawie.

12 Aby ożywić klasę, należy utworzyć jej tak zwaną instancję – czyli po prostu utworzyć jej obiekt.

13 T: Przykłady odwzorowania rzeczywistości w kategoriach obiektów

14 Ćwiczenia praktyczne

15 T: Opracowanie obiektowego opisu przykładowego programu

16 Ćwiczenia praktyczne

17 T: Definiowanie klas, składniki klasy

18 class NaszaNazwaKlasy { … // pola i metody składowe klasy };

19 class NazwaKlasy { public: //specyfikator dostępu //definiowanie pól int poleInt; float poleFloat; //deklarowanie metod int Metoda1(); void Metoda2(); };

20 class bryla { public: float a,b,h; float ObliczObjetosc(); }; //definicja metody poza definicją klasy float bryla::ObliczObjetosc() { return a*b*h; }

21 class bryla { public: float a,b,h; //definicja metody wewnątrz klasy float ObliczObjetosc() { return a*b*h; };

22 T: Definiowanie obiektów, odwoływanie się do składowych obiektu

23 NazwaKlasy Obiekt; // deklaracja wskaźnika do obiektu NazwaKlasy *ObiektWsk = new NazwaKlasy;

24 //przypisanie wartości Obiekt.poleInt = 0; Obiekt.poleFloat = 9.04; //wywołanie metody obiektu Obiekt.Metoda1();

25 //przypisanie wartości ObiektWsk->poleInt = 0; ObiektWsk->poleFloat = 9.04; //wywołanie metody obiektu ObiektWsk->Metoda1();

26 delete ObiektWsk;

27 bryła.cpp

28 T: Hermetyzacja danych

29 Polega na ukrywaniu metod i atrybutów dla klas zewnętrznych. Dostęp do metod i atrybutów możliwy jest tylko z wewnątrz klasy, do której one należą lub z klas zaprzyjaźnionych i klas dziedziczących.

30 Poziom dostępności do metod i atrybutów można regulować za pomocą modyfikatorów. Modyfikatory: public - pozwala na wolny, nieograniczony dostęp do atrybutów z dowolnej, innej klasy, private - dostęp do atrybutów tylko i wyłącznie dla klasy, której są elementami, protected - atrybuty będą dostępne jedynie dla bieżącej klasy oraz dla wszystkich klas po niej dziedziczących.

31 bank.cpp

32 T: Konstruktory i dekonstruktory

33 Jest specyficzną funkcją, która jest wywoływana zawsze gdy tworzony jest obiekt. Jeśli programista nie utworzy go, kompilator automatycznie utworzy konstruktor, który nic nie robi. Możemy stworzyć własny konstruktor, który będzie posiadła stworzone przez nas własności np. będzie inicjował wartości atrybutów obiektu.

34 class przykładowa { public: // deklaracja atrybutów przykładowa (typ argument) { // // ciało konstruktora }; nazwa konstruktora identyczna jak nazwa klasy

35 class samochod { public: string marka, model; samochod () { marka=brak; model=brak; }; samochod (string m1, string m2) { marka=m1; model=m2; };

36 Oczekuje się by obiekt po utworzeniu był w pełni gotowy do użycia. Aby to spełnić konstruktor powinien dokonywać pełnej inicjalizacji wszystkich atrybutów/danych w obiektach. Sposób inicjalizacji może zależeć od sposobu konstrukcji samego obiektu. Informacji potrzebnych do inicjalizacji składowych obiektu nie można podawać w miejscu ich definicji, lecz muszą one stanowić nierozłączną część konstruktora.

37 class samochod { public: string marka, model; samochod (string m1, string m2) : marka(m1), model(m2) { // po dwukropku znajduje się lista inicjalizacyjna };

38 Podczas życia obiektu rezerwujemy pamięć, którą chcielibyśmy zwolnić zawsze po usunięciu obiektu. Pierwszym wariantem jest pamiętanie o wywołaniu funkcji, która będzie za to odpowiedzialna. Takie podejście jest niezalecane i ryzykowne, ponieważ bardzo łatwo zapomnieć o wywoływaniu tej funkcji. Zalecanym rozwiązaniem jest wykorzystanie destruktorów. Destruktor jest specjalną funkcją, która jest wywoływana zawsze tuż przed zniszczeniem (usunięciem) obiektu z pamięci.

39 class samochod { public: string marka, model; samochod () {}; // inne atrubuty i metody ~samochód () { // ciało destruktora };

40 T: Zagnieżdżona definicja klasy

41 W C++ można umieścić deklarację klasy w innej klasie. Klasą zagnieżdżoną to klasa zadeklarowana w jej wnętrzu. Funkcje składowe klasy zewnętrznej mogą tworzyć obiekty klasy zagnieżdżonej i używać ich. Na zewnątrz klasa wewnętrzna jest widoczna jeśli umieszczona została w sekcji public.

42 class samochod { public: string marka, model, rocznik; samochod () {…}; class mechanik // klasa zagnieżdżona { string imię; mechanik () {…}; };

43 T: Przeładowanie operatorów i nazw funkcji

44 Język C++ umożliwia tworzenie wielu metod o tej samej nazwie w ramach jednej klasy. Aby program wiedział, której metody użyć w danym momencie, muszą one się różnić typem lub liczbą argumentów. przeciążanie (ang. overloading).

45 Przeładowywanie operatorów, jest to definiowanie operatorów dla własnych typów. Można tego dokonać w większości przypadków jako metodę.

46 + - * / % // operator modulo ^ & ~ ! = // gdy go nie zdefi- niujemy robi to za nas kompilator < > += -= *= /= %= ^= &= |= << >> >>= <<= == != <= >= && || ++ --, // gdy go nie zdefiniuje- my robi to za nas kompilator ->* -> () // operator wywołania funkcji [] new // ponizsze operatory gdy ich nie zdefiniujem y robi to za nas kompilator new[] delete delete[]

47 wektor.cpp

48 T: Zaprzyjaźnione funkcje klasy

49 Funkcja zaprzyjaźniona z klasą to funkcja, która mimo, że nie należy do klasy posiada pełny dostęp do wszystkich składników tej klasy.

50 wektor2.cpp


Pobierz ppt "T: Różnice pomiędzy programowaniem strukturalnym a obiektowym."

Podobne prezentacje


Reklamy Google