Témakör: Polimorfizmus


10.1 .  Utazási iroda útvonalai

Webmester felhasználó

Egy utazási iroda számára készülő nyilvántartó program útvonalak átlagos idejét becsüli meg. Háromféle útvonaltípus (Route) létezik: Vízi út (ShipRoute), szárazföldi út (LandRoute) és légi út (AirRoute).  Az egyes konstansok az átlagsebességre: averageShipRoute=60 km/h, averageLandRoute=75 km/h, averageAirRoute=900km/h. Programunk egy tömbben tartja nyilván az útvonalakat. A célunk kiszámolni és kiírni az egyes utak időtartamának átlagértékét (getDuration()), ha az útvonalak hosszát az objektum létrehozásakor megadják. Használja fel a dőlt betűs osztály-, függvény- és változóneveket! Ne legyen egy függvénytörzsben sem felesleges, nem használt kód! Tervezze meg és vázolja fel az osztályok öröklési hierarchiáját! Az osztályok téglalapjaiban tüntesse fel az összeget lekérdező függvény (getDuration) deklarációját és láthatóságát! Ügyeljen az elegáns OO megoldásokra! Implementálja a névteret (WorldRoutes), az osztályokat és konstansokat, figyelve arra, hogy esetlegesen egyes konstansokat is tagváltozókként érdemes implementálni. Egy új útvonal-tí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ú útvonal felvételét, valamint kiírja az átlagos idejüket.



2008.01.05. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje


10.9 .  Teknőskaland

Webmester felhasználó

Tihi, az óriásteknős nagyon szereti a rákot és a salátát. Készítsünk osztályhierarchiát, mely modellezi Tihi étkezési szokásait.

Készítsünk egy ős étel osztályt (Food), mely egy virtuális metódussal rendelkezik amely megadja az étel tápértékét (value()).

Készítsük el a rák (Crab) osztályt, mely az ősosztályból származik és rendelkezik egy méret értékkel (1-10). A rák tápértéke méret x 10.

Készítsük el a saláta (Salad) osztályt, mely tápértéke 10.

Készítsük el a teknősbéka osztályt (Turtle), melynek legyen egy boldogság (happiness) és egy jóllakottság (fedLevel) tagváltozója! Mindkettő egy számérték 0-1000-ig. Az osztálynak legyen egy Eat(Food& food) metódusa, mellyel megetethetjük Tihit! A jóllakottság növekedjen az átadott étel tápértékével (1000 fölé nem mehet)! A boldogság akkor növekedjen, ha a jóllakottság 500 alatt van ("2x a bevitt tápérték 500 alatt" értékkel). Ha 500 fölé kerül a jollakottság, akkor a boldogság csökkenjen ("2x bevitt tápérték 500 felett" értékkel).



2008.02.01. |  Permalink  |  Hozzászólások: 1  |  Tárgyszavak: példa szintje


10.10 . megoldással  Konstruktorból hívott virtuális függvény

Webmester felhasználó Mi a hiba az alábbi kódrészletben?

class A

{

      A()

      {

            f();

      };

      virtual int f()=0;

};

           

class B: public A

{

      int f()

      {

            return 0;

      }

};

...

B b;

 





2008.02.06. |  Permalink  |  Hozzászólások: 1  |  Tárgyszavak: példa szintje


10.11 .  Szerepjáték

Webmester felhasználó Készitsünk osztályhierarchiát, mely egy szerepjáték karaktereit modellezi!

Az osztályok a következők:

Karakter (Character)
A karakter ősosztály.

Harcos (Fighter)
Karakterből származik és rendelkezik fegyverforgatási képességgel (weaponSkill), mely egy egész szám 1 és 100 között.

Varázsló (Mage)
Karakterből származik és rendelkezik varázslási képességgel (castingSkill), mely egy egész szám 1 és 100 között. Ezen felül még rendelkezik egy mana értékkel (mana), mely egy egész szám 0 és 1000 között.

Harcos-varázsló (BattleMage)
Harcosból és varázslóból származik.
  • Írjuk meg az osztályok konstruktorait, melyek az átadott paramétereknek megfelelően inicializálják a tagváltozókat!
  • Írjunk egy tisztán virtuális metódust a karakter ősosztályhoz, mely megadja a karakter támadóerejét (int AttackPower()). Implementáljuk a metódust az összes leszármazott osztályhoz! Harcosnál a támadóerő egyenlő a fegyverhasználati képességgel, varázslónál a varázslási képességgel. Azonban ha a varázsló mana értéke 0-án van, akkor a támadóereje is 0 (hisz nem tud varázsolni)! A Harcos-varázsló fegyvert forgatni és varázsolni is tud, a metódus ezek közül a nagyobb értékkel térjen vissza!
  • Írjunk egy bool IsStronger(Character& otherChar) metódust, mely eldönti, hogy melyik karakter az erősebb! Abban az esetben térjen vissza true értékkel, amennyiben az a karakter az erősebb, amelyiknek a tagfüggvényét meghívták!
  • Írjunk egy egyszerű main függvényt, amely létrehoz egy-egy példányt mindegyik karakterből, és tároljuk el őket egy tömbbe! Eresszünk össze néhány karaktert, és írjuk ki a győztest és a vesztest!


