„SzoftTechVizsga100608” változatai közötti eltérés
Nincs szerkesztési összefoglaló |
|||
1. sor: | 1. sor: | ||
==1. Felügyelt környezetek== | ==1. Felügyelt környezetek== | ||
'''a) Ismertesse a fordítási és a végrehajtási (futtatás) lépéseit .NET környezetben. Ennek során adja meg mit értünk IL (Intermediate Language) kód alatt! (6 p)''' | '''a) Ismertesse a fordítási és a végrehajtási (futtatás) lépéseit .NET környezetben. Ennek során adja meg mit értünk IL (Intermediate Language) kód alatt! (6 p)''' |
A lap jelenlegi, 2013. február 6., 09:45-kori változata
1. Felügyelt környezetek
a) Ismertesse a fordítási és a végrehajtási (futtatás) lépéseit .NET környezetben. Ennek során adja meg mit értünk IL (Intermediate Language) kód alatt! (6 p) IL = köztes kód, amit a forrás kódból a nyelvi fordító állít elő, és ebből a JIT fordító állítja elő a natív kódot. A köztes kód és a metaadatok teszik ki együttesen a szerelvényt.
Fordítás: Forrás kód (.cs... stb) ->[Nyelvi Fordító] -> IL kód
Köztes rész: IL + metaadatok => szerelvény
Végrehajtás: Szerelvény -> [JIT fordító] -> Nativ Kód
JIT fordító a telepítéskor vagy a metódus első meghívásakor fordítja le a kódot.
b) Adja meg a futtatókörnyezetek alkalmazásának három fontos előnyét! (6 p)
Hordozhatóság: IL segítségével n+m translatorra van szükség n nyelv, m platformra implementálásához.
Kompaktság: Az IL kód kompaktabb is lehet, mint az eredeti kód.
Hatékonyság: Nem kell az új platformok sajátosságait használni, mindig újra tanulni.
(Az alábbi előny már nem éri meg a 6 pontot) Biztonság: Adat és kód ellenőrzése Együttműködés több nyelvel, hisz minden forrásból gyártható IL. Rugalmasság: metaprograming, dynamic code generation
2. Modern nyelvi eszközök
Ismertesse a C# nyelv property fogalmát! Kódrészlettel illusztrálja válaszát! (12 p)
Property: osztályok tagváltózóihoz férünk hozzá szintaktikailag hasonló módon, mint ha egy hagyományos tagváltozót érnénk el. Metódus szerűen implementáljuk a változó elérésének módját, így private tagváltozókat elérünk publikus get(x), set(x) jelleggel és ez nyelvi szinten támogatott.
Előnyök: tagváltozó elrejtése, származtatott érték, hozzáférés szabályozás.
public class Valami{ private int A; public Valami(int a){ this.A=a; } public A{ get { return A;} set { if(A>=< value) throw new ArgumentException("Bad Argument"); else A=value; } } }
3. Eseményvezérelt programozás és grafikus megjelenítés
a) Ismertesse röviden a Windows Forms saját vezérlők készítésének a lehetőségét! (6 p)
Control osztályból származtatás: akkor használjuk, ha egy teljesen új vezérlő elemet szeretnénk létrehozni. Csak minden Controlra közös tulajdonságokat és műveleteket kapjuk meg. Adhatunk hozzá új tulajdonságokat, eseményeket és a rajzolás a mi feladatunk.
Adott Control osztályból való származtatás: egy már meglévő vezérlőelemhez hasonló elemet szeretnénk alkotni. Csak az új / módosított speciális viselkedést kell megírnunk, a többi működés megmarad. Persze bővíthetjük új tulajdonságokkal, eseményekkel.
User Control osztályból származtatás: Vizuálisan elkészíthetjük az összetett vezérlőelemeinket, mint ahogy egy Form-ot készítenénk. A tartalmazott vezérlőelemeknek private a láthatóságuk. Tipikusan az összetett felhasználói felület megalkotásának eszköze.
b) Írjon olyan C# nyelvű alkalmazásrészletet, amely a (10,20) koordinátában megjelenít egy piros színnel kitöltött 50 pixel oldalhosszúságú négyzetet. A négyzet színe minden egérkattintáskor legyen egyre sötétebb piros (végül fekete). A megjelenítés a GDI-re épüljön (nem használhatja a Label, TextBox, stb. vezérlőket)! Csak a megoldáshoz szorosan hozzátartozó kódrészletet adja meg! (8 p)
public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (i>0) i -= 5; Invalidate(); } private Brush brush1; private int i = 255; protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); using( brush1 = new SolidBrush(Color.FromArgb(i, 0, 0) ) ) { e.Graphics.FillRectangle(brush1, 10, 20, 50, 50); } } }
4. Szálkezelés
a) Írjon programot, ami egy háttérszálban egy perc alatt elszámol 1-től 60-ig és az aktuális értéket kiírja konzolra. (7 p)
public class Program{ public static void Main(string[] args){ Thread t=new Thread(Szamol); t.Start(); t.IsBackground=true; } public void static Szamol(){ private static int szam=0; if(szam<60){ Sleep(1000); szam++; Console.WriteLine("A számláló értéke: {0}",szam.ToString()); } } }
b) Egészítse ki a programot úgy, hogy egy tetszőleges billentyű leütésével a számolás megszakítható legyen, de a program ne lépjen ki, csak újabb billentyű lenyomásakor (billentyű leütésre várakozni a ReadKey() hívással lehet). (4 p)
A Main függvénybe a t.IsBackground=true; után:
ReadKey(); t.Exit(); t.Join(); Console.WriteLine("A számolás megszakadt."); ReadKey();
5. Bináris komponensek evolúciója, Adatkezelés
Példán keresztül mutassa be az objektum relációs leképezést, adjon meg egy osztálydiagramot, amely tartalmaz egy-több, több-több kapcsolatot! Képezze le ezeket adatbázistáblába! (12 p)
6. Tervezési minták
a) Adja meg röviden, hogy miben és hogyan segítenek a tervezési minták a tervezés során! (3 p)
A tervezési minták a fejlesztés tervezés fázisában segítenek a megfelelő objektumokat megtalálni, definiálni. Segít meghatározni az objektumok számát, méretét, az interfészeket definiálni és az objektumokat implementálni. Az újrafelhasználható kialakítás eszköze, ami kialakítja a változtatható és kiterjeszthető munkát. b) 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! (10 p)
Strukturális tervezési minta, amely a rész-egész viszonyban álló objektumokat fastruktúrába rendezi és a kliensek számára elérhetővé teszi, hogy az egyszerű és a kompozit objektumokat egységesen kezelje.
7.*Ismertesse az MVC (Model-View-Control) vagy 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! (14 p)*
Model _ View _ Controller: Model = applikáció objektum View = megjelenítésért felelős objektum COntroller = a felhasználói interakcióra való reagálásért felelős objektum.
Inicializálás: A főprogram létre hozza a Modell-t, majd a View-t. A View eztán létrehozza a Controllert, majd a Modell magához köti a View-t.
Működés: Eseményt a controller kezeli, és esemény esetén a controller értesíti a modell-t az eseményről. A modell szól a view-nak, hogy változás történt, ezek alapján a View lekéri a modelltől az változást és update-li magát.
Előny: Többféle nézet ugyanahhoz a modellhez és a vezérlő és a nézet függetlenül cserélhető. Szinkronizáltak a nézetek.
Hátrány: Nő a komplexitás, túl sok szükségtelen frissítés, a Modell és a Controller el szigetelve vannak egymástól. ( Legutolsóra megoldás a Document-View).
8. Webalkalmazások (12 p)
a) Ismertesse a webalkalmazások állapotkezelését!
- kliens oldalon: wiew state, rejtett mező, cookie, URL paraméterek
- szerver oldalon: Application objektum, Session objektum, adatbázis, fájl
b) Hogyan használhatók a Session-ök állapotkezelésre?
- A kiszolgáló tárolja, felhasználónként elkülönítve
- Komplex objektumok tárolhatók benne
- Sok erőforrást (memóriát) igényelhet a kiszolgáló oldalon: skálázhatóság
- Nem lehet megosztani a felhasználók között
- Amennyiben nincs feltétlen rá szükség, érdemes kerülni a használatát
-- Main.kir26103id - 2010.06.10. -- waczkor - 2011.