Objektumorientált alapfogalmak

Dobra Gábor · 2019.02.27.

A mai óra célja az alábbiak elsajátítása:

  • egységbe zárás értelme és nyelvi elemei
  • adatrejtés értelme és nyelvi elemei
  • operator overloading alapjai

Felkészülés a gyakorlatra

1. OOP fogalmak

A gyakorlatvezető segítségével tekintsétek át az OOP szemléletmódot, OOP elveket, fontosabb fogalmakat, és az operator overloading-ot.

Összefoglaló

Fontosabb OOP elvek:

  • egységbe zárás
  • adatrejtés
  • újrafelhasználhatóság (öröklés)
  • polimorfizmus (nem csak az öröklés)

Fogalmak:

  • osztály
  • objektum
  • példány, példányosítás
  • interfész
  • tagfüggvény
  • this pointer
  • konstruktor

Operator overloading: nem OOP elv, csak syntactic sugar.

2. Idopont osztály

Írjunk Idopont osztályt! Kiindulási alap az, amit Prog1 5. gyakon írtunk. Egyelőre koncentráljunk az OOP nyelvi elemekre, a műveleteket írjuk meg később (következő feladat)!

Mi legyen a belső adatszerkezet? Emlékezz vissza, hogy C-ben mennyi macera volt azzal, hogy mindent átváltottunk éjfél-óta-eltelt-percekre, elvégeztük a kívánt műveletet, majd visszaosztottuk óra-percre.

Ötlet

Mivel az adattagok átlátszatlanok, és csak a tagfüggvények látnak bele, akár tárolhatnánk az éjfél-óta-eltelt-percek mennyiséget.

3. Idopont: kiíró, beolvasó operátorok

Írjunk kiíró és beolvasó operátorokat a típusunkhoz!

Idopont i1;
std::cin >> i1;
std::cout << i1 << std::endl;
Megoldás

Első változat: idopont1.cpp letöltése

4. Idopont: összeadás, kivonás

Írjuk meg ezeket az operátorokat is:

  • Idopont + perc = Idopont
  • Idopont - perc = Idopont
  • perc + Idopont = Idopont
  • Idopont - Idopont = perc

5. Idopont: += és -= operátorok

Ha van Idopont + perc = Idopont, akkor legyen Idopont += perc is! Kivonásra ugyanígy.

6. Idopont: több modulra bontás

Beszéljétek át a több modulra bontás lehetőségeit!

Lehetséges megoldások
  • minden a header-ben van
  • fontosabb dolgok külön cpp fájlba kerülnek, az egysorosak nem
  • mindent a cpp fájlban definiálunk
Megoldás