Programowanie obiektowe

Slides:



Advertisements
Podobne prezentacje
C++ wykład 4 ( ) Przeciążanie operatorów.
Advertisements

Wstęp do programowania
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 2 Wojciech Pieprzyca.
Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
Dzisiejszy wykład Wyjątki.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
1 Dzisiejszy wykład Klasa string wersja prosta wersja ze zliczaniem odwołań Wyjątki Specyfikator volatile.
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Programowanie obiektowe PO PO - LAB 6 Wojciech Pieprzyca.
Klasy i obiekty.
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Programowanie Obiektowe w Javie (c.d.)
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,
Licznik template<class Count_Type> class Count { public:
Standard Template Library
Obiektowe metody projektowania systemów Command Pattern.
Struktury.
C++ wykład 6 ( ) Polimorfizm.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Podstawy programowania
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Podstawy programowania PP – LAB5 Wojciech Pieprzyca.
#include #include main () { cout
Programowanie obiektowe W2
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Programowanie obiektowe III rok EiT
Podstawy programowania
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy programowania II
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Przekazywanie argumentów
Algorytmy rekurencyjne - przykład
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IX.
Programowanie obiektowe
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 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Programowanie obiektowe 2013/2014
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 strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 6 ( ) Polimorfizm.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Programowanie strukturalne i obiektowe C++ Powtórzenie wiadomości z C++ Robert Nowak.
Obiektowe metody projektowania systemów Adapter. Wstęp: „Dostosowanie interfejsu klasy do interfejsu, którego oczekuje użytkownik. Adapter umożliwia współprace.
Paweł Starzyk Obiektowe metody projektowania systemów
Wątki, programowanie współbieżne
BYDGOSKI FESTIWAL NAUKI
Tworzenie wątków w Javie
Zapis prezentacji:

Programowanie obiektowe PO Programowanie obiektowe PO - LAB 3 Wojciech Pieprzyca

Funkcje zaprzyjaźnione (I) PO Funkcje zaprzyjaźnione (I) Funkcja zaprzyjaźniona z klasą to funkcja, która ma dostęp do wszystkich składników klasy pomimo tego, że sama nie jest metodą tej klasy. class punkt { friend void stan(punkt &p); private: int x,y; }; void stan(punkt &p) cout << ”Wsp. X: ” << p.x << endl; cout << ”Wsp. Y: ” << p.y << endl; } Funkcja stan ma dostęp do prywatnych składowych x i y klasy punkt.

Funkcje zaprzyjaźnione (II) PO Funkcje zaprzyjaźnione (II) Funkcji zaprzyjaźnionych używa się zwykle wtedy, gdy utworzenie jej jako metody klasy jest utrudnione lub też gdy chcemy mieć dostęp do składowych kilku klas jednocześnie. Oprócz funkcji zaprzyjaźnionych globalnie, klasa może także deklarować przyjaźń z inną klasą lub z konkretną metodą klasy. Przykładem może być funkcja mnożąca dwie macierze, która musi mieć jednocześnie dostęp do dwóch obiektów klasy macierz. class macierz { friend macierz mnoz(Macierz a, Macierz b) private: int el[5][5]; }; macierz mnoz(Macierz a, Macierz b) …… }

Funkcje zaprzyjaźnione (III) PO Funkcje zaprzyjaźnione (III) Przykład 2: class prostokat; //zapowiedz pozniejszej definicji klasy prostokat class kwadrat { private: int a; public: kwadrat(int _a); friend int pole(kwadrat k, prostokat p); }; class prostokat int a,b; prostokat(int _a, int _b);

Funkcje zaprzyjaźnione (IV) PO Funkcje zaprzyjaźnione (IV) //konstruktor dla klasy kwadrat kwadrat::kwadrat(int _a) { a = _a; } //konstruktor dla klasy prostokat prostokat::prostokat(int _a, int _b) b = _b;

Funkcje zaprzyjaźnione (V) PO Funkcje zaprzyjaźnione (V) //fukcja pole ma dostęp do składowych zarówno klasy kwadrat //jak i klasy prostokat int pole(kwadrat k, prostokat p) { int pk=0, pp=0; pk = k.a*k.a; pp = p.a*p.b; cout << ”Pole kwadratu: ” << pk << endl; cout << ”Pole prostokata: ” << pp << endl; } int main() kwadrat k(3); prostokat p(3,4); pole(k,p);

Funkcje wirtualne (I) PO Funkcja wirtualna pozwala w klasach pochodnych zastępować implementację metod dostarczonych przez klasę bazową. W tym celu najczęściej wykorzystuje się zmienną wskaźnikową, która może wskazywać na obiekty klasy bazowej i obiekty klas pochodnych. W przypadku istnienia kilku metod zastępczych w różnych klasach pochodnych, to która metoda zostanie uruchomiona jest uzależnione od typu obiektu na jaki aktualnie wskazuje zmienna wskaźnikowa. W podanym przykładzie pojawią się 4 definicje metody pole, której zadaniem będzie obliczanie pola odpowiedniej figury. Klasa figura jest tutaj klasą bazową dla 3 klas pochodnych: prostokat, trojkat, romb. figura prostokat trojkat romb

Funkcje wirtualne (II) PO Funkcje wirtualne (II) //klasa bazowa – figura class figura { public: float a,b; figura(int _a, int _b); virtual void pole() cout << ”Nie zdefiniowana funkcja obliczajaca pole”; } }; //klasa pochodna – prostokat class prostokat : public figura prostokat(int a, int b):figura(a,b) {} cout << ”Pole prostokata: ”<< a*b << endl;

Funkcje wirtualne (III) PO Funkcje wirtualne (III) //klasa pochodna - trojkat class trojkat : public figura { public: trojkat(int a, int b):figura(a,b) {} virtual void pole() cout << ”Pole trojkat: ” << 0.5*a*b << endl; } }; //klasa pochodna – romb class romb : public figura romb(int a, int b):figura(a,b) {} //konstruktor klasy figura figura::figura(int _a, int _b) { a = _a; b = _b; }

Funkcje wirtualne (IV) PO Funkcje wirtualne (IV) int main() { //zmienna wskaźnikowa, która może wskazywać zarówno na obiekty //klasy bazowej - figura, jak i obiekty klas pochodnych - prostokat, trojkat, romb figura *wsk = 0; prostokat p(4,2); trojkat t(3,4); romb r(2,3); //na początku wskaźnik pokazuje na obiekt typu prostokąt, //wywołana zostanie metoda pole z klasy prostokąt wsk = &p; wsk->pole(); //teraz wskaźnik pokazuje na obiekt typu trójkąt //wywołana zostanie metoda pole z klasy trójkąt wsk = &t; //zmiana - wskaźnik pokazuje na obiekt typu romb //wywołana zostanie metoda pole z klasy romb wsk = &r; }