Do czego służą klasy?
|
|
- Zofia Szewczyk
- 5 lat temu
- Przeglądów:
Transkrypt
1 KLASY Dorota Pylak
2 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać (inaczej - usługami, które są obowiązane świadczyć; inaczej - poleceniami czy komunikatami, które można im wydawać czy do nich posyłać) Obiekty w programie odzwierciedlają rzeczywiste obiekty, które mogą być konkretne (fizyczne) lub abstrakcyjne. Na przykład, gdyby nasz program symulował ruch uliczny, to potrzebowalibyśmy takich obiektów jak samochody. Każdy z obiektów- samochodów ma jakieś cechy (atrybuty, stany) np. ciężar, wysokość, aktualną prędkość jazdy oraz udostępnia jakieś usługi, wykonanie których możemy mu zlecić za pomocą odpowiednich poleceń np. włącz się do ruchu, zatrzymaj się, zwiększ prędkość skręć w lewo itp.
3 3 Do czego służą klasy? Skąd wiemy jakie atrybuty mają obiekty-samochody? Skąd wiemy jakie polecenia możemy do nich posyłać? O tym decyduje definicja klasy samochodów, którą nasz program musi albo skądś pobrać albo sam dostarczyć. Klasa - to opis takich cech grupy podobnych obiektów, które są dla nich niezmienne (np. zestaw atrybutów i usług(funkcji), które mogą świadczyć, wykonywać) Można by więc symbolicznie zapisać coś takiego: Klasa Samochod atrybuty: ciężar wysokość aktualna prędkość usługi - operacje: włącz_się_do_ruchu zatrzymaj_się zwiększ_prędkość skręć_w_lewo
4 Do czego służą klasy? 4 Dopiero teraz będziemy wiedzieć co charakteryzuje każdy obiekt-samochód w naszym programie i co możemy z każdym takim obiektem robić w programie. Warto zwrócić uwagę, że dzięki zastosowaniu klas mamy możliwość programowania w języku problemu (np. symulacji ruchu samochodów). Klasy pozwalają nam wprowadzać do języka nowe typy danych (takie jak Samochod) z właściwymi dla nich zestawami dopuszczalnych wartości (tu: możliwe wartości atrybutów, takich jak ciężar, wysokość, aktualna prędkość jazdy) i dopuszczalnymi operacjami. Klasa jest uogólnieniem typu: w zasadzie klasa zachowuje się dokładnie jak typ wbudowany Nie należy myśleć, że np. definicja klasy samochodów jest ustalona i jedyna. Konkretne obiekty samochody możemy przecież w naszych programach opisywać bardzo różnie w zależności od tego jaki problem ma do rozwiązania nasz program. Np. w przypadku symulacji ruchu ulicznego nie będzie pewnie nas interesować taka cecha samochodu jak kolor (zatem ten atrybut nie znajdzie się w definicji klasy jako wspólna cecha wszystkich obiektów samochodów). Ale być może gdyby nasz program zajmował się zagadnieniem sprzedaży samochodów, to cecha "kolor" znalazłaby się jako istotny atrybut w definicji klasy. A zamiast operacji: włącz się_do ruchu itp. potrzebne byłyby całkiem inne operacje na obiektach (np. sprzedaj).
5 Do czego służą klasy? 5 Klasy mogą też odzwierciedlać obiekty abstrakcyjne (np. matematyczne) Rozważmy np. pary liczb całkowitych. W naszym programie odzwierciedlamy właściwości tych obiektów za pomocą definicji klasy par liczb całkowitych. Taka definicja określa atrybuty pary oraz operacje, które na parach można wykonywać. Klasa Para atrybuty: pierwsza_liczba_pary druga_liczba_pary usługi - operacje: operacja_inicjacji // zainicjuj parę dwoma podanymi liczbami set add show // ustal wartość pary na podstawie wartości innej pary // dodaj do pary inną parę // pokaż parę Znowu: ta definicja nie określa wartości cech pojedynczego obiektu. Możemy mieć wiele obiektów par-liczb całkowitych. Każdy obiekt para ma podane atrybuty (ale np. różne ich wartości) oraz na każdym możemy wykonywać podane operacje (set,add itd).
6 6 Definicja klasy Definicja klasy określa: zestaw cech (atrybutów) obiektów klasy, zestaw operacji, które można wykonywać na obiektach klasy specjalne operacje, które pozwalają na inicjowanie obiektów przy ich tworzeniu W wielu językach obiektowych (w tym w C++, Javie): wspólne cechy (atrybuty) obiektów nazywają się polami klasy, operacje (polecenia) - nazywają się metodami, specjalne operacje inicjacji - nazywają się konstruktorami. Definicja klasy stanowi zatem definicję: pól, metod, i konstruktorów. Klasę winniśmy traktować jako swoisty wzorzec, szablon opisujący powstawanie obiektów (konstruktory), ich cechy (pola) oraz sposób komunikowania się z obiektami (metody). Pola, metody i konstruktory nazywamy składowymi klasy. Klasa stanowi też osobną przestrzeń nazw: wewnątrz klasy można definiować nowe typy. Nazwy tak zdefiniowanych typów należeć będą do zasięgu klasy: można się do nich odwołać z zewnątrz poprzez nazwę kwalifikowaną z zastosowaniem operatora zasięgu ' ::'.
7 Definicja klasy 7 Definicję klasy piszemy zwykle na zewnątrz innych klas i funkcji (nie jest to jednak wymaganie języka: można, choć rzadko bywa to przydatne, definiować klasę wewnątrz funkcji). Sama definicja ma postać lub class Klasa { ; // składowe klasy: pola, metody... struct Klasa { ; // składowe klasy: pola, metody... Nie należy zapominać o średniku kończącym definicję klasy. Nowy typ jest już zdefiniowany po napotkaniu zamykającego nawiasu klamrowego, zatem za nawiasem, a przed średnikiem można umieścić definicje obiektów właśnie zdefiniowanej klasy; na przykład po class Klasa { //... x, y, z; zdefiniowana byłaby klasa Klasa i utworzone trzy obiekty tej klasy o nazwach x, y i z (pod warunkiem, że istnieje w klasie/strukturze publiczny konstruktor domyślny).
8 Dostępność składowych 8 Wszystkie składowe klasy są widoczne wewnątrz klasy. Oznacza to, że mają do nich dostęp funkcje (metody) zadeklarowane jako funkcje składowe danej klasy. Mogą jednak mieć różny poziom dostępności z zewnątrz, a więc z funkcji które nie są składowymi danej klasy: poziom dostępności jest określany jednym ze słów kluczowych: public, private, lub protected.. Definicję klasy dzieli się na tzw. sekcje: każda sekcja rozpoczyna się od jednego z tych słów kluczowych z następującym po nim dwukropkiem. Sekcja rozciąga się do końca definicji klasy lub do rozpoczęcia innej sekcji, na przykład: 1. class Klasa { 2. int s1; 3. public: //sekcja publiczna 4. int s2; 5. double d2; 6. private: //sekcja prywatna 7. double s3; 8. void fun3(int,double); 9. public: //sekcja publiczna 10. int s4; 11. char c4; 12. ;
9 Dostępność składowych 9 Pole s1 zostało zdefiniowane przed pojawieniem się jakiegokolwiek specyfikatora poziomu dostępności. Przyjmuje się wtedy dostępność domyślną, według następującej zasady: Klasy można definiować w C++ za pomocą słowa kluczowego class lub struct. Jeśli użyliśmy słowa class, to domyślnie składowe są prywatne (private), jeśli użyliśmy słowa struct, to domyślnie składowe są publiczne (public). Innych różnic między klasami i strukturami w C++ nie ma. Pod względem dostępności składowe dzielą się zatem na: publiczne (public), których nazwy mogą być używane we wszystkich miejscach programu, gdzie widoczna jest definicja klasy; prywatne (private), których nazwy mogą być używane tylko przez funkcje, które same są składowymi tej samej klasy, lub funkcje z daną klasą zaprzyjaźnione (o czym później); chronione (protected), których nazwy mogą być używane tylko przez funkcje, które same są składowymi tej samej klasy, funkcje z daną klasą zaprzyjaźnione, a także funkcje składowe i zaprzyjaźnione klas pochodnych (dziedziczących z) danej klasy.
10 Pola klasy Pola klasy definiują dane, z jakich składać się będzie każdy obiekt klasy. Danymi tymi mogą być wielkości dowolnego typu wbudowanego lub zdefiniowanego w programie przez samego programistę lub autora biblioteki, z której program korzysta. Niestatyczne pole klasy nie może być typu, który dana klasa właśnie definiuje, natomiast może mieć typ wskaźnika do obiektu tejże klasy. Deklaracje pól mają postać definicji zmiennych: class Klasa { ; int k1, k2; double x, y; //... Zadeklarowanie pola (niestatycznego) oznacza, że w każdym obiekcie definiowanej klasy będzie utworzona zmienna o nazwie i typie określonym w deklaracji. Sama definicja klasy nie powoduje utworzenia żadnych obiektów. Pola można deklarować wewnątrz klasy w dowolnej kolejności i miejscu przed lub po metodach; ich zakresem jest cała klasa, a nie tylko fragment następujący leksykalnie po definicji. Kolejność definicji pól ma jednak znaczenie podczas inicjowania i niszczenia (destrukcji) pola są inicjowane w kolejności takiej, w jakiej były zadeklarowane, a usuwane w kolejności odwrotnej. 10
11 Metody Tak jak pola klasy opisują dane, które zawarte będą w każdym obiekcie klasy, tak metody definiują zbiór operacji, jakie na tych danych będzie można wykonywać. Metody są wyrażone w języku jako niestatyczne funkcje o pewnych szczególnych własnościach (co to znaczy niestatyczne, wyjaśnimy później). Deklaracja metody ma postać deklaracji funkcji, tyle że zawarta jest wewnątrz definicji klasy i ma ona dostęp do pól klasy- zatem nie musimy go przekazywać przez parametr. Tak jak dla zwykłych funkcji, deklaracja może być połączona z definicją. Można też, z podobnym skutkiem, wewnątrz klasy tylko metodę zadeklarować, a zdefiniować ją już poza klasą, w definicji odwołując się do niej poprzez nazwę kwalifikowaną operatorem zakresu klasy (np. Klasa::), bo przecież mogłoby istnieć wiele niezwiązanych ze sobą metod o tej samej nazwie w różnych klasach. Istnieje pewna różnica między tymi sposobami: Jeśli funkcja (metoda, funkcja statyczna, konstruktor, destruktor) jest definiowana wewnątrz klasy, to domyślnie przyjmuje się dla niej modyfikator inline, czyli kompilator będzie próbował ją rozwijać(operacja ta może się nie powieść- kompilator może uznać to zadanie za zbyt trudne). Rozwijanie oznacza, że kod (instrukcje maszynowe) funkcji jest przez kompilator umieszczany w każdym miejscu pliku wykonywalnego, gdzie funkcja powinna, według treści programu, być wywołana. Jeśli metoda (ogólnie funkcja) jest w klasie tylko zadeklarowana, natomiast zdefiniowana jest poza klasą, to domyślnie nie będzie rozwijana, chyba że jawnie tego zażądamy w definicji korzystając z modyfikatora inline. 11
12 Metody 12 Metody, a więc funkcje składowe niestatyczne i nie będące konstruktorem, wywoływane są zawsze na rzecz konkretnego, istniejącego wcześniej obiektu klasy, której są składowymi. Wywołanie metody fun spoza klasy, a więc z funkcji która sama nie jest funkcją składową tej samej klasy, przybiera zatem jedną z postaci a.fun() pa->fun() gdzie a jest zmienną będącą obiektem tej klasy lub referencją do obiektu tej klasy, a pa jest wskaźnikiem wskazującym obiekt tej klasy. Zanim napiszemy pierwszy przykład przedstawimy: Podstawowe założenia paradygmatu obiektowego: Abstrakcja Każdy obiekt w systemie służy jako model abstrakcyjnego wykonawcy, który może wykonywać pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowano dane cechy. Hermetyzacja Czyli ukrywanie implementacji, enkapsulacja. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko własne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój interfejs, który określa dopuszczalne metody współpracy.
13 13 Modyfikator const Do tej pory modyfikatora const używaliśmy: przy deklaracji stałych, np. const int NMAX=100; przy przekazywaniu parametrów przez stałą referencję do funkcji np. void f(const string &s) Poznamy teraz nowe zastosowanie modyfikatora const w deklaracjach metod składowych w klasach. Przykład: class A { ; private: int X; public: int GetX () const; Taka deklaracja mówi kompilatorowi, iż w środku funkcji GetX() na pewno nie zmienimy żadnej danej z instancji klasy A. Ta informacja pozwala kompilatorowi lepiej optymalizować kod programu, gdyż pozwala np. przechować w rejestrach wartości danych obiektu. Bez modyfikatora const, po powrocie z funkcji GetX() kompilator musi odświeżyć wartości w takich rejestrach, zaś mając gwarancje, że GetX() nic nie zmienia w obiekcie - nie musi tego robić. Drugim powodem jest fakt, że programista czytając kod źródłowy programu może, bez zaglądania w kod funkcji GetX(), być pewnym, że nie modyfikuje ona obiektu. Może to ułatwić testowanie programu i przyspiesza poszukiwanie błędu, szczególnie w dużych i złożonych programach.
14 Przykład 14 Napisz deklarację klasy Wektor w której przechowujemy następujące informacje o wektorze w przestrzeni: współrzędne x, y, z oraz metody: metoda ustaw ustalająca pola prywatne klasy zgodnie z wartościami jej parametrów metody podajx, podajy i podajz zwracające wartości pól prywatnych klasy metoda il_skalarny zwracająca iloczyn skalarny wektora, będącego parametrem aktualnym dla którego jest wykonywana metoda, z wektorem przekazanym jako parametr metoda wyswietl wyświetlająca na ekranie współrzędne wektora
15 Przykład definicje funkcji w klasie 15 #include <iostream> #include <iomanip> using namespace std; class Wektor { double x, y, z; //prywatne pola klasy public: //sekcja publiczna //metoda ustalająca wartości pól klasy zgodnie z przekazanymi parametrami void ustaw(double xx, double yy, double zz) { //nadajemy polom klasy wartości przekazane przez parametry //metoda jako składowa klasy ma dostęp do pól prywatnych x = xx; y = yy; z = zz; //metody zwracające wartości poszczególnych pól //pola są prywatne więc spoza klasy nie mamy do nich dostępu //const ponieważ funkcja nie zmienia pól klasy double podajx() const { return x;
16 Przykład definicje funkcji w klasie 16 double podajy() const { return y; double podajz() const { return z; //f-cja obliczająca iloczyn skalarny klasy na rzecz której wywoływana jest //metoda i klasy przekazanej przez parametr double il_skalarny(const Wektor& w) const { //składowa klasy, ma dostęp do prywatnych składowych x, y, z //zarówno klasy której jest metodą, jak i klasy przekazanej przez parametr return x*w.x + y*w.y + z*w.z; void wyswietl() const //const bo f-cja nie zmienia pól klasy { cout<<fixed<<setprecision(1); cout<<"[ "<<x<<", "<<y<<", "<<z<<" ]"<<endl; ;
17 Przykład definicje funkcji w klasie int main() { Wektor w1, w2; //deklarujemy dwa obiekty (instancje) klasy Wektor //Składowe (pola i metody) niestatyczne (instancyjne) //zawsze wiążą się z istnieniem obiektu danej klasy w1.ustaw(1, 1, 2);//ustawiamy pola w w1, wywołując metodę ustaw dla w1 cout<<"w1= "; //pola x,y,z są prywatne, dostęp do nich mamy tylko przez metody klasy //cout<<w1.podajx(); //OK, metoda zwracająca wartość pola x //cout<<w1.x; //BŁĄD cout<<"[ "<<w1.podajx()<<", " <<w1.podajy()<<","<<w1.podajz()<<" ]"<<endl; w2.ustaw(1,-1, 2); //ustawiamy pola w w2 cout<<"w2= "; w2.wyswietl(); cout << "w1*w2 = " << w1.il_skalarny(w2) << endl;//iloczyn skalarny return 0; 17
18 Parametry domyślne 18 W metodach klasy, tak jak w funkcjach, możemy korzystać z domyślnych wartości parametrów. Np. dla metody ustaw: void ustaw(double xx = 0, double yy = 0, double zz = 0) { x = xx; y = yy; z = zz; Wówczas w funkcji main(): Wektor w; w.ustaw(); //wszystkie parametry z wartościami domyślnymi cout<<"w= "; w.wyswietl(); //w= [ 0.0, 0.0, 0.0 ] //parametr xx ustawiony jawnie, pozostałe - wartości domyślne w.ustaw(1.5); w.wyswietl(); //[ 1.5, 0.0, 0.0 ] w.ustaw(2,3); w.wyswietl(); //[ 2.0, 3.0, 0.0 ] Parametry z wartościami domyślnymi w definicji funkcji (metody) muszą być na końcu listy parametrów. Przy wywoływaniu funkcji (metody) parametry z wartościami domyślnymi są opcjonalne, ale można opuścić tylko końcowe parametry, np. wywołując ustaw nie można ustawić tylko parametrów xx, zz, a opuścić yy.
19 Konstruktory 19 Konstruktor jest to funkcja w klasie, wywoływana w trakcie tworzenia każdego obiektu danej klasy. Konstruktor: ma identyczną nazwę jak nazwa klasy (z uwzględnieniem wielkość liter) nie zwraca żadnej wartości (nawet void, typu zwracanego nie podajemy w ogóle) Należy dodać, że każda klasa ma swój konstruktor. Nawet jeżeli nie zadeklarujemy go jawnie zrobi to za nas kompilator (stworzy wtedy konstruktor bezparametrowy i pusty, który jest publiczny, nie ma żadnych parametrów i nie wykonuje żadnych czynności). Taka sytuacja miała miejsce w powyższym przykładzie, w klasie Wektor nie zdefiniowaliśmy jawnie żadnego konstruktora, zatem przy deklaracji - tworzeniu zmiennych obiektowych typu Wektor w funkcji main() wykorzystywany był domyślny konstruktor bezparametrowy dostarczony przez kompilator. Jeśli jakikolwiek konstruktor został w klasie zdefiniowany, to konstruktor domyślny nie będzie kreowany automatycznie. Konstruktor jest konstruktorem domyślnym wtedy i tylko wtedy, gdy może być wywołany bez żadnych argumentów, np. albo Wektor(){ Wektor(){//konstruktor bezparametrowy zerujący pola klasy x=0; y=0; z=0;
20 20 Konstruktory Nie znaczy to, że konstruktor domyślny koniecznie musi być zdefiniowany jako funkcja bezparametrowa; może mieć dowolną liczbę parametrów, ale jeśli je ma, to wszystkie muszą mieć zdefiniowane wartości domyślne, np. Wektor(double xx=0, double yy=0, double zz=0){ x = xx; y = yy; z = zz; W klasie może oczywiście istnieć tylko jeden konstruktor domyślny! Zatem dla powyższego przykładu konstruktorem domyślnym może być jeden z trzech przedstawionych powyżej. Konstruktor (niekoniecznie domyślny) jest wywoływany automatycznie wyłącznie podczas tworzenia obiektu (ściśle mówiąc, na zakończenie tego procesu); nie można go wywołać ręcznie, jak normalnej metody, na rzecz obiektu już istniejącego. Jeśli chcemy zmienić wartości pól istniejącego obiektu, możemy skorzystać np. z metody void ustaw(double xx, double yy, double zz) wówczas w main(): Wektor w;//konstruktor bezparametrowy w.ustaw(1,1,1); Konstruktory, jak inne funkcje, mogą mieć parametry domyślne. W czasie wykonywania konstruktora obiekt jest już skonstruowany, to znaczy został fizycznie utworzony w pamięci, jak również, co bardzo ważne, zostały już utworzone wszystkie jego składowe opisane polami klasy. Składowe te tworzone są w kolejności takiej, w jakiej zostały zadeklarowane w definicji klasy/struktury.
21 21 Konstruktory - przeciążanie Konstruktory mogą też być przeładowywane (przeciążane), jak normalne funkcje(czy metody). Wszystkie mają w danej klasie taką samą nazwę: taką jak nazwa tej klasy. Jeśli jest ich kilka, to podczas tworzenia obiektu wybierany jest ten najbardziej pasujący": class Klasa { int p; public: ; Klasa(){ //konstruktor bezparametrowy Klasa(int x) {p=x; //konstruktor inicjujący pole wartością parametru int main() { //tworzymy obiekt korzystając z konstruktora bezparametrowego Klasa kla; //korzystamy z konstruktora z parametrem: Klasa obiekt(argumenty); Klasa klb(42);//tworzymy obiekt klasy Klasa z polem p o wartości 42 Warunkiem koniecznym, choć niewystarczającym dla przeciążania jest, aby funkcje o tej samej nazwie różniły się sygnaturą. Do sygnatury funkcji należy jej nazwa oraz liczba i typ parametrów nie licząc tych z wartościami domyślnymi. Typ wartości zwracanej, zwykle do sygnatury nie jest zaliczany.
22 Przykład 2- definicje metod poza klasą 22 Rozważmy ponownie klasę Wektor: Napiszmy deklarację klasy Wektor, w której przechowujemy następujące informacje o wektorze w przestrzeni: współrzędne x, y, z oraz: konstruktory konstruktor bezparametrowy (ustawia punkt (0,0)) konstruktor ustalający pola prywatne klasy na podstawie jego parametrów i metody: metoda ustaw ustalająca pola prywatne klasy zgodnie z wartościami jej parametrów, ponadto ustalająca wartości domyślne parametrów równe 0 metody podajx, podajy i podajz zwracające wartości pól prywatnych klasy metoda il_skalarny zwracająca iloczyn skalarny wektora, będącego parametrem aktualnym dla którego jest wykonywana metoda, z wektorem przekazanym jako parametr metoda wyswietl wyświetlająca na ekranie współrzędne wektora Tym razem wewnątrz klasy metody należy tylko zadeklarować, a zdefiniować je już poza klasą odwołując się do nich poprzez nazwę kwalifikowaną operatorem zakresu klasy Wektor::.
23 23 Przykład 2- definicje metod poza klasą #include <iostream> #include <iomanip> using namespace std; class Wektor { private: double x, y, z; //prywatne pola klasy public: //sekcja publiczna //DEKLARACJE KONSTRUKTORÓW Wektor();//bezparametrowy, zeruje pola //konstruktor z parametrami- ustawia pola zgodnie z wartościami parametrów Wektor(double xx, double yy, double zz); //DEKLARACJE METOD: //metoda ustalająca wartości pól klasy zgodnie z parametrami //wyzerowane wartości domyślne void ustaw(double xx = 0, double yy = 0, double zz = 0);
24 24 Przykład 2- definicje metod poza klasą //metody zwracające wartości poszczególnych pól //pola są prywatne więc spoza klasy nie mamy do nich dostępu //const ponieważ funkcja nie zmienia pól klasy double podajx() const; double podajy() const; double podajz() const; //f-cja obliczająca iloczyn skalarny klasy na rzecz której wywoływana //jest metoda i klasy przekazanej przez parametr double il_skalarny(const Wektor& w) const; void wyswietl() const; //const bo f-cja nie zmienia pól klasy ; //DEFINICJE KONSTRUKTORÓW I METOD (IMPLEMENTACJA) Wektor:: Wektor(){ x = 0; y = 0; z = 0;//zerujemy pola klasy Wektor:: Wektor(double xx, double yy, double zz){ x = xx; y = yy; z = zz;
25 25 Przykład 2- definicje metod poza klasą void Wektor::ustaw(double xx, double yy, double zz){ x = xx; y = yy; z = zz; double Wektor::podajX() const{ return x; double Wektor::podajY() const{ return y; double Wektor:: podajz() const{ return z; double Wektor::il_skalarny(const Wektor& w) const { return x*w.x + y*w.y + z*w.z; void Wektor::wyswietl() const { cout<<fixed<<setprecision(1)<<"[ "<<x<<", "<<y<<", "<<z<<" ]"<<endl;
26 26 Przykład 2- definicje metod poza klasą int main() { Wektor w1; //deklarujemy obiekt (instancje) klasy Wektor w1.wyswietl(); //[ 0.0, 0.0, 0.0 ] Wektor w2(2,4,5); //konstruktor z parametrami w2.wyswietl(); //[ 2.0, 4.0, 5.0 ] w1.ustaw(1, 1, 2); //ustawiamy pola w w1, wywołując metodę ustaw dla w1 cout<<"w1= "; cout<<"[ "<<w1.podajx()<<", " <<w1.podajy()<<", "<<w1.podajz()<<" ]"<<endl;//w1= [ 1.0, 1.0, 2.0 ] w2.ustaw(1,-1, 2); //ustawiamy pola w w2 cout<<"w2= "; w2.wyswietl(); //w2= [ 1.0, -1.0, 2.0 ] cout << "w1*w2 = " << w1.il_skalarny(w2) << endl; //w1*w2 = 4.0 w2.ustaw(1,3); w2.wyswietl(); //[ 1.0, 3.0, 0.0 ] return 0;
Do czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Bardziej szczegółowoKLASY cz.1. Dorota Pylak
KLASY cz.1 Dorota Pylak Do czego służą klasy? 2 W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można
Bardziej szczegółowoKLASA 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
Bardziej szczegółowoPodstawy 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ółowoKLASA 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
Bardziej szczegółowoTEMAT : 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ółowoLaboratorium 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.
Bardziej szczegółowoTechnologie 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ółowoPodstawy algorytmiki i programowania - wykład 4 C-struktury
1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy
Bardziej szczegółowoW2 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ółowoDefiniowanie własnych klas
Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:
Bardziej szczegółowo1. 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
Bardziej szczegółowoKLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki
KLASY cz4. destruktory składowe statyczne przeciążanie operatorów Dorota Pylak wskaźniki 2 Klasy - podsumowanie poznanych wiadomości Deklaracja klasy może zawierać pola, konstruktory oraz metody. W deklaracji
Bardziej szczegółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoProgramowanie 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,
Bardziej szczegółowoProgramowanie 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
Bardziej szczegółowoWstę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ółowoProgramowanie 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ółowoWykł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
Bardziej szczegółowoC-struktury wykład. Dorota Pylak
C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.
Bardziej szczegółowoWstę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ółowoJava - 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ółowoWstę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ółowoC-struktury wykład. Dorota Pylak
C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.
Bardziej szczegółowoObszar 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ółowoPola i metody statyczne. Klasy zawierające pola i metody statyczne
Instrukcja laboratoryjna nr 1 Programowanie w języku C 2 (C++ poziom zaawansowany) Pola i metody statyczne. Klasy zawierające pola i metody statyczne dr inż. Kaczmarek Tomasz mgr inż. Lasota Maciej dr
Bardziej szczegółowoRóżne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY
Różne właściwości Funkcje tak samo jak zmienne mają swoje miejsce w pamięci, gdzie są zapisane. Można więc uzyskać ich adres. Podobnie jak adres tablicy jest zwracany przez jej nazwę, podaną bez nawiasu
Bardziej szczegółowoRozdział 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
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowoKlasa 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ółowoObiekt 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ółowoWykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Bardziej szczegółowoMateriały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Bardziej szczegółowoStruktury Struktura polami struct struct struct struct
Struktury Struktura jest zbiorem zmiennych występujących pod wspólna nazwą. Zmienne wchodzące w skład struktury nazywane są polami lub elementami, a czasem członkami struktury. Struktury używamy, jeśli
Bardziej szczegółowoProgramowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody
Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Bardziej szczegółoworeferencje 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ółowoIMIĘ 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ółowoC++ 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
Bardziej szczegółowoTechnologie obiektowe
WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność
Bardziej szczegółowoSkł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ółowoProgramowanie 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ółowoProgramowanie, 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ółowoLaboratorium 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ółowoPodstawy Języka Java
Podstawy Języka Java Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących
Bardziej szczegółowoDziedziczenie. 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ółowoPodstawy 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ółowoProgramowanie 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ółowoProgramowanie obiektowe
Programowanie obiektowe Wykład: klasa, obiekt, po co używać klas, właściwości, atrybuty, funkcje, zachowania, metody, przykładowe obiekty, definiowanie klasy, obiektu, dostęp do składników klasy, public,
Bardziej szczegółowoC++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Bardziej szczegółowoTechniki 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
Bardziej szczegółowoTypy 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ółowoProgramowanie 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
Bardziej szczegółowoJę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ółowoProgramowanie 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;
Bardziej szczegółowo1. 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
Bardziej szczegółowoWprowadzenie 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ółowoProgramowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg
Programowanie obiektowe Materiały przygotował: mgr inż. Wojciech Frohmberg Konstruktor Konstruktor w językach zorientowanych obiektowo pełni podwójną rolę: przydziela pamięć na obiekt, zdefiniowany klasą
Bardziej szczegółowoWykł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ółowoJę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ółowoDefiniowanie własnych klas
Abstrakcja Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Świat rzeczywisty jest bardzo złoŝony i nie jest moŝliwe
Bardziej szczegółowoKurs 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ółowoMechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowoZaawansowane 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ółowoObiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
Bardziej szczegółowoInformatyka 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ółowoProgramowanie 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
Bardziej szczegółowoPodczas 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.
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoPROE 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
Bardziej szczegółowoC++ - 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,
Bardziej szczegółowoPARADYGMATY 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ółowopublic: // 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
Bardziej szczegółowoDziedziczenie 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
Bardziej szczegółowoWstęp do programowania
wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.
Bardziej szczegółowoKlasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13
Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY
Inicjalizacja obiektu KONSTRUKTORY Inicjalizacja Przyczyną wielu błędów w programach jest nieprawidłowe zainicjalizowanie zmiennych na początku działania programu. Obiekt zawiera z reguły szereg pól ich
Bardziej szczegółowoJę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ółowoProgramowanie 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ółowoProgramowanie 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
Bardziej szczegółowoProgramowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
Bardziej szczegółowoCzym są właściwości. Poprawne projektowanie klas
Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane
Bardziej szczegółowoProgramowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus
Bardziej szczegółowoProgramowanie 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ółowoWstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoStrona 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ółowoSkł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ółowoSzablony 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
Bardziej szczegółowoPodstawy algorytmiki i programowania - wykład 5 C-struktury cd.
1 Podstawy algorytmiki i programowania - wykład 5 C-struktury cd. Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com
Bardziej szczegółowoWykł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
Bardziej szczegółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
Bardziej szczegółowoPROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty
Bardziej szczegółowoPARADYGMATY 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ółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:
Prawa dostępu do składowych klasy PRAWA PRZYJACIÓŁ KLASY 91 Dostęp z zewnątrz: double limit; ; water_temp T; T.limit = 100; Dostęp z wewnątrz: double set_temp(double nt) { if (nt0) ; water_temp
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie 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ółowoWprowadzenie 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