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), 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