„SzoftTechZH20130422” változatai közötti eltérés
Nincs szerkesztési összefoglaló |
a A C# kód bénán volt betördelve, ezt javítottam. |
||
| (6 közbenső módosítás, amit 4 másik szerkesztő végzett, nincs mutatva) | |||
| 1. sor: | 1. sor: | ||
'''1. feladat: | '''1. feladat: | ||
a) osztály diagramból : c# vagy c++ vagy java kód írás | a) osztály diagramból : c# vagy c++ vagy java kód írás | ||
b) Szöveges feladatból UML diagram''' | b) Szöveges feladatból UML diagram''' | ||
'''2, Event''' | '''2, Event''' | ||
'''C# alkalmazás -> KeyboardManager osztály eventet publikál, billentyű lenyomásra és felengedésre. | '''C# alkalmazás -> KeyboardManager osztály eventet publikál, billentyű lenyomásra és felengedésre. | ||
A KeyboardSubscriber iratkozzon fel a KeyboardManager billentyű-felengedés eseményére -> konzolra írja ki, hogy melyik billentyű lett felengedve.''' | A KeyboardSubscriber iratkozzon fel a KeyboardManager billentyű-felengedés eseményére -> konzolra írja ki, hogy melyik billentyű lett felengedve.''' | ||
| 16. sor: | 20. sor: | ||
public KeyArgs(char character) { | public KeyArgs(char character) { | ||
_character = character; | |||
} | } | ||
} | } | ||
public delegate void KeyEventHandler(KeyArgs args); | public delegate void KeyEventHandler(KeyArgs args); | ||
public class KeyboardManager | public class KeyboardManager | ||
| 26. sor: | 31. sor: | ||
public event KeyEventHandler KeyDown; | public event KeyEventHandler KeyDown; | ||
// ennek a metódusnak a meghívásával tudjuk a keyup eventet | // ennek a metódusnak a meghívásával tudjuk a keyup eventet | ||
// elsütni | // elsütni | ||
public void FireKeyUp(char c) | public void FireKeyUp(char c) | ||
{ | { | ||
if(KeyUp != null) | |||
KeyUp(new KeyArgs(c)); | |||
} | } | ||
// ennek a metódusnak a meghívásával tudjuk a keydown eventet | // ennek a metódusnak a meghívásával tudjuk a keydown eventet | ||
// elsütni | // elsütni | ||
public void FireKeyDown(char c) | public void FireKeyDown(char c) | ||
{ | { | ||
if(KeyDown != null) | |||
KeyDown(new KeyArgs(c)); | KeyDown(new KeyArgs(c)); | ||
} | } | ||
} | } | ||
public class KeyBoardSubscriber | public class KeyBoardSubscriber | ||
{ | { | ||
// egy referenciát tárolunk egy KeyboardManager példányra, hogy | // egy referenciát tárolunk egy KeyboardManager példányra, hogy | ||
// fel tudjunk iratkozni az eseményeire | // fel tudjunk iratkozni az eseményeire | ||
private KeyboardManager manager = new KeyBoardManager(); | private KeyboardManager manager = new KeyBoardManager(); | ||
public void Subscribe() | public void Subscribe() | ||
{ | { | ||
//feliratkozás | |||
manager.KeyUp += ProcessKeyUp; | |||
} | } | ||
| 63. sor: | 68. sor: | ||
} | } | ||
</pre> | </pre> | ||
'''3, Eseményvezérelt programozás, grafikus megjelenítés''' | '''3, Eseményvezérelt programozás, grafikus megjelenítés''' | ||
'''a, UserControl fogalma, két legfontosabb szerepe a tervezés/fejlesztés során''' | '''a, UserControl fogalma, két legfontosabb szerepe a tervezés/fejlesztés során''' | ||
(ez jó?) | (ez jó?) | ||
A vezérlőelem maga is egy űrlap, tartalmazhat vezérlőelemeket | A vezérlőelem maga is egy űrlap, tartalmazhat vezérlőelemeket | ||
_ Tervezési időben vizuálisan elkészíthetjük összetett vezérlőelemeinket, pont úgy, ahogy egy formot is elkészítenénk. | _ Tervezési időben vizuálisan elkészíthetjük összetett vezérlőelemeinket, pont úgy, ahogy egy formot is elkészítenénk. | ||
_ Miben más? űrlapokra, illetve más UserControlokra lehet elhelyezni. | _ Miben más? űrlapokra, illetve más UserControlokra lehet elhelyezni. | ||
_ Példa FilePicker vezérlő: tipikusan együtt előforduló vezérlőelemek összekötése | _ Példa FilePicker vezérlő: tipikusan együtt előforduló vezérlőelemek összekötése | ||
(?) | (?) | ||
| 75. sor: | 86. sor: | ||
'''b, Jár-e kellemetlen következménnyel, ha eseménykezelőben a kód hosszantartó műveletet végez? Ha igen, miért?''' | '''b, Jár-e kellemetlen következménnyel, ha eseménykezelőben a kód hosszantartó műveletet végez? Ha igen, miért?''' | ||
Igen, mert a hosszantartó művelet ideje alatt az ablak nem tudja a hozzá beérkező üzeneteket feldolgozni, és az alkalmazás “befagy”. | Igen, mert a hosszantartó művelet ideje alatt az ablak nem tudja a hozzá beérkező üzeneteket feldolgozni, és az alkalmazás “befagy”. | ||
'''c, C# alkalmazás részlet: (20,20) px koordináta, zöld, 5px oldalhosszúságú négyzet -> másodpercenként 5px-el növekszik, míg le nem nyomjuk az y billentyűt.''' | '''c, C# alkalmazás részlet: (20,20) px koordináta, zöld, 5px oldalhosszúságú négyzet -> másodpercenként 5px-el növekszik, míg le nem nyomjuk az y billentyűt.''' | ||
<pre> | |||
public partial class Form1 : Form | public partial class Form1 : Form | ||
{ | { | ||
| 116. sor: | 130. sor: | ||
} | } | ||
} | } | ||
</pre> | |||
'''4, Szálkezelés''' | |||
''' | '''a, Többszálú alkalmazások 3 előnye.''' | ||
a, Többszálú alkalmazások 3 előnye.''' | |||
1. jobb processzor kihasználtság | 1. jobb processzor kihasználtság | ||
2. nem növekvő átlagos válaszidő (interaktivitás – pl. nem akad le a GUI, szerveralkalmazások) | 2. nem növekvő átlagos válaszidő (interaktivitás – pl. nem akad le a GUI, szerveralkalmazások) | ||
3. időzítés érzékeny feladatok magasabb prioritású szálon futtathatóak | 3. időzítés érzékeny feladatok magasabb prioritású szálon futtathatóak | ||
'''b, ReaderWriterLock, Mutex.''' | '''b, ReaderWriterLock, Mutex.''' | ||
Mutex: | Mutex: | ||
Cél: Mint a lock, de folyamatok között is. Pl. annak megoldására, hogy egy alkalmazásból csak egy példány indulhasson. Folyamatok között is. Sebesség: közepes. | Cél: Mint a lock, de folyamatok között is. Pl. annak megoldására, hogy egy alkalmazásból csak egy példány indulhasson. Folyamatok között is. Sebesség: közepes. | ||
ReaderWriterLock: | ReaderWriterLock: | ||
Sok olvasóra optimalizált megoldás. Egyszerre több olvasó is hozzáférhet az erőforráshoz, de íróból csak egy (illetve az író kizárja az olvasókat is). Pl. ritkán módosított cache megvalósítása. Folyamatok között: nem. Sebesség: közepes. | Sok olvasóra optimalizált megoldás. Egyszerre több olvasó is hozzáférhet az erőforráshoz, de íróból csak egy (illetve az író kizárja az olvasókat is). Pl. ritkán módosított cache megvalósítása. Folyamatok között: nem. Sebesség: közepes. | ||
'''c, | '''c,''' | ||
* főszál indít munkaszálat, tegyen be egy számot az item listbe, ezt jelezze a munkaszálnak | |||
* várja meg, míg befejezi a futását a munkaszál | |||
* munkaszál indulás után hatékonyan várakozzon a főszál jelzésére | |||
* jelzés után vegye ki a listából az elemet | |||
* írja ki a konzolra | |||
* fejezze be a futást | |||
Kölcsönös kizárás biztosítása, ha kell. | Kölcsönös kizárás biztosítása, ha kell. | ||
<pre> | |||
public class Process | public class Process | ||
{ | { | ||
| 168. sor: | 190. sor: | ||
} | } | ||
} | } | ||
</pre> | |||
Kölcsönös kizárás megvalósítására nincs szükség, mivel a listához időben szeparáltan férünk hozzá a két szálról(először az elsőről, aztán a másodikról). | Kölcsönös kizárás megvalósítására nincs szükség, mivel a listához időben szeparáltan férünk hozzá a két szálról(először az elsőről, aztán a másodikról). | ||
Alternatív megoldás, hogy a removedEvent-et kitöröljük a kódból, és a removedEvent.WaitOne() sor helyett workerThread.Join() -t használunk. | Alternatív megoldás, hogy a removedEvent-et kitöröljük a kódból, és a removedEvent.WaitOne() sor helyett workerThread.Join() -t használunk. | ||
5, Generikus típusok | |||
a, Példa generikus kényszer alkalmazására | |||
'''5, Generikus típusok''' | |||
'''a, Példa generikus kényszer alkalmazására''' | |||
<pre> | <pre> | ||
class Dictionary<K,V>: IDictionary<K,V> | class Dictionary<K,V>: IDictionary<K,V> | ||
| 188. sor: | 215. sor: | ||
'''b, Milyen esetben célszerű a dispose minta alkalmazása?''' | '''b, Milyen esetben célszerű a dispose minta alkalmazása?''' | ||
A drága,és felügyelt erőforrások felszabadítására használjuk, pl a File.Close() | A drága, és nem felügyelt erőforrások felszabadítására használjuk, pl a File.Close() dispose-t hív. | ||
A Dispose() meghívása nem történik automatikusan, ezt nekünk kell megtenni. | |||
A dispose tervezési mintának köszönhetően az objektumok által foglalt erőforrások felszabadítása válik determinisztikussá. | |||
'''c, .Net kóderedet alapú biztonsági mechanizmus lényege''' | |||
Adott helyről letöltött programnak milyen jogai vannak (rosszindulatú kódtól nem véd!) | Adott helyről letöltött programnak milyen jogai vannak (rosszindulatú kódtól nem véd!) | ||
(CAS) code acces security | (CAS) code acces security | ||
Nincsenek felkészítve a mobil kódokra. (levélhez csatolva, netről, dokumentumban tárolva érkezhetnek a gépre) | Nincsenek felkészítve a mobil kódokra. (levélhez csatolva, netről, dokumentumban tárolva érkezhetnek a gépre) | ||
Kód eredetét is kell ellenőrizni | Kód eredetét is kell ellenőrizni | ||
Kódhoz kötött jogosultságok: nem csak a felhasználót azonosítja, hanem a végrehajtott kódot is. | Kódhoz kötött jogosultságok: nem csak a felhasználót azonosítja, hanem a végrehajtott kódot is. | ||
A Szerelvényekhez kell meghatározni, hogy milyen jogaik vannak. (pl: netről töltött kód nem kap írási, és olvasási jogot, csak egy bizonyos mappára-> nem árthat nekünk) | A Szerelvényekhez kell meghatározni, hogy milyen jogaik vannak. (pl: netről töltött kód nem kap írási, és olvasási jogot, csak egy bizonyos mappára-> nem árthat nekünk) | ||
Nem egyesével adnak ki jogokat, hanem biztonsági házirendet alakíthat ki a rendszergazda. | Nem egyesével adnak ki jogokat, hanem biztonsági házirendet alakíthat ki a rendszergazda. | ||
'''6, Robusztus ADO.NET kapcsolat alapú modell | |||
Írjon példakódot: beszúr rekordot egy táblába: Student(StudentID, Name, YearofBirth) | '''6, Robusztus ADO.NET kapcsolat alapú modell''' | ||
(Nem szükséges sql paraméter használata.)''' | |||
'''Írjon példakódot: beszúr rekordot egy táblába: Student(StudentID, Name, YearofBirth)''' | |||
'''(Nem szükséges sql paraméter használata.)''' | |||
<pre> | <pre> | ||
| 233. sor: | 264. sor: | ||
</pre> | </pre> | ||
'''7, Bináris komponensek | '''7, Bináris komponensek''' | ||
a, Mit értünk dinamiks linkelés alatt? 3 előnye és 1 hátránya a statikus linkeléssel szemben.''' | |||
'''a, Mit értünk dinamiks linkelés alatt? 3 előnye és 1 hátránya a statikus linkeléssel szemben.''' | |||
Definíció: a futó program csak futásidőben tölti be a számára szükséges könyvtárakat. | Definíció: a futó program csak futásidőben tölti be a számára szükséges könyvtárakat. | ||
Előnyök: | Előnyök: | ||
* Ha több process használja a könyvtárat, akkor a memóriába csak egy példányban töltődik be (a kódrész, az adat marad külön!) | |||
* A háttértáron is csak egyszer foglal helyet (ha az alkalmazások megosztottan használják pl. a windows\system könyvtárból) | |||
* Kis alkalmazás (.exe) fájlméret | |||
* Ha a .dll-ben szerepel egy hibás függvény, akkor a programot egyszerűen a .dll cseréjével is javíthatjuk, nem kell újrafordítani. | |||
Hátrányok: | Hátrányok: | ||
* A program futásakor jelen kell legyenek az általa használt DLL-ek, ezek nélkül az alkalmazás futásképtelen. | |||
* Ha az alkalmazások megosztottan használják (pl. a windows\system könyvtárból): verzió kavarodás, DLL hell. | |||
(DLL hell példa volt a .NET szerelvényeknél) | (DLL hell példa volt a .NET szerelvényeknél) | ||
'''b, C# kód -> változó típusának kiírása konzolra.''' | |||
b, C# kód -> változó típusának kiírása konzolra. | |||
<pre> | <pre> | ||
int asd; | int asd; | ||
| 283. sor: | 315. sor: | ||
// Az AttributeUsage azt határozza meg, mihez tudjuk az adott attribútumot hozzárendelni | // Az AttributeUsage azt határozza meg, mihez tudjuk az adott attribútumot hozzárendelni | ||
</pre> | </pre> | ||
[[Category:Infoalap]] | |||