Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałHajnrich Sosin Został zmieniony 10 lat temu
1
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Programowanie C++ T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
2
Programowanie strukturalne
Programowanie strukturalne jest paradygmatem (podstawą, fundamentem) programowania. W programowaniu strukturalnym stosuje się moduły, które to komunikują się ze sobą odpowiednio zaplanowanymi interfejsami. Kod programu dzielony jest na funkcje wywołane z jej parametrami, dzięki czemu nie korzystają ze zmiennych globalnych. Jako struktury algorymiczne stosuje się: sekwencję operacji, funkcję warunkową, pętle (iterację) oraz rekurencję.
3
Programowanie obiektowe
Podstawą programowania obiektowego jest wprowadzenie pojęcia obiektu. Wewnątrz, którego wyróżniamy jego atrybuty oraz metody. Najważniejsza cechy programowania obiektowego: abstrakcja, hermetyzacja, dziedziczenie, polimorfizm.
4
Programowanie obiektowe
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
Programowanie obiektowe
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
Różnice 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
Programowanie C++ T: Obiektowość jako podstawa naturalnego postrzegania świata
8
Co nazywamy obiektem w świecie rzeczywistym?
Wszystko może być obiektem. drzewa, kwiaty, rzeki, domy, miasta, ludzie, samochód …
9
Projekt i twór 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.
Programowanie C++ T: Definicje klas i obiektów.
11
Klasa Klasa to byt programistyczny określający jakie atrybuty i metody będą miały obiekty, które zostaną utworzone na jej podstawie.
12
Obiekt 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
Programowanie C++ T: Przykłady odwzorowania rzeczywistości w kategoriach obiektów
14
Ćwiczenia praktyczne
15
T: Opracowanie obiektowego opisu przykładowego programu
Programowanie C++ T: Opracowanie obiektowego opisu przykładowego programu
16
Ćwiczenia praktyczne
17
T: Definiowanie klas, składniki klasy
Programowanie C++ T: Definiowanie klas, składniki klasy
18
Definicja klasy class NaszaNazwaKlasy { … // pola i metody składowe klasy };
19
Przykład klasy class NazwaKlasy { public: //specyfikator dostępu //definiowanie pól int poleInt; float poleFloat; //deklarowanie metod int Metoda1(); void Metoda2(); };
20
Przykład definicji metody
class bryla { public: float a,b,h; float ObliczObjetosc(); }; //definicja metody poza definicją klasy float bryla::ObliczObjetosc() return a*b*h; }
21
Przykład definicji metody
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
Programowanie C++ T: Definiowanie obiektów, odwoływanie się do składowych obiektu
23
Deklaracja obiektu NazwaKlasy Obiekt;
// deklaracja wskaźnika do obiektu NazwaKlasy *ObiektWsk = new NazwaKlasy;
24
Dostęp do pól i metod //przypisanie wartości Obiekt.poleInt = 0;
Obiekt.poleFloat = 9.04; //wywołanie metody obiektu Obiekt.Metoda1();
25
Dostęp do pól i metod //przypisanie wartości ObiektWsk->poleInt = 0; ObiektWsk->poleFloat = 9.04; //wywołanie metody obiektu ObiektWsk->Metoda1();
26
Niszczenie obiektu delete ObiektWsk;
27
Przykład bryła.cpp
28
T: Hermetyzacja danych
Programowanie C++ T: Hermetyzacja danych
29
Enkapsulacja 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
Kontrola dostępu 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
Przykład bank.cpp
32
T: Konstruktory i dekonstruktory
Programowanie C++ T: Konstruktory i dekonstruktory
33
Konstruktor 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
nazwa konstruktora identyczna
Przykład class przykładowa { public: // deklaracja atrybutów przykładowa (typ argument) { // // ciało konstruktora }; nazwa konstruktora identyczna jak nazwa klasy
35
Przykład class samochod { public: string marka, model; samochod () { marka=”brak”; model=”brak”; }; samochod (string m1, string m2) { marka=m1; model=m2;
36
Lista inicjalizacyjna
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
Przykład class samochod { public: string marka, model;
samochod (string m1, string m2) : marka(m1), model(m2) { // po dwukropku znajduje się lista inicjalizacyjna };
38
Destruktor 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
Przykład class samochod { public: string marka, model; samochod () {}; // inne atrubuty i metody ~samochód () { // ciało destruktora };
40
T: Zagnieżdżona definicja klasy
Programowanie C++ T: Zagnieżdżona definicja klasy
41
Zagnieżdżona definicja klasy
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
Przykład class samochod { public: string marka, model, rocznik;
class mechanik // klasa zagnieżdżona string imię; mechanik () {…}; };
43
T: Przeładowanie operatorów i nazw funkcji
Programowanie C++ T: Przeładowanie operatorów i nazw funkcji
44
Przeładowanie/przeciążenie metod
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ładowanie/przeciążenie operatorów
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
przeładować można następujące operatory:
+ - * / % // 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
Przykład wektor.cpp
48
T: Zaprzyjaźnione funkcje klasy
Programowanie C++ T: Zaprzyjaźnione funkcje klasy
49
Funkcje zaprzyjaźnione
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
Przykład wektor2.cpp
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.