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

Podobne dokumenty
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 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

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 w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Język C++ wykład VIII

Programowanie Obiektowew języku C++ Zadania L9

Mechanizm dziedziczenia

Programowanie Obiektowew języku C++ Zadania L8

Programowanie Obiektowew języku C++ Zadania L4

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

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

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

Programowanie obiektowe

Dziedziczenie & W slajdach są materiały zapożyczone z

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

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

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

Wstęp do Programowania 2

Mechanizm dziedziczenia

Wstęp do Informatyki

Programowanie obiektowe w C++ Wykład 12

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

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

Wprowadzenie do programowanie obiektowego w języku C++

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

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

Plik klasy. h deklaracje klas

tel Konsultacje www

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

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

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

string Rodzaj[4]= {"TV ", "wieza ", "DVD ", "kino "}; string Producent[4]={"Phillips", "Sony ", "Sanyo ", "Samsung "};

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

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

Laboratorium 2. Funkcje wirtualne

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

TEMAT : KLASY POLIMORFIZM

dr inż. Jarosław Forenc

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

TEMAT : KLASY DZIEDZICZENIE

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

Wstęp do programowania

Programowanie obiektowe i C++ dla matematyków

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Wstęp do programowania

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

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

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

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

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

Dziedziczenie. Ogólna postać dziedziczenia klas:

Wstęp do Programowania 2

Programowanie obiektowe i C++ dla matematyków

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Operacje wejścia/wyjścia (odsłona druga) - pliki

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

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

PARADYGMATY PROGRAMOWANIA Wykład 3

EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++

Programowanie Obiektowew języku C++ Zadania L2

Do czego służą klasy?

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Programowanie - wykład 4

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

obiekty funkcyjne - funktory

PARADYGMATY PROGRAMOWANIA Wykład 2

Owad():waga(1),jadowitosc(false) {cout<<"konstruktor domyslny owada\n";}

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Programowanie Obiektowe i C++

Projektowanie klas c.d. Projektowanie klas przykład

Technologie cyfrowe semestr letni 2018/2019

Zajęcia nr 4 Programowanie obiektowe konstruktory. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programowanie obiektowe język C++

Wyliczanie wyrażenia obiekty tymczasowe

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

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

Paradygmaty programowania

ATD. Wykład 8. Programowanie (język C++) abstrakcyjny typ danych. Abstrakcyjne typy danych (ATD) Metody czysto wirtualne. Definicje i uwagi:

Wstęp do programowania obiektowego, wykład 7

Obsługa wyjątków. Język C++ WW12

Zwracanie obiektu. Funkcja może zwracać obiekty: #include"stdafx.h #include <iostream> using namespace std; class samp { inti; public:

Wstęp do programowania

Do czego służą klasy?

Wstęp do programowania obiektowego. Wykład 2

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 2. Język C++. Wykład 9.

Przesłanianie nazw, przestrzenie nazw

Transkrypt:

- - uzupełnienie notatek: dr Jerzy Białkowski

- - 1-2 -

- - 1 #include <i o s t r e a m > 2 #include <c s t d l i b > 3 # include <cmath> 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double x, y ; 10 11 public : 12 Punkt ( ) ; 13 Punkt ( double x, double y ) ; 14 void losuj_wsp ( double a, double b, 15 double c, double d ) ; 16 double dlugosc_wek ( ) ; 17 double getx ( ) ; 18 double gety ( ) ; 19 void setx ( double x ) ; 20 void sety ( double y ) ; 21 22 } ;