2008.02.01. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje


10.13 .  Bútorbolt nyilvántartórendszere

Webmester felhasználó

A készülő bútorkereskedésünkben szeretnénk számítógépes árunyilvántartást használni. Sajnos a bolt bérleti díja minden vagyonunkat felemésztette, így magunk kell, hogy megírjuk a katalógus rendszerünket. A boltban háromfajta bútort (Furniture) árulunk majd: asztalt (Table), ágyat (Bed) és széket (Chair). Mindegyik különböző értékű, az alapegység egy statikus változója az alaposztálynak (basePrice=25000), az asztal darabja ennek konstansszorosa (tableFactor=0.3), míg az ágy esetében ez a tényező bedFactor=2.4, a széknél chairFactor=1.2. Minden bútordarabnak van egy egyedi azonosítója. Ezeken kívül az aztalnak a magassága, az ágynak a hossza és szélessége, a széknek pedig a lábszáma kell, hogy tárolásra kerüljön. A rendszerünk egy tömbben tartja nyilván a bútorokat. Elsődleges célunk, hogy ki tudjuk listázni a boltban lévő bútorokat az összes tulajdonságukkal együtt (Print())

§         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! Ügyeljen az elegáns OO megoldásokra!

§         Implementálja az osztályokat és konstansokat az MyFurniture 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 bútortí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 három különböző típusú bútor felvételét, valamint kiírja az összes paraméterüket.



2008.02.01. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje


10.15 . megoldással  Vállalati alkalmazottak

Webmester felhasználó

Egy nagyvállalatnál alkalmazottak (Employee) dolgoznak, valamint osztályvezetők (DivisionManager), igazgatóhelyettesek (VicePresident) és egy vezérigazgató (President). Az alkalmazottak fizetése egy konstans (baseSalary=100000) a Multi névtérben, az vezetők fizetése ennek egy konstansszorosa (divisionManagerSalaryFactor=1.2, vicePresidentSalaryFactor=2, presidentSalaryFactor=10). Programunk ennek a vállalatnak a dolgozóit szeretné nyilvántartani egy tömbben. Célunk a tömbben található dolgozók fizetésének kiíratása.

  • Tervezze meg és vázolja fel az osztályok öröklési hierarchiáját! Az osztályok téglalapjaiban tüntesse fel a fizetést lekérdező függvény (getSalary) deklarációját és láthatóságát! Ügyeljen az elegáns OO megoldásokra!
  • Implementálja az osztályokat, figyelve arra, hogy esetlegesen egyes konstansokat is tagváltozókként érdemes implementálni. Az egyes alkalmazottaknak legyen neve (feltételezhet egy string osztályt), amit szintén nyilvántartunk, és az egységbezárás elveinek megfelelően biztosítjuk a tagváltozó érvényességét az objektum egész életciklusa folyamán. Egy új alkalmazott tí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 négy különböző típusú alkalmazott felvételét, valamint kiírja a nevüket és a fizetésüket.


2008.01.05. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje


10.17 . megoldással  Nemzetközi vadásztársaság

Webmester felhasználó

Egy nemzetközi vadásztársaságnál különféle állatokra (Animal) lehet vadászni, így nyulakra (Rabbit), jegesmedvékre (PolarBear), valamint mókusokra (Squirrel). Mindegyiknek különböző értékű a prémje, egy alapegység egy konstans a Hunter névtérben (basePrice=100000), a nyúlprém ennek konstansszorosa (rabbitFactor=0.3), míg a jegesmedve esetében ez a tényező polarBearFactor=2.4, a mókusnál squirrelFactor=1.2. Programunk egy tömbben tartja nyilván az elejtett állatokat. A célunk kiszámolni és kiírni az egyes állatok prémjének értékét (getPrice()).

Használja fel a dőlt betűs osztály-, függvény- és változóneveket! Ne legyen egy függvénytörzsben sem felesleges, nem használt kód! Tervezze meg és vázolja fel az osztályok öröklési hierarchiáját! Az osztályok téglalapjaiban tüntesse fel az összeget lekérdező függvény (getPrice) deklarációját és láthatóságát! Ügyeljen az elegáns OO megoldásokra! Implementálja a névteret, az osztályokat és konstansokat, figyelve arra, hogy esetlegesen egyes konstansokat is tagváltozókként érdemes implementálni. Egy új zsákmányállat-tí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ú állat felvételét, valamint kiírja a nevüket és a prémjük árát.



2008.01.05. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje


10.18 . megoldással  Medvemenhely tartási költsége

Webmester felhasználó

