Objektum orientált programozás

gyakorlat

2023

Visual Studio


Információk

Tantárgyi információk

Tantárgy adatlapja

Teams anyagok

Visual Studio

Telepítési útmutató
  1. Tanulásra szolgáló ingyenes verzió letöltése: (Microsoft fiók kell hozzá)

    Egyetemi verzió letöltése: (edu-s email cím, és termékkulcs kell hozzá)

  2. A letöltött telepítőt futtassuk, ha szükséges, akkor rendszergazdaként.
  3. Válasszuk ki a .NET desktop development és Desktop development with C++ munkakörnyezeteket. A későbbi tanulmányokban szükségünk lesz a C++/CLI-re, ennek támogatását jobb oldalon a C++/CLI support elem bepipálásával adhatjuk még hozzá.
  4. A telepítés befejezésekor egy ingyenesen létrehozható Microsoft fiókkal léphetünk be (Community verzió), vagy meg kell adni a termékkulcsot (Enterprise verzió).

Számonkérések

Pontok eloszlása: 1. ÖT 25 pont, 2. ÖT 25 pont

L04 (Sz 14:15-16:00) D502
  • 1. ÖT: 2023.10.18. 14:15
  • 2. ÖT: 2023.12.06. 14:15
  • 1. PÖT: 2023.12.14. 10:15
  • 2. PÖT: 2023.12.14. 12:15

Oktató értékelése

Belső OHV (anonim, a laborfoglalkozások végén tölthető ki)

Live Stream

Órai kód megtekintése (laboridőpontban, a laborhálózatról)

1. óra

Tananyag

Órai anyag


2. óra

Tananyag

  • Függvények
    • Függvény definíciója, hívása (cpp és header állomány készítése)
    • Paraméter átadási módok
      • érték szerinti
      • változó címének átadása (pointer)
      • referencia szerinti
    • Értékek visszaadása (void, visszatérési típus alapján (return), pointereken/referenciákon keresztül)
    • Tömb átadása függvénynek
    • Alapértelmezés szerinti (default) argumentum
    • Függvények átdefiniálása (overload)
    • Függvénysablon (template) használata
    • Rekurzív függvény

Órai anyag

Gyakorló feladat

  • Készítsen el egy terület kiszámító túlterhelt (overload) függvényt, amely egy vagy két oldalhossz megadása alapján egy négyzet vagy egy téglalap területét adja vissza.
  • A függvények különböző típusú adattípusokkal is működjön (int, long long, double, float).
  • A függvények utolsó argumentuma legyen egy logikai bemenet, amely default értéke false. Ha az érték true, akkor a függvény meghívás esetén írja ki a képernyőre a megadott oldahosszakat és a területet debug célból.

3. óra

Tananyag

Órai anyag

Gyakorló feladat

  • Készítsen egy hagyományos függvényt, amelynek két paramétere egy-egy Vektor lesz. A függvény határozza meg a két Vektor eredőjét. A függvény ne legyen barát függvény.
  • Készítsen egy barát függvényt, amelynek két paramétere egy-egy Vektor lesz. A barát függvény határozza meg a két Vektor skaláris szorzatát.
  • Készítsen az osztályon belül egy tagfüggvényt, amely az adott példány irányultságát elfordítja 90 fokkal.

4. óra

Tananyag

  • <string>
    • = .assign //értékadás
    • [] .at() //karakter értéke
    • + += .append() //összefűzés
    • .length() .size() //hossz
    • .erase(pos,size) //törlés
      • .erase(iterator), .erase(iterator first, iterator last);
    • .empty() //üres-e?
    • .substr(kez,hossz) //rész szöveg
    • .find(karakter) //keresés
      • .find(string) // ha nincs, akkor string::npos
    • .c_str() //konvertálás char*-ra
    • .insert(index,szöveg) //hozzáad
    • .replace(pos,hossz,szöveg) //lecserél
    • .copy(hova char*,len,pos) //másolás char*-ba

Órai anyag

Gyakorló feladat

