[ mojsilo2003 @ 10.01.2004. 01:16 ] @
Pozdrav, dobio sam zadatak da realizujem nasledjivanje. Osnovna klasa je klasa Figura, a izvedene su Krug,Kvadrat,Trougao. Za sada mi trebaju samo dve funkcije, jedna za racunanje Obima, a druga za Povrsinu.Malo sam pokupio sa predavanja malo iz nekih knjiga i uradio sam sledece: Code: #ifndef FIGURA_2 #define FIGURA_2 class Fig { public: Fig(){}; virtual ~Fig(){}; virtual double Obim() const=0; virtual double Povrsina() const=0; }; #endif #ifndef FIG_KRUG_2 #define FIG_KRUG_2 #include <math.h> class Krug : public Fig { private: double r; public: Krug(double rr=1) : Fig() {r=rr;}; double Obim() const {return 2*r*M_PI;} double Povrsina() const {return r*r*M_PI;} double Getr() const {return r;} }; #endif; #ifndef KVADRAT_2 #define KVADRAT_2 class Kvadrat : public Fig { private: double a; public: Kvadrat (double aa=1) : Fig() {a=aa;}; double Obim() const {return 4*a;} double Povrsina() const {return a*a;} }; #endif #ifndef TROUGAO_2 #define TROUGAO_2 class Trougao : public Fig { private: double a,b,c; public: Trougao(double str) : Fig() {a=b=c=str;}//jednakostranicni Trougao(double str, double osn) : Fig() {a=b=str;c=osn;}//jednakokraki Trougao(double stra,double strb,double strc) : Fig()//pravougli {a=stra;b=strb;c=strc;} //nemora biti ali recimo da jeste double Obim() const {return a+b+c;} double Povrsina() const { if (a==b==c) return ((a*a*sqrt(3))/4); if ((a==b)&&(a!=c)&&(b!=c)) return ((b*sqrt(a*a-(b*b)/4))/2); else return (a*b/2); } }; #endif #include <iostream.h> #include <conio.h> void main() { clrscr(); Fig *pk=new Krug; Fig *pt1=new Trougao(1); Fig *pt2=new Trougao(1,2); Fig *pt3=new Trougao(1,2,3); Fig *pkv=new Kvadrat; cout<<"obim kruga: "<<pk->Obim(); cout<<"\n"; cout<<"povrsina kruga: "<<pk->Povrsina(); cout<<"\n"; cout<<"obim kvadrata: "<<pkv->Obim(); cout<<"\n"; cout<<"povrsina kvadrata: "<<pkv->Povrsina(); cout<<"\n"; cout<<"obim jednakostranicnog trougla: "<<pt1->Obim(); cout<<"\n"; cout<<"povrsina jednakostranicnog trougla: "<<pt1->Povrsina(); cout<<"\n"; cout<<"obim jednakokrakog trougla: "<<pt2->Obim(); cout<<"\n"; cout<<"povrsina jednakokrakog trougla: "<<pt2->Povrsina(); cout<<"\n"; cout<<"obim pravouglog nejednakokrakog trougla: "<<pt3->Obim(); cout<<"\n"; cout<<"povrsina pravouglog nejednakokrakog trougla: "<<pt3->Povrsina(); delete pk,pkv,pt1,pt2,pt3//moze li to ovako ili za svaki treba posebno delete?; getch(); } Nemojte mi zameriti na mozda smesnom stilu pisanja koda, ali tako nas uce i tako zahtevaju(molim vas recite mi da li su u pravu). Kod se bez problema kompajlira i dobiju se tacni rezultati. Mene zanima sledece:posto nisam bas najbolje shvatio nasledjivanje ne znam da li sam na pravom putu resavanja problema. Nisam ukapirao cemu uopste sluzi nasledjivanje.Profa tvrdi da je to najosnovnija stvar u objektnom programiranju.Ja na ispitu to isto moram njemu reci makar ne bilo tako! Molio bih ako neko ima raspolozen da mi sve ovo malo pojasni i da mi kaze da li sam ista dobro uradio u gore navedenom kodu. Hvala!! |