Wprowadzenie do programowanie obiektowego w języku C++

Save this PDF as:
 WORD  PNG  TXT  JPG

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wprowadzenie do programowanie obiektowego w języku C++"

Transkrypt

1 Wprowadzenie do programowanie obiektowego w języku C++ Część trzecia Autor Roman Simiński Kontakt Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa. Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.

2 Co było przyczyną powstania koncepcji dzedziczenia? Ponowne wykorzystanie elementów oprogramowania W trakcie projektowania i realizacji systemów informatycznych wielokrotnie powtarzają się jednakowe lub podobne elementy oprogramowania. Powtarzalność taką można obserwować zarówno etapie analizy, projektowania i programowania. Na etapie analizy są to zwykle obiekty dziedziny problemu, na etapie projektowania i programowania zarówno obiekty dziedziny problemu jak i obiekty implementacyjne. Ponowne wykorzystanie (ang. reuse) pozwala: na zwiększenie wydajności procesu programowania, poprawia jakość i niezawodność kodu, ułatwia rozwój i pielęgnację oprogramowania. Copyright Roman Simiński Strona : 2

3 Co było przyczyną powstania koncepcji dzedziczenia? Ponowne wykorzystanie kodu w programowaniu obiektowym Podejście obiektowe eksponuje rolę obiektu jest on abstrakcją pewnego konkretnego bytu ze świata rzeczywistego, reprezentujący rzecz (obiekt fizyczny) lub pojęcie (obiekt konceptualny). W programowaniu obiektowym ponowne wykorzystanie kodu polega na wykorzystaniu obiektów tej samej, raz zdefiniowanej klasy w różnych projektach. Klasa: Auto Cechy Akcje Marka Model Rok produkcji Nr rejestracyjny Kolor nadwozia Nr silnika Podaj średnie spalanie Podaj przebieg Copyright Roman Simiński Strona : 3

4 Co było przyczyną powstania koncepcji dzedziczenia? Niestety W obrębie obiektów dziedziny problemu powtarzają się obiekty podobne lecz bardzo rzadko identyczne. Autosalon Auto Autokomis Auto Serwis Auto Stacja diagnostyczna Auto Podobne lecz nieidentyczne Finanse-Księgowość Faktura Sprzedaż Faktura Windykacja Faktura Biuro rachunkowe Faktura Copyright Roman Simiński Strona : 4

5 Co było przyczyną powstania koncepcji dzedziczenia? Niestety W obrębie obiektów implementacyjnych powtarzalność obiektów identycznych jest znacznie częstsza, co jednak nie jest regułą. Okno aplikacji Okno dialogowe Belka narzedziowa Przyciski Copyright Roman Simiński Strona : 5

6 Co było przyczyną powstania koncepcji dzedziczenia? Ponowne wykorzystanie kodu problemy Powtarzalność nieidentycznych obiektów powoduje to, że musimy modyfikować istniejący kod, dostosowując go do specyfiki projektu. Modyfikacje potrzebne z punktu widzenia jednego systemu mogą być nieużyteczne lub nieakceptowalne z punktu widzenia innego systemu. Modyfikacje dostosowujące kod do specyfiki systemu zmuszają do utrzymywania różnych wersji tego samego kodu. Modyfikacje Autokomis Auto Autosalon Auto Modyfikacje Stacja diagnostyczna Auto Modyfikacje Serwis Auto Konieczność wprowadzenia w kodzie zmian o charakterze podstawowym, może spowodować konieczność zmodyfikowania wielu różnych jego wersji. Jest to uciążliwe, nieproduktywne i może być przyczyną błędów. Copyright Roman Simiński Strona : 6

7 Koncepcja dziedziczenia Ponowne wykorzystanie kodu z wykorzystaniem dziedziczenia marka model rokprod nrrej AutoWKomisie Auto cena dataprzyjecia wlasciciel polega na budowaniu nowych klas, zwanych klasami potomnymi, na podstawie klas już istniejących, zwanych klasami bazowymi. Każda klasa pochodna dziedziczy wszystkie właściwości klasy bazowej, rozszerzając ją o nowe atrybuty (pola) i usługi (metody). To już mamy, przejmujemy z klasy Auto Do są nowe elementy, dodane w klasie AutoWKomisie W wyniku dziedziczenia klasa pochodna otrzymuje wszystkie pola i metody klasy bazowej. 100% składowych klasy bazowej występuje w klasie pochodnej. Copyright Roman Simiński Strona : 7

