Programozás 2 - 1. feladat

Intervallum

Hozz létre egy Interval osztályt, ami egy zárt intervallumot reprezentál kezdő és végponttal (double). Legyen:

  • Egy olyan konstruktora, ami a paraméterként várja a két végpontot

  • Egy olyan konstruktora, ami a konzolról olvassa be a két végpontot

  • Egy olyan konstruktora, ami egy paraméterben kapott fájlból olvassa be a két végpontot (a fájl szöveges legyen, a két végpont szóközzel legyen elválasztva)

  • Egy save függvénye, ami a paraméterül kapott fájlba elmenti a végpontokat

  • Egy print függvénye, ami “ [ kezdőpont, végpont ]” formában kiírja a konzolra az Intervallumot

  • Egy length függvénye, ami visszatér az Intervallum hosszával.

Származtass le az Interval osztályból egy ColorInterval osztályt, aminek színe is van (char*). Legyen:

  • Konstruktora, ami paraméterül várja a két végpontot és a színt

  • Felüldefiniált print függvénye, ami “ [ kezdőpont, végpont ] (szín) ” formában kiírja a konzolra az Intervallumot

Készíts egy main függvényt, ami az elkészült osztályokat (függvényeivel együtt) teszteli!

Igazolvány

Hozz létre egy Igazolvány osztályt, ami egy személyes okmányt valósít meg. Minden igazolvány valaki nevére szól (char* vagy string), illetve mindegyiknek van egy kiállítási dátuma (pl.: ÉÉÉÉHHNN formátumban, szövegként tárolva).

Legyen az osztálynak:

  • Egy olyan konstruktora, ami a paraméterként várja a nevet és a kiállítási dátumot

  • Egy olyan konstruktora, ami csak a nevet várja paraméterül, a kiállítási dátumot tetszőleges értékre állítja be.

  • Egy olyan konstruktora, ami a konzolról olvassa be a fenti adatokat.

  • Egy leolvas() függvénye, ami kiírja az alapértelmezett kimenetre a tulajdonos nevét, valamint az igazolvány kiállítási dátumát. (Pl.: “Ez az igazolvány <Név> tulajdona, és <ÉÉÉÉ>.<HH>.<NN>. dátummal állították ki.)

  • Egy azonosít függvénye, ami paraméterben egy stringet vár, és ellenőrzi, hogy az igazolvány tulajdonosa a paraméterben megadott nevű ember-e. Ennek megfelelően logikai értékkel térjen vissza a függvény.

  • Egy save függvénye, ami a paraméterül kapott fájlba elmenti az adatokat.

Származtass le az Igazolvány osztályból egy SzemélyiIgazolvány osztályt, amiben tároljuk még a személyi igazolvány számát (pontosan 8 karakterből álló tömb), valamint azt, hogy új fajta igazolványról van-e szó.

