Vaje OOP - 2 (tvorba razredov)

Razred Košarica

Sestavi razred Kosarica, ki naj vsebuje en sam objekt poljubnega tipa (namig: generični tip).

Ta objekt naj bo privaten, zato sestavi tudi ustrezne metode za branje oz. spreminjanje podatkov (seveda spet z generičnimi tipi).

V razredu prekrij tudi metodo ToString, ki naj vrne niz, ki ga dobimo s klicem metode ToString na objektu, ki ga hranimo v razredu. )Po spletu poišči, kako to naredimo)

Nato sestavi testni program, kjer ustvariš vsaj pet objektov tipa Kosarica,ki hranijo niz, celo število, objekt nekega tvojega tipa (Oseba, Zajec, Vozilo, Ulomek ...), realno število in tabelo celih števil (ki naj vsebuje vsaj štiri števila). Vse te objekte tudi izpiši na zaslon. Zakaj so pri zadnjem objektu težave? Kaj pa pri tretjem z vašim objektom? Od česa je odvisna "pravilnost" izpisa?

Kolo

Napiši razred Kolo, s katerim predstaviš kolesa. Vsako kolo ima neko število prestav, barvo, tip (gorsko, cestno, treking), leto izdelave, in za koliko ljudi je namenjeno. Razred naj vsebuje metodo, ki podatke o kolesu doda na neko datoteko, metodo, ki iz opisa  kolesa (kot je določena pri prejšnji metodi) vrne novo kolo (nov objekt tipa Kolo). Napiši osnovni konstruktor (sami določi privzete vrednosti), dva dodatna konstruktorja, ustrezne get/set metode. Reši naslednje probleme:

  • Sestavi tabelo vsaj 100 koles 
  • Sestavi metodo, ki prebere datoteko s podatki o kolesih in vrne tabelo koles.
  • Izpiši koliko koles posamezne barve je v tabeli koles.
  • Vsa kolesa rumene barve v neki tabeli prebarvaj v rdeče.
  • Koliko ljudi se lahko hkrati pelje s cestnimi kolesi, ki so v tabeli?
  • Odstrani iz datoteke vsa kolesa, ki so starejša od 12 let.
  • Preberite datoteko koles in podatke zapišite na več datotek, ločenih po letu izdelave koles.

Majica

Sestavimo razred Majica, ki hrani osnovne podatke o majici:

  • velikost: število med 1 in 5,
  • barvo: poljuben niz in
  • ali ima majica kratke ali dolge rokave (niza "kratki", "dolgi")

Pri tem interno hranimo podatek o dolžini rokavov kot logično vrednost (npr. true za "kratki"). Vsi ti podatki so javne lastnosti. V primeru, da kdo poskuša podati napačno velikost majice in napačen podatek o dolžini rokavov, naj ustrezna metodo vrže izjemo.

Majice določenih barv I

Sedaj pa naredi sledeče:

  • Je smiselno, da je v kodi predpisano, kaj je najmanjša in kaj največja velikost majice? Izlušči ti dve vrednosti v konstanti in ustrezno popravi kodo
  • Kako bi dosegli, da so majice lahko le določenih barv
    • spremenljiv seznam dovoljenih barv (za vse majice)
    • fiksen seznam začetnih barv (readonly lastnost)
    • dodajanje barv v seznam izvedi takole:
      • z Majica.Barve = "rdeča"; // dodamo rdečo barvo
      • Majica.Barve = ""; // spraznimo vse dovoljene barve, pustimo le prvotni seznam barv
    • če nas zanima, katere barve so trenutno aktualne, uporabimo metodo PovejBarve
    • odvzemanje z metodo OdvzamiBarvo
      • Majica.OdvzamiBarvo("rdeča");
      • vrzi izjemo, če barve ni!

Pripravi ustrezni testni program.

=============================================================================

Registracija

Definiraj razred Registracija, ki vsebuje podatke o registrski številki avtomobila. V Sloveniji je registrska številka sestavljena iz dveh nizov. Prvi niz je območje in vsebuje dve črki, drugi niz pa je registracija in vsebuje pet alfanumeričnih znakov. Na primer, registrska številka LJ V1-02E sestoji iz območja LJ in registracije V102E.

Napiši tudi ustrezni konstruktor, ki sprejme oba niza ter ustrezne Get/Set metode, ToString, ...

V Sloveniji so veljavna območja LJ, KR, KK, MB, MS, KP, GO, CE, SG, NM, PO. Poskrbi, da bodo podatki objekta zagotovo pravilni! Glede na naše umno vodstvo se lahko zgodi, da se bo spisek veljavnih območji spremenil. Zato predvidi ustrezne metode, ki bodo omogočale spremembo tega spiska. Za stare registracije "nam je vseeno", nove pa morajo vedno uporabiti le veljavna območja.

Napiši testni program, ki ustvari tabelo 100 registrskih številk in napiši metodo, ki za dano tabelo reg. številk izpiše tiste reg. številke, ki so iz določenega območja, ki je parameter metode.

Spremeni spisek dovoljenih območij tako, da izločiš območje, ki je najpogosteje in najredkeje uporabljeno. Nato iz prejšnje tabele ustvari novo tabelo, kjer pa seveda ne bo več tablic iz izločenega območja.

=============================================================================

Račun

  1. Definiraj razred Racun, ki ima privatno polje valuta tipa string, ter privatni polji stanje in tecaj, obe tipa double. Polja zaporedoma predstavljajo oznako valute, ki jo račun lahko hrani, količino valute na računu ter menjalni tečaj med valuto in evrom.

    Velja torej formula: (vrednost v valuti) * tecaj = (vrednost v evrih), ne glede na to, ali pretvarjamo iz evra v valuto, ali obratno. 

  2. Napiši konstruktor, ki dobi podani vrednosti za polji valuta ter tecaj, trenutno stanje na računu pa nastavi na 0. 

  3. Razredu dodaj javno lastnost StanjeEUR tipa double, ki vrne stanje na računu v evrih. Stanja na računu preko te lastnosti ne moremo spreminjati. 

  4. Napiši javno metodo Polog, ki kot argument dobi znesek v evrih tipa double, ki ga položimo na račun. Pri tem se opravi pretvorba v valuto, ki se shranjuje na računu. 

Sestavi še ustrezni testni program

=============================================================================


Zadnja sprememba: ponedeljek, 29 marec 2021, 18:57 PM