8 Koncepcja dziedziczenia Klasa Auto jako klasa bazowa klasy AutoWKomisie Auto marka model rokprod nrrej AutoWKomisie cena dataprzyjecia wlasciciel Klasa bazowa Klasa potomna Copyright Roman Simiński Strona : 8

9 Koncepcja dziedziczenia Klasa Auto jako klasa bazowa klasy AutoWStacjiDiagn Auto marka model rokprod nrrej AutoWStacjiDiagn dataprzegladu nastepnyprzeglad diagnosta Klasa bazowa Klasa potomna Copyright Roman Simiński Strona : 9

10 Koncepcja dziedziczenia Klasa Auto jako klasa bazowa klasy AutoWSerwisie Auto marka model rokprod nrrej AutoWSerwisie przebieg numerkomputerowy Klasa bazowa Klasa potomna Copyright Roman Simiński Strona : 10

11 Koncepcja dziedziczenia Klasa bazowa i klasy potomne tworzą hierarchię klas Auto marka model rokprod nrrej AutoWKomisie cena dataprzyjecia wlasciciel AutoWStacjiDiagn dataprzegladu nastepnyprzeglad diagnosta AutoWSerwisie przebieg numerkomputerowy Copyright Roman Simiński Strona : 11

12 Koncepcja dziedziczenia Klasa bazowa jako klasa ogólna Klasa bazowa (nadklasa) reprezentuje pojęcie bardziej ogólne, znajdujące się na wyższym poziomie abstrakcji. Auto marka model rokprod nrrej AutoWKomisie cena dataprzyjecia wlasciciel AutoWStacjiDiagn dataprzegladu nastepnyprzeglad diagnosta AutoWSerwisie przebieg numerkomputerowy Copyright Roman Simiński Strona : 12

13 Koncepcja dziedziczenia Klasy pochodne jako klasy specjalizowane Auto marka model rokprod nrrej AutoWKomisie cena dataprzyjecia wlasciciel AutoWStacjiDiagn dataprzegladu nastepnyprzeglad diagnosta AutoWSerwisie przebieg numerkomputerowy Klasy pochodne (podklasay) reprezentuje pojęcie bardziej szczegółowe, specjalizowane, znajdujące się na niższym poziomie abstrakcji. Copyright Roman Simiński Strona : 13

14 Koncepcja dziedziczenia a generalizacja-specjalizacja jako środek realizacji modeli generalizacja-specjalizacja Pojęcie specjalizacja-generalizacja umożliwia organizowanie klas w struktury hierarchiczne, w których nadklasa reprezentuje pojęcia bardziej ogólne, a podklasa pojęcia specjalizowane. Auto marka model rokprod nrrej AutoWKomisie cena dataprzyjecia wlasciciel Klasa ogólna Generalizacja-specjalizacja Klasa specjalizowana Ogólność i poziom abstrakcji Szczegółowość i niższy poziom abstrakcji Copyright Roman Simiński Strona : 14

15 Koncepcja dziedziczenia a generalizacja-specjalizacja Jak zweryfikować poprawność wykorzystania dziedziczenia? Reguła is-a (ang. is a kind of) pozwala na sprawdzenie czy zachodzi związek dziedziczenia (specjalizacji generalizacji) pomiędzy klasami. Realizowane jest to poprzez sprawdzenie poprawności zdania: Czy klasa pochodna jest pewnego rodzaju (is-a) klasą bazową? precyzyjniej Czy obiekt klasy pochodnej jest pewnego rodzaju (is-a) obiektem klasy bazowej? Auto marka model rokprod nrrej Czy AutoWKomisie jest pewnego rodzaju Autem? AutoWKomisie cena dataprzyjecia wlasciciel Copyright Roman Simiński Strona : 15

16 Koncepcja dziedziczenia a generalizacja-specjalizacja Przykład weryfikacji poprawności dziedziczenia Zadajemy dwa pytania: czy obiekt klasy A jest obiektem klasy B? (A is-a B?) czy obiekt klasy B jest obiektem klasy A? (B is-a A?) Możliwe odpowiedzi: zawsze, nigdy czasami. Interpretacja: dwie odpowiedzi nigdy: brak związku specjalizacja-generalizacja, dwie odpowiedzi zawsze: obiekty A i B są synonimiczne (np. dwie różne nazwy dla tej samej klasy) jeżeli: A is-a B = zawsze oraz B is_a A = czasami wtedy A jest specjalizacją B (A is-a B). Copyright Roman Simiński Strona : 16

