Szoftver technikák vizsga, 2007. 01. 30.

A VIK Wikiből

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


1. feladat

DLL-ek definíciója, előnyei? Mi a különbség a statikus és dinamikus linkelés között? (10p?)

Megoldás

2. feladat

WINAPI: Menüpont hatására modális dialógusablak, benne egy beviteli mező, ami egy négyzet oldalhosszát kéri. OK után a négyzetet piros színnel kitöltve kirajzolja a bal felső sarokba. A kurzormozgató gombok hatására egy-egy pixellel az adott irányba lépteti. (18p)

Ezen a helyen volt linkelve a(z) negyzet.zip nevű fájl ("Megoldás" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Infoszak/SzoftverTechnikakV20070130 oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)


3. feladat

MFC-ben milyen osztályokkal valósítják meg az MDI-os document-view architektúrát, ezek hogy érik el egymást? Hogyan oldják meg, hogy minden nézet ugyanazt mutassa, mik az előnyei?

Megoldás

4. feladat

Milyen életciklus modellt választanál egy 2-3 hónapos projekthez, amit már csinált a csapat? (3p)

  • Magyarázd el az iteratív fejlesztést a rajz alapján (rajz is kellett persze). (5p)
  • Három rétegű architektúra leírása. (5p)

5. feladat

Singleton tervezési minta mire jó, mikor használják, class diagram, osztályok szerepe? C++/C#/Java példával.

6. feladat

KDE

  • Hogyan jelenítene meg egy modális dialógusablakot, és OK/Cancel lekérdezése. (5p)
  • saveDocument (12p?)

Dialógusablak:

Wizarddal megszerkesztem a dialógusablakot, létrejön egy adag file

  • =mydialog.xml(?)=: a dialógusablak paramétereit tartalmazza. Ebből fordítja az UIC (User Interface Compiler) a base osztályokat.
  • =mydialogbase.h=, =mydialogbase.cpp=: absztrakt osztály, nem szabad módosítani, mert a designer felülírja. A subclassing wizarddal legeneráltatható a leszármaztatott osztályok váza is.
  • =mydialog.h=, =mydialog.cpp=: itt kell implementálni a slotokat.

A =QDialog= slotjai: exec(), close(), accept() (=OK), reject() (=Cancel).

saveDocument:

bool SDIDoc::saveDocument(const KURL &url, const char *format) {
	 QFile f(url.isLocalFile() ? url.path() : KTempFile().name());  // ez eredetileg 11 sor volt :)
	 if (!f.open(IO_WriteOnly|IO_Truncate)) {
		  KNotifyClient::event("Cannot save file");
		  return false;
	 }

	 // példa: QValueList<double> mentése
	 QDataStream stream(&f);
	 for (QValueList<double>::iterator it=data.begin(); it!=data.end(); it++)
		  stream << *it;

	 f.close();
	 if (!url.isLocalFile()) {
		  if (!KIO::NetAccess::upload(f.name(), url)) {
				KNotifyClient::event("Cannot save file");
				return false;
		  }
		  KIO::NetAccess::removeTempFile(f.name());
	 }
	 modified=false;
	 return true;
}

7. feladat

Legalább négyféle tesztelés típus felsorolása és rövid jellemzése. (10p)

Megoldás

-- palacsint - 2007. 01. 30.
-- Peti - 2007.06.14.