SzoftTechVizsga110525

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 20:22-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|SzoftTechVizsga110525}} ==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 old…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

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


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.


Ezen a helyen volt linkelve a elemek.jpg nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


Ezen a helyen volt linkelve a elemek2.jpg nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


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.


Ezen a helyen volt linkelve a elemek6.jpg nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


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.


Ezen a helyen volt linkelve a elemek7.jpg nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


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.

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.