17 Koncepcja dziedziczenia a generalizacja-specjalizacja Przykład weryfikacji poprawności dziedziczenia Czy klasa AutoWKomisie jest klasą pochodną klasy Auto: czy obiekt klasy AutoWKomisie jest obiektem klasy Auto? czy obiekt klasy Auto jest obiektem klasy AutoWKomisie? Zawsze Czasami A jak ten test przejdą standardowe przykłady dziedziczenia z popularnych książek o programowaniu obiektowym? Copyright Roman Simiński Strona : 17

18 Koncepcja dziedziczenia a generalizacja-specjalizacja Przykład weryfikacji poprawności dziedziczenia (x, y) Punkt (x, y) r (x, y) Okrąg Prostokąt w h Rectangle Point Circle w h? x y? r Copyright Roman Simiński Strona : 18

19 Koncepcja dziedziczenia a generalizacja-specjalizacja Przykład weryfikacji poprawności dziedziczenia (x, y) Punkt (x, y) r (x, y) Okrąg Prostokąt w h Czy klasa Circle jest klasą pochodną klasy Point: czy obiekt klasy Circle jest pewnego rodzaju obiektem klasy Point?? czy obiekt klasy Point jest pewnego rodzaju obiektem klasy Circle?? Czy klasa Rectangle jest klasą pochodną klasy Point: czy obiekt klasy Prostokat jest pewnego rodzaju obiektem klasy Point?? czy obiekt klasy Point jest pewnego rodzaju obiektem klasy Prostokat?? Copyright Roman Simiński Strona : 19

20 Koncepcja dziedziczenia a związki całość-część Jeżeli nie dziedziczenie to co? Często obiekty łączy relacja is_part czyli jest częścią (ang. is a part of). Relacja ta określana jest pojęciem całość-część. Przy związkach całość-część zadajemy pytania: czy obiekt klasy A jest częścią obiektu klasy B? czy obiekt klasy B zawiera w sobie obiekt klasy A? Klasa obiektu składowego Rectangle Point Circle w h x y r Klasa obiektu-całości Związek całość-część Klasa obiektu-całości Copyright Roman Simiński Strona : 20

21 Anatomia dziedziczenia w C++ na przykładzie Punkt y (x, y) Punkt3D y (x, y, z) z x x Point Czy Punkt3D jest pewnego rodzaju Punktem? Point3D x y z Copyright Roman Simiński Strona : 21

22 Anatomia dziedziczenia w C++ na przykładzie Przykład wykorzystania klasy Point i Point3D: #include <iostream> using namespace std; // int main() Point p1( 10, 12 ); Point3D p2( 2, 5, 4 ); cout << endl << "Punkt 2D ma wspolrzedne" << endl; cout << "x = " << p1.getx() << endl; cout << "y = " << p1.gety() << endl; cout << endl << "Punkt 3D ma wspolrzedne" << endl; cout << "x = " << p2.getx() << endl; cout << "y = " << p2.gety() << endl; cout << "z = " << p2.getz() << endl; return EXIT_SUCCESS; Copyright Roman Simiński Strona : 22

23 Anatomia dziedziczenia w C++ na przykładzie Przykład klasy bazowej Point: class Point public : // Konstruktory Point() : x( 0 ), y( 0 ) Point( int x, int y ) : x( x ), y( y ) // Modyfikator i akcesor dla pola x void setx( int x ) Point::x = x; int getx() const return x; // Modyfikator i akcesor dla pola y void sety( int y ) Point::y = y; int gety() const return y; private: int x, y; ; Copyright Roman Simiński Strona : 23

24 Anatomia dziedziczenia w C++ na przykładzie Przykład klasy pochodnej Point3D: class Point3D : public Point public : // Konstruktory Point3D() : Point(), z( 0 ) Point3D( int x, int y, int z ) : Point( x, y ), z( z ) // Modyfikator i akcesor dla pola z void setz( int z ) Point3D::z = z; int getz() const return z; private: int z; ; Copyright Roman Simiński Strona : 24

