Navodila za nalogo
Vsi razredi naj obvezno vsebujejo:
- Minimalni (tj. prazni) kontruktor public Razred(), ki tvori objekt s privzetimi (smiselnimi!) vrednostmi.
- Metodo public override string ToString(), ki vse podatke v objektu zapiše v obliki niza. Podatki naj bodo med seboj ločeni z znakom ';'.
- Polni konstruktor public Razred(string s), ki s klicem Razred(niz) generira tak objekt Razred r, za katerega velja niz = r.ToString().
- Metodo DodajNaDatoteko(string imeDatoteke), ki objekt this zapiše (oz. doda; glej metodo File.AppendText()) kot vrstico this.ToString() v tekstovni datoteki.
- Metodo PreberiZDatoteke(string imeDatoteke), ki vrne tabelo objektov, kjer posamezni objekt vsebuje podatke, ki so zapisani v posamezni vrstici tekstovne datoteke.
- Metodo IzpisiDatoteko(string imeDatoteke), ki izpiše vsebino datoteke.
- Metodo TvoriDatoteke(string imeDatoteke, int stElementov), ki tvori naključno datoteko.
- Če je potrebno, napišite še metodo, ki izpiše tabelo elementov tega razreda.
Vsi razredi morajo biti robustni – vsi konstruktorji in metode morajo biti taki, da objekta ne spravijo v nesmiselno stanje. Če je potrebno, pri klicu metode s nedopustnimi parametri sproži izjemo. Razred je potrebno napisati kot 'class library' v ločenem projektu v isti rešitvi. Pri sestavljanju razredov si prej oglejte probleme, ki jih rešujete, da boste vedeli, kako mora biti razred zgrajen (katere podatke in metode naj vsebuje). V testnem programu, s katerim prikažete ključne funkcionalnosti razreda, naredite naslednje:
- Napišite ustrezne metode za reševanje zastavljenih problemov.
- V programu samem pa po vrsti
- Pokličite metodo, ki na datoteko zapiše ducat objektov.
- Preberite vse podatke z datoteke v tabelo.
- Tabelo pregledno izpišite.
- Nato kličite metode, ki so potrebne, da rešite zastavljene probleme in pregledno izpišite rezultate.
- Na koncu na isto datoteko ponovno zapišite vse objektov (ne glede na to, ali so jih zgornje metode spremenile ali ne).
Napišite razred Kvadrat, s katerim predstavite kvadrat v ravnini, katerega stranice so vzporedne koordinatnim osem. Kvadrat je predstavljen s koordinatama stredišča in dolžino stranice.
- Sestavite metodi za izračun ploščine in obsega kvadrata.
- Izračunajte, kakšno površino prekrijejo kvadrati v dani tabeli. Upoštevajte, da se lahko kvadrata tudi prekrivata.
- Iz dane datoteke kvadratov izbrišite tiste, ki v svoji notranjosti vsebujejo koordinatno izhodišče.
- Vsem tistim kvadratom v tabeli, katerih obseg je več kot 10% manjši od povprečnega obsega vseh kvadratov, spremenite stranico tako, da bodo imeli obseg (do zaokrožitvene napake) enak povprečnemu.
- Za vse kvadrate v tabeli preverimo, če se prekrivata, in če se izbrišemo tistega z večjo ploščino.
Ideja rešitve
Napišemo razred za objekt Kvadrat, ki je definiran s koordinatama središča in dolžino stranice. V razredu zapišemo vse zgoraj naštete metode, ki jih potrebujemo za nadaljnje delo z razredom.
- Metodi za ploščino in obseg napišemo enostavno tako, da na koncu vrnemo izračun.
- Za skupno ploščino kvadratov si napišemo pomožno metodo, ki nam vrne ploščino prekritega dela kvadratov. Te prekrite dele nato odštejemo od skupne ploščine vseh kvadratov.
- Za izbris kvadratov potrebujemo le premislek, kdaj koordinatno izhodišče leži v objektu.
- Za spremembo stranice pa potrebujemo izračun povprečnega obsega, potem pa še izračun velikosti posameznega obsega glede na povprečnega.
- Za prekrivanje, pa se spet sklicujemo na pomožno metodo PrekritaPl. Če se kvadrata prekrivata, potem mora metod vrniti rezultat različen od 0. V tem primeru pa potem pogledamo, kateri kvadrat je večji in ga izbrišemo.


