Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.3.Klasy,obiekty,dziedziczenieitablicewirtualne
Skorojesteśmyjużwstanierozpoznawać(dopewnegostopnia)strukturyiichukładwkodzieC/C++,spróbujmypodjąćsięjeszcze
trudniejszegozadaniaanalizyklas.
1.3.1.Prostaklasaastruktura
Kiedypoczątkującyprogramistaobytyjużzkoncepcjąstrukturzapyta,cotoklasy,chybanajlepszą(obrazującąideę,leczbardzo
upraszczającą)odpowiedziąbyłobystwierdzenie:„totakiestrukturyzfunkcjami”.Jeżelipopatrzymynakwestięzperspektywykodu
niskopoziomowego,toniewieleminęliśmysięzprawdą.Oilestrukturyifunkcjezostałyopisaneosobnowcześniej,topołączenieobu
mechanizmówwjedenwymagapewnegoobjaśnienia.Spójrzmynajpierwnaróżnicęwkodziewysokopoziomowymoraz
niskopoziomowymdwóchpodobnychprogramów,przedstawionychwlistingach1.9i1.10.Jedenjestnapisanyzużyciemstruktury,drugi
obiektowo(zużyciemklasy).
#include<stdio.h>
#include<stdlib.h>
typedefstructs_car{
chardesc[200];
intcolor;
intwheels;
intdoors;
}s_car;
typedefs_car*p_car;
voidcar__print(p_carcar){
printf("[color:%dwheels:%ddoors:%d]\n",car->color,car->wheels,car->doors);
}
voidcar__set_color(p_carcar,intc){
printf("SETCOLOR\n");
car->color=c;
}
p_carcar__new(void){
p_carc=(p_car)malloc(sizeof(s_car));
c->color=0;c->wheels=0;c->doors=0;
printf("Creatingnewinstance…\n");
returnc;
}
intmain(intargc,char*argv[]){
printf("START\n");
p_carc=car__new();
car__print(c);
car__set_color(c,100);
car__print(c);
printf("END\n");
return0;
}
Listing1.9.ProgramwjęzykuCopisującysamochódprzyużyciustruktury
#include<cstdio>
#include<cstdlib>
classc_car{
public:
chardesc[200];
intcolor;
intwheels;
intdoors;
c_car();
voidprint();
voidset_color(int);
};
voidc_car::print(){//<--METODA
printf("[color:%dwheels:%ddoors:%d]\n",color,wheels,doors);
}
voidc_car::set_color(intc){
printf("SETCOLOR\n");
color=c;
}
c_car::c_car(void){//<--KONSTRUKTOR
printf("Creatingnewinstance…\n");
color=0;wheels=0;doors=0;
}
intmain(intargc,char*argv[]){
printf("START\n");
c_carcar;
car.print();
car.set_color(100);
car.print();
printf("END\n");
return0;
}
Listing1.10.ProgramwjęzykuC++opisującysamochódprzyużyciuklasy