25 Anatomia dziedziczenia w C++ na przykładzie w trybie publicznym zachowuje widoczność pól określoną w klasie bazowej. Konstruktor klasy pochodnej aktywuje konstruktor klasy bazowej umieszczony na liście inicjalizacyjnej, odbywa się to przed wywołaniem ciała konstruktora. class Point3D : public Point public : // Konstruktory Point3D() : Point(), z( 0 ) Point3D( int x, int y, int z ) : Point( x, y ), z( z ) // Modyfikator i akcesor dla pola z void setz( int z ) Point3D::z = z; int getz() const return z; private: int z; ; Copyright Roman Simiński Strona : 25

26 Anatomia dziedziczenia w C++ na przykładzie W klasie pochodnej definiujemy metody do obsługi nowych pól, obsługę pól odziedziczonych realizujemy z wykorzystaniem metod odziedziczonych. Używamy konstruktorów klasy bazowej do zainicjowania pól odziedziczonych, nowe pola inicjują własne konstruktory. class Point3D : public Point public : // Konstruktory Point3D() : Point(), z( 0 ) Point3D( int x, int y, int z ) : Point( x, y ), z( z ) // Modyfikator i akcesor dla pola z void setz( int z ) Point3D::z = z; int getz() const return z; private: int z; ; Copyright Roman Simiński Strona : 26

27 Anatomia dziedziczenia w C++ na przykładzie Punkt y (x, y) Piksel x y x Point Czy Piksel jest pewnego rodzaju Punktem? Pixel x y color Copyright Roman Simiński Strona : 27

28 Anatomia dziedziczenia w C++ na przykładzie Przykład klasy pochodnej Pixel: class Pixel : public Point public : // Konstruktory Pixel() : Point(), color( 0 ) Pixel( int x, int y, int color ) : Point( x, y ), color( color ) // Modyfikator i akcesor dla pola color void setcolor( int color ) Pixel::color = color; int getcolor() const return color; // Realizator void put() const // Funkcja wyświetl. piksela z odpowiedniej bibl. graficznej, np.: putpixel( getx(), gety(), color ); private: int color; ; Copyright Roman Simiński Strona : 28

29 Anatomia dziedziczenia w C++ na przykładzie Piksel PikselEkranowy y x y x Ograniczenia minx, miny, maxx, maxy. Pixel Czy PikselEkranowy jest pewnego rodzaju Pikselem? ScrPixel color minx, miny maxx, maxy Copyright Roman Simiński Strona : 29

30 Anatomia dziedziczenia w C++ na przykładzie Przykład klasy pochodnej ScrPixel: class ScrPixel : public Pixel public : ScrPixel() : Pixel() ScrPixel( int x, int y, int color ) : Pixel( x, y, color ) void setx( int x ) Point::setX( ( x >= minx && x <= maxx )? x : 0 ); void sety( int y ) Point::setY( ( y >= miny && y <= maxy )? y : 0 ); ; static int minx, miny, maxx, maxy; int ScrPixel::minx = 0; int ScrPixel::miny = 0; int ScrPixel::maxx = 799; int ScrPixel::maxy = 599; Copyright Roman Simiński Strona : 30

31 Ma marginesie pola statyczne Pola statyczne dla danej klasy występują tylko raz, są współdzielone przez wszystkie obiekty tej klasy. Istnieją nawet wtedy, gdy nie został utworzony żaden obiekt klasy. Pola statyczne muszą być zdefiniowane poza klasą, nadaje się im tedy wartość początkową. int ScrPixel::minx = 0; int ScrPixel::miny = 0; int ScrPixel::maxx = 799; int ScrPixel::maxy = 599; Do pól statycznych klasy można odwoływać się bez obiektu: ScrPixel::maxx = screen.getmaxx(); ScrPixel::maxy = screen.getmaxy(); Pola statyczne stanowią wspólną, współdzieloną pamięć wszystkich obiektów danej klasy. Wykorzystywane są do zapamiętywania informacji, które są wspólne dla wszystkich obiektów i nie muszą być pamiętane osobno w każdym z obiektów. Copyright Roman Simiński Strona : 31

