C++ pomoc sa zadatkom(apstraktne klase)!!!

poruka: 2
|
čitano: 2.251
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
10 godina
neaktivan
offline
C++ pomoc sa zadatkom(apstraktne klase)!!!

Evo molio bih molio kakvu pomoc oko ovog zadatka.

 

ZADATAK:

Nacrtajte hijerarhiju klasa koje reprezentiraju slijedece tipove vozila: automobil, avion, bicikl, brod, kamion, tegljac (uvedite po potrebi apstraktne klase na odgovarajuca mjesta u hijerarhiji). Napisite defnicije pripadnih klasa pricemu u svakoj klasi neka je defnirana virtualna funkcija double nosivost() (u implementaciji funkcije iskoristite polimorzam).
a) Napisite globalnu funkciju koja za dane objekte koje dobiva u polju racuna njihovu ukupnu nosivost.

b) Napisite funkciju koja prima vezanu listu objekata te racuna njihovu ukupnu nosivost.

 

 

Sad ovdje me najviše me zbunjuje a) i b) dio zadatka i to sto objekti koji se dobivaju moraju biti spremljeni u polje/listu, a znam to da se radi o static funkcijama i da bi funkciju pod a) trebalo navest kao friend u baznoj klasi. 
Cijenim bilo kakvu pomoc i svaka pomoc je dobrodosla =)

 

Evo sto za sad imam: 

 

#include <iostream>
#include <list>
using namespace std;

 

class Vozilo{
  protected:
    double n;
  public:
    void postaviNosivost(double x){n=x;}
    virtual double nosivost()=0;
};

 

class Avion : public Vozilo{
  double nosivost(){return n;}
};

 

class Brod : public Vozilo{
  double nosivost(){return n;}
};

 

class Automobil : public Vozilo{
  double nosivost(){return n;}
};

 

class Bicikl : public Vozilo{
  double nosivost(){return n;}
};

 

class Kamion : public Vozilo{
  virtual double nosivost(){}
};

 

class Tegljac : public Kamion{
  double nosivost(){return n;}
};

 

int main() {
  Avion A;
  Tegljac T;
  Vozilo *a = &A, *t=&T;
  a->postaviNosivost(5);
  cout<<a->nosivost()<<endl;
  t->postaviNosivost(7);
  cout<<t->nosivost()<<endl;


system("pause");
return 0;
}

 
0 0 hvala 0
16 godina
offline
Re: C++ pomoc sa zadatkom(apstraktne klase)!!!

 

 Za poda a)

 

Prvo napravis polje, kreiras objekte i dodas ih:

 

std::vector<Vozilo*> poljeVozila;

 

Avion* pA = new Avion;

pA->postaviNosivost(5);

Tegljac* pT = new Tegljac;

pT->postaviNosivost(10);
  

poljeVozila.push_back (pA);

poljeVozila.push_back (pT);

...dodaj jos vozila u polje ako treba

 

funkcija koja racuna nosivost svih prima kao parametar to polje:

 

double RacunajNosivost(std::vector<Vozilo*> &polje)

{

double  dTotal=0;

for (int i = 0; i < polje.size(); ++i)

{

dTotal += polje[i]->nosivost();

}

 

return dTotal;

}

 

 

Na kraju pripazi, moras osloboditi memoriju za sve kreirane objekte.

I isto pripazi da funkcija nosivost bude u izvedenim klasama isto deklarirana kao virtual.

 

 

Lack of money is the root of all evil. George Bernard Shaw
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice