Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Szablony (wzorce) Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik.

Podobne prezentacje


Prezentacja na temat: "Szablony (wzorce) Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik."— Zapis prezentacji:

1 Szablony (wzorce) Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik

2 Szablon funkcji Po co stosować szablon funkcji ? Mamy funkcje która zwraca większa z dwóch liczb int wieksza(int a, int b) {return (a > b) ? a : b ; } Teraz chcąc wywołać tą funkcję np. dla danych typu float, double … będziemy musieli napisać kolejne funkcje zmieniając jedynie parametry Stosując szablon funkcji problem znika Definicja szablonu dla naszej funkcji template jakis_typ wieksza(jakis_typ a, jakis_typ b) Zobaczmy jak wygląda to w praktyce

3 # include template jakis_typ wieksza(jakis_typ a, jakis_typ b) {return (a > b) ? a : b ; } //******************************************************** main() { int a=44, b=88 ; double x=12.4, y=67.43; unsigned long la=98765, lb=4567 ; cout<<"wiekszy int :"<

4 Przeładowanie szablonów template T wieksza(T a, T b) template T wieksza(T a, T b, int c) poprawnie template T wieksza(T a, T b) template T wieksza(T a, int b) błąd Powstał konflikt Chcąc wywołać funkcję wieksza(10,45) kompilator nie wie o który szablon nam chodzi i w rezultacie zaprotestuje

5 Funkcje specjalizowane Mając nasz szablon template jakis_typ wieksza(jakis_typ a, jakis_typ b) {return (a > b) ? a : b ; } wywołamy funkcję char string1[30] = {tak}; char string2[30] = {Czy to jest dobrze ?}; cout<

6 # include template jakis_typ wieksza(jakis_typ a, jakis_typ b) {return (a > b) ? a : b ; } char *wieksza(char* a, char* b) { if(strlen(a)>strlen(b)) return a; else return b; } //*************************************************** main() { int a=44, b=88 ; char string1[30] = {"tak"}; char string2[30] = {"To jest dobrze "}; cout<<"wiekszy int : "<

7 Szablon klas Klasa do chowania zmiennych typu int class schowek {int sejf; public: void schowaj(int x) {sejf=x;} oddaj() {return sejf; } Klasa do chowania zmiennych typu char class schowek_na_chr {char sejf; public: void schowaj(char x) {sejf=x;} oddaj() {return sejf; }

8 Teraz zobaczmy na przykładzie jak można zrobić szablon klas #include template class schowek {jakis_typ sejf; public: void schowaj(jakis_typ x) {sejf=x;} oddaj() {return sejf; } } //********************************* main() {schowek czerwony ; schowek znakowy ; czerwony.schowaj(7); int m ; m=czerwony.oddaj(); znakowy.schowaj('T'); cout<<"schowany int :"<

9 Specjalizowana klasa szablonowa #include template class akmulator {jakis_typ zloze; public: akmulator() : zloze (0) {}; void przyjm(jakis_typ co) {zloze=zloze+co ;} jakis_typ rozladunek() ; }; template jakis_typ akmulator ::rozladunek() {jakis_typ pomocnik=zloze; zloze=0; return pomocnik; } //akmulator mick //blad !!! //***************** specjalizowana klasa*************************** //nastepny slajd

10 class akmulator //******* specjalizowana klasa******************* {char* zloze; public: akmulator (); void przyjm(char* nowy); char* rozladunek() {char*chwila=zloze; zloze=0; return chwila; } };//****************************************** akmulator ::akmulator(): zloze(NULL){} //********************************************* void akmulator ::przyjm(char* nowy) { if(!zloze) {zloze=new char[strlen(nowy)+1]; zloze[0]=NULL; } else {char *stary=zloze; zloze=new char[strlen(stary)+strlen(nowy)+1]; strcpy(zloze,stary); delete stary; } strcat(zloze,nowy); };

11 main() { akmulator kasa; kasa.przyjm(400.00); //styczen float przelew=50.50; kasa.przyjm(przelew); cout<<"utarg miesieczny w styczniu = "<

12 Przyjaźń a szablony klas Wystąpi tu szablon klas deklarujący przyjaźń z -funkcją -klasą #include //class poletko; template class poletko { int rola[stala]; poletko(){cout<<"Prywatny konstruktor";} void funpryw() { cout<<"Prywatna funkcja poletka"<

13 class rolnik {public: void rok() {cout<<"Dziala zaprzyjazniony rolnik:"<

14 Ekran po wykonaniu programu Dziala zaprzyjazniny rolnik: Prywatny konstruktor Prywatna funkcja poletka 2 Prywatny konstrultor Prywatna funkcja poletka 10 Dziala zaprzyjazniona funkcja siew Prywatny konstruktor Prywatna funkcja poletka 1


Pobierz ppt "Szablony (wzorce) Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik."

Podobne prezentacje


Reklamy Google