Kanadai jégkorong-válogatott reklámcikkei

A kanadai jégkorong-válogatott háromféle reklámcikkel (ReklamCikk) népszerűsíti kiváló játékát: zászló (Zaszlo), ütő (Uto) és korcsolya (Korcsolya). Mindegyiknek különböző értéke van, az alapegység egy statikus változója az alaposztálynak (alapÁr=500), a zászló ennek konstansszorosa (zaszloSzorzo=0.3), míg a ütő esetében ez a tényező utoSzorzo=1.4, a korcsolyánál korcsolyaSzorzo=2.2. Programunk egy tömbben tartja nyilván az eladott reklámcikkeket. A célunk kiszámolni és kiírni az egyes eladott reklámcikkek értékét (ertek()).

§         Tervezze meg és vázolja fel az osztályok öröklési hierarchiáját! Használja fel a fenti dőlt betűs osztály-, függvény- és változóneveket! Az osztályok téglalapjaiban tüntesse fel az összeget lekérdező függvény (ertek) deklarációját és láthatóságát! Ügyeljen az elegáns OO megoldásokra!

§         Implementálja az osztályokat és konstansokat a Jegkorong névtérben, figyelve arra, hogy esetlegesen egyes konstansokat is tagként vagy statikus tagként érdemes implementálni. Ne legyen egy függvénytörzsben sem felesleges, nem használt kód! Egy új reklámcikktípus esetleges felvételéhez ne kelljen a már meglévő osztályokat módosítani!

§         Írjon egy egyszerű programrészletet nem dinamikus tömbbel, ami megmutatja a három különböző típusú cikk felvételét, valamint kiírja, milyen reklámcikk, és mennyibe kerül (Pl.: Ütő: $150).



A megoldásért kattints ide!






// Jegkorong.h
#ifndef __JEGKORONG_H
#define __JEGKORONG_H

#include <iostream>


namespace Jegkorong {

  class ReklamCikk {
    protected:
      static const double alapAr;

    public:
      virtual double ertek() const = 0;
      virtual void kiir() const = 0;
  };


  class Zaszlo: public ReklamCikk {
      static const double zaszloSzorzo;

    public:
      double ertek() const {
        return alapAr * zaszloSzorzo;
      }

      void kiir() const {
        std::cout << "A zaszlo ara $" << ertek() << std::endl;
      }
  };


  class Uto: public ReklamCikk {
      static const double utoSzorzo;

    public:
      double ertek() const {
        return alapAr * utoSzorzo;
      }

      void kiir() const {
        std::cout << "A uto ara $" << ertek() << std::endl;
      }
  };


  class Korcsolya: public ReklamCikk {
      static const double korcsolyaSzorzo;

    public:
      double ertek() const {
        return alapAr * korcsolyaSzorzo;
      }

      void kiir() const {
        std::cout << "A korcsolya ara $" << ertek() << std::endl;
      }
  };

}

#endif // __JEGKORONG_H

 

// Jegkorong.cpp
#include "Jegkorong.h"

namespace Jegkorong {

  const double ReklamCikk::alapAr = 500;
  const double Zaszlo::zaszloSzorzo = 0.3;
  const double Uto::utoSzorzo = 1.4;
  const double Korcsolya::korcsolyaSzorzo = 2.2;

}

 

// Main.cpp
#include <iostream>
#include "Jegkorong.h"
using namespace std;
using namespace Jegkorong;


int main() {
  ReklamCikk *P[3];
  P[0] = new Zaszlo();
  P[1] = new Uto();
  P[2] = new Korcsolya();

  for (int i = 0; i < 3; i++) {
    P[i]->kiir();
    delete P[i];
  }

  return 0;
}



 

gif hockey.gif (9 kB)




2008.01.05. 11:24:59 |  Permalink  |  Hozzászólások száma: 0  |  Tárgyszavak: Polimorfizmus


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások