You are on page 1of 2

Dr.

eljko Juri: Tehnike programiranja /kroz programski jezik C++/


Zadaci predvieni za rad na laboratorijskim vjebama uz pomo tutora

Tutorijal 13
Akademska godina 2013/14

Zadaci za Tutorijal 13.


NAPOMENA: Studenti bi trebali da razmisle o zadacima koji e se raditi na tutorijalu prije nego to
dou na tutorijal, tako da ve u startu imaju osnovne ideje kako rijeiti zadatke. U suprotnom, rad na
laboratorijskim vjebama nee biti produktivan. Studentima se toplo savjetuje da dovre samostalno one
zadatke koje nisu stigli uraditi za vrijeme tutorijala, s obzirom da je razumijevanje ovog tipa zadataka od
velike vanosti za polaganje drugog parcijalnog ispita.
1.

Definirajte apstraktnu baznu klasu Lik, koja predstavlja temelj za hijerarhijsku izgradnju
porodice klasa koje predstavljaju geometrijske likove. Klasa treba da sadri privatni atribut
naziv koji sadri naziv lika, zatim isto virtualne metode IspisiAtribute, DajObim i
DajPovrsinu, kao i metodu IspisiPodatke koja ispisuje podatke o liku pozivajui
virtualne metode IspisiAtribute, DajObim i DajPovrsinu. Zatim, iz klase Lik
izvedite tri klase Krug, Pravougaonik i Trougao. U sve tri klase dodajte atribute koji su
neophodni za specifikaciju primjeraka te klase, odgovarajui konstruktor, kao i konkretne metode
IspisiAtribute, DajObim i DajPovrsinu koje ispisuju atribute konkretnog lika,
odnosno vraaju kao rezultat obim odnosno povrinu konkretnog lika. Sa tako definiranim klasama
napravite program koji trai da se sa tastature unese broj likova, i kreira polimorfni niz pokazivaa
na likove. Dalje, korisnik treba da unosi sa tastature podatke o svakom liku u sljedeem formatu:
Kr Krug radijusa r (npr. K5)
Pa,b
Pravougaonik sa stranicama a i b (npr. P3,2)
Ta,b,c
Trougao sa stranicama a, b i c (npr. T3,4,5)

Nakon svakog unesenog podatka, program treba dinamiki kreirati odgovarajui objekat, i smjestiti
pokaziva na njega u niz. Nakon unosa svih podataka, program treba ispisati podatke o svim
unesenim likovima, koristei poziv metode IspisiPodatke.
2.

Definirajte baznu klasu Student i izvedenu klasu DiplomiraniStudent na nain kako je to


uraeno na Predavanju 12 (sa virtualnom metodom Ispisi). Zatim definirajte kontejnersku klasu
StudentskaSluzba koja uva kolekciju podataka o studentima (to ukljuuje i diplomirane
studente). Ova klasa treba da ima sljedee elemente:
a) Privatne atribute broj studenata i Kapacitet koji uvaju redom broj upisanih
studenata odnosno maksimalni dozvoljeni broj studenata koji se mogu upisati (atribut
Kapacitet treba da bude konstantni atribut), kao i privatni atribut studenti koji e sluiti
za pristup dinamiki alociranom nizu koji sadri Kapacitet elemenata, pri emu je svaki
element niza pokaziva na objekat klase Student ili objekat nekog od tipova izvedenih iz
klase Student.
b) Konstruktor sa jednim parametrom i destruktor. Konstruktor treba da izvri dinamiku alokaciju
memorije za prihvatanje najvie onoliko studenata koliko je navedeno parametrom, dok
destruktor treba da izvri oslobaanje svih resursa koje je klasa StudentskaSluzba alocirala
tokom svog rada. Ovaj konstruktor ne smije se koristiti za pretvorbu cjelobrojnih podataka u
objekte tipa StudentskaSluzba. Kopiranje i meusobno dodjeljivanje objekata tipa
StudentskaSluzba treba zabraniti.
c) Metodu UpisiStudenta, koja upisuje novog studenta. Metoda ima dva parametra: ime
studenta (sa prezimenom) i broj indeksa. Ova funkcija kreira novi objekat tipa Student (u
skladu sa parametrima) i upisuje ga u kolekciju. U sluaju da je dostignut kapacitet, treba baciti
izuzetak.
d) Metodu UpisiDiplomiranogStudenta, koja upisuje novog diplomiranog studenta. Metoda
radi slino kao i prethodna, samo to ima i trei parametar koji predstavlja godinu diplomiranja i
kreira objekat tipa DiplomiraniStudent umjesto objekta tipa Student.
e) Metodu IspisiPoAbecedi koja ispisuje podatke o svim studentima sortirane po abecednom
poretku imena. Ispis treba vriti pozivom metode Ispisi, tako da se uvaavaju specifinosti
diplomiranih studenata. Sortiranje treba izvriti pozivom funkcije sort iz biblioteke
algorithm, uz definiranje pogodne funkcije kriterija (koju treba definirati kao statiku
funkciju lanicu).
1

Dr. eljko Juri: Tehnike programiranja /kroz programski jezik C++/


Zadaci predvieni za rad na laboratorijskim vjebama uz pomo tutora

Tutorijal 13
Akademska godina 2013/14

f) Metodu IspisiPoIndeksu koja ispisuje podatke o svim studentima sortirane u rastui


poredak po broju indeksa. Za ovu metodu vrijede iste napomene kao i za prethodnu.
Obavezno napiite i testni program u kojem ete testirati sve elemente navedenih klasa.

You might also like