You are on page 1of 1

Fakultet elektrotehnike, računarstva i informacijskih tehnologija 1.

Kolokvij
Objektno orijentirano programiranje 21.11.2017.

Prezime: Ime: Grupa LV:

Grupa A
# Zadatak (B)
Kreirajte klasu koja predstavlja ventil. Svaki ventil može u sekundi propustiti određen
maksimalan broj litara vode i biti otvoren određeni postotak. Pružiti konstruktore
(podrazumijevani i parametarski). Pružiti javno sučelje za otvaranje i zatvaranje ventila u
potpunosti, ali i postavljanje na određeni postotak. Kroz javno sučelje omogućiti provjeru
trenutne otvorenosti ventila te provjeru maksimalnog protoka. Omogućiti usporedbu dvaju
1. 20
ventila, veći je onaj koji trenutno propušta veću količinu vode. Kao test klase potrebno je
napraviti polje ventila s nasumično generiranim protokom u intervalu [1,20] litara/sekundi i
postotkom otvorenosti [0.0,1.0]. Ako ovo polje predstavlja sustav spojen na spremnik s
tekućinom i kroz sve ventile se istovremeno pusti 8479 litara tekućine, napišite kod koji računa
i ispisuje koliko dugo će trajati istjecanje tekućine.
Kreirajte klasu koja predstavlja bateriju, s maksimalnim kapacitetom i trenutno dostupnim
kapacitetom u mAh. Definirajte podrazumijevani i parametarski konstruktor tako da svaka
nova baterija dolazi potpuno napunjena. Omogućite dohvaćanje maksimalnog kapaciteta, te
umanjenje trenutno dostupnog kapaciteta baterije za predanu vrijednost. Kroz javno sučelje
klase omogućite računanje trenutnog stanja baterije u postotcima. Omogućite i provjeru je li
2. bateriju potrebno puniti (jest ako je ispod 15%). Omogućite ispis baterije u obliku: cout << 25
battery; gdje je izlaz: „Battery: [max.kapacitet]mAh [posto]% remaining.“ Napišite prijateljsku
funkciju koja računa vrijeme potrebno za punjenje baterije. Funkcija kao argument (uz druge
nužne argumente) prima jakost struje punjača u miliAmperima, a vraća broj sati koji je
potreban da se baterija napuni. Uzmite da je gubitak kod punjenja 20%. U glavnoj funkciji
kreirati bateriju, ispisati ju, isprazniti ju po volji i ispisati koliko će biti potrebno da se napuni.
Napišite klasu koja predstavlja lozinku i čuva ju u obliku stringa. Omogućiti kreiranje lozinke
parametarskim konstruktorom, usporedbu jednakosti dviju lozinki te metodu koja sadržaj
lozinke vraća u obliku stringa, ali skrivenog sadržaja (npr: "****", gdje broj zvjezdica odgovara
duljini lozinke). Kreirajte sučelje (interface) koje sadrži metodu za generiranje objekta lozinke
na temelju predanog stringa. Kreirajte konkretnu klasu koja implementira ranije sučelje, a
predstavlja generator zasoljene lozinke s atributom za potreban broj znakova za soljenje.
3. 30
Omogućiti njegovo postavljanje kod stvaranja objekta. Lozinka se "soli" tako da se na kraj
njenog sadržaja dodaju nasumični znakovi (u rasponu 'a' - 'z'). Kao test klase potrebno je
napraviti jedan objekt klase lozinka parametarskim konstruktorom te drugi objekt korištenjem
konkretnog generatora preko pokazivača koji je tipa sučelja i stringa koji je unesen s konzole.
Ako su dvije kreirane lozinke jednake, potrebno je zapisati jednu od njih u obliku skrivenog
stringa u tekstualnu datoteku s vašim prezimenom.

Napomene: Programski jezik C++. U potpunosti rukovati memorijom. Poštovati pravila enkapsulacije.
Deklaracije u klasi, definicije van klase. Inicijalizacijske liste konstruktora. Izbjeći bespotrebno kopiranje
objekata. Osigurati rad s konstantnim objektima gdje je to moguće.

You might also like