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

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

C++ wykład 4 ( ) Przeciążanie operatorów.
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 2 Wojciech Pieprzyca.
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Programowanie obiektowe
Wzorce.
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
PROGRAMOWANIE STRUKTURALNE
Programowanie obiektowe w Javie
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
OOP - programowanie zorientowane obiektowo w VB.NET
Struktury.
Dziedziczenie i jego rodzaje
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Wstęp do programowania obiektowego
Podstawy programowania
Podstawy programowania
Źródła: podręcznikopracował: A. Jędryczkowski.
Programowanie strukturalne i obiektowe
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
Programowanie obiektowe III rok EiT
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Programowanie obiektowe III rok EiT
WPROWADZENIE W ŚWIAT OBIEKTÓW
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
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.
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Prasek Aneta, Skiba Katarzyna. Funkcje stałe const to takie funkcje, które nie mogą modyfikować stanu obiektu. Oznacza to, że funkcja stała nie może zmieniać.
Programowanie w języku C++
Kurs języka C++ – wykład 5 ( )
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 2 ( ) Klasy i obiekty.
Klasy ( uzupełnienie ). Definicja klasy Klasa jest zbiorem logicznie powiązanych danych i funkcji, przeznaczonych do realizacji konkretnego zadania; Zamknięcie.
Programowanie obiektowe
Przeładowanie funkcji. Dotychczas wiedzieliśmy, że: w danym zakresie ważności może być tylko jedna funkcja o danej nazwie. Kompilator języka C++ daje.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Paweł Starzyk Obiektowe metody projektowania systemów
Dziedziczenie wielobazowe. dana klasa może mieć kilka bezpośrednich klas bazowych: dana klasa może mieć kilka bezpośrednich klas bazowych: kolorpołożenie.
Programowanie Zaawansowane
Dziedziczenie Wykład 7 Dziedziczenie sekwencyjne
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 6
Kurs języka C++ – wykład 3 ( )
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Kurs języka C++ – wykład 4 ( )
Programowanie obiektowe
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
PGO Przeciążanie metod i konstruktorów
Zapis prezentacji:

T: Różnice pomiędzy programowaniem strukturalnym a obiektowym Programowanie C++ T: Różnice pomiędzy programowaniem strukturalnym a obiektowym

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ę.

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.

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.

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

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.

T: Obiektowość jako podstawa naturalnego postrzegania świata Programowanie C++ T: Obiektowość jako podstawa naturalnego postrzegania świata

Co nazywamy obiektem w świecie rzeczywistym? Wszystko może być obiektem. drzewa, kwiaty, rzeki, domy, miasta, ludzie, samochód …

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.

T: Definicje klas i obiektów. Programowanie C++ T: Definicje klas i obiektów.

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

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

T: Przykłady odwzorowania rzeczywistości w kategoriach obiektów Programowanie C++ T: Przykłady odwzorowania rzeczywistości w kategoriach obiektów

Ćwiczenia praktyczne

T: Opracowanie obiektowego opisu przykładowego programu Programowanie C++ T: Opracowanie obiektowego opisu przykładowego programu

Ćwiczenia praktyczne

T: Definiowanie klas, składniki klasy Programowanie C++ T: Definiowanie klas, składniki klasy

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

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

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; }

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

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

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

Dostęp do pól i metod //przypisanie wartości Obiekt.poleInt = 0; Obiekt.poleFloat = 9.04; //wywołanie metody obiektu Obiekt.Metoda1();

Dostęp do pól i metod //przypisanie wartości ObiektWsk->poleInt = 0; ObiektWsk->poleFloat = 9.04; //wywołanie metody obiektu ObiektWsk->Metoda1();

Niszczenie obiektu delete ObiektWsk;

Przykład bryła.cpp

T: Hermetyzacja danych Programowanie C++ T: Hermetyzacja danych

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.

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.

Przykład bank.cpp

T: Konstruktory i dekonstruktory Programowanie C++ T: Konstruktory i dekonstruktory

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.  

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

Przykład class samochod { public: string marka, model; samochod () { marka=”brak”; model=”brak”; }; samochod (string m1, string m2) { marka=m1; model=m2;

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.

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

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. 

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

T: Zagnieżdżona definicja klasy Programowanie C++ T: Zagnieżdżona definicja klasy

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.

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

T: Przeładowanie operatorów i nazw funkcji Programowanie C++ T: Przeładowanie operatorów i nazw funkcji

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).

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ę.

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[]

Przykład wektor.cpp

T: Zaprzyjaźnione funkcje klasy Programowanie C++ T: Zaprzyjaźnione funkcje klasy

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.

Przykład wektor2.cpp