Szoftver technikák vizsga, 2004. 12. 23.
Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.
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
Tartalomjegyzék
1. feladat
MFC: milyen alaposztályokkal támogatja a Document/View architektúrát, hogyan függenek össze.
2. feladat
Document/View architektúra általában, hogyan oldja meg, hogy a nézetek konzisztens képet mutassanak akkor is, ha több nézet módosul?
3. feladat
Milyen életciklusmodellt használnál 3 hónapos projektre, miért? (ld. ellenőrző kérdések)
4. feladat
API gyakorlat: egy alkalmazás, amelyben egy négyzetet lehet a kurzorral mozgatni az ablakban, egy menüelem kiválasztására előjön egy modális dialógus, amiben be lehet állítani az oldalhosszát.
5. feladat
Mi az a GDI, mitől eszközfüggetlen, stb...
6. feladat
Doc/View architektúra implementálása KDE alatt, kóddal illusztrálva (hogy éri el a dokumentumot a nézet stb.)
7. feladat
KDE alkalmazás: írd meg a megfelelő függvényeket (updateView, paintEvent), ami kiolvassa a dokumentumból egy téglalap adatait és kettős buffereléssel kirajzolja az ablakba.
A kiadott doksik alapján valami ilyesmi lehet:
View header-jébe:
QPixmap screenBuffer;
paintEvent:
void ::paintEvent(QPaintEvent *e) { QWidget::paintEvent(e); QRect r = e->rect(); bitBlt(this, r.x(), r.y(), &screenBuffer, r.x(), r.y(), r.width(), r.height()); }
updateView:
void ::updateView() { screenBuffer.resize(width(), height()); screenBuffer.fill(Qt::white); int x = getDocument()->getX(); int y = getDocument()->getY(); int w = getDocument()->getW(); int h = getDocument()->getH(); QPainter painter; QPen pen(black, 1); painter.begin(&screenBuffer); painter.setPen(&pen); painter.drawRect(x, y, w, h); painter.end(); repaint(); // update() ? }
8. feladat
Singleton tervezési minta, miért kell, mikor használjuk, C++ implementáció.
-- porolto - 2005.05.04.
-- Peti - 2006.11.20.
-- palacsint - 2007. 01. 29.