Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

ZADACI ZA LABORATORIJSKE VEBE IZ

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:

Student pod rednim brojem 3 radi trei zadatak


Student pod rednim brojem 8 radi trei zadatak ukoliko ima samo 5 zadataka!

Klase, konstruktori i destruktori

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

Zadatak 1. U klasi Set, kreiranoj u prvoj vebi, dodati:


operatorski funkciju - koja odredjuje razliku 2 skupa i
operatorsu funkciju + koja odredjue uniju 2 skupa
Takoe, funkciju za uitavanje elemenata skupa sa standardnog ulaza zameniti
prijateljskom operatorskom funkcijom >> za uitavanje elemenata iz tekstualnog toka
podataka, a funkciju za prikaz elemenata skupa na standardni izlaz, prijateljskom
operatorskom funkcijom << za upis elemenata skupa u tekstualni tok podataka.
U funkciji main kreirati dva objekta klase Set sa po 5 i 8 elemenata, respektivno, uitati
njihove elemente sa standardnog ulaza i na standardni izlaz prikazati njihovu uniju i
razliku.
Zadatak 2. U klasi Student, kreiranoj u prvoj vebi, dodati:
operatorski funkciju > koja poredi dva studenta prema prosenoj oceni,
operatorsku funkciju = koja jedan ovjekat klase Student dodeljuje drugom.
Takoe, funkciju za uitavanje podataka o studentu sa standardnog ulaza zameniti
prijateljskom operatorskom funkcijom >> za uitavanje podataka o studentu iz
tekstualnog toka podataka, a funkciju za prikaz podataka o studentu na standardni izlaz,
prijateljskom operatorskom funkcijom << za upis podataka o studentu u tekstualni tok
podataka.
U funkciji main kreirati dva objekta klase Student (sa po 30 ispita), uitati njihove
podatke sa standardnog ulaza i objekat koji odgovara studentu sa viim prosekom
dodeliti treem objektu (bolji). Podatke o boljem studentu prikazati na standardni izlaz.
Zadatak 3. U klasi Poligon, kreiranoj u prvoj vebi, dodati:
prefiksnu operatorski funkciju -- koja preslikava poligon simetrino u odnosu
na x osu,
postfiksnu operatorsku funkciju -- koja preslikava poligon simetrino u odnosu
na y osu.
Takoe, funkciju za uitavanje koordinata temena sa standardnog ulaza zameniti
prijateljskom operatorskom funkcijom >> za uitavanje koordinata iz tekstualnog toka
podataka, a funkciju za prikaz koordinata temena na standardni izlaz, prijateljskom
operatorskom funkcijom << za upis koordinat u tekstualni tok podataka.
U funkciji main kreirati objekat klase Poligon sa 5 temena, uitati koordinate temena sa
standardnog ulaza, i preslikati ga simetrino na x, a onda i u odnosu na y osu i nakon
svakog preslikavanja prikazati koordinate temena na standardni izlaz.
Zadatak 4. U klasi String, kreiranoj u prvoj vebi, dodati:
operatorsku funkciju + koja vri nadovezivanje dva stringa,
operatorsku funkciju = koja jedan objekat klase string dodeljuje drugom.

Takoe, funkciju za uitavanje stringa sa standardnog ulaza zameniti prijateljskom


operatorskom funkcijom >> za uitavanje stringa iz tekstualnog toka podataka, a
funkciju za prikaz strigna na standardni izlaz, prijateljskom operatorskom funkcijom <<
za upis stringa u tekstualni tok podataka.
U funkciji main kreirati 2 objekta klase string, uitati njihove vrednosti sa standardnog
ulaza, izvriti nadovezivanje i rezultujui string dodeliti treem objektu i prikazati ga na
standardni izlaz.
Zadatak 5. U klasi Image, krieranoj u prvoj vebi, dodati:
operatorsku funkciju + koja preklapa sadraje dveju slika (u rezultujuoj slici
piksel na poziciji i,,j dobija vrednost 1, ako je bar u jednoj od slika koje se
preklapaju na toj poziciji bila vrednost 1),
operatorsku funkciju = za dodelu jednog objekta klase Image drugom.
Takoe, funkciju za uitavanje sadraja slike sa standardnog ulaza zameniti
prijateljskom operatorskom funkcijom >> za uitavanje sadraja slike iz tekstualnog toka
podataka, a funkciju za prikaz sadraja slike na standardni izlaz, prijateljskom
operatorskom funkcijom << za upis sadraja slike u tekstualni tok podataka.
U funkciji main kreirati 2 objekta klase Image reda 5x5, uitati njihove sadraje sa
standardnog ulaza, izvriti njihovo preklapanje. Rezultujuu sliku dodeliti treem objektu
klase Image i njegov sadraj prikazati na standardni izlaz.

Nasledjivanje

Zadatak 1. U klasi Set, kriranu u prvoj vebi, funkcije:


destruktor,
za ispitivanje da li zadati element pripada skupu,
za uitavanje elemenata skupa sa standardnog ulaza,
za prikaz elemenata skupa na standardni izlaz.
definisati kao virtuelne.
Definisati i klasu NamedSet, javno izvedenu iz klase Set, koja kao privatni atribut sadri
ime skupa (dinamiki niz karaktera). Klasa NamedSet sadri sledee javne funkcije:
konstruktor koji inicijalizuje broj elemenata i rezervie prostor za pamenje
imena maksimalne duine 20 karaktera,
konstruktor bez argumenata,
konstruktor za kopiranje,
destruktor,
funkciju koja ispituje da li u skupu postoji element zadate apsolutne vrednosti
(ova funkcija predefinie funkciju koja ispituje da li zadati element pripada
skupu),
funkciju koja uitava elemente skupa i njegovo ime (predefinie funkciju za
uitavanje elemenata iz roditeljske klase),
funkciju za promenu imena skupa.
U funkciji main kreirati statiki objekat klase NamedSet i pokaziva tipa Set i dodeliti mu
adresu objekta klase NamedSet kreiranog u dinamikoj zoni memorije. Za oba objekta
pozvati sve mogue funkcije.
Zadatak 2. U klasi Student, kriranu u prvoj vebi, funkcije:
destruktor,
read koja uitava sve atribute sa standardnog ulaza,
write koja ispisuje sve atribute na standardni izlaz.
definisati kao virtuelne.
Definisati i klasu SamofinansirajuciStudent, javno izvedenu iz klase Student, koja kao
privatne atribute sadri: visinu ukupne godinje kolarine, ukupan broj rata i broj
uplacenih rata. Javne funkcije klase Samofinansirajui student su:
konstruktor koji inicijalizuje maksimalni broj ispita na fakultetu, i visinu
kolarine,
destruktor,
konstruktor za kopiranje,
funkciju read koja uitava sve atribute sa standardnog ulaza (predefinie
funkciju read iz osnovne klase),
funkciju write koja ispisuje sve atribute na standardni izlaz (predefinie
funkciju write iz osnovne klase.,

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

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 niza
veliina stringa je negativan broj
niz karaktera u sebi sadri i brojeve
niz karaktera sadri znakove raunskih operacija (+, - , *. /)
neuspelo otvaranje fajla
neuspeo upis u fajl
neuspelo itanje iz fajla
U funkciji main testirati sve funkcije klase String i sve izuzetke iz klase Izuzetak.
Zadatak 5. U klasi Image kreiranoj u prvoj vebi dodati sledee javne funkcije:
funkciju getElement(int x, int y) za pristup elementima matrice
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 koji je van opsega matrice
red matrice je negativan broj
matrica ima podatke koji se razlikuju od 0 i 1
u matrici je vie od 65% elemenata koji imaju vrednost 0
neuspelo otvaranje fajla
neuspeo upis u fajl
neuspelo itanje iz fajla
U funkciji main testirati sve funkcije klase Image i sve izuzetke iz klase Izuzetak.

You might also like