OOP (OE, OF, OS, OT) – PR
Rok za izradu: datum ispita
OBJEKTNO ORIJENTISANO PROGRAMIRANJE
- projektni zadatak za školsku 2013/2014. godinu Realizovati simulator digitalne električne mreže na jeziku C++. U nastavku teksta sledi opis
zahteva koje je potrebno implementirati u okviru projektnog zadatka.
1. Programski sistem realizovati tako da bude detaljno komentarisan, modularan i lako proširiv
novim klasama i operacijama.
2. Podržati da mreža može sadržati heterogene elemente: logička kombinaciona kola, digitalne izvore
signala i sonde.
3. Moguće vrednosti signala u bilo kojoj tački mreže su 0 ili 1.
4. Logička kola koja treba podržati su I, ILI, NI, NILI i NE kolo.
5. Potrebno je maksimalno pojednostaviti dodavanje u sistem bilo koje druge vrste logičkih
kombinacionih kola.
6. Smatrati da postoji određeno kašnjenje kroz logička kola, koje je isto za sva logička kola iste vrste
u istoj simulaciji.
7. Predvideti da svako logičko kolo može imati proizvoljan broj ulaznih pinova (podrazumevano 2) i
tačno jedan izlazni pin. Ne treba realizovati bidirekcione pinove.
8. Implementirati tri vrste generatora signala: ručno podesiv, impulsni i generator takta. Obezbediti
jednostavno proširenje simulatora bilo kojim digitalnim izvorom signala.
9. Izvor sa ručnim podešavanjem ima zadate vremenske trenutke u kojima će menjati vrednost svog
izlaza.
10. Impulsni izvor i generator takta su periodični izvori.
11. Početna vrednost na izlazu izvora signala je 0, izuzev u slučajevima kada je početna vrednost
određena samim opisom izvora.
12. Sonde su elementi mreže koji služe da prikupljaju informacije o vrednosti signala u tački za koju
su priključeni. Kod ispisa, za svaku promenu ispisati trenutak promene, staru i novu vrednost
signala. Sonde pišu u fajl čije je ime određeno pravilima iz prateće dokumentacije.
13. Simulator treba na početku da učita opis mreže prema podacima iz ulaznog tekst fajla. Nije
potrebno proveravati sintaksnu ispravnost ulaznog fajla, niti praviti bilo kakvo grafičko okruženje
koje će iscrtati mrežu.
14. Obezbediti dva režima rada simulatora: (1) do određenog vremenskog trenutka ili (2) do
završetka svim promena u kolu. Režim rada je uvek određen prvom linijom ulaznog fajla.
15. Pored podataka koje su prikupile sonde, na kraju simulacije treba ispisati statistiku mreže: broj
logičkih kola, izvora i sondi. Za svaki element treba ispisati tip, jedinstveni identifikator i podatak
sa kojim drugim elementima je povezan na ulaznim i/ili izlaznim pinovima.
16. Ispis poruka o greškama rešiti na isti način kao u domaćim zadacima, a za obradu i oporavak od
eventualnih grešaka MORA se koristiti mehanizam izuzetaka.
17. Testiranje simulatora obavlja se automatski (shell script), poređenjem izlaza iz programa sa
očekivanim. Zato simulator treba da koristi argumente komandne linije na sledeći način:
▪ argv[1] ime ulaznog fajla sa opisom digitalne mreže (obavezan argument);
▪ argv[2] ime fajla u koji treba ispisati ostale poruke simulatora (opcioni argument čije
izostavljanje podrazumeva ispis na std::cout).
18. Simulator MORA biti implementiran korišćenjem biblioteke za simulaciju saobraćaja (TSS), kroz
nadogradnju postojećih funkcionalnosti. Studentima NIJE DOZVOLJENO da menjaju izvorni kod
biblioteke, osim ako je to zaista neophodno, što će utvrditi i uraditi nastavnici. Data biblioteka
(simulationEngine.lib) je dostupna na sajtu predmeta. Izvorni kod biblioteke je dostupan
studentima i namenjen je isključivo za analizu implementacije postojećih funkcionalnosti.
Napomene:
1. Ukoliko u zadatku nešto nije dovoljno jasno definisano, treba usvojiti razumnu pretpostavku i na
temeljima te pretpostavke nastaviti izgrađivanje svog rešenja.
2. Prateća dokumentacija i test primeri potrebni za izradu simulatora su na sajtu predmeta.
3. Studentima se preporučuje da dobro analiziraju implementaciju zadate biblioteke, pre nego što
počnu implementaciju simulatora.
4. Za implementaciju rešenja mora se koristiti razvojno okruženje MSVS, verzija 2010.
5. Za uspešno odbranjen projektni zadatak potrebno je na odbrani pokazati sledeće datoteke:
▪ oop_pr.cpp – izvorni tekst glavnog programa na jeziku C++;
▪ oop_pr.txt – poruke o greškama koje mogu nastati pri izvršavanju programa;
▪ oop_pr.vcproj – informacije o projektu koji sadrži sve potrebno za glavni program;
▪ oop_pr.sln – informacije o svim projektima relevantnim za projektni zadatak;
▪ sve datoteke koje sadrže deklaracije i definicije korišćenih klasa;
22.12.2013. godine
sa predmeta
Download

Drugi domaći zadatak iz OOP - Objektno orijentisano programiranje