Elemezze a következő verset: (forrás: https://www.nng.com/hanagyleszek)


string vers = "Tudom en mar, mit csinalok:\n
szoftverfejlesztonek allok.\n
Lesz majd harom monitorom,\n
a szekemet odatolom,\n
bucsut intek minden nyugnek,\n
Nyomkodom a billentyuket.\n
Mozi, szinhaz? Masnak hagyom,\n
nekem mindig van programom.\n
Kodot irok, mint a kemek,\n
szamitogepul beszelek.\n
Kitalalsz egy jo kis tervet,\n
elmondom a kompjuternek.\n
Igy fejlesztek szoftvert, sokat,\n
telefonra jatekokat,\n
GPS-t a kocsitokba\n
(belefer egy kicsi tokba),\n
szimulalhatsz helikoptert,\n
hogyha irok neki szoftvert,\n
hatart csak a kepzelet szab!\n
Es egesz nap gepezek csak.\n";

Határozza meg:

  • a határozott és határozatlan névelők számát
  • a mondatok számát
  • a magánhangzók számát

5. óra

Tananyag

  • Fájlkezelés: <fstream>
    • ifstream //bemenő file ios::in
    • ofstream //kimenő file ios::out
    • fstream //ki/bemenő file
    • .open(fájlnév char*, mod) //open
      • ios::app //hozzáírás
      • ios::in //nyitás olvasásra
      • ios::out //nyitás irásra
      • ios::trunc //régi fájltartalom eldobása
      • ios:binary //bináris állomány
    • .good(), .bad(), .fail(), .eof(), is_open() //hibák detektálása
    • .seekg() //pozicionálás olvasásánál
    • .tellg() //méret olvasásnál
    • .seekp() //poz írásnál
    • .tellp() //méret írásnál
    • .flush() //kiíratás
    • .close() //bezárás
    • .clear() //újrainicializál
    • .read() //blokk olvasása
    • .write() //blokk írása
    • get(), getline(fs, szöveg, delim)

ttt_BMEGEMIBMOO_2023o.csv

Órai anyag

Gyakorló feladat

  • Készítsen Excel segítségével egy olyan CSV fájlt, amely 3 oszlopában egy-egy 3D-os vektor (x,y,z) koordinátája található.
  • Olvassa be a fájlt és készítsen egy másik fájlt, amely a beolvasott sorokban található vektorok hosszát fogja tartalmazni.
  • A feladathoz készítsen osztályt!

6. óra

Gyakorlás

  • Készítsen egy Szamol osztályt, amelyben két rejtett adattag legyen (sebesség, idő).
  • Készítsen egy olyan 2 paraméteres konstruktort, amely inicializálja az adattagokat.
  • Készítse el az adattagok tagelérő getter/setter függvényeit.
  • Készítsen egy Tavolsag számító tagfüggvényt.
  • Készítsen egy ostream kezelő kimenetet az osztály adatainak kiíratásához. (*** m/s\t**:**\t*** m)
  • Olvassa be a gyak.txt fájlt.
  • Soronként szedje ki az adatokat és töltse fel az osztályt.
  • Határozza meg a megtett távolságokat méter-ben.
  • Egy másik fájlba írja ki az eredményeket az osztályhoz elkészített formában.
  • Mennyi volt a legnagyobb megtett távolság?

Gyakorló feladatok

  1. A fájlban található feladatot oldja meg osztály felhasználásával!
    tavolsagok.txt
  2. A szövegfájlban található számokat egyesével adja át egy Statisztika osztálynak, amelyben mindig lekérdezhető, hogy melyik szám volt a legnagyobb/legkisebb, mennyi a számok összege/átlaga.
    szamok.txt

7. óra

1. ÖT


7. óra

Tananyag

Órai anyag

Gyakorló feladat

  • Készítsen egy Masodfoku nevű osztályt.
  • Legyenek rejtett adattagjai az egyenlet együtthatói (a,b,c).
  • Készítse el az osztály konstruktorát, amely az adattagokat inicializálja.
  • Kerüljön be az osztályba két komplex típusú változó (eredmeny1 és eredmeny2), amelyek szintén rejtettek.
  • Készítsen egy Megold() nevű belső függvényt, amely az együtthatók alapján elkészíti az eredményeket. Az együtthatóktól függően több eset is előállhat:

    eset

    üzenet

    eredmeny1

    eredmeny2

    0

    AZONOSSÁG

     

     

    1

    ÉRTELMETLEN

     

     

    2

    ELSŐFOKÚ EGYENLET

    x

    3

    KONJUGÁLT KOMPLEX GYÖKPÁR

    Re(x)+ Im(x)

    Re(x)-Im(x)

    4

    KÉT AZONOS VALÓS GYÖK

    x1,2

     

    5

    KÉT KÜLÖNBÖZŐ VALÓS GYÖK

    x1

    x2

  • Készítsen el egy olyan rejtett adattagot, amely a megoldás során keletkező esetszámot tárolja.
  • Készítsen egy olyan output operátort, amely az átadott példány együtthatóit és a megoldás eredményeit formázottan kiírja a képernyőre.
  • Módosítsa úgy a konstruktort, hogy a megoldás azonnal elkészüljön.
  • Mutasson példát az alkalmazására.

9. óra

Mindenszentek - oktatási szünet


10. óra

Tananyag

Órai anyag

Gyakorló feladat

  • Készítsen el egy gömb reprezentálására alkalmas osztályt, úgy hogy egy p3D osztályból örökölteti a középpontját! Számítsa ki a térfogatát, felszínét! Készítsen el egy olyan metódust, amely meghatározza, hogy egy másik gömbbel van-e közös részük!
  • Készítsen el egy gömb reprezentálására alkalmas osztályt, úgy hogy építsen be egy p3D példányt a középpontnak! Számítsa ki a térfogatát, felszínét! Készítsen el egy olyan metódust, amely meghatározza, hogy egy másik gömbbel van-e közös részük!

11. óra

Dékáni szünet


12. óra

Órai anyag

Gyakorló feladat

  • Készítsen el egy 3D-os pontokat tartalmazó osztályt! Készítsen el egy olyan szakasz osztályt, amely 2 db pontot használ fel. Készítsen egy olyan függvényt, amely n darabra osztja fel a szakaszt és egy vectorba adja vissza a pontok koordinátáit!

13. óra

Gyakorló feladatok

  1. Készítsen egy olyan osztályt, amely egy 3D-os vektor tárolására alkalmas. Értelmezze a következő operátorokat
    + - összeadás
    - - kivonás
    * - vektoriális szorzás
    ! - normalizálás
  2. Készítsen egy olyan Sikidom absztrakt osztályt, amely a síkidom kerületét, területét és másodrendű nyomatékát tartalmazza virtuálisan. Készítsen egy Negyzet osztályt, amely örököse a Sikidom osztálynak. Határozza megy az adott négyzet kerületét, területét és másodrendű nyomatékának értékeit.
  3. Készítsen el egy 3D-os pontokat tartalmazó osztályt! Készítsen el egy olyan szakasz osztályt, amely 2db pontot használ fel. Készítsen egy olyan metódust, amely n darabra osztja fel a szakaszt és vissza adja a pontok koordinátáit!
  4. Készítsen egy Lottohuzas osztályt. A konstruktora segítségével állítsa be a húzások számát és a legnagyobb kihúzható számot. A kihúzott számokat egy belső tömbben tárolja. Egy sorsolás függvény segítségével ismétlődésmentesen generálja le a számokat. Készítse el az osztály cout adatfolyamra történő kiíratását úgy, hogy a kisorsolt számok növekvő sorrendben szerepeljenek. Ne feledje el a belső tömb felszabadítását a destruktorban.
  5. A fájlban található gyümölcsnevek elé írjuk be a magyar nyelv szabálya szerint a határozott névelőt. A névelővel rendelkező gyümölcsöket írjuk ki fordított sorrendben egy másik fájlba. A beolvasáshoz használjon láncolt listát!
    gyumolcs.txt
  6. Egy fájlban soronként szerepelnek a hallgatók nevei a felvett tárgy neve, kreditje és az elért eredmény. Határozza meg az egyes hallgatók tanulmányi átlagát, és az átlagnak megfelelően csökkenő sorrendben írassa ki a neveket. Határozza meg a minimum, maximum és az átlag értékeket.
    TanAtlag.txt
  7. Egy listában soronként szerepelnek a hallgatók nevei a felvett tárgy neve, kreditje és az elért eredmény. Határozza meg az egyes hallgatók korrigált tanulmányi átlagát. Határozza meg az ösztöndíjak értékét, ha a mechatronikás szakminimumKKI 3.8, a minimum összeg 6000 Ft, a maximum összeg 30000Ft. A képlet: 6000+(SajátKKI-szakminimumKKI)*(maxÖsszeg-6000)/(5-szakminimumKKI)). A neveket az ösztöndíj értékek alapján csökkenő sorban írassa ki.
    TanAtlag.txt
  8. Egy fájlban gyerekek nevei és testmagasságuk van feljegyezve. Ezeket az adatokat olvassa be egy Gyerek osztályt tartalmazó listába. A gyerekek egy kalandparkba mennek, ahol az egyes csúszdákra elő van írva egy minimális magasság, az alacsonyabb gyermekek nem használhatják. Készítsen több Csuszda osztályt, amelybe beállítható a megkívánt magasság. Az osztálynak legyen egy Mehet metódusa, amely egy listában visszaadja, hogy a csoportból kik vehetik igénybe a csúszdát.
    Csuszda.txt

Zh

Zh feladatok:

  • Olvassa be a foci.txt fájl tartalmát.
  • A csapatok számára készítsen egy osztályt, amelyben eltárolja, hogy hányszor nyert, vesztett vagy játszott döntetlent. A nyert meccsek után 3 pont, a döntetlen után 1 pont jár a csapatnak.
  • A pontszám alapján listázza ki a tabellát.
  • A tabellát „list” STL tárolóban tárolja.
  • A csapatok neveit nem adhatja meg kézzel, azokat a fájlból kell felismerni.

  • Olvassa be az f1.txt fájl tartalmát.
  • A szükséges adatok számára készítsen egy osztályt.
  • Az osztályokat „vector” STL tárolóban tárolja.
  • Határozza meg, hogy az egyes pályákon melyik két versenyző volt a leggyorsabb.
  • Listázza ki a pálya nevét, a köridőt és a versenyző nevét. A kiíratást rendezze a pályák neve alapján, majd a köridők szerint. A pályák neveit nem adhatja meg kézzel, azokat a fájlból kell felismerni.

14. óra

2. ÖT



Elérhetőség