Dziedziczenie w klasach
|
|
- Witold Stankiewicz
- 6 lat temu
- Przeglądów:
Transkrypt
1 Dziedziczenie w klasach Na ostatnich zajęciach zajmowaliśmy się operacją agregacji w klasach. Polegała ona na łączeniu klas. W wyniku naszych działań otrzymaliśmy program którego schemat UML można przedstawić następująco (schemat ten nie uwzględnia klasy okna oraz klasy openglview): Na dzisiejszych zajęciach chcemy rozbudować nasz program dodając kolejne figury geometryczne tj. koło oraz trójkąt. Możemy zbudować nasz program opierając się dalej na agregacji i wtedy będzie on wyglądał w następujący sposób:
2 Zastanówmy się jednak czy takie podejście jest słuszne? Przecież inne figury mają częściowo takie same pola i metody. Różnią się jedynie właściwościami (polami) takimi jak promień czy wierzchołek. Ponadto każda klasa ma rożną funkcję Rysuj(). Skoro mamy tyle powtarzających się pól i metod być może istnieje sposób, aby napisać je tylko raz, a następnie tylko rozszerzyć opis w zależności czy mamy do czynienia z kwadratem, kołem czy trójkątem. Taką możliwość daje nam dziedziczenie (generalizacja). Zasada jest prosta tworzymy klasę, która opisuje ogólne właściwości pewnego zbioru obiektów (np. ssak jak wiadomo każde ma oczy, nogi, głowę itp.) następnie na jej podstawie budujemy klasy ściśle związane z danym gatunkiem i rozbudowujemy klasę bazową o właściwości danego gatunku. Wróćmy do naszego przykładu i zbudujmy klasę bazową CFigura. Na jej podstawie stworzymy klasy opisujące kwadrat, koło oraz trójkąt. Schemat UML będzie wyglądał następująco: Jak widać na rysunku posiadamy ogólną klasę CFigura, która jest później wykorzystywana przy tworzeniu klas potomnych CTrojkat, CKolo i CKwadrat. Każda z funkcji potomnych posiada swoją własną metodę Rysuj(); Po co w takim przypadku funkcja Rysuj() w klasie CFigura? Wyjaśnienie i korzyści jakie wynikają z tak przyjętej konwencji zawarte jest w dalszej części instrukcji. Pierwszym krokiem jest dodanie klasy CFigura. Dokonujemy tego np. poprzez wybór prawym przyciskiem na nazwie projektu Add->Class. Teraz czeka nas przeniesieni pól i metod z klasy CKwadrat do klasy CFigura. Zgodnie z powyższym diagramem UML, do pliku Figura.h dodajemy publiczne metody:
3 public: figury virtual void Rysuj()=0;//rysuje figure void Ukryj();//ukrywa figure void Pokaz();//pokazuje figure void Przesun(int dx, int dy, int dz);//ustawia zmienna odpowiedzialna za przesuniecie figury void Obroc(double alfa, double beta, double gamma); //ustawia zmienna odpowiedzialna za obrot gdzie metoda Rysuj()opatrzona jest etykietą virtual co oznacza, że jej definicja nie znajduje się w klasie CFigura, lecz w klasie potomnej. To właśnie tutaj nasza klasa staje się polimorficzna. Właściwość tę wykorzystamy w odpowiednim momencie. Wróćmy jednak do pliku nagłówkowego klasy CFigura. Należy tu również dodać deklaracje pól, które są chronione i mogą być dziedziczone co oznacza, że musimy użyć etykiety protected: protected: int kolor[3]; //kolor figury bool hide; //okresla czy figura ma byc wyswietlana 1 - nie, 0 - tak double translacja[3]; // przechowuje wspolrzedne przesuniecia w trzech osiach double rotacja[3]; //przechowuje wspolrzedne obrotow w trzech osiach Teraz należy dodać definicje metod klasy CFigura do pliku Figura.cpp.: void CFigura::Przesun(int dx, int dy, int dz) //przesuniecie figury translacja[0]+=dx; translacja[1]+=dy; translacja[2]+=dz; void CFigura::Obroc(double alfa, double beta, double gamma) // obrot figury rotacja[0]+=alfa; rotacja[1]+=beta; rotacja[2]+=gamma; void CFigura::Ukryj() // wylaczenie wyswietlania figury hide=1; void CFigura::Pokaz() // wylaczenie wyswietlania figury hide=0; Mając załatwioną kwestię klasy CFigura, można przejść do kodu klasy Ckwadrat. Modyfikacji ulec musi zarówno kod pliku nagłówkowego jak i definicji metod. Plik nagłówkowy powinien wyglądać następująco: class CKwadrat: public CFigura public: CKwadrat(void); //domyslny konstruktor CKwadrat(int x1, int y1, int x2, int y2,double r, double g, double b); // konstruktor, który automatycznie przypisuje wartości wierzchołkom i ustala kolor kwadratu ~CKwadrat(void); //destruktor void Rysuj(void); // funkcja rysująca figurę
4 private: CPunkt wierzcholek[4]; // wspólrzędne wierzchołków ; Jak widać dodaliśmy etykietę public oraz nazwę klasy CFigura zaraz po nazwie klasy CKwadrat, oznacza to, że klasa CKwadrat dziedziczy pola oraz metody po klasie CFigura (jest klasą potomną/pochodną klasy CFigura). Należy tez pamiętać aby załączyć: #include "Figura.h" do pliku nagłówkowego klasy CKwadrat, natomiast w pliku nagłówkowym klasy CFigura należy dołączyć: #include "punkt.h" Uwaga! Należy tym samym usunąć dołącznie #include "punkt.h" z pliku nagłówkowego CKwadrat. Teraz należy przebudować projekt (Built->Rebulid Solution) i uruchomić program. Jeśli wszystko zostało poprawnie wykonane, uzyskamy na ekranie efekt z ostatnich zajęć. Oczywiście nam zależy dodatkowo na narysowaniiu koła oraz trókąta zatem dodajemy ich klasy. Najpierw koło. Dodajemy klasę i tutaj, co ciekwego, w wizardzie klas możemy wybrać zależnoć pomiędzy klasami tj. dziedzictwo z klasy CFigura (wystarczy wpisać nazwę klasy bazowej): Wybieramy Finish. W pliku nagłówkowym automatycznie generowny jest kod klasy wraz z dopiskiem o dziedziczeniu: #pragma once #include "Figura.h" class CKolo : public CFigura public: CKolo(void); ~CKolo(void); ;
5 Następnie dopisujemy do pliku nagłówkowego kod, analogicznie jak w klasie CKwadrat, czyli: public: void Rysuj(void); // funkcja rysująca figurę CKolo(double p, int x, int y, int z, double r, double g, double b); //przeładowany konstruktor (ppromień, x, y, z - pozycja środka okręgu) CPunkt srodek; // współrzędne środka double promien; // promień Ostatecznie definiujemy zadeklarowane funkcje dla koła: CKolo::CKolo(double p, int x, int y, int z, double r, double g, double b) //przeładowany konstruktor (r-promień, x,y, z - pozycja środka okręgu) promien=p; srodek.pozycja[0]=x; srodek.pozycja[1]=y; srodek.pozycja[2]=z; kolor[0]=r; kolor[1]=g; kolor[2]=b; for (int i=0;i<3;i++) translacja[i]=0; rotacja[i]=0; hide=0; void CKolo::Rysuj() // funkcja rysująca figurę double angle, vectorx, vectory, vectorx1, vectory1; glpushmatrix();// save matrix prior to transform, pozwala na zmianę pozycji i orientacji tylko jednego obiektu gltranslatef(translacja[0],translacja[1],translacja[2]); //kolejność wykonania operacji translacji i rotacji definiuje względem którego układu obracany jest obiekt glrotatef( rotacja[0], 1.0, 0.0, 0.0 );//rotate about the X axis glrotatef( rotacja[1], 0.0, 1.0, 0.0 );//rotate about the Y axis glrotatef( rotacja[2], 0.0, 0.0, 1.0 );//rotate about the Z axis if (!hide) glcolor3f(kolor[0],kolor[1],kolor[2]);//ustawienie koloru glbegin(gl_triangles); vectorx1=srodek.pozycja[0]; vectory1=srodek.pozycja[1]; for(int i=0;i<=360;i++)//rysujemy koło składające sie z 360 trójkątów angle=i/ ; vectorx=srodek.pozycja[0]+(promien*sin(angle)); vectory=srodek.pozycja[1]+(promien*cos(angle)); glvertex3d(srodek.pozycja[0],srodek.pozycja[1],srodek.pozycja[2]); glvertex3d(vectorx1,vectory1,srodek.pozycja[2]); glvertex3d(vectorx,vectory,srodek.pozycja[2]); vectory1=vectory; vectorx1=vectorx; glend(); glpopmatrix();// restore matrix after transform, koniec przekszta3cen na wybranym obiekcie
6 Ponieważ w powyższej definicji używamy funkcji trygonometrycznych, dlatego musimy dodać plik nagłówkowy #include <math.h> do pliku nagłówkowego klasy CKolo. Teraz musmy dodać wywołanie naszego koła. Po pierwsze musimy stworzyć wskaźnik do koła, potem powołać do życia przy użyciu operatora new a ostatecznie należy wywołac metodę rysującą. Owczywiście obiekt typu CKolo będzie dynamiczny więc należy też usunąć go ze sceny przy użyciu operatora delete. Całość tych operacji można wykonać usuwając obiekt o nazwie kwadrat2, nie będzie bownien on już nam potrzebny. Teraz po kolei, najpierw zaczynamy od pliku nagłówkowego klasy openglview: #pragma once #include <gl\glut.h> // dodajemy bibliotekę glut do projektu #include "Kwadrat.h" #include "Kolo.h" class openglview public: CKwadrat * kwadrat; // kwadrat nr 1 CKolo * kolo; Następnie zmianiamy postać konstruktora i destrukora klasy openglview: openglview::openglview(void) kwadrat = new CKwadrat(-20,-20,20,20,1,1,0); kolo = new CKolo(20,30,30,0,0,0,1); openglview::~openglview(void) delete kwadrat; delete kolo; Oraz metody rysującej: void openglview::rysuj_figury(void) kwadrat->rysuj(); //rysuje obiekt kwadrat kolo->rysuj(); //rysuje obiekt koło Teraz kompilujemy projekt i dopalmy program, na ekranie powinniśmy zobaczyć koło oraz kwadrat:
7 Analogicznie należy dodać trójkąt, pamiętajć jednak, że trojkąt składa się z trzech wierzchołków, które trzeba zdefiniować. Mając już trzy figury na scenie możemy przejść do meritum naszych zajęć, czyli wykorzystania polimorfizmu klas. Wykorzystamy wcześniej wspomnianą właściwość wynikającą z zadeklarowania w klasie bazowej wirtualnej funkcji Rysuj(), a zdefiniowania jej w odpowiednich klasach potomnych. Dodajmy zatem do klasy openglview tablicę wskaźników do obiektów typu CFigura: CFigura * figury[3]; // tablica figur Usuwając tym samym nasze poprzednie figury: CKwadrat * kwadrat; CKolo * kolo; CTrojkat * trojkat; Oraz dołączamy odpowiednie pliki w openglview.h : #include "figura.h" #include "Kwadrat.h" #include "Trojkat.h" #include "Kolo.h" Następnie zainicjalizujemy odpowiednio nasze figury w konstruktorze klasy: figury[0] = new CKolo(20,30,30,0,1,0,0); figury[1] = new CKwadrat(-25,-25,25,25,0,1,0); figury[2] = new CTrojkat(-30,-20,-60,-20, -45, 0, 1, 1, 0); Podejrzane? Do tablicy wskaźników do obiektów typu CFigura wpisujemy wskaźniki do obiektów typu Ckolo, CKwadrat itd. Takie działanie jest dozwolone, ponieważ wszystkie te klasy są potomnymi klasy CFigura. Gdybyśmy próbowali wpisać: figury[0] = new CPunt(40,0,0); //błąd!!!! Bo CPunkt nie jest potomkiem CFigura Oczywiście musimy pamiętać o zwolnieniu pamięci w destruktorze: for (int i=1;i<3;i++) //usuwany wszystkie dynamiczne obiekty delete figury[i]; Teraz przejdźmy do rysowania obiektów w funkcji rysuj_figury(): for (int i=0;i<3;i++) figury[i]->rysuj(); Tutaj kolejna interesująca właściwość. Mimo, że w tablicy znajdują się wskaźniki do obiektów klasy CFigura, program rozpoznaje czy powinna zostać wywołana funkcja Rysuj() dla koła, dla kwadratu czy dla trójkąta. Na koniec zmieniamy definicje funkcji obsługującej klawiaturę: void openglview::keyboard(unsigned char key, int x, int y) if (key == 27) exit(0); // escape key is ascii 27 if (key == 97) figury[1]->przesun(10,0,0); //key a if (key == 115) figury[1]->przesun(0,10,0); //key s if (key == 100) figury[1]->przesun(0,0,10); //key d if (key == 122) figury[1]->przesun(-10,0,0); //key z if (key == 120) figury[1]->przesun(0,-10,0); //key x if (key == 99) figury[1]->przesun(0,0,-10); //key c if (key == 102) figury[1]->obroc(10,0,0); //key f if (key == 103) figury[1]->obroc(0,10,0); //key g if (key == 104) figury[1]->obroc(0,0,10); //key h if (key == 118) figury[1]->obroc(-10,0,0); //key v if (key == 98) figury[1]->obroc(0,-10,0); //key b
8 if (key == 110) figury[1]->obroc(0,0,-10); //key n //if (key == 111) figury[1]->ukryj(); //key o //if (key == 112) figury[1]->pokaz(); //key o Jaki mamy zysk z polimorfizmu? Np. taki, że teraz możemy spojrzeć na obiekt ze strony klasy bazowej, tym samym możemy zmienić przesunięcie czy obrót każdej z figur. Wystarczy, że teraz dodamy licznik figury np. numer jako składnik klasy openglview, a następnie zmianimy jego wartość po naciśnięciu odpowiedniego klawisza np.: if (key == 109) numer++; if(numer>2) numer=0; //key m W każdym innym miejscu zmianimy odniesienie do figury: if (key == 110) figury[numer]->obroc(0,0,-10); //key n Teraz możemy operować na każdej z figur wybierając zmianę na przycisku m Timer To ostatnie zadanie na dzisiaj. Na początku dodajmy funkcję odpowiedzialną za zmianę pozycji i orientacji wszystkich figur na scenie (animacja) w klasie openglview: Deklaracja: void animacja(void); Definicja: void openglview::animacja(void) //funkcje odpowiedzialna za zmianę pozycji i orientacji wszystkich figur na scenie Teraz wróćmy do pliku opengl1dlg.cpp i dodajmy funkcję globalną: void animacja(int value) gl.animacja(); gluttimerfunc(30,animacja,0); //ustawiamy funkcje timera po 30ms zostanie wywołana funkcja gl.animacja() z parametem 0 Następnie wskażmy, która funkcja odpowiada za timer (w funkcji OnBnClickedOk): gluttimerfunc(30,animacja,0); //ustawiamy funkcje timera Korzystanie z timera zamiast funkcji Sleep(...) nie blokuje funkcji obsługi klawiatury. Jest to wygodne i często wykorzystane. Sprawozdanie: 1. Co oznacza słowo virtual przy metodzie klasy i jakie są konsekwencje jego wykorzystania? 2. Jak można przejść pomiędzy figurami, używając jednego klawisza na klawiaturze? Podaj część kodu, która realizuje tę operację w naszym programie. 3. Dlaczego w pliku kwadrat.h nie dołączamy pliku nagłówkowego punkt.h? 4. W jakim celu zdeklarowana została metoda Rysuj() w klasie CFigura? Podaj konkretny przykład (z programu), którego wykonanie nie byłoby możliwe bez tej deklaracji. 5. Jak jest różnica pomiędzy agregacją a dziedziczeniem? Czy można stosować je zamiennie?
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
PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
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ą
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
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
Klasy w C++ Pierwsza gra
Klasy w C++ Pierwsza gra Na ostatnich zajęciach zajmowaliśmy się operację dziedziczenia w klasach. Zadanie polegało na stworzeniu obiektów graficznych na scenie opengl oraz manipulowanie nimi. Podczas
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
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Mechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Plik klasy. h deklaracje klas
Plik klasy. h deklaracje klas KLASY DLA PRZYKŁADÓW Z POLIMORFIZMEM enum dim r1 = 1, r2, r3; class figura public: static int const maxliczbafigur; = 100; static int liczbafigur; dim rn; rodzaj przestrzeni
Programowanie obiektowe i zdarzeniowe
Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie
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
Języki i techniki programowania Ćwiczenia 3 Dziedziczenie
Języki i techniki programowania Ćwiczenia 3 Dziedziczenie Klasa abstrakcyjna Autor: Marcin Orchel Klasa abstrakcyjna to taka, że nie możemy tworzyć obiektów tej klasy, możemy jednak dziedziczyć po tej
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Wprowadzenie do klas w C++ oraz biblioteki opengl
Wprowadzenie do klas w C++ oraz biblioteki opengl 1. Bibliotek opengl. W celu rozpoczęcia pracy z użyciem biblioteki opengl należy pobrać pliki archiwum glut- 3.7.6.zip ze strony: http://www.opengl.org/resources/libraries/glut/glut_downloads.php
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Programowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
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
Języki i metody programowania Java Lab2 podejście obiektowe
Języki i metody programowania Java Lab2 podejście obiektowe https://docs.oracle.com/javase/tutorial/ http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/pojava/javazk4_2.pdf Zofia Kruczkiewicz 1 Zadanie
Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;
Wykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
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ć
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
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
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Podstawy programowania obiektowego
1/23 Podstawy programowania obiektowego wykład 8 polimorfizm, wyjątki, kolekcje generyczne Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie klasy już istniejącej,
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;
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki
> C++ dziedziczenie Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1432108800 > Dziedziczenie Dziedziczenie C++ dziedziczenie 2 / 13 > Dziedziczenie Dziedziczenie * to
Dziedziczenie jednobazowe, poliformizm
Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie
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
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
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
Aplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
C++ Przeładowanie operatorów i wzorce w klasach
C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje
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
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
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
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Język Java część 2 (przykładowa aplikacja)
Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa
Mechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Przykładowa dostępna aplikacja w Visual Studio - krok po kroku
Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i
UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
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
Programowanie komputerowe. Zajęcia 7
Programowanie komputerowe Zajęcia 7 Klasy Klasy to typy danych, które pozwalają na zgromadzenie w jednej zmiennej (obiekcie) zarówno danych jak i operacji związanych z tymi danymi. Obiekt danej klasy może
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
Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:
Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.
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&
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?
Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Przydzielanie pamięci Poniżej przedstawiono w C++ dwie klasy obrazujące sposób rezerwacji pamięci. class Osoba char imie[30];
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
Dokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane
Deklaracja struktury w C++
Struktury to złożone typy danych pozwalające przechowywać różne informacje. Za pomocą struktur możliwe jest grupowanie wielu zmiennych o różnych typach w jeden obiekt. Strukturę można nazywać obiektem
Programowanie obiektowe
Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka
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
Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm
Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki
Informatyka II. Laboratorium Aplikacja okienkowa
Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.
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
Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26
Programowanie w C++ Wykład 13 Katarzyna Grzelak 4 czerwca 2018 K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
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
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,
Język Java część 2 (przykładowa aplikacja)
Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa
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
Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane
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
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
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy 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
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
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
Dziedziczenie. Tomasz Borzyszkowski
Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.
Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Instrukcja do pracowni specjalistycznej z przedmiotu Obiektowe programowanie aplikacji Kod przedmiotu: TS1C410201
Wykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
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
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
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
Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:
Interfejs w MFC 1. Tworzenie nowego projektu Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej: Następnie wybieramy opcje jak na rysunku: Następnie wybieramy
Klasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Temat: Transformacje 3D
Instrukcja laboratoryjna 11 Grafika komputerowa 3D Temat: Transformacje 3D Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny Bardzo często programując
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.
C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych 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
Programowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 6.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 6.11.2006 1 / 138 Operator przypisania Jest czym innym niż konstruktor kopiujacy!
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
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,
Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie
Wstęp do programowania obiektowego, wykład 7
Wstęp do programowania obiektowego, wykład 7 Klasy i funkcje abstrakcyjne Przeciążanie funkcji Definiowanie i interpretacja złożonych typów danych w C++ Wskaźniki do funkcji 1 KLASA ABSTRAKCYJNA 2 Klasa
Wykład 9: Polimorfizm i klasy wirtualne
Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm
Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 14 Katarzyna Grzelak 3 czerwca 2019 K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Na ostatnim wykładzie: Konstruktor standardowy (domyślny) to taki, który nie ma żadnych argumentów
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
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: