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

Podobne dokumenty
// Struktura programu // Katalog. #include<iostream> #include "Book.h" #include "Audio.h" using namespace std;

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

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.

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

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

TEMAT : KLASY POLIMORFIZM

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

class Samochod { void Ruch(); }; class Amfibia : public Samochod { void Ruch(); // amfibie pływają };

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

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

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.

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

Wstęp do Programowania 2

Programowanie obiektowe w C++ Wykład 12

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

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

Język C++ wykład VIII

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

dr inż. Jarosław Forenc

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

Wykład 5 Okna MDI i SDI, dziedziczenie

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

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

PARADYGMATY PROGRAMOWANIA Wykład 3

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

Plik klasy. h deklaracje klas

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

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

Mechanizm dziedziczenia

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 2

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

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

#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;

Programowanie obiektowe

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

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

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

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

Projektowanie klas c.d. Projektowanie klas przykład

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 Obiektowew języku C++ Zadania L9

Programowanie obiektowe język C++

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Identyfikacje typu na etapie. wykonania (RTTI)

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

TEMAT : KLASY DZIEDZICZENIE

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

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

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

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

Programowanie i struktury danych

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

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

Mechanizm dziedziczenia

Dziedziczenie ze wspólnej klasy bazowej. Amfibia

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

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

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

Dziedziczenie. dr Jarosław Skaruz

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Przeciążenie funkcji w C++ Mechanizm pozwalający na użycie tej samej funkcji do zdefiniowania kilku funkcji o takich samych listach parametrów.

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

Rozdział 4 KLASY, OBIEKTY, METODY

Laboratorium 1 - Programowanie proceduralne i obiektowe

Wykład 4: Klasy i Metody

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

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

Programowanie Obiektowew języku C++ Zadania L8

Abstrakcyjny typ danych

tel Konsultacje www

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

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

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Techniki Programowania wskaźniki

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

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

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

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

Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

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

Programowanie obiektowe

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)


Dokumentacja do API Javy.

Programowanie obiektowe i C++ dla matematyków

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

Kurs WWW. Paweł Rajba.

ROZDZIAŁ 2. Operatory

Transkrypt:

// Referencja #include<iostream> #include<string> using namespace std; string Rodzaj[4]= "TV ", "wieza ", "DVD ", "kino "; string Producent[4]="Phillips", "Sony ", "Sanyo ", "Samsung "; class Sprzet_AV string rodzaj; string firma; public: int numer_fabr; void GetFirm(Sprzet_AV & ref); void GetSort(Sprzet_AV & ref); 1

void GetFirm() cout<<firma<<"\t"; void GetSort() cout<<rodzaj<<"\t"; Sprzet_AV(int a1, int a2, int a3) :rodzaj(rodzaj[a1]),firma(producent[a2]),numer_fabr(a3) ; void Sprzet_AV::GetFirm(Sprzet_AV &ref) cout<<firma<<"\t"; void Sprzet_AV::GetSort(Sprzet_AV& ref) cout<<rodzaj<<"\t"; void GetNumber(Sprzet_AV& ref) cout<<ref.numer_fabr<<"\n"; void GetNumber(Sprzet_AV* ptr) cout<<ptr->numer_fabr<<"\n"; 2

/*void GetNumber() cout<<numer_fabr<<"\t";*/ void main() Sprzet_AV* sprzet_1=new Sprzet_AV(0,1,1234); Sprzet_AV* sprzet_2=new Sprzet_AV(1,3,2345); cout<<"rozmiar wskaznika = "<<sizeof(sprzet_1)<<endl; cout<<"adres wskaznika 1 = "<<&sprzet_1<<endl; cout<<"adres wskaznika 2 = "<<&sprzet_2<<endl; Sprzet_AV& referencja=*sprzet_1; cout<<"rozmiar referencji = "<<sizeof(referencja)<<endl; cout<<"adres referencji = "<<&referencja<<endl; cout<<"sprzet_1 :\n"; sprzet_1->getfirm(referencja); sprzet_1->getsort(referencja); 3

cout<<"\nwywolanie przez referencje\n"; referencja.getfirm(referencja); referencja.getsort(referencja); cout<<endl; GetNumber(sprzet_1); GetNumber(referencja); cout<<"funkcje bez parametrow\n"; referencja.getfirm(); referencja.getsort(); cout<<endl; sprzet_1->getfirm(); sprzet_1->getsort(); cout<<endl; referencja=*sprzet_2; cout<<"adres referencji = "<<&referencja<<endl; cout<<"sprzet_2 :\n"; sprzet_2->getfirm(referencja); sprzet_2->getsort(referencja); 4

cout<<"\nwywolanie przez referencje\n"; referencja.getfirm(referencja); referencja.getsort(referencja); cout<<endl; GetNumber(sprzet_2); GetNumber(referencja); cout<<"funkcje bez parametrow\n"; referencja.getfirm(); referencja.getsort(); cout<<endl; sprzet_2->getfirm(); sprzet_2->getsort(); cout<<endl; system("pause"); 5

Rozmiar wskaznika = 4 Adres wskaznika 1 = 002DFDAC Adres wskaznika 2 = 002DFDA0 Rozmiar referencji = 68 Adres referencji = 006B4B38 sprzet_1 : Sony TV Wywolanie przez referencje Sony TV 1234 1234 Funkcje bez parametrow Sony TV Sony TV Adres referencji = 006B4B38 sprzet_2 : Samsung wieza Wywolanie przez referencje Samsung wieza 2345 2345 Funkcje bez parametrow Samsung wieza Samsung wieza Press any key to continue... 6

// Funkcje zaprzyjaznione #include<iostream> #include<string> using namespace std; string Rodzaj[4]= "TV ", "wieza ", "DVD ", "kino "; string Producent[4]="Phillips", "Sony ", "Sanyo ", "Samsung "; class Sprzet_AV string rodzaj; string firma; public: int numer_fabr; friend void GetFirm(Sprzet_AV & ref); friend void GetSort(Sprzet_AV & ref); friend void GetFirm(Sprzet_AV * ptr); friend void GetSort(Sprzet_AV * ptr); 7

void GetFirm() cout<<firma<<"\t"; void GetSort() cout<<rodzaj<<"\t"; Sprzet_AV(int a1, int a2, int a3) :rodzaj(rodzaj[a1]),firma(producent[a2]),numer_fabr(a3) ; void GetFirm(Sprzet_AV &ref) cout<<ref.firma<<"\t"; void GetSort(Sprzet_AV& ref) cout<<ref.rodzaj<<"\t"; void GetFirm(Sprzet_AV *ptr) cout<<ptr->firma<<"\t"; 8

void GetSort(Sprzet_AV *ptr) cout<<ptr->rodzaj<<"\t"; void GetNumber(Sprzet_AV& ref) cout<<ref.numer_fabr<<"\n"; void GetNumber(Sprzet_AV* ptr) cout<<ptr->numer_fabr<<"\n"; void main() Sprzet_AV* sprzet_1=new Sprzet_AV(0,1,1234); Sprzet_AV& referencja=*sprzet_1; cout<<"sprzet_1 :\nwywolanie przez referencje\n"; GetFirm(referencja); GetSort(referencja); GetNumber(referencja); cout<<endl; 9

cout<<"sprzet_1 :\nwywolanie przez wskaznik\n"; GetFirm(sprzet_1); GetSort(sprzet_1); GetNumber(sprzet_1); cout<<"\nfunkcje bez parametrow\n"; referencja.getfirm(); referencja.getsort(); cout<<endl; sprzet_1->getfirm(); sprzet_1->getsort(); cout<<endl; system("pause"); 10

sprzet_1 : Wywolanie przez referencje Sony TV 1234 sprzet_1 : Wywolanie przez wskaznik Sony TV 1234 Funkcje bez parametrow Sony TV Sony TV Press any key to continue... 11

/* Modyfikator const nie pozwala na zmianę składowych klasy*/ #include<iostream> using namespace std; char* skills[3]="aportuje","daje lape","daje glos"; class Pies char* imie; public: char* umiejetnosc; Pies(char* name, int skill); void Naucz(int a) umiejetnosc=skills[a]; 12

/*void Learn(int a) const umiejetnosc=skills[a]; sama deklaracja funkcji sprawia że skladowa jest const*/ ; Pies::Pies(char *name, int skill) imie=name; umiejetnosc=skills[skill]; void main() Pies Azor("Azor", 1); //Azor.Learn(0); Azor.Naucz(2); cout<<azor.umiejetnosc<<endl; system("pause"); daje glos Press any key to continue... 13

// Przeciążenie operatorów #include<iostream> using namespace std; class Pudlo public: double dlugosc; double szerokosc; double wysokosc; Przeładowanie operatorów Pudlo(double l=1.0, double b=1.0, double h=1.0) dlugosc=l; szerokosc=b; wysokosc=h; double Pojemnosc() return dlugosc*szerokosc*wysokosc; 14

//przeładowany operator większości bool operator>(pudlo pudlo); //przeładowany operator dodawania Pudlo operator+(pudlo* ptr) //Nowy obiekt return Pudlo(dlugosc > ptr->dlugosc? dlugosc : ptr->dlugosc, szerokosc > ptr->szerokosc? szerokosc : ptr->szerokosc, wysokosc+ptr->wysokosc); ; bool Pudlo::operator>(Pudlo pudlo) return this->pojemnosc() > pudlo.pojemnosc(); 15

void main() Pudlo pudlo_1(2,3,2); Pudlo pudlo_2(4,2,3); Pudlo* ptr=&pudlo_2; bool wynik; cout<<"porownywanie pudelek\n"; wynik=pudlo_1>pudlo_2; cout<<wynik<<endl; cout<<"dodawanie pudelek\n"; Pudlo pudlo_3=pudlo_1+ptr; cout<<"dlugosc = "<<pudlo_3.dlugosc<<endl; cout<<"szerokosc = "<<pudlo_3.szerokosc<<endl; cout<<"wysokosc = "<<pudlo_3.wysokosc<<endl; system("pause"); Porownywanie pudelek 0 Dodawanie pudelek Dlugosc = 4 Szerokosc = 3 Wysokosc = 5 Press any key to continue... 16

Przeciążony operator przypisania // Przeciążony operator przypisania // Przeciążenie operatorów #include<iostream> using namespace std; class Pudlo public: double dlugosc; double szerokosc; double wysokosc; Pudlo(double l=1.0, double b=1.0, double h=1.0) dlugosc=l; szerokosc=b; wysokosc=h; 17

//przeładowany operator przypisania Pudlo operator=(pudlo& pudelko) //Nowy obiekt return Pudlo(); ; void main() Pudlo pudlo_1(2,3,2); Pudlo& ref=pudlo_1; Pudlo pudlo_2=ref; cout<<"klonowanie pudelek\n"; cout<<"dlugosc = "<<pudlo_2.dlugosc<<endl; cout<<"szerokosc = "<<pudlo_2.szerokosc<<endl; cout<<"wysokosc = "<<pudlo_2.wysokosc<<endl; Pudlo pudlo_3; 18

cout<<"pudlo_3\n"; cout<<"dlugosc = "<<pudlo_3.dlugosc<<endl; cout<<"szerokosc = "<<pudlo_3.szerokosc<<endl; cout<<"wysokosc = "<<pudlo_3.wysokosc<<endl; system("pause"); Klonowanie pudelek Dlugosc = 2 Szerokosc = 3 Wysokosc = 2 pudlo_3 Dlugosc = 1 Szerokosc = 1 Wysokosc = 1 Press any key to continue... 19

// Przeładowane operatory #include<iostream> using namespace std; class Pudlo public: double dlugosc; double szerokosc; double wysokosc; Pudlo(double l=1.0, double b=1.0, double h=1.0) dlugosc=l; szerokosc=b; wysokosc=h; double Pojemnosc() return dlugosc*szerokosc*wysokosc; 20

//przeładowane operatory większości bool operator>(pudlo pudlo); //bool operator>(walec walec); //przeładowany operator dodawania Pudlo operator+(pudlo pudlo) return Pudlo(dlugosc > pudlo.dlugosc? dlugosc : pudlo.dlugosc, szerokosc > pudlo.szerokosc? szerokosc : pudlo.szerokosc, wysokosc+ pudlo.wysokosc); ; class Walec public: double promien; double wysokosc; 21

Walec(double r=1.0, double h=1.0) promien=r; wysokosc=h; double Pojemnosc() return 3.1415927*promien*promien*wysokosc; //przeładowane operatory większości bool operator>(pudlo pudlo); bool operator>(walec walec); //przeładowany operator dodawania Walec operator+(walec walec) return Walec(promien > walec.promien? promien : walec.promien, wysokosc+ walec.wysokosc); ; 22

bool Pudlo::operator>(Pudlo pudlo) return this->pojemnosc() > pudlo.pojemnosc(); /*bool Pudlo::operator>(Walec walec) return this->pojemnosc() > walec.pojemnosc(); */ bool Walec::operator >(Pudlo pudlo) return this->pojemnosc() > pudlo.pojemnosc(); bool Walec::operator >(Walec walec) return this->pojemnosc() > walec.pojemnosc(); void main() Pudlo pudlo_1(2,3,2); Pudlo* pudlo_2=new Pudlo; Pudlo pudlo_3=pudlo_1+*pudlo_2; 23

cout<<"klonowanie pudelek\n"; cout<<"dlugosc = "<<pudlo_3.dlugosc<<endl; cout<<"szerokosc = "<<pudlo_3.szerokosc<<endl; cout<<"wysokosc = "<<pudlo_3.wysokosc<<endl; Walec walec_1(2.0,2.0); Walec walec_2; Walec walec_3=walec_2+walec_1; cout<<"\nklonowanie walcow\n"; cout<<"promien = "<<walec_3.promien<<endl; cout<<"wysokosc = "<<walec_3.wysokosc<<endl; cout<<"\nporownywanie objetosci\n"; bool wynik; //wynik=pudlo_2>walec_2; wynik=walec_2>*pudlo_2; cout<<wynik<<endl; wynik=walec_1>walec_2; cout<<wynik<<endl; wynik=*pudlo_2>pudlo_1; cout<<wynik<<endl; system("pause"); 24

Klonowanie pudelek Dlugosc = 2 Szerokosc = 3 Wysokosc = 3 Klonowanie walcow Promien = 2 Wysokosc = 3 Porownywanie objetosci 1 1 0 Press any key to continue... 25

/* Przeładowane operatory - wersja z każdą klasą w oddzielnym pliku*/ #include "Pudlo.h" #include "Walec.h" #include<iostream> using namespace std; void main() Pudlo pudlo_1(2,3,2); Pudlo* pudlo_2=new Pudlo; Pudlo pudlo_3=pudlo_1+*pudlo_2; cout<<"klonowanie pudelek\n"; cout<<"dlugosc = "<<pudlo_3.dlugosc<<endl; cout<<"szerokosc = "<<pudlo_3.szerokosc<<endl; cout<<"wysokosc = "<<pudlo_3.wysokosc<<endl; Walec walec_1(2.0,2.0); Walec walec_2; Walec walec_3=walec_2+walec_1; 26

cout<<"\nklonowanie walcow\n"; cout<<"promien = "<<walec_3.promien<<endl; cout<<"wysokosc = "<<walec_3.wysokosc<<endl; cout<<"\nporownywanie objetosci\n"; bool wynik; //wynik=pudlo_2>walec_2; //wynik=walec_2>*pudlo_2; wynik=walec_1>walec_2; cout<<wynik<<endl; wynik=*pudlo_2>pudlo_1; cout<<wynik<<endl; system("pause"); 27

//Walec.h #pragma once #include "Pudlo.h" class Walec public: double promien; double wysokosc; Walec(double r=1.0, double h=1.0); double Pojemnosc(); //bool operator>(pudlo pudlo); bool operator>(walec walec); Walec operator+(walec walec); ; 28

#include "Walec.h" #include "Pudlo.h" Walec::Walec(double r, double h) promien=r; wysokosc=h; double Walec::Pojemnosc() return 3.1415927*promien*promien*wysokosc; Walec Walec::operator+(Walec walec) return Walec(promien > walec.promien? promien : walec.promien, wysokosc+ walec.wysokosc); /*bool Walec::operator >(Pudlo pudlo) return this->pojemnosc() > pudlo.pojemnosc(); */ bool Walec::operator >(Walec walec) return this->pojemnosc() > walec.pojemnosc(); 29

//Pudlo.h #pragma once #include "Walec.h" class Pudlo public: double dlugosc; double szerokosc; double wysokosc; Pudlo(double l=1.0, double b=1.0, double h=1.0); double Pojemnosc(); bool operator>(pudlo pudlo); //bool operator>(walec walec); Pudlo operator+(pudlo pudlo); ; 30

#include "Pudlo.h" #include "Walec.h" Pudlo::Pudlo(double l, double b, double h) dlugosc=l; szerokosc=b; wysokosc=h; double Pudlo::Pojemnosc() return dlugosc*szerokosc*wysokosc; Pudlo Pudlo::operator+(Pudlo pudlo) return Pudlo(dlugosc > pudlo.dlugosc? dlugosc : pudlo.dlugosc, szerokosc > pudlo.szerokosc? szerokosc : pudlo.szerokosc, wysokosc+ pudlo.wysokosc); 31

bool Pudlo::operator>(Pudlo pudlo) return this->pojemnosc() > pudlo.pojemnosc(); /*bool Pudlo::operator>(Walec walec) return this->pojemnosc() > walec.pojemnosc(); */ Klonowanie pudelek Dlugosc = 2 Szerokosc = 3 Wysokosc = 3 Klonowanie walcow Promien = 2 Wysokosc = 3 Porownywanie objetosci 1 0 Aby kontynuować, naciśnij dowolny klawisz... 32

//Szablon funkcji #include "Pudlo.h" #include "Walec.h" #include<iostream> using namespace std; template <class T1,class T2> bool Porownaj(T1 obiekt_1, T2 obiekt_2) return obiekt_1.pojemnosc()>obiekt_2.pojemnosc(); void main() Walec walec; Walec walec_1(2,2); Pudlo pudlo; Pudlo pudlo_1(2,2,2); bool wynik; wynik=porownaj(walec, pudlo); cout<<wynik<<endl; wynik=porownaj(walec, walec_1); cout<<wynik<<endl; 33

wynik=porownaj(pudlo_1,walec_1); cout<<wynik<<endl; wynik=porownaj(pudlo_1, pudlo); cout<<wynik<<endl; system("pause"); #pragma once class Pudlo public: double dlugosc; double szerokosc; double wysokosc; Pudlo(double l=1.0, double b=1.0, double h=1.0); double Pojemnosc(); ; 34

#include "Pudlo.h" Pudlo::Pudlo(double l, double b, double h) dlugosc=l; szerokosc=b; wysokosc=h; double Pudlo::Pojemnosc() return dlugosc*szerokosc*wysokosc; 35

#pragma once class Walec public: double promien; double wysokosc; Walec(double r=1.0, double h=1.0); double Pojemnosc(); ; 36

include "Walec.h" Walec::Walec(double r, double h) promien=r; wysokosc=h; double Walec::Pojemnosc() return 3.1415927*promien*promien*wysokosc; 1 0 0 1 Aby kontynuować, naciśnij dowolny klawisz... 37

Dziedziczenie Zwierzę Ssak Gad Kot Pies Pudel Sznaucer Mechanizm pozwalający na wyprowadzanie obiektów klas pochodnych z klas bazowych 38

Klasa bazowa klasa na podstawie które tworzymy nową klasę. Klasa A Klasa B Klasa C A bezpośrednia kasa bazowa dla B B bezpośrednia kasa bazowa dla C A pośrednia kasa bazowa dla C 39

Dziedziczenie w klasach Klasa bazowa Zmienne składowe Funkcje składowe Klasa pochodna Zmienne składowe Funkcje składowe Konstruktory Destruktory Przeładowany operator= STOP Inne przeładowane operatory Inne przeładowane operatory Własne: Zmienne składowe Funkcje składowe Konstruktory Destruktory 40

class CMain public: protected: private: ; BRAK dostępu Poziom dostępu do dziedziczonych składowych klasy class CA: public CMain public: protected: ; class CC: private CMain private: private: ; class CB: protected CMain protected: protected: ; 41