32 Redefinicja metody (funkcji składowej) w klasie pochodnej class Point void setx( int x ) Point::x = x; ; class ScrPixel : public Pixel void setx( int x ) Point::setX( ( x >= minx && x <= maxx )? x : 0 ); ; W klasie pochodnej można zmienić sposób działania metody odziedziczonej poprzez jej redefinicję. Do metody odziedziczonej można dalej odwoływać się stosując prefiks w postaci nazwa_klasy_bazowej::. Redefinicję metody w klasie pochodnej stosujemy wtedy, gdy nie odpowiada nam działanie metody odziedziczonej. Można napisać własną implementację metody, opcjonalnie posługując się również metodą odziedziczoną. Copyright Roman Simiński Strona : 32

33 Składowe chronione W klasie pochodnej nie ma bezpośredniego dostępu do pól prywatnych klasy bazowej. class Pixel : public Point public : void put() const putpixel( getx(), gety(), color ); ; Przewidując, że pewna klasa będzie wykorzystywana jako klasa bazowa, można zadeklarować jej składowe (pola i metody) jako chronione protected: Składowe zadeklarowane jako protected są dostępne dla obiektów wszystkich klas pochodnych (tak jak składowe public). Składowe zadeklarowane jako protected są niedostępne dla obiektów innych, niezaprzyjaźnionych klas (tak jak składowe private). Specyfikator protected działa jak private, z tym wyjątkiem, że obiekty klas pochodnych otrzymują dostęp do składowych protected klasy bazowej. Copyright Roman Simiński Strona : 33

34 Składowe chronione Deklaracja pól x i y jako chronionych: class Point public : protected: int x, y; ; class Pixel : public Point public : void put() const putpixel( x, y, color ); // Dozwolone bezpośrednie odwołanie do x i y ; Point p; p.x = 10; // Błąd, składowa x jest chroniona! Copyright Roman Simiński Strona : 34

35 Na marginesie destruktory Destruktor to funkcja wywoływana automatycznie przez kompilator bezpośrednio przed momentem, w którym obiekt przestaje żyć. Moment śmierci obiektu zależy od tego, w jaki sposób został on utworzony. Obiekty statyczne giną po zakończeniu wykonania funkcji main, obiekty automatyczne po wyjściu sterowania z bloku w którym zostały zdefiniowane, obiekty dynamicze w momencie usunięcia ich z pamięci operatorem delete. Destruktor to bezparametrowa funkcja, bez określonego rezultatu, o nazwie takiej, jak nazwa klasy poprzedzona znakiem tyldy ~. class Point public: // Destruktor ~Point(); ; class ScrPixel public: // Destruktor ~ScrPixel(); ; Copyright Roman Simiński Strona : 35

36 Na marginesie destruktory Klasa Point ze zmodyfikowanymi konstruktorami i destruktorem class Point public : // Konstruktory Point() : x( 0 ), y( 0 ) cout << endl << "Point()" << endl; Point( int x, int y ) : x( x ), y( y ) cout << endl << "Point( " << x << ", " << y << " )" << endl; // Destruktor ~Point() cout << endl << "~Point()" << endl; ; Copyright Roman Simiński Strona : 36

37 Na marginesie destruktory Aktywowanie konstruktora i destruktora dla obiektu klasy Point: cout << endl << "Przed utworzeniem obiektu p klasy Point" << endl; Point p( 1, 10 ); cout << endl << "Punkt ma wspolrzedne" << endl; cout << "x = " << p.getx() << endl; cout << "y = " << p.gety() << endl; cout << endl << "Po usunieciu obiektu p klasy Point" << endl; Obiekt zaczyna żyć, aktywowanie konstruktora Obiekt umiera, aktywowanie destruktora Copyright Roman Simiński Strona : 37

38 Kolejność aktywowania konstruktorów i destruktorów a dziedziczenie Klasa Point3D ze zmodyfikowanymi konstruktorami i destruktorem class Point3D : public Point public : // Konstruktory Point3D() : Point(), z( 0 ) cout << endl << "Point3D()" << endl; ; Point3D( int x, int y, int z ) : Point( x, y ), z( z ) cout<< endl << "Point3D( " << x << ", " << y << ", " << z << " )" << endl; // Destruktor ~Point3D() cout << endl << "~Point3D()" << endl; Copyright Roman Simiński Strona : 38

