SzoftTechVizsga110525
A VIK Wikiből
1. Mutasd be egy példán keresztül az objektum relációs leképezést (1-n, n-n)
1-több: a többes oldal táblájába felveszünk egy idegen kulcsot az egyes oldal táblájának elsődleges kulcsára.
Több-több: felveszünk egy új kapcsolótáblát, amely tartalmaz 1-1 idegen kulcsot az összekapcsolt táblák elsődleges kulcsára.
2. Mutasd be az ASP.NET-es vezérlőket példakóddal, mire jó, jellemzők leírása
3. Helyes-e az alábbi kód szálbiztonság szempontjából, hasonlítsd össze a lock, mutex-et, mire jó a semaphore?
Lock:
- Egy objektum paramétert kell neki adni, ami csak referencia típus lehet.
- Megvizsgálja, hogy zárolva van-e az objektum. Ha nincsen, akkor zárolja és tovább fut, ha zárolva volt, akkor vár.
- A várakozás nem használ CPU időt.
- A várakozó szálak egy sorba kerülnek, „érkezési sorrendben” kapnak hozzáférési jogot.
- A lock blokkból való kilépéskor oldja a zárolást.
- Zároló szál ismételten hívhat lock-ot.
- Védeni kell a tagváltozókat:
- Statikus változókat statikus tagváltozóval - osztályszintű zár
- Nem statikusokat nem statikus tagváltozóval - objektumszintű zár
- Más szálnak jelzésre nem alkalmas.
Mutex:
- Olyan mint a lock, csak eltérő folyamatok szálai között is működik.
- !Lock()-nál sokkal lassabb.
- A WaitOne()-nal lehet lefoglalni (ami atomi módon zárolja, illetve blokkol, ha foglalt volt), elengedni a ReleaseMutex()-szel lehet.
Semaphore:
- Olyan mint a Mutex, de egynél több (N darab, megadható) hozzáférést engedélyez, ha maximum N darab hozzáférést szeretnénk biztosítani.
- A WaitOne()-nal lehet rá várakozni. Ha még szabad a szemafor, nem blokkol, eggyel csökkenti a szemafor számlálót. Ha nem szabad, akkor blokkol. Elengedni a ReleaseSemaphore()-ral lehet (ez növeli a számláló értékét eggyel).
4. Jellemezze a "Composite" tervezési mintát! Mire ad megoldást a "Composite" tervezési minta? Mutassa be konkrétan vagy egy példán keresztül a minta működését! Ezen felül rajzolja fel a minta osztálydiagramját, valamint adja meg a mintában szereplő osztályok szerepét!
- Rész-egész viszonyban álló objektumokat fastruktúrába rendezi
- A kliensek számára elérhetővé teszi, hogy az egyszerű és kompozit objektumokat egységesen kezelje.
- Akkor használjuk, ha a kliensek számára el akarjuk rejteni, hogy egy objektum egyedi vagy kompozit objektum-e
- Előnye, hogy elemi és összetett objektumokat egységesen lehet vele kezelni
- Például: egy olyan grafikai alkalmazás, amely lehetővé teszi összetett grafikus objektumok létrehozását.
- Van egy absztrakt ősosztályunk, aminek a leszármazottjai lehetnek egyszerű és összetett objektumok is. Ha ki akarjuk rajzolni őket, akkor elég az absztrakt ősosztály rajzol függvényét meghívni, így minden objektum ki tudja rajzolni saját magát és a felhasználónak nem kell tudnia, hogy az adott objektum egyszerű vagy összetett volt-e.
5. Ismertesse a Dokumentum/Nézet (Document-View) architektúrát. Ennek keretében rajzolja fel a minta osztály és szekvenciadiagrammját. Adja meg az egyes osztályok szerepét!
Document (Dokumentum):
- Feladata: az adatok tárolása, menedzselése. Modellnek is szokás nevezni.
- Olyan osztály(ok), melyek az adatokat tagváltozóikban tárolják és olyan tagfüggvényekkel rendelkeznek, melyek kezelik ezeket az adatokat (pl. Load, Save), és elérhetővé teszik más osztályok számára. (pl. View számára)
View (Nézet):
- Feladata: az adatok megjelenítése a dokumentum adatai alapján és a felhasználói interakciók kezelése (pl. menük, egér, billentyűzet). A felhasználói interakciók során általában a Dokumentum tartalmát módosítja.
- A View általában ablakként vagy tabfülként jelenik meg a kliensalkalmazásokban.
Document:
- Az osztály objektumai reprezentálnak egy-egy dokumentumot, és a views nevű listájában tárolja a beregisztrált nézeteket.
ExcelDocument:
- Egy példa Document leszármazottra
- Tárolja a data, stb… tagváltozójában a dokumentum adatait (pl. cella értéke)
- Publikus lekérdező függvényeket biztosít a többi osztály számára az adatokhoz (pl. GetData)
- Publikus adatmódosító függvényeket biztosít a többi osztály számára (pl. SetData). Ezek módosítják a tagváltozókat, majd az UpdateAllViews() függvény meghívásával értesítik a többi nézetet a változásról.
- Az UpdateAllViews() frissíti a beregisztrált nézeteket
View:
- Az egyes nézetek közös őse vagy interfésze, lehetővé teszi egységes kezelésüket.
- Tartalmaz egy referenciát a dokumentumra, amin keresztül a leszármazott nézetek elérhetik a dokumentumot, melynek adatait megjelenítik.
TableView, PieChartView :
- A dokumentum teljes nézeteit reprezentálják.
- A View-ból származnak.
- Felüldefiniálják vagy implementálják a View Update() műveletét. Ebben a dokumentumban az aktuális állapota szerint frissítik a nézetet.
6. Milyen két - a jogosultságra vonatkozó - biztonsági megoldást támogat a .NET keretrendszer? Ismertesse őket röviden!
Szerep alapú biztonság ( role based security):
- A felhasználó a rendszerben betöltött szerepén és jogain alapuló biztonsági mechanizmus.
- A felhasználókat csoportokba rendezik szerepek alapján.
- A .NET (akárcsak a Windows) szál szinten kezeli.
- Nem véd a rosszindulatú kódtól.
- Nincsenek felkészítve a mobil kódokra.
- Ellenőrzés lehet:
- Dekleratív:
- felhasználói szerepeket megkövetelhetjük
- felhasználó szinten is akár
- minden azonosított felhasználóra engedélyezhetünk
- Imperatív:
- ha nincs elegendő információnk fordítási időben a felhasználóról, akkor programkódból is ellenőrizhetjük a feltételeket.
- Dekleratív:
Kóderedet alapú biztonság (code access security):
- Képes meghatározni, hogy a kód és a meghívott kód mit tehet, valamint képes egyértelműen azonosítani a kódot, nemcsak a felhasználót.
- Szerelvényekhez kell meghatározni, hogy milyen jogaik vannak.
- Ezt a rendszergazda állítja be a biztonsági házirendben. (nem egyesével)
- Ebben a kód eredete alapján adhatunk jogokat a szerelvényeknek.
7. Mi az attribútum, mutass példát használatra (lekérdezés nem kell)
- deklaratív jelleggel metaadatokat közölhetünk a kód bizonyos részeire vonatkozóan
- minden nyelvi elemhez rendelhető (típushoz, osztályhoz, interfészhez, metódushoz, stb.)
- megváltoztathatja a fordító viselkedését, VAGY futási időben lekérdezhető
- saját attribútumok alkothatók (ilyenkor kötelezően le kell kérdezni)
- általában az attribútumokkal csak a CLR számára szeretnénk információkat közölni
- felhasználás: natív kóddal való együttműködés testreszabása, perzisztens osztályok létrehozása, metódusszintű jogosultság ellenőrzés, tranzakcióban részt vevő osztályok megjelölése, web szolgáltatások
Példa (sorosíthatóság):
[Serializable] int a;
Példa (szerepkör ellenőrzés):
[PrincipalPermission(SecurityAction.Demand, Role="Admin")] public void DeleteUser() { /* ... */ }
8. Rajzolj négyzetet, ami besötétedik öt másodperc alatt
Nem 100%-os megoldás, de nem is vészesen rossz.
public partial class Form1: Form { public Form1 { InitializeComponent(); } int counter = 0; int szín = 255; private Brush mybrush; Timer timer1 = new Timer() Timer.Interval = 1000; // 1 sec timer1.Tick += new System.EventHandler(timer_Tick); timer1.Start(); private void timer_Tick(object sender, EventArgs e){ if( counter < 5 ){ szin -= 51; // Ha mind a 3 RGB szín 0-s akkor tiszta fekete lesz counter++;} Invalidate(); } protected override void OnPaint(PaintEventArgs e){ base.OnPaint(e); using(mybrush = new SolidBrush(Color.FromArgb(szin, szin, szin))){ e.Grapics.FillRectangle(mybrush, int x, int y, int weight, int height); } }
-- waczkor - 2011.05.31.
-- Évi - 2011.05.30.