Napišite enum razred ColorCode, ki ima vrednost:
Red = 31,
Green = 32,
Blue = 34
Default = 39
Priložen imate razed PrintUtility, ki ga vključite v svoj projekt, saj ga boste pri tej nalogi uporabili. Le-ta nam bo omogočil, da izpisujemo lahko barvno besedilo v konzoli. Vendar, da bo to delovalo, je potrebno na začetek funkcije main dodati vrstico:
system(("chcp "s + std::to_string(65001)).c_str());.
Lahko se zgodi, da v primeru uporabe kakšnega drugega programa (kaj drugega kot CLion) ta funkcionalnost ne bo delala.
Napišite razred Shape2D, ki ima:
instančno spremenljivko color (tip ColorCode),
konstruktor z 1 parametrom,
abstraktno metodo getSurfaceArea in
abstraktno metodo draw.
Napišite razred Rectangle, ki deduje iz razreda Shape2D in ima:
dodatni instančni spremenljivki width in height,
konstruktor s 3 parametri,
implementirani metodi getSurfaceArea in draw,
metodo toString.
Z metodo getSurfaceArea želimo dobiti vrednost ploščine lika.
V metodi draw je pričakovano, da izrišemo lik (lahko s pomočjo zvezdic).
Napišite razred Canvas, ki ima:
instančno spremenljivko shapes (tip vector<Shape2D*>),
metodo addShape, ki doda lik v shapes, in
metodo print, ki izriše vse like.
Dodajte še sami eni razred, ki bo dedoval iz razreda Shape2D.
V glavnem programu ustvarite en objekt tipa Canvas in ga napolnite z vsaj 5 liki.
Za nalogo narišite UML diagram. Lahko na list papirja, vendar ga je treba slikati ali skenirati in tudi oddati na eštudij. Lahko pa ga ustvarite s pomočjo https://app.diagrams.net/ ali s podobno aplikacijo.
Pri reševanju naloge upoštevajte vso dosedaj pridobljeno znanje (uporaba inicializacijskega seznama, konstantne metode, zapišite si metode get/set tam, kjer jih potrebujete itd.).
Primer izpisa glavnega programa.
int main() { system(("chcp "s + std::to_string(65001)).c_str());
Canvas c;
c.addShape(new Rectangle(ColorCode(ColorCode::Green), 5, 2));
c.addShape(new Rectangle(ColorCode(ColorCode::Blue), 10, 5));
c.print();
return 0;
}
Uporabi:
PrintUtility.cpp PrintUtility.h