39 Kolejność aktywowania konstruktorów i destruktorów a dziedziczenie Klasa Pixel ze zmodyfikowanymi konstruktorami i destruktorem class Pixel : public Point public : // Konstruktory Pixel() : Point(), color( 0 ) cout << endl << "Pixel()" << endl; ; Pixel( int x, int y, int color ) : Point( x, y ), color( color ) cout<< endl<< "Pixel( "<< x << ", " << y << ", " << color << " )" << endl; // Destruktor ~Pixel() cout << endl << "~Pixel()" << endl; Copyright Roman Simiński Strona : 39

40 Kolejność aktywowania konstruktorów i destruktorów a dziedziczenie Klasa ScrPixel ze zmodyfikowanymi konstruktorami i destruktorem class ScrPixel : public Pixel public : // Konstruktory ScrPixel() : Pixel() cout << endl << "ScrPixel()" << endl; ; ScrPixel( int x, int y, int color ) : Pixel( x, y, color ) cout<< endl<< "ScrPixel( "<< x << ", "<< y << ", "<< color << " )"<< endl; // Destruktor ~ScrPixel() cout << endl << "~ScrPixel()" << endl; Copyright Roman Simiński Strona : 40

41 Kolejność aktywowania konstruktorów i destruktorów a dziedziczenie Aktywowanie konstruktora i destruktora dla obiektu klasy Point3D: cout << endl << "Przed utworzeniem obiektu p klasy Point3D" << endl; Point3D p( 2, 5, 4 ); cout << endl << "Punkt 3D ma wspolrzedne" << endl; cout << "x = " << p.getx() << endl; cout << "y = " << p.gety() << endl; cout << "z = " << p.getz() << endl; cout << endl << "Po usunieciu obiektu p klasy Point3d" << endl; Aktywowanie konstruktora klasy bazowej Aktywowanie konstruktora własnego klasy Aktywowanie destruktora własnego klasy Aktywowanie destruktora klasy bazowej Copyright Roman Simiński Strona : 41

42 Kolejność aktywowania konstruktorów i destruktorów a dziedziczenie Aktywowanie konstruktora i destruktora dla obiektu klasy Point3D: cout << endl << "Przed utworzeniem obiektu p klasy ScrPixel" << endl; ScrPixel p( 10, 5, 0 ); cout << endl << "Piksel ma wspolrzedne" << endl; cout << "x = " << p.getx() << endl; cout << "y = " << p.gety() << endl; cout << endl << "Po usunieciu obiektu p klasy ScrPixel" << endl; Aktywowanie konstruktorów klas bazowych Aktywowanie konstruktora własnego klasy Aktywowanie destruktora własnego klasy Aktywowanie destruktorów klas bazowych Copyright Roman Simiński Strona : 42

Wprowadzenie do programowanie obiektowego w języku C++

Wprowadzenie do programowanie obiektowego w języku C++ Wprowadzenie do programowanie obiektowego w języku C++ Część czwarta Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Programowanie obiektowe w języku

Programowanie obiektowe w języku Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy

Bardziej szczegółowo

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład V - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Programowanie obiektowe Dziedziczenie (inheritance) - mechanizm

Bardziej szczegółowo

Dziedziczenie. Ogólna postać dziedziczenia klas:

Dziedziczenie. Ogólna postać dziedziczenia klas: Dziedziczenie Ogólna postać dziedziczenia klas: class nazwa_clasy_pochodnej : specyfikator_dostępu nazwa_clasy_bazowej specyfikator_dostępu : public private protected Specyfikator dostępu definiuje, w

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Przeciążanie operatorów Słowo

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,

Bardziej szczegółowo

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 6 (07.12.2012) dr inż. Jarosław Forenc Rok

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo

Wprowadzenie do obiektowości

Wprowadzenie do obiektowości Wprowadzenie do obiektowości Obiekt jest abstrakcją pewnego konkretnego bytu ze świata rzeczywistego, reprezentujący rzecz (obiekt fizyczny), pojęcie (obiekt konceptualny) lub pewny byt programistyczny

Bardziej szczegółowo

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk.   tel: Konsultacje: piątek: Języki Programowania Prowadząca: dr inż. Hanna Zbroszczyk e-mail: gos@if.pw.edu.pl tel: +48 22 234 58 51 Konsultacje: piątek: 12.00 13.30 www: http://www.if.pw.edu.pl/~gos/students/jp Politechnika Warszawska

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 2

PARADYGMATY PROGRAMOWANIA Wykład 2 PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych

