SzoftTechVizsga100608
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.