56 lines
2.3 KiB
Markdown
56 lines
2.3 KiB
Markdown
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 |