Znalost těchto tříd by vám měla šetřit čas při programování, proto jsem se i tento článek snažil napsat tak, aby nikdo nemohl říct: „To si to sám napíšu dřív, než tohle přečtu!“ :-). Jestli se mi to povedlo, už musíte posoudit sami.
CL_Point a CL_Pointf
Dvě třídy, jejichž použití je zcela analogické. První je určena pro práci s celými čísly, druhá pro práci s čísly reálnými. Abychom nemuseli psát (resp. číst) dvakrát skoro to samé, budeme se nadále zabývat první z nich.
Veškerá informace, kterou v sobě objekty třídy CL_Point nesou, je informace o jejich poloze, tj. x-ová a y-ová souřadnice.
K souřadnicím můžeme přistupovat přímo přes veřejné proměnné x, y.
CL_Point p(10, 15); int xova = p.x; int yova = p.y;
Hodit se nám jistě budou konstruktory:
CL_Point(int x, int y); CL_Point(const CL_Point &p);
První vytvoří bod na zadaných souřadnicích. Druhý vytvoří bod na souřadnicích stejných, jako jsou souřadnice bodu předaného jako argument p. Použít můžeme i konstruktor bez argumentů, ten však vytvoří bod na náhodných souřadnicích.
Důležité je, že můžeme využít následující užitečné metody a přetížené operátory:
Metoda rotate(), jak vidíte, slouží k otočení našeho bodu okolo jiného bodu o zadaný úhel.
Metoda distance() vrací vzdálenost našeho bodu od bodu zadaného.
Přetížený operátor += posune náš bod o vektor daný parametrem p a počátkem, tj. bodem na souřadnicích (0, 0), ve směru od počátku k zadanému bodu.
Operátor -= se chová jako výše popsaný operátor += s tím rozdílem, že posunuje v opačném směru.
Operátor + vrací bod, který by vznik použitím operátoru +=, avšak náš bod ponechává nezměněný, tj. vytváří nový bod.
Operátor – funguje analogicky jako operátor +.
K dispozici máme také přetížený operátor ==, který vrací true, mají-li porovnávané body shodné souřadnice. Operátor != naopak vrací true v případě, že porovnávané body mají různé souřadnice.
CL_Size a CL_Sizef
Třída CL_Size (a analogická třída CL_sizef) je ještě jednodušší než třída CL_Point. Uchovává také dvě hodnoty ve dvou veřejných proměnných. Proměnné jsou pojmenovány width (šířka) a height (výška).
Konstruktory fungují obdobně jako u CL_Point
CL_Size(int width, int height); CL_Size(const CL_Size &s);
Použít můžeme opět několik přetížených operátorů, jejichž definice jsou myslím samovysvětlující:
CL_Size& operator += (const CL_Size& s);
Vrací náš objekt s šířkou zvětšenou o šířku předaného objektu s a výškou zvětšenou o výšku předaného objektu s.
CL_Size& operator -= (const CL_Size& s)+
Analogicky jako +=, avšak zde naše rozměry zmenšujeme o rozměry argumentu.
CL_Size operator + (const CL_Size& s) const;
Vrací nový objekt s výškou rovnou součtu výšek našeho a předaného objektu a s šířkou rovnou součtu šířek našeho a předaného objektu.
CL_Size operator - (const CL_Size& s) const;
Analogicky s předchozím, avšak šířka nového objektu bude rovna rozdílu naší šířky a šířky předaného. Obdobně výška.
bool operator == (const CL_Size& s) const;
Vrátí true, jestliže porovnávané objekty mají stejné oba rozměry.
bool operator!=(const CL_Size &s) const;
Vrátí true, jestliže se alespoň jeden z rozměrů liší.
Závěr
Asi by každý z vás dovedl podobné třídy naprogramovat sám, avšak po přečtení dnešního článku se, jak doufám, místo toho budete moci věnovat něčemu zábavnějšímu.