Bardziej szczegółowo

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy 2.4 Dziedziczenie Poprzednie dwa rozdziały które dotyczyły zagadnienia automatów komórkowych na przykładach programów w C++. Mogłyby one sugerować że niekoniecznie trzeba programować obiektowo aby napisać

Bardziej szczegółowo

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Programowanie Obiektowe i C++ Marcin Benke

Programowanie Obiektowe i C++ Marcin Benke Programowanie Obiektowe i C++ Marcin Benke Dzisiaj Co umiemy Paradygmaty programowania Co będzie na wykładach Zasady zaliczania Programowanie obiektowe Co umiemy Programowałem w C++ Programowałem w języku

Bardziej szczegółowo

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

Bardziej szczegółowo

Wprowadzenie do programowanie obiektowego w języku C++

Wprowadzenie do programowanie obiektowego w języku C++ Wprowadzenie do programowanie obiektowego w języku C++ Część druga Obiekty i klasy Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe 10.04.2017 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt Przykład wykorzystania obiektu Obiekt X jest instancją klasy Y Obiekt

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Pojęcie struktury i klasy. Konstruktor i destruktor. Spotkanie 08 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Spotkanie 08 Klasy: definicja a deklaracja klasy dane składowe

Bardziej szczegółowo

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis. Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Pola i metody statyczne

Pola i metody statyczne Pola i metody statyczne Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2009 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania

Bardziej szczegółowo

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w języku C++ Klasy w C++ Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część trzynasta Tablice struktur, pliki struktur Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści

Bardziej szczegółowo

Laboratorium 1 - Programowanie proceduralne i obiektowe

Laboratorium 1 - Programowanie proceduralne i obiektowe Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

1 Dziedziczenie. 1.1 Koncepcja dziedziczenia. Ćwiczenie 3

1 Dziedziczenie. 1.1 Koncepcja dziedziczenia. Ćwiczenie 3 Ćwiczenie 3 1 Dziedziczenie Ćwiczenie to poświęcone jest poznaniu podstawowych zagadnień związanych dziedziczeniem procesem budowania nowych klas, w oparciu o klasy istniejące. Obejmuje m.in. ćwiczenia

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne

Bardziej szczegółowo

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50. Programowanie (język C++) referencje Wykład 2. Referencje (1) Referencja (odnośnik) jest zmienną identyfikującą inną zmienną. Wykonanie operacji na referencji ma taki sam skutek, jak wykonanie tejŝe operacji

Bardziej szczegółowo

Wstęp do programowania obiektowego. Wykład 2

Wstęp do programowania obiektowego. Wykład 2 Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe

Bardziej szczegółowo

tel Konsultacje www

tel Konsultacje www Języki Programowania Prowadząca: dr inż. Hanna Zbroszczyk e-mail: e-mail gos@if.pw.edu.pl tel: tel +48 22 234 58 51 Konsultacje: Piątek: 12.00 13.30 www: http://www.if.pw.edu.pl/~gos/students/jp Politechnika

Bardziej szczegółowo

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Operator przypisania. Jest czym innym niż konstruktor kopiujący! Operator przypisania Jest czym innym niż konstruktor kopiujący! Domyślnie jest zdefiniowany jako przypisanie składowa po składowej (zatem niekoniecznie bajt po bajcie). Dla klasy X definiuje się jako X&

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Programowanie obiektowe w C++ Wykład 12

Programowanie obiektowe w C++ Wykład 12 Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Programowanie obiektowe język C++

Programowanie obiektowe język C++ Programowanie obiektowe język C++ Dr inż. Sławomir Samolej D108A, tel: 865 1486, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Podziękowanie: Chcę podziękować dr inż.. Grzegorzowi Hałdasiowi

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 9.

Programowanie 2. Język C++. Wykład 9. 9.1 Ukrywanie metod, metody nadpisane... 1 9.2 Metody wirtualne, wirtualny destruktor... 2 9.3 Metody czysto wirtualne... 6 9.4 Klasy abstrakcyjne... 7 9.5 Wielodziedziczenie... 9 9.1 Ukrywanie metod,

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Programowanie, część I

Programowanie, część I Programowanie, część I Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 22 lutego 2011 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część I 22 lutego 2011 1 / 80 Wstęp Informacje organizacyjne

Bardziej szczegółowo

Język C++ wykład VIII

Język C++ wykład VIII Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

Bardziej szczegółowo

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego: Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów

Bardziej szczegółowo

Rysunek 1: Przykłady graficznej prezentacji klas.

Rysunek 1: Przykłady graficznej prezentacji klas. 4 DIAGRAMY KLAS. 4 Diagramy klas. 4.1 Wprowadzenie. Diagram klas - w ujednoliconym języku modelowania jest to statyczny diagram strukturalny, przedstawiający strukturę systemu w modelach obiektowych przez

Bardziej szczegółowo

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 O mnie prowadzący wykład: Dariusz Wardowski pokój: A334 dyżur: środa, godz. 10.00 12.00 e-mail: wardd@math.uni.lodz.pl

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Programowanie, część I

Programowanie, część I 11 marca 2010 Kontakt Wstęp Informacje organizacyjne Materiał na ćwiczenia Plan wykładu http://www.fuw.edu.pl/~rwys/prog rwys@fuw.edu.pl tel. 22 55 32 263 Materiał na ćwiczenia Informacje organizacyjne

Bardziej szczegółowo

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie dr inż. Jacek Naruniec Kolokwium wykładowe Pierwsze kolokwium 6 kwietnia Drugie kolokwium 1 czerwca Kolokwium poprawkowe 8 czerwca

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. PROGRAMOWANIE OBIEKTOWE W C++ cz. 2 Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. Dziedziczenie Dziedziczenie jest to technika pozwalaj c na definiowanie nowej klasy przy wykorzystaniu

Bardziej szczegółowo

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Materiały dydaktyczne Podstawy i języki programowania Część trzecia Wprowadzenie do programowania w języku C++ Temat opracowania Łagodny start Autor Roman Simiński siminski@us.edu.pl Niniejsze opracowanie

Bardziej szczegółowo

Wyliczanie wyrażenia obiekty tymczasowe

Wyliczanie wyrażenia obiekty tymczasowe Wyliczanie wyrażenia obiekty tymczasowe Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.: Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,

Bardziej szczegółowo

Wprowadzenie do programowania w języku C

Wprowadzenie do programowania w języku C Wprowadzenie do programowania w języku C Część trzecia Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 30.10.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 30.10.2006 85 / 112 Zgodność typów Rozważmy klasy class A { //... }; class

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Dziedziczenie i interfejsy

Dziedziczenie i interfejsy Dziedziczenie i interfejsy Wyróżnia się dwa sposoby ponownego wykorzystania klas: Kompozycję oznacza, że obiekt jest zawarty w innym obiekcie i jest reprezentowana przez relację całość-część. Przykładowo

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład Relacje między klasami, klasy zagnieŝdŝone, klasy lokalne

Programowanie 2. Język C++. Wykład Relacje między klasami, klasy zagnieŝdŝone, klasy lokalne 3.1 Relacje między klasami, klasy zagnieŝdŝone, klasy lokalne... 1 3.2 Zaprzyjaźnione klasy, specyfikator friend... 3 3.3 Zaprzyjaźnione funkcje, metody z klasą... 4 3.4 Relacje dziedziczenia... 6 3.5

Bardziej szczegółowo

Abstrakcyjny typ danych

Abstrakcyjny typ danych Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są

Bardziej szczegółowo

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i

Bardziej szczegółowo

Wprowadzenie do obiektowości

Wprowadzenie do obiektowości Wprowadzenie do obiektowości Obiekt jest abstrakcją pewnego konkretnego bytu ze świata rzeczywistego, reprezentujący rzecz (obiekt fizyczny), pojęcie (obiekt konceptualny) lub pewny byt programistyczny

Bardziej szczegółowo

TEMAT : KLASY POLIMORFIZM

TEMAT : KLASY POLIMORFIZM TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium

Bardziej szczegółowo

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double

Bardziej szczegółowo

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe i C++ dla matematyków Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać

Bardziej szczegółowo

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie Materiały: Informatyka II Laboratorium : Programowania obiektowe C++ - dziedziczenie Książka: Symfonia C++, Jerzy Grębosz. Wykład: www.materialy.prz-rzeszow.pl, Informatyka II, dr Wojciech Rząsa. Zasoby

Bardziej szczegółowo

Język C++ Programowanie obiektowe

Język C++ Programowanie obiektowe Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie

Bardziej szczegółowo

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów Rok akademicki 2016/2017, Wykład nr 5 2/40 Plan wykładu nr 5 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 Materiały do wykładu

Bardziej szczegółowo