„SzoftTechZH20130422” változatai közötti eltérés
Új oldal, tartalma: „'''1. feladat: a) osztály diagramból : c# vagy c++ vagy java kód írás b) Szöveges feladatból UML diagram 2, Event C# alkalmazás -> KeyboardManager osztály even…” |
a A C# kód bénán volt betördelve, ezt javítottam. |
||
| (7 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 | |||
2, Event | b) Szöveges feladatból UML diagram''' | ||
C# alkalmazás -> KeyboardManager osztály eventet publikál, billentyű lenyomásra és felengedésre. | |||
'''2, Event''' | |||
'''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.''' | ||
// ez az osztály tárolja az eseménnyel kapcsolatos változókat pl. az // eseményt kiváltó karaktert | |||
<pre> | |||
// ez az osztály tárolja az eseménnyel kapcsolatos változókat pl. az | |||
// eseményt kiváltó karaktert | |||
public class KeyArgs { | public class KeyArgs { | ||
private char _character; | private char _character; | ||
| 11. sor: | 20. sor: | ||
public KeyArgs(char character) { | public KeyArgs(char character) { | ||
_character = character; | _character = character; | ||
} | } | ||
} | } | ||
public delegate void KeyEventHandler(KeyArgs args); | public delegate void KeyEventHandler(KeyArgs args); | ||
public class KeyboardManager | public class KeyboardManager | ||
| 21. sor: | 31. sor: | ||
public event KeyEventHandler KeyDown; | public event KeyEventHandler KeyDown; | ||
// 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) | ||
{ | |||
KeyUp(new KeyArgs(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 | |||
// 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; | |||
} | } | ||
| 58. sor: | 67. sor: | ||
} | } | ||
} | } | ||
3, Eseményvezérelt programozás, grafikus megjelenítés | </pre> | ||
a, UserControl fogalma, két legfontosabb szerepe a tervezés/fejlesztés során | |||
'''3, Eseményvezérelt programozás, grafikus megjelenítés''' | |||
'''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 | ||
(?) | (?) | ||
| 69. sor: | 85. sor: | ||
Gyakvezér mondta sok szar megfejtést olvasott :UserControl=saját vezérlő..... | Gyakvezér mondta sok szar megfejtést olvasott :UserControl=saját vezérlő..... | ||
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 | ||
{ | { | ||
| 111. 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 | ||
{ | { | ||
| 163. 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''' | |||
<pre> | |||
class Dictionary<K,V>: IDictionary<K,V> | class Dictionary<K,V>: IDictionary<K,V> | ||
where K: IComparable<K> | where K: IComparable<K> | ||
| 179. sor: | 211. sor: | ||
} | } | ||
} | } | ||
</pre> | |||
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!) | |||
(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) | |||
(Nem szükséges sql paraméter használata.) | '''6, Robusztus ADO.NET kapcsolat alapú modell''' | ||
'''Í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> | |||
try { | try { | ||
SqlConnection conn = new SqlConnection( str_data ); | SqlConnection conn = new SqlConnection( str_data ); | ||
| 222. sor: | 262. sor: | ||
conn.Close(); | conn.Close(); | ||
} | } | ||
</pre> | |||
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. | '''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.''' | |||
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.''' | |||
<pre> | |||
b, C# kód -> változó típusának kiírása konzolra. | |||
int asd; | int asd; | ||
Type mit = asd.GetType(); | Type mit = asd.GetType(); | ||
Console.Writeline(mit.FullName); | Console.Writeline(mit.FullName); | ||
</pre> | |||
'''c, Reflexió milyen szolgáltatásokat nyújt? Soroljon fel 3 konkrét szolgáltatást.''' | |||
Be is állíthatjuk a tagváltozók értékét | * Lekérdezhetjük, hogy egy szerelvényben milyen típusok vannak | ||
Meg is hívhatjuk az egyes metódusokat | * Lekérdezhetjük: az egyes típusok (osztályok, interfészek, stb). felépítését: pl. tagváltozók, tagfüggvények, event-ek, stb. listája. Be is állíthatjuk a tagváltozók értékét. Meg is hívhatjuk az egyes metódusokat | ||
* Lekérdezhetjük az egyes nyelvi elemekhez (osztályok, tagjaik, stb.) tartozó attribútumokat | |||
'''d, Attribútum definiálása és használata példakód.''' | |||
<pre> | |||
[AttributeUsage(AttributeTargets.Class)] | [AttributeUsage(AttributeTargets.Class)] | ||
class StorableClassAttribute: System.Attribute { | class StorableClassAttribute: System.Attribute { | ||
| 273. sor: | 314. sor: | ||
// A System.Attribute osztályból kell egy saját osztályt leszármaztatni | // A System.Attribute osztályból kell egy saját osztályt leszármaztatni | ||
// 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> | |||
[[Category:Infoalap]] | |||