Professional Documents
Culture Documents
OOPT Lab Zadaci
OOPT Lab Zadaci
OBJEKTNO-ORIJENTISANOG PROGRAMIRANJA
(KIT, RUSN)
UPUTSTVO:
Student radi zadatak shodno njegovom rednom broju. Ukoliko je redni broj vei od broja
zadataka, krenuti sa brojanjem iz poetka. Na primer:
Zadatak 1. Na programskom jeziku C++ kreirati klasu Set koja e kao privatne lanove
imati broj elemenata skupa i dinamiki niz elemenata tipa int, a kao javne (public)
sledee funkcije lanice:
default konstruktor koji postavlja broj elemenata skupa na 0,
konstruktor za postavljanje broja elemenata skupa i zauzimanje neophodnog
prostora u memoriji,
destruktor,
konstruktor za kopiranje,
inline funkciju koja vraa broj elemenata skupa,
funkciju koja ispituje da li zadati element pripada skupu,
funkciju za uitavanje elemenata skupa sa standardnog ulaza,
funkciju za prikaz elemenata skupa na standardni izlaz.
U funkciji main kreirati objekat klase Set od 10 elemenata, uitati njegove elemente sa
standardnog ulaza, ispitati da li broj 45 pripada tom skupu. Zatin kreirati drugi vektor
kao kopiju postojeceg i broj njegovih elemenata, kao i sve elemente prikazati na
standardni izlaz.
Zadatak 2. Na programskom jeziku C++ kreirati klasu Student koja e kao privatne
lanove imati ime i prezime studenta, broj indeksa, maksimalni broj ispita, broj
poloenih ispita, vektor ocena zapamen u dinamikoj zoni memorije, a kao javne
(public) sledee funkcije lanice:
konstruktor koji inicijalizuje maksimalni broj ispita na fakultetu,
destruktor,
konstruktor za kopiranje,
inline funkcije koja vraaju broj indeksa i broj poloenih ispita,
funkciju koja u niz ocena dodaje ocenu sa poslednjeg poloenog ispita,
funkciju za uitavanje podataka o studentu sa standardnog ulaza,
funkciju za prikaz podataka o studentu na standardni izlaz.
U funkciji main kreirati objekat klase Student (pri emu je ukupan broj ispita na fakultetu
30), uitati podatke o studentu sa standardnog ulaza i u vektor ocena sa poloenih
ispita dodati mu ocenu 8. Zatim kreirati drugi objekat klase student (kao kopiju
postojeeg) i prikazati njegove podatke na standardni izlaz.
Zadatak 3. Na programskom jeziku C++ kreirati klasu Poligon koja e kao privatne
lanove imati broj temena poligona i dinamiki vektor x i y koordinata temena, a kao
javne (public) sledee funkcije lanice:
konstruktor bez argumenata koji postavlja broj temena na 0,
konstruktor koji inicijalizuje broj temena u poligonu,
destruktor,
konstruktor za kopiranje,
inline funkciju koja vraa broj temena poligona,
funkciju koja izraunava obim poligona,
funkciju koja uitava koordinate temena poligona sa standardnog ulaza,
funkciju koja prikazuje koordinate temena na standardni izlaz.
U funkciji main kreirati objekat klase Poligon sa 10 temena, uitati koordinate njegovih
temena sa standardnog ulaza, i prikakazati njegov obim na standardni izlaz. Zatim
kreirati drugi objekat klase Poligom (kao kopiju postojeeg) i na standardni izlaz
prikazati broj njegovih temena i njihove koordinate.
Zadatak 4. Na programskom jeziku C++ kreirati klasu String koja e kao privatne
lanove imati duinu stringa i znakovni niz (niz tipa char) zapamen u dinamikoj zoni
memorije, a kao javne (public) sledee funkcije lanice:
konstruktor bez argumenata koji postavlja duinu stringa na 0,
konstruktor koji inicijalizuje diinu znakovnog niza i rezervie prostor u
dinamikoj zoni memorije za njegovo predstavljanje,
destruktor,
konstruktor za kopiranje,
inline funkciju koja vraa duinu stringa,
funkciju koja pronalazi poetnu poziciju zadatog podstringa u stringu,
funkciju za uitavanje stringa sa standardnog ulaza,
funkciju za prikaz stringa na standardni izlaz.
U funkciji main kreirati objekat klase String ija je maksimalna duina 10 karaktera,
uitati njegovu vrednost sa standardnog ulaza i na standardni izlaz prikazati poruku o
tome da li uneti string sadri podstring ana. Zatim kreirati drugi string kao kopiju
postojeeg i njegovu duinu i sadraj prikazati na standardni izlaz.
Zadatak 5. Na programskom jeziku C++ kreirati klasu Image koja e kao privatne
lanove imati kvadratnu matricu celobrojnih podataka (0 i 1) zapamenu u dinamikoj
zoni memorije, a kao javne (public) sledee funkcije lanice:
default konstruktor koji postavlja dimenziju matrice na 0,
konstruktor za postavljanje veliine matrice,
destruktor,
konstruktor za kopiranje,
inline funkciju koja vraa dimenziju matrice,
funkciju koja invertuje sliku (gde je bila 0, postavlja 1 i obrnuto),
funkciju koja uitava sadraj slike sa standardnog ulaza,
funkciju koja prikazuje sadraj slike na standardni izlaz.
U funkciji main kreirati objekat klase Image veliine 10x10, uitati njegov sadraj sa
standardnog ulaza i invertovati je. Zatim kreirati drugi objekat klase Image kao kopiju
postojeeg i na standardni izlaz prikazati njegovu veliinu i sadraj.
Operatorske funkcije
Nasledjivanje
operatorsku funkciju ++ koja aurira broj plaenih rata nakon uplaene rate,
funkciju koja izraunava neplaceni deo kolarine.
U funkciji main kreirati statiki objekat klase SamofinansirajuciStudent i pokaziva tipa
Student i dodeliti mu adresu objekta klase SamofinansirajuciStudent kreiranog u
dinamikoj zoni memorije. Za oba objekta pozvati sve mogue funkcije.
Zadatak 3. U klasi Poligon, kriranoj u prvoj vebi, destruktor definisati kao virtuelnu
funkciju. Dodati i istu virtuelnu funkciju za izraunavanje povrine mnogougla
ogranienog poligonom.
Kreirati i klasu KonveksanPoligon, javno izvedenu iz klase poligon ije su javne funkcije:
konstruktor bez argumenata koji postavlja broj temena na 0,
konstruktor koji inicijalizuje broj temena u poligonu,
destruktor,
konstruktor za kopiranje,
funkciju za izraunavanje povrine koja povrinu poligona rauna kao zbir
povrina trouglova koji se dobijaju kada se iz jednog temena povuku sve
dijagonale,
funkciju koja izraunava duinu najkrae dijagonale.
U funkciji main kreirati statiki objekat klase KonveksanPoligon i pokaziva tipa Poligon
i dodeliti mu adresu objekta klase KonveksanPoligon kreiranog u dinamikoj zoni
memorije. Za oba objekta pozvati sve mogue funkcije.
Zadatak 4. U klasi String, kriranu u prvoj vebi, funkcije:
destruktor,
za uitavanje string sa standardnog ulaza,
za prikaz stringa na standardni izlaz,
definisati kao virtuelne.
Kreirati i klasu KodiraniString koja u privatnom delu sadri tablicu za kodiranje
(dinamiki vektor karaktera u koji se upisuju ekvivalenti svih slova engleske azbuke na
poziciji 0 je simbol koji u kodiranom nizu zamenjuje slovo A, na poziciji 1 simbol kojim se
kodira slovo B, ... ). Klasa treba da sadri sledee javne funkcije:
konstruktor bez argumenata koji postavlja duinu stringa na 0,
konstruktor koji inicijalizuje veliinu znakovnog niza, i rezervie prostor za
tablicu kodiranja i za sam string,
destruktor,
konstruktor za kopiranje,
funkciju read koja uitava tablicu za kodiranje, zatim i sam string i izvri
njegivo kodiranje,
funkciju write koja ispisuje dekodirani string na standardni izlaz.
U funkciji main kreirati statiki objekat klase KodiraniString, pokaziva tipa String i
dodeliti mu adresu objekta klase KodiraniString kreiranog u dinamikoj zoni memorije.
Za oba objekta pozvati sve mogue funkcije.
Zadatak 5. U klasi Image, kreiranoj u prvoj vebi, funkcije:
destruktor i
invert (funkciju za invertovanje slike),
definisati kao virtuelne.
Kreirati i klasu KompresovanaSlika, javno izvedenu iz klase Image, koja pamti veliinu
segmenta koji se zamenjuje jednim bitom, i u njoj javne funkcije:
default konstruktor koji postavlja dimenziju matrice na 0,
konstruktor za postavljanje veliine matrice i veliinu posegmenata,
virtuelni destruktor,
konstruktor za kopiranje,
invert funkciju koja vri transponovanje slike (predefinie invert funkciju
osnovne klase),
operatorsku funkciju koja vri kompresovanje slike tako to se podsegmenti
zadate veliine zadate dimenzije zamenjuju jednim bitom (ija je vrednost
jednaka onoj vrednosti koja se vie puta javlja u posmatranom podsegmentu),
operatorsku funkciju ++ koja vri dekompresuje sliku tako to svaki bit
zamenjuje podsegmentom date veliine popunjenim istom vrednou.
U funkciji main kreirati statiki objekat klase KompresovanaSlika, pokaziva tipa Image i
dodeliti mu adresu objekta klase KompresovanaSlika kreiranog u dinamikoj zoni
memorije. Za oba objekta pozvati sve mogue funkcije.
Ulaz/izlaz
Zadatak 1. U klasi Set kreiranoj u prvoj vebi dodati sledee javne funkcije:
operator [] za pristup elementima niza.
za upis svih atributa klase u binarnu datoteku
za uitavanje atributa iz binarne datoteke
za upis svih atributa klase u tekstualnu datoteku
za uitavanje atributa iz tekstualne datoteke.
Kreirati i klasu Izuzetak, i u okviru nje, kao javne lanove, imati niz podranih izuzetaka
(definisanih kao enum polje) i niz poruka koje odgovaraju definisanim izuzecima. Klasa
Izuzetak treba da podri sledee izuzetke:
pristup elementu iji je indeks van opsega skupa
veliina niza je negativan broj
razlika dva skupa je prazan skup
elemenat skupa je negativan broj
neuspelo otvaranje fajla
neuspeo upis u fajl
neuspelo itanje iz fajla
U funkciji main testirati sve funkcije klase Set i sve izuzetke iz klase Izuzetak.
Zadatak 2. U klasi Student kreiranoj u prvoj vebi dodati sledee javne funkcije:
operator [] za pristup elementima vektora ocena
za upis svih atributa klase u binarnu datoteku
za uitavanje atributa iz binarne datoteke
za upis svih atributa klase u tekstualnu datoteku
za uitavanje atributa iz tekstualne datoteke.
Kreirati i klasu Izuzetak, i u okviru nje, kao javne lanove, imati niz podranih izuzetaka
(definisanih kao enum polje) i niz poruka koje odgovaraju definisanim izuzecima. Klasa
Izuzetak treba da podri sledee izuzetke:
pristup elementu iji je indeks van opsega vektora ocena
veliina vektora ocena je negativan broj
poku[aj upisivanja ocene vee od 10 ili manje od 5
negativan broj indeksa ili negativan broj poloenih ispita
neuspelo otvaranje fajla
neuspeo upis u fajl
neuspelo itanje iz fajla
U funkciji main testirati sve funkcije klase Student i sve izuzetke iz klase Izuzetak.
Zadatak 3. U klasi Poligon kreiranoj u prvoj vebi dodati sledee javne funkcije:
funkciju koja vraa X koordinatu take
funkciju koja vraa Y koordinatu take
za upis svih atributa klase u binarnu datoteku
za uitavanje atributa iz binarne datoteke
za upis svih atributa klase u tekstualnu datoteku
za uitavanje atributa iz tekstualne datoteke.
Kreirati i klasu Izuzetak, i u okviru nje, kao javne lanove, imati niz podranih izuzetaka
(definisanih kao enum polje) i niz poruka koje odgovaraju definisanim izuzecima. Klasa
Izuzetak treba da podri sledee izuzetke:
pristup koordinati take iji je indeks van opsega niza
broj taaka poligona je negativan broj
koordinate take su van oblasti ograniene pravama x = 1.5, x = -1.5
obim poligona je vei od 200.0
neuspelo otvaranje fajla
neuspeo upis u fajl
neuspelo itanje iz fajla
U funkciji main testirati sve funkcije klase Poligon i sve izuzetke iz klase Izuzetak.
Zadatak 4. U klasi String kreiranoj u prvoj vebi dodati sledee javne funkcije:
operator [] za pristup elementima stringa.
za upis svih atributa klase u binarnu datoteku
za uitavanje atributa iz binarne datoteke
za upis svih atributa klase u tekstualnu datoteku