Az osztálynak legyen

  • Konstruktora, ami paraméterül várja a nevet, kiállítási dátumot, igazolványszámot (abban az esetben, ha ez nem egy 8 karakterből álló tömb, az alapértelmezett hibakimeneten jelezzük, és állítsunk be egy tetszőleges értéket (ezt érdemes lehet pl. #define makróval definiálni).

  • Felüldefiniált leolvas() függvénye, ami kiírja az alapértelmezett kimenetre a tulajdonos nevét, valamint az igazolvány kiállítási dátumát és számát. (Pl.: “Ez az igazolvány <Név> tulajdona, és <ÉÉÉÉ>.<HH>.<NN>. dátummal állították ki, száma: <XXXXXXXX>)

Készíts egy main függvényt, ami az elkészült osztályokat (függvényeivel együtt) teszteli!

Telefon

Hozz létre egy Telefon osztályt, ami egy telefont reprezentál. A telefonnak legyen száma (9 jegyű szám, vagy 9 karakteres tömb), valamint felhasználható internet mennyiségét (double, megabájtban számolva).

Az osztálynak legyen:

  • Egy olyan konstruktora, ami a paraméterként várja a számot, és a felhasználható internet mennyiségét

  • Egy olyan konstruktora, ami a konzolról olvassa be az adatokat.

  • Egy internetHasznál() függvénye, amely a paraméterben megadott számmal csökkenti a felhasználható internet mennyiségét. Amennyiben paraméter nélkül hívjuk meg a függvényt, pontosan 1.2 megabájttal csökkenjen a felhasználható keret.

  • Egy feltölt() függvény, amely pontosan 500 megabájtot ad hozzá a felhasználható internethez, de ügyelj rá, hogy a felhasználható keret legfeljebb 1500 megabájt legyen. Ezen érték felé ne emelkedhessen a szám!

  • Egy adatok() függvény, ami kiírja az alapértelmezett kimenetre a számot és a felhasználható internet mennyiségét.

Származtass le az Telefon osztályból egy SzuperNetezőTelefon osztályt, ami tárolja magáról, hogy használhat-e 4G-t vagy sem (bool).

Az osztálynak legyen:

  • Egy olyan konstruktora, ami a paraméterként várja a számot, a felhasználható internet mennyiségét, és azt, hogy használhat-e 4G-t.

  • Egy save függvénye, ami a paraméterül kapott fájlba elmenti az adatokat.

  • Felüldefiniált internetHasznál() függvénye, amely a paraméterben megadott számmal csökkenti a felhasználható internet mennyiségét. Amennyiben paraméter nélkül hívjuk meg a függvényt, pontosan 23.5 megabájttal csökkenjen a felhasználható keret.

  • Felüldefiniált feltölt() függvénye, amely pontosan 500 megabájtot ad hozzá a felhasználható internethez, korlátozás nélkül.

Készíts egy main függvényt, ami az elkészült osztályokat (függvényeivel együtt) teszteli!
 

Tanulmányi rendszer

Hozz létre egy TanulmanyiRendszer osztályt, amely egy tanulmányi rendszert reprezentál. Ügyelj rá, hogy az osztályból ne lehessen objektumot létrehozni. Az osztálynak legyen:

  • Egy url adattagja, amely a tanulmányi rendszer url-jét tartalmazza (char* vagy string), és amelyet csak az osztályból, illetve annak gyerekosztályaiból lehet elérni.

  • Egy paraméteres konstruktora, amely az url-t várja paraméterül

  • Egy bejelentkezes() metódusa, amely logikai értéket ad vissza, hogy sikeres volt-e a művelet. Ne várjon paramétereket. Ehhez a metódushoz ne tartozzon implementáció, a gyerekosztályokban kelljen megvalósítani.

  • Egy kurzusfelvetel() metódusa, amely logikai értéket ad vissza, és egy paramétert vár, a felvenni kívánt kurzus kódját (char* vagy string). Ehhez a metódushoz se tartozzon implementáció, a gyerekosztályokban kelljen megvalósítani.

Származtass le a TanulmanyiRendszer osztályból egy ETR nevű osztályt.

  • Legyen neki egy paraméteres konstruktora, ami az url-t várja, és inicializálja az ősosztály megfelelő adattagját.

  • Definiáld felül a bejelentkezes() metódust. Írja ki a képernyőre, hogy “sikeres bejelentkezés”, és térjen vissza igazzal.

  • Definiáld felül a kurzusfelvetel() metódusát: írja ki, hogy “Az ETR tanulmányi rendszer 2017.04.06-án 16:00-kor leállt.”.

Származtass le a TanulmanyiRendszer osztályból egy Neptun nevű osztályt.

  • Legyen neki egy adattagja, ami a felület színét (témát) várja (char* vagy string).

  • Legyen neki egy paraméteres konstruktora, ami az url-t és a témát várja, és beállítja őket a megfelelő adattagoknak.

  • Definiáld felül a bejelentkezes() metódust, ami 90% eséllyel sikeres. Ha sikeres, írja ki a képernyőre, hogy “Sikeres bejelentkezés”, majd térjen vissza igazzal. Egyéb esetben írja ki, hogy “The service is unavailable.” és hamissal térjen vissza.

  • Definiáld felül a kurzusfelvetel() metódusát, ami 20% eséllyel sikertelen. Ezesetben írja ki, hogy “Hiba! A kurzusfelvétel nem sikerült, mert nem sikerült a tárgyfelvétel.” Egyébként nézze meg, hogy a paraméterül kapott kurzuskód benne van-e a “kurzusok.txt” fájlban (minden sorban egy kurzuskód szerepel). Ha nincs, akkor írja bele, és térjen vissza igazzal. Ha benne van, akkor szintén írja ki a képernyőre a fenti hibaüzenetet, és hamissal térjen vissza.

  • Készíts egy tematvalt() metódust, ami a kapott paraméter (char* vagy string) értékét beállítja a téma adattagnak, majd kiírja, hogy “Az új téma: <szín>” (a szín helyére a kapott paraméter kerül).

Készíts egy main() függvényt, amely az elkészült tanulmányi rendszerek funkcióit próbálja ki.

Hibrid autók

Készíts egy BenzinesAuto nevű osztályt. Tárold el az autó típusát (char* vagy string), az üzemanyag tank űrtartalmát (egész szám) és a 100 kilométerenkénti fogyasztást (literben, valós szám). Ennek az osztálynak legyen:

  • Konstruktora, ami paraméterben várja a három tulajdonságot és beállítja őket.

  • Konstruktora, ami nem vár paramétert és standard inputról olvassa be a három tulajdonságot.

  • Konstruktora, ami paraméterben egy fájl nevét várja, és onnan olvassa be a tulajdonságokat.

  • Legyen hatotav() nevű metódusa, ami visszaadja, hogy teli tankkal és átlagos fogyasztással számolva, hány km-t tud megtenni az autó

  • Legyen egy kiir() metódusa, ami kiírja az autó nevét és a hatótávját a standard kimenetre.

  • Legyen egy ment() metódusa, ami a paraméterben kapott fájlba kiírja az autó három tulajdonságát (típus, tank mérete és fogyasztás)

Származtass a BenzinesAuto osztályból egy HibridAuto nevű osztályt. Ez az örökölt adattagokon kívül rendelkezzen még egy elektromosHatotav nevű adattaggal, ami km-ben tárolja, hogy tisztán elektromosan hány km-t tudna megtenni, illetve egy logikai típusú adattaggal, ami jelzi, hogy önvezető-e?

  • Legyen egy olyan konstruktora, ami az örökölt adattagok mellett várja még az elektromos hatótáv értékét és azt, hogy önvezető-e?

  • Definiáld felül a hatotav() metódust úgy, hogy a benzines hatótávhoz hozzáadod az elektromosan elérhető hatótáv mértékét.

Írj egy main() függvényt, amiben néhány példával teszteled a programod működését!

Boltok

Készíts egy Bolt osztályt! Adattagként tárold el a bolt nevét, valamint a nyitás és zárás időpontját (csak az órát tárold el, egész számként). Az osztálynak legyen:

  • Konstruktora, ami paraméterben várja a bolt nevét, és a nyitási-zárási időpontokat.

  • Egy konstruktora, ami egy fájlnevet vár és onnan olvassa be a bolt nevét és az időpontokat!

  • Legyen egy statikus vasarlokSzama nevű adattagja, ami boltba betérő vásárlókat fogja számolni.

  • Legyen egy napiZaras() metódusa, amely paraméterben egy fájlnevet vár, és kiírja oda a bolt nevét, valamint azt, hogy hányan voltak eddig a boltban.

  • Legyen egy nyitvaE() metódusa, ami paraméterként egy órát és egy percet vár, és eldönti, hogy az adott időpontban nyitva van-e az adott üzlet? (Ha a bolt 18:00-kor zár, akkor 17:59-kor még nyitva van, de 18:00-kor már nem.) Ha nem adunk meg ennek a metódusnak perc paramétert, akkor az automatikusan 00 értéket jelent.

Származtass le egy EjjelNappali nevű osztályt a Bolt osztályból.

  • Legyen egy paraméteres konstruktora, ami csak a bolt nevét várja, a nyitás és zárás idejét pedig beállítja 0:00-ra és 24:00-ra.

  • Definiáld felül a nyitvaE() metódust, hogy mindig igaz értékkel térjen vissza!

  • Definiáld felül a napiZaras() metódust úgy, hogy kiíráskor a bolt neve mellé odaírja, hogy “Nonstop”.

Írj egy main() függvényt, amiben néhány példával teszteled a programod működését!