Egy medvemenhelyen háromféle medvét (Bear) tartanak számon: grizzlit (Grizzly), pandát (Panda) és jegesmedvét (PolarBear). Mindegyiknek különböző a napi tartási költsége, létezik egy alapegység statikus változó Bear osztályban (basePrice=50), a panda tartása ennek konstansszorosa (pandaFactor=0.3), míg a grizzli esetében ez a tényező grizzlyFactor=2.4, a jegesmedvénél polarBearFactor=1.2. A menhelynek írt programunk egy tömbben tartja az érkezett állatokat. Az egyes medve osztályok tartalmazzák a menhelyen eltöltött napok számát. A célunk kiszámolni és kiírni az egyes medvék tartási költségét (getCost()).

Használja fel a dőlt betűs osztály-, függvény- és változóneveket! Ne legyen egy függvénytörzsben sem felesleges, nem használt kód! Tervezze meg és vázolja fel az osztályok öröklési hierarchiáját! Az osztályok téglalapjaiban tüntesse fel az költséget lekérdező függvény (getCost) deklarációját és láthatóságát! Ügyeljen az elegáns OO megoldásokra! Implementálja a Shelter névteret, az osztályokat és konstansokat, figyelve arra, hogy esetlegesen egyes konstansokat is tagváltozókként érdemes implementálni. Egy új medvetí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, amely megmutatja három különböző fajtájú medve felvételét, valamint kiírja az eddigi tartási költségüket.



2008.01.05. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje


10.19 . megoldással  Húsvéti Nyúl ajándékai

Webmester felhasználó

. A Húsvéti Nyúl háromfajta ajándékot (Present) oszt: tojást (Egg), csokit (Chocolate) és cukrot (Candy). Mindegyik különböző értékű, az alapegység egy statikus változója az alaposztálynak (basePrice=50), a tojás darabja ennek konstansszorosa (eggFactor=0.3), míg a csoki esetében ez a tényező chocolateFactor=2.4, a cukornál candyFactor=1.2. A Nyúlnak írt programunk egy tömbben tartja nyilván a kiosztott ajándékokat. Az egyes ajándékok darabszámot is tartalmaznak. A célunk kiszámolni és kiírni az egyes ajándékok értékét (getPrice()).

§         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 (getPrice) deklarációját és láthatóságát! Ügyeljen az elegáns OO megoldásokra!

§         Implementálja az osztályokat és konstansokat az EasterBunny 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 ajándéktí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 három különböző típusú ajándék felvételét, valamint kiírja a nevüket és árukat.



2008.01.05. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje


10.20 . megoldással  Mikulás járművei

Webmester felhasználó

A Mikulás az alábbi járműveket (Vehicle) veszi igénybe: rénszarvas (ReindeerSleigh), kutyaszán (HuskySledge), és a melegebb országokban lovas szán (HorseSledge). Mindegyik évi fenntartási költsége különböző, egy alapegység egy konstans a SantaClaus névtérben (basePrice=50), a rénszarvasé ennek konstansszorosa (reindeerFactor=1000), míg kutyák esetében ez a tényező huskyFactor=50, a lovaknál horseFactor=60. A Mikulásnak írt programunk egy tömbben tartja nyilván a Mikulás járműparkját. A célunk kiszámolni és kiírni a járműpark éves fenntartásának árát eszközönként (getPrice()) és együtt.

Használja fel a dőlt betűs osztály-, függvény- és változóneveket! Ne legyen egy függvénytörzsben sem felesleges, nem használt kód! Tervezze meg és vázolja fel az osztályok öröklési hierarchiáját! Az osztályok téglalapjaiban tüntesse fel az összeget lekérdező függvény (getPrice) deklarációját és láthatóságát! Ügyeljen az elegáns OO megoldásokra! Implementálja a névteret, az osztályokat és konstansokat, figyelve arra, hogy esetlegesen egyes konstansokat is tagváltozókként érdemes implementálni. Egy új járműtí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 három különböző típusú jármű felvételét, valamint kiírja a nevüket és árukat.



2008.01.05. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak:


10.21 . megoldással  Kanadai jégkorong-válogatott reklámcikkei

Webmester felhasználó

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).



2008.01.05. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje


10.22 . megoldással  Madárgyűjtemény eszmei értéke

Webmester felhasználó

Madárgyűjteményünk háromféle madarat (Madar) tartalmaz: baglyot (Bagoly), papagájt (Papagaj) és vöcsköt (Vocsok). Mindegyik különböző eszmei értékű, az alapegység millió forintban egy statikus változója az alaposztálynak (alapÁr=50), a bagoly darabja ennek konstansszorosa (bagolySzorzo=0.03), míg a papagáj esetében ez a tényező papagajSzorzo=2.4, a vöcsöknél vocsokSzorzo=1.2. Programunk egy tömbben tartja nyilván a gyűjteményben található madarakat. A célunk kiszámolni az egyes madarak eszmei é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 az MadarGyujtemeny 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 madártí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 három különböző típusú madár felvételét, valamint kiírja a nevüket és árukat. (Pl.: Bagoly: 1.5 millió HUF)



2008.01.05. |  Permalink  |  Hozzászólások: 0  |  Tárgyszavak: példa szintje