Obrasci - Zadaci Sa Ispita

You might also like

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

Obrasci – Zadaci sa ispita

2007-01
• Data je klasa Facade koja predstavlja interfejs ka paketu koji služi
za korišćenje podataka iz različitih baza. Klasa Facade sadrži dva
javna statička metoda GetConnection i GetSpecificData. Metod
GetConnection kao argument ima odgovarajući connectionString
(tipa string), a vraća referencu na objekat tipa OleDBConnection.
Metod GetSpecificData vraća niz stringova koji predstavljaju
odgovarajuće podatke pročitane iz odgovarajuće tabele. Argumenti
metoda GetSpecificData su field (tipa string) koji specificira kolonu
iz tabele u bazi, table (tipa string) koji specificira tabelu u kojoj se
kolona field nalazi i conn (tipa OleDBConnection) koji prosleđuje
konekciju na odgovarajuću bazu. (Napisati samo definiciju klase
Facade, metode ne implementirati). Koristeći metode iz klase
Facade implementirati apstraktnu klasu DataAccessObject, i klase
Categories i Products.
• Klasa DataAccessObject od zaštićenih podataka ima niz
stringova dataSet i connection tipa OleDBConnection.
Od javnih članova ima virtuelne metode Connect i
Disconnect kao i apstraktne Select i Process. Metoda
Connect služi da uspostavi konekciju sa bazom i postavi
vrednost zaštićenom atributu connection, od atributa ima
connectionString (tipa string) a ne vraća nikakvu
vrednost. Metoda Disconnect služi da prekine vezu sa
bazom i njen jedini zadatak je da pozove metodu Close
za postavljenu konekciju. Ova metoda nema parametara
niti vraća bilo šta. Apstraktne metode Select i Process
nemaju parametara i ne vraćaju ništa.
• Klasa Categories javno nasledjuje klasu DataAccessObject. Njena
metoda Select uzima niz naziva kategorija iz baze (polje
categoryName iz tabele Category) i smešta ih u atribut dataSet.
Metoda Process klase Categories uređuje elemente niza dataSet u
rastući redosled i potom ih ispisuje na standardnom izlazu.
• Klasa Products javno nasleđuje klasu DataAccessObject. Njena
metoda Select uzima niz naziva proizvoda iz baze (polje
productName iz tabele Product) i smešta ih u atribut dataSet.
Metoda Process klase Products pribavlja iz tabele Product niz
identifikacionih brojeva proizvoda, polje ProductId, kao i niz njihovih
cena, polje PriceValue. Nakon toga metoda Process štampa na
standardnom izlazu za svaki proizvod identifikacioni broj, naziv i
cenu.
• S obzirom da postupak pribavljanja i obrade podataka,
inače, uvek ide istim tokom: povezivanje na bazu
(Connect), pribavljanje podataka (Select), obrada
podataka (Process) i uklanjanje konekcije (Disconnect)
primeniti odgovarajući projektni obrazac na ovaj sistem
klasa kako bi se obezbedila ova sekvenca poziva i
omogućilo njihovo jednostavnije korišćenje. Takođe,
nacrtati dijagram svih klasa koje učestvuju u ovom
sistemu.
• Za implementaciju klasa DataAccessObject, Categories i
Products koristiti bilo koji od programskih jezika C++, C#
ili Java.
DataAccessObject
Facade
#dataSet
#connection
+GetConnection()
+Connect()
+GetSpecificData()
+Disconnect()
+Select()
+Process()
+ProcessData()

Categories Products

+Select() +Select()
+Process() +Process()
2007-11
• Za igru treba da definišemo četiri različita karaktera koji se zovu
King, Queen, Troll i Knight.
• Svi oni mogu da imaju po jedno od sledećih oružja: mač (Sword),
nož (Knife), sekira (Axe) i luk (Bow).
• Svako od oružja ima sledeće karakteristike: snagu napada, snagu
odbrane i masu. Dok su specifične osobine broj oštrica za mač
(jedna ili dve), stepen oštrine za nož (realni broj od 0 do 1), kvaliet
materijala za sekiru (realan broj od 0 do 2) i domet za luk.
• Takođe, svako od oružja treba da ima metodu UseWeapon() koja
treba da definiše učinak. Svaki od karaktera, sem što ima neko
oružje ima i metodu Fight() u kojoj definiše svoje ponašanje u
zavisnosti od oružja. Naravno, svaki karakter može da baci oružje i
uzme neko drugo kada se ukaže prilika.
• Metode UseWeapon i Fight NE implementirati, već ih samo uvrstiti u
klase gde su neophodne.
Character Weapon
-weapon : Weapon #attack
+Fight() #defence
+GetWeapon() #weight
+DropWeapon() +UseWeapon()

King Knight
Axe
+Fight() Knife
+Fight() #quality
#sharpness
+UseWeapon()
+UseWeapon()

Troll
Queen Sword
Bow
#sides
+Fight() #range
+Fight() +UseWeapon()
+UseWeapon()
2008-09
• Data je fasadna klasa ChemicalDBReader koja kao
svoje javne članove ima metodu GetCriticalPoint(string
compound, string point) koja vraća podatak tipa float,
metodu GetMolecularStructure(string compound) koja
vraća podatak tipa string i metodu
GetMolecularWeight(string compound) koja vraća
podatak tipa double. Sve tri metode imaju parametar
compound koji predstavlja naziv hemijskog jedinjenja,
dok vrednosti parametra point (iz metode
GetCriticalPoint) mogu biti “melting” ili “boiling”. U
slučaju prosleđenih neispravnih vrednosti parametara
sve metode vraćaju vrednost 0.0 (u odgovarajućem
tipu). Metode ove klase ne implementirati.
• Sa druge strane, definisati klasu Compound koja služi za prikaz
hemijskih jedinjenja u strukturi stabla, i ona od parametara ima
zaštićene atribute name i molecularFormula tipa string, boilingPoint i
meltingPoint tipa float i molecularWeight tipa double. Sem ovoga,
klasa ima i konstruktor za postavljanje vrednosti parametra name i
javnu virtuelnu metodu bez parametara Display, tipa void, koja
ispisuje ime jedinjenja na standardnom izlazu.

• Kreirati novu klasu čiji će objekti moći da budu upotrebljeni bilo gde
umesto objekata klase Compound i koja će koristiti metode klase
ChemicalDBReader kako bi pribavila vrednosti svih raspoloživih
parametara odgovarajućeg hemijskog jedinjenja. Takođe,
novokreirana klasa treba da na standardni izlaz štampa vrednosti
svih raspoloživih atributa jednog hemijskog jedinjenja.
Compound
#name
#molecularFormula ChemicalDBReader
1 #boilingPoint DBReaderAdapter
#meltingPoint
#molecularWeight +GetCriticalPoint()
#parentCompound #children +adapteeCDBR() 0..1 1 +GetMolecularWeight()
#parentCompound +GetMolecularStructure()
+Compound()
+Display()

#children *

You might also like