- - 23 double losuj ( ) ; 24 double losuj ( double a, double b ) ; 25 26 int main ( ) { 27 srand ( time ( 0 ) ) ; 28 29 Punkt P1, P2 ( 3, 4 ) ; 30 31 P1. losuj_wsp ( 0, 1 0, 0, 1 0 ) ; 32 33 cout << "P1=(" << P1. getx ( ) << ", " 34 << P1. gety ( ) << ")\n" ; 35 36 cout << "P2=(" << P2. getx ( ) << ", " 37 << P2. gety ( ) << ")\n" ; 38 39 // cout<< P1 << \n ; Blad 40 //P = P1 + P2?, i f ( P1==P2 )? 41 42 }// main 43 44

- - 45 Punkt : : Punkt ( ) { 46 this >x = 0 ; 47 this >y = 0 ; 48 } 49 50 Punkt : : Punkt ( double x, double y ) { 51 this >x = x ; 52 this >y = y ; 53 } 54 55 void Punkt : : losuj_wsp ( double a, double b, 56 double c, double d ) { 57 this >x = losuj ( a, b ) ; 58 this >y = losuj ( c, d ) ; 59 } 60 61 double Punkt : : dlugosc_wek ( ) { 62 return sqrt ( this >x* this >x 63 + this >y* this >y ) ; 64 } 65 66

- - 67 double Punkt : : getx ( ) { 68 return this >x ; 69 } 70 71 double Punkt : : gety ( ) { 72 return this >y ; 73 } 74 75 void Punkt : : setx ( double x ) { 76 this >x = x ; 77 } 78 79 void Punkt : : sety ( double y ) { 80 this >y = y ; 81 } 82 83 double losuj ( ) { 84 return rand ( ) /double ( RAND_MAX ) ; 85 } 86 double losuj ( double a, double b ) { 87 return ( b a ) *losuj ( ) +a ; 88 }

Argumenty i wskaźniki - - 1 #include <i o s t r e a m > 2 using namespace std ; 3 4 void fun1 ( int a, int *b, int &c ) { 5 a++; 6 (* b )++; 7 c++; 8 } 9 10 main ( ) { 11 int a=1, b=1, c=1; 12 13 fun1 ( a, &b, c ) ; 14 cout << a << " " << b << " " << c <<"\n" ; 15 16 }

Przedefiniowanie operatorów - - Można przedefiniować, np. =, ==, <<,... oprócz.,?:, sizeof, ::

Przedefiniowanie operatorów - - Można przedefiniować, np. =, ==, <<,... oprócz.,?:, sizeof, :: Deklaracja operatora == bool operator==(const Point& P, const Point& Q);

Przedefiniowanie operatorów - - Można przedefiniować, np. =, ==, <<,... oprócz.,?:, sizeof, :: Deklaracja operatora == bool operator==(const Point& P, const Point& Q); deklaracja wewnątrz klasy bool operator==(const Point& Q) const;

- - 1 #include <i o s t r e a m > 2 #include <c s t d l i b > 3 # include <cmath> 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double x, y ; 10 11 public : 12 Punkt ( ) ; 13 Punkt ( double x, double y ) ; 14 void losuj_wsp ( double a, double b, 15 double c, double d ) ; 16 double dlugosc_wek ( ) ; 17 double getx ( ) ; 18 double gety ( ) ; 19 void setx ( double x ) ; 20 void sety ( double y ) ; 21 bool operator==(const Punkt& Q ) const ; 22 } ;

- - 23 double losuj ( ) ; 24 double losuj ( double a, double b ) ; 25 26 int main ( ) { 27 28 srand ( time ( 0 ) ) ; 29 30 Punkt P1, P2 ( 3, 4 ) ; 31 32 P1. losuj_wsp ( 0, 1 0, 0, 1 0 ) ; 33 34 cout << "P1=(" << P1. getx ( ) << ", " 35 << P1. gety ( ) << ")\n" ; 36 37 cout << "P2=(" << P2. getx ( ) << ", " 38 << P2. gety ( ) << ")\n" ; 39 40 if ( P1 == P2 ) 41 cout << " Punkty sa rowne\n" ; 42 43 }// main 44

- - 45 bool Punkt : : operator==(const Punkt& Q ) const { 46 return ( ( x == Q. x ) && ( y == Q. y ) ) ; 47 } 48 49 Punkt : : Punkt ( ) { 50 this >x = 0 ; 51 this >y = 0 ; 52 } 53 Punkt : : Punkt ( double x, double y ) { 54 this >x = x ; 55 this >y = y ; 56 } 57 58 void Punkt : : losuj_wsp ( double a, double b, 59 double c, double d ) { 60 this >x = losuj ( a, b ) ; 61 this >y = losuj ( c, d ) ; 62 } 63 double Punkt : : dlugosc_wek ( ) { 64 return sqrt ( this >x* this >x 65 + this >y* this >y ) ; 66 }

- - 67 double Punkt : : getx ( ) { 68 return this >x ; 69 } 70 71 double Punkt : : gety ( ) { 72 return this >y ; 73 } 74 75 void Punkt : : setx ( double x ) { 76 this >x = x ; 77 } 78 79 void Punkt : : sety ( double y ) { 80 this >y = y ; 81 } 82 83 double losuj ( ) { 84 return rand ( ) /double ( RAND_MAX ) ; 85 } 86 double losuj ( double a, double b ) { 87 return ( b a ) *losuj ( ) +a ; 88 }

Przedefiniowanie operatora «- - Deklaracja operatora << ostream& operator<<(ostream& os, const Punkt& P);

- - 1 #include <i o s t r e a m > 2 #include <c s t d l i b > 3 # include <cmath> 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double x, y ; 10 11 public : 12 Punkt ( ) ; 13 Punkt ( double x, double y ) ; 14 void losuj_wsp ( double a, double b, 15 double c, double d ) ; 16 double dlugosc_wek ( ) ; 17 double getx ( ) const ; 18 double gety ( ) const ; 19 void setx ( double x ) ; 20 void sety ( double y ) ; 21 bool operator==(const Punkt& Q ) const ; 22 } ;

- - 23 double losuj ( ) ; 24 double losuj ( double a, double b ) ; 25 ostream& operator<<(ostream& os, 26 const Punkt& P ) ; 27 28 int main ( ) { 29 30 srand ( time ( 0 ) ) ; 31 32 Punkt P1, P2 ( 3, 4 ) ; 33 34 P1. losuj_wsp ( 0, 1 0, 0, 1 0 ) ; 35 36 cout << P1 ; 37 cout << P2 ; 38 39 if ( P1 == P2 ) 40 cout << " Punkty sa rowne\n" ; 41 42 }// main 43 44

- - 45 ostream& operator<<(ostream &os, 46 const Punkt &P ) { 47 os << "("<< P. getx ( ) << ", " 48 << P. gety ( ) << ")\n" ; 49 return os ; 50 } 51 52 bool Punkt : : operator==(const Punkt& Q ) const { 53 return ( ( x == Q. x ) && ( y == Q. y ) ) ; 54 } 55 56 57 Punkt : : Punkt ( ) { 58 this >x = 0 ; 59 this >y = 0 ; 60 } 61 62 Punkt : : Punkt ( double x, double y ) { 63 this >x = x ; 64 this >y = y ; 65 } 66

- - 67 void Punkt : : losuj_wsp ( double a, double b, 68 double c, double d ) { 69 this >x = losuj ( a, b ) ; 70 this >y = losuj ( c, d ) ; 71 } 72 73 double Punkt : : dlugosc_wek ( ) { 74 return sqrt ( this >x* this >x 75 + this >y* this >y ) ; 76 } 77 78 double Punkt : : getx ( ) const { 79 return this >x ; 80 } 81 82 double Punkt : : gety ( ) const { 83 return this >y ; 84 } 85 86 87 88

- - 89 90 void Punkt : : setx ( double x ) { 91 this >x = x ; 92 } 93 94 void Punkt : : sety ( double y ) { 95 this >y = y ; 96 } 97 98 double losuj ( ) { 99 return rand ( ) /double ( RAND_MAX ) ; 100 } 101 102 double losuj ( double a, double b ) { 103 return ( b a ) *losuj ( ) +a ; 104 }

Przedefiniowanie operatora = - - Deklaracja operatora = Domyślmy operator = kopiuje pola obiektów. P1=P2;

Przedefiniowanie operatora = - - Deklaracja operatora = Domyślmy operator = kopiuje pola obiektów. P1=P2; Należy przedefiniować operator =, jeśli pola są wskaźnikami Punkt& operator=(const Punkt& Q)

Dziedziczenie - - Dziedziczenie polega na stworzeniu nowej klasy na bazie klasy już istniejącej. W klasie pochodnej mamy dostęp do pól i metod public i protected

Dziedziczenie - - Dziedziczenie polega na stworzeniu nowej klasy na bazie klasy już istniejącej. W klasie pochodnej mamy dostęp do pól i metod public i protected Nie dziedziczy się: ˆ konstruktorów ˆ destruktora ˆ operatora =

- - 1 #include <i o s t r e a m > 2 using namespace std ; 3 4 class Zwierze { 5 6 public : 7 void jedz ( ) { 8 cout << " jem" <<endl ; 9 } 10 11 protected : 12 void jedzszybko ( ) { 13 cout << " jem szybko" <<endl ; 14 } 15 16 private : 17 void jedzszybko2 ( ) { 18 cout << " jem private" <<endl ; 19 } 20 21 } ; 22

- - 23 class Kot : public Zwierze { 24 public : 25 void mial ( ) { 26 cout << " miau" <<endl ; 27 } 28 } ; 29 30 class Pies : public Zwierze { 31 public : 32 void hal ( ) { 33 cout << " hal" <<endl ; 34 jedzszybko ( ) ; 35 // j e d z s z y b k o 2 ( ) ; BLAD! 36 } 37 } ; 38 39 int main ( ) { 40 Pies reksio ; 41 reksio. hal ( ) ; 42 reksio. jedz ( ) ; // r e k s i o. j e d z s z y b k o ( ) ; BLAD! 43 }

- - Dziękuję za uwagę.