Szoftvertechnikák ZH összefoglaló
|
|
- Júlia Somogyi
- 9 évvel ezelőtt
- Látták:
Átírás
1 Szoftvertechnikák ZH összefoglaló Mi lesz ZH-n? Fejezetek A modell és a kód kapcsolata, interfész és absztrakt ősosztály Futtatókörnyezetek Modern nyelvi eszközök Win32 alkalmazások architektúrája és eseményvezérelt programozás Felügyelt vastagkliens alkalmazások fejlesztése.net-tel Saját vezérlő készítése Grafika Generikus Típusok Multithreading Bináris komponenesek, reflexió Adatbázis Architekturális tervezés Letöltés Minta ZH ZH_Szoftech2007tavasz_ doc ZH típusa Gyakorlat- és példacentrikusabb, többet kell papíron programozni Nem algoritmusokat pontoznak, hanem a nyelvi elemeket, magyarázattal Javítás során szintaktikai hibák nem lényegesek (pontosvessző, függvényparaméterek sorrendje), szemantikai annál inkább (ha látszik, hogy nem érted a működés elvét)! A ZH három feladata beugró o Eseményvezérelt programozás témakör Console és Windows Forms gyakorlati példa WIN32 (natív) és C# elméleti kérdések o Modern nyelvi eszközök gyakorlat és elmélet Property Delegate Event Attribute Referencia-, Érték-típusok o Szálkezelés (nem biztos, csak nagy valószínűséggel, de mindenképpen olyan ami volt gyakorlaton is!) ZH témakörei Első témakörökhöz tartozó feladatok, Pl.: o Eddig property/delegate/event témakört példakóddal kellett bemutatni o Most konkrét feladatot kell megvalósítani Pl: sorrendezés delegate segítségével hírszerver megvalósítása események segítségével stb.
2 Windows Forms feladat, Pl.: o Billentyű-, egér-esemény o Időzítő alkalmazása o Rajzolás o stb. Szálkezelés, Pl.: o Szálak o Zárak o ManualResetEvent / AutoResetEvent o stb. Elméleti kérdések bármely témakörből Mit kell hozni ZH-ra? 8 db üres lap íróeszköz igazolvány uzsonna jókedv Terembeosztás Szoftech/2015/eredmények A modell és a kód kapcsolata, interfész és absztrakt ősosztály Objektum egységbe zárja az adatot és rajta dolgozó műveleteket minden objektum entitás, megkülönböztethető a többi objektumtól állapota van (saját) adatot rejt Osztály azonos objektumok egy osztályba tartoznak minden objektum tudja mi az osztálya Osztályok közötti kapcsolatok asszociáció, általánosítás, specializáció, aggregáció, függőség (szofttech anyag) Implementáció forward engineering: modellből kód reverse engineering: kódból modell round-trip engineering: előző kettő vegyesen o a modell és a kód végig szinkronban van Interfész felület amin keresztül egy szolgáltatást elérünk pontosan megfogalmazva: egymással szemantikailag szoros kapcsolatban lévő műveletek halmaza előnye: kliens pl. csak egy kiszolgáló interfészt ismer de több kiszolgálót tud vele használni (mint Javában a Collection és megvalósításai)
3 Futtatókörnyezetek Példa Java (JVM).NET (CLR) Virtuális gépekről általában absztrakt számítógép architektúra szoftverként működik a hardver fölött multiplatform felügyeli a kódot és az adatot o szemétgyűjtés, memória kezelése o biztonságos IL (intermediate language) o ha létrehozunk egy átmeneti nyelvet, O(nm) helyett O(n+m) fordítóra van szükség o pl. C#, F#, J#, L#, P# ARM, x86, PowerPC = 15 fordító, de C#, F#, J#, L#, P# IL ARM, x86, PowerPC = 5 IL-re fordító + 3 interpreter/jit egyes esetekben kompaktabb mint a natív kód tud skálázódni az aktuális platformon más nyelvek támogatása (natív dll meghívása).net CLR Framework azaz a.net keretrendszere o common language runtime CLR (ez futtatja a.net-es nyelveket) o osztálykönyvtárak BCL (base class library) Technológiák a nyelvben o ASP.NET webes alkalmazásokhoz o Windows Forms vastag kliens alkalmazásokhoz o ADO.NET adatkezelés (elavult) o Web services, stb. nyelvfüggetlen, minden rá épülő nyelv hozzáférhet.net objektumokhoz közös nyelvi futtatókörnyezet IL, GC, CAS objektumorientált keretrendszer beépített osztályai névterekbe rendezve egységes, sokféle típust definiál integráció régebbi technológiákkal o COM, C++, ActiveX o Win32 API elérhető (Pinvoke()) része a felügyelt C++ azaz C++ CLR, ahol vegyül a natív és a.net-es kód C# nincs mutató csak referencia ez a nyelv mutatja meg a legjobban a.net képességeit minden objektumként működik, nincs POD, mint C++-ban pl. 5.ToString() garbage collector nincs delete/memory leak
4 o tulajdonság: a fiatalabb objektumok hamarabb felszabadulnak o hátrány: nem determinisztikus o vészhelyzetben: System.GC.Collect() felügyelt a kód o metainformációk az objektumokhoz: new Object().GetType().GetMethods() o nem lehet hülyeséget castolni, kivételt dob a program o tkp. nem lehet túl súlyos szemantikai hibát véteni hibaüzenet nélkül egységes hibakezelés Felügyelt kód forrás kód CLR fordító IL + metaadatok JIT fordító natív kód IL o processzor és architektúra független o ellenőrizhető referenciák, típusok, hívási verem o továbbfordításra (JIT, bin) tervezték nem interpretálása o objektumorientált o könnyű visszafejteni assembly o általában egy dll vagy exe o IL kódot és erőforrásokat (jpg, txt, stb.) tartalmaz o metaadatokat tartalmaz az IL kódról,.net osztályokról o itt egy assembly fájl van, nem úgy mint a javában (*.class) o metaadatok név (fájlnév) verzió assembly referenciák más assembly-kre importált modulok listája, stb. azonosított assembly-k nincs dll hell mert pontos verzióra hivatkozik a program digitális aláírás CLR biztonság o felhasználói jog alapú biztonság o program eredete alapján védelem o beállíthatjuk a hálózatok milyen (windows) user/group férhet hozzá a programhoz o program jogosultságainak kezelése Modern nyelvi eszközök Nyelvi elemek megkülönböztetés o érték: int, float, enum, struct o referencia: interface, class, array, string alap típusok kb ugyanazok mint C-ben, bool nem cserélhető fel int-tel minden típus a System.Object-ből származik o metódusok: ToString, GetHashCode, Equals, GetType, stb. érték típusok stack-en jönnek létre (mivel int a = 5) o sokkal gyorsabb mint a referencia típus o nem lehet örökölni velük
5 o interfészt viszont implementálhat (struct) o pl. DateTime, Decimal, enum, Complex referencia típusok heap-en (mivel Object a = new Object()) o nagy teljesítménycsökkenés, ha GC takarítja őket o ne használjunk soha destruktort (finalizert) o minél előbb engedjük el: using statement vagy obj = null System.String o nem megváltoztatható az értéke o minden tagfüggvénye új példányt ad vissza (a GC a régit eltakarítja) o ha sokat kell konkatenálni, System.Text.StringBuilder/IO.StringWriter Új statement-ek: o foreach(<type> <varname> in <iterable >){... } o lock(<object>){... }; (Javában synchronized block) o checked {}, unchecked {} airtmetikai műveletek hibakezelése Osztályok o több interface-t implementálhat o csak egy osztálytól örökölhet Property kell tudni! o van egy tagváltozónk o írhatunk hozzá syntactic sugar get/set-et: private int name; public int Name { get { return name; } set { name = value; } } o nem lehet ugyanaz a neve a property-nek és a tagváltozónak! (nagybetű konvenció) Indexer o tároló építéséhez o megvalósításra olyan mint a Property o elméletben olyan mint az operátor túlterhelés o a [ ] operátorral get/set-elheted az osztályt mint tárolót (ha van tárolója) Reflection o is: típus tesztelés (pl. int is int == true) o as: castolás, ha nem lehetséges, null lesz o typeof: visszaadja a változó típusát (System.Type-ként) Operátor túlterhelés o Speciális operátorok sizeof, new, is, (typeof) o tulajdonképpen úgy működik mint C++-ban Delegate kell tudni! o nincs függvénypointer C#-ban o működése: definiálunk egy delegate-et: public delegate void FunctionWrapper() ahol várjuk a függvényt, beírjuk a delegate nevét (függvény paraméter, event, stb.) használjuk: feldolgozó_függvény(delegate_neve(saját_függvény))
6 Példakód: // ez a wrapper delegate string FunctionWrapper(); // ez a függvény kapja meg a callback-et void receiver(functionwrapper callback){ Console.Write(callback()); } // ez a callback string myfunction(){ return "Hello"; } public void test(){ // itt használjuk, kiírja, hogy "Hello" receiver(myfunction); } Event kell tudni! o delegate-ekre épített nyelvi elem o event-et csak az event-et közvetítő osztályból lehet hívni o beregisztrálás az event-hez való hozzáadással lehet o Példakód: // ez a wrapper delegate string FunctionWrapper(); // ez az event event FunctionWrapper OnEvent; // ez az event handler string myeventhandler() { return "Hello"; } // így kell használni void test(){ OnEvent += myeventhandler; } Struct o adat és kód o olyan mint az osztály, de nincs öröklés o mindig érték szerint van átadva Tömbök o érték típusnál lefoglalja őket azonnal o referencia típusnál végig kell rajtuk iterálni és meghívni a konstruktort Virtual method o explicit ki kell írni az őt override-oló metódus elé, hogy override o new virtual: újradefiniálod a függvényt, csak a neve marad Hozzáférés o public, protected, private maradt o sealed: nem lehet származni o internal: publikus elérés assembly-n keresztül o protected internal: védett assembly-n belül és származtatott típusra(?) Cast-olás o kivételt dob, ha nem lehet o as: null-t ad vissza o is Attribútumok o nem az osztály része, inkább információ a fordítónak o futási időben lekérdezhetőek
7 o saját attribútumokat is csinálhatunk o pl. [Serializable], [NonSerialized] Konstans o const: mint C++-ban a constexpr o readonly: Java final, C++ const statikus konstruktorok o egy osztályon belül lehetnek statikus attribútumok és metódusok ilyenkor a statikus konstruktor inicializálja az attribútumokat o akkor fut le, amikor először hozzá akarunk nyúlni az osztály statikus részéhez destruktorok o nem determinisztikus o nem tudjuk az objektum felszabadítás sorrendjét, idejét, stb. o implementálja az Idisposable interfészt volatile o lásd C++ ref / out o függvény paraméter lehet ref vagy out o ref: referencia szerint kerül átadásra o out: nem kell inicializálni, a függvény ad értéket neki o boxing: érték változót dobozolunk object-be, hogy referenciává váljon exception handling o try {} catch () finally {} Java namespace o lásd C++, de nem :: hanem. Win32 alkalmazások architektúrája és eseményvezérelt programozás WinAPI Változók kicsit más nevűek mint az alap nyelven (unsigned int: UINT) hungarian notation-t használnak (b: char, n: int, p: pointer, lp: far pointer) rengeteg preprocesszor konstans van (pl. WM_CLOSE --> WindowMessage_CLOSE) függvényhívások a stdcall konvenciót követik ha létrehozunk valamit az API-val, általában handle-t kapunk. (pl. HWND, HANDLE, HFONT) Eseményvezérelt programok WinAPI-val olyan mint egy állapotgép a program indulása után belefut egy while ciklusba ami folyamatosan vár a GetMessage függvényre a GetMessage visszatér egy üzenettel, ha valamit csináltunk (mozgattuk az egeret, nyomogattuk a billentyűzetet, stb.) ezt az üzenetet feldolgozza a WndProc nevű függvény egy nagy switch-ben. pl. WM_MBUTTONDOWN azaz lenyomtuk az egér egyik gombját Felügyelt vastagkliens alkalmazások fejlesztése.net-tel Kitérő az osztályok kaphatnak egy partial kulcsszót, ami megengedi, hogy úgy használjuk a projekten belül, mintha namespace lenne és különböző helyeken deklarálunk benne dolgokat
8 o erre azért van szükség, mert winforms-ban a designer rész is hozzáad, meg mi is szeretnénk saját függvényeket írni. de hogy ne keverjük össze a kettőt, két külön fájlba megy az osztály. Alkalmazás architektúra System.Windows.Forms névtér Minden ablak egy Form-ból származik Windows Forms sok tulajdonságot, eseményt definiál event-ek: Load, Click, Resize, Move, KeyDown vezérlőelemeket helyezhetünk el: ezek a komponensek (pl. TextBox, Label, stb.) o ezek lesznek a Form tagváltozói o InitializeComponent()-ben példányosodnak o ők is sok tulajdonságot és eseményt definiálnak A Windows Forms ráépül a natív üzenet- és ablakkezelésre o HWND megfelelője a Control.Handle o csomagolóként működik a natív ablak körül o üzenetkezelés is megvan benne: Application.DoEvents() menubar, toolbar, statusbar, context menu Időzítők System.Windows.Forms.Timer komponens o periodikus, időzített esemény o intervallumot adunk meg o tiltás/engedélyezés o Start(), Stop() o Pontatlan (~20ms) Dialog Windows beállításokhoz, információs doboz, stb. modális megjelenítés (nem válthatsz vissza a mögötte lévő (parent) ablakra) DialogResult-ban az ablakból való visszatérés értéke Párbeszédablakok??? igen, vannak Fontosabb alap vezérlők Button, CheckBox, ComboBox, DateTimePicker, Label, ListBox, ListView, DataGridView, RadioButton, TextBox, TreeView Fontosabb tároló vezérlők GroupBox, Panel, SplitContainer TabControl TabPage vezérlők adhatók hozzá Vezérlő hierarchia Component o nem feltétlenül vizuális, designerben használható komponens Formhoz Control
9 o Minden vezérlő őse o Egy natív ablak tartozik alá (Control.Handle) o összes közös tulajdonság, esemény, művelet hozzátartozik ContainerControl o Tároló vezérlők számára készült o Ha más Form-ra kerül a fókusz, megőrzi a tulajdonságait (TextBox, stb.) szülő-gyerek viszony o Control.Controls: gyerekablakok o gyerek ablak a szülő része, olyan mintha fizikailag benne lenne o a szülő ablak a Parent tagváltozóból érhető el birtokos-birtokolt viszony o lazább mint a szülő-gyerek o z-order-ben a birtokolt ablak a birtokos előbb helyezkedik el o birtokolt: Form.OwnedForms mutatja o birtokos: Form.Owner mutatja Form és események delegate típus Windows Forms-nál általában: public delegate void EventHandler(Object sender, EventArgs e) o sender: esemény kiváltója o EventArgs: esemény paraméterei EventArgs nem hordoz információt Ebből kell leszármazni, ha van esemény paraméter Billentyű események (Control event-ek) o KeyDown KeyEventHandler {Shift, KeyCode, KeyData} o KeyUp ugyanaz o KeyPress teljes gombnyomás {KeyChar} Destruktor ha egy dll-t unload-olunk ha drága erőforrást használunk pl. natív ablak, adatbázis, file, lock Mit használjunk, ha a destruktor nem determinisztrikus? o IDisposable interfész o void Dispose() metódus ebben szabadítsuk fel az erőforrásokat o destruktorban is hívjuk meg a Dispose-t IDisposable miatt using statement használata az API osztályain (ők tuti támogatják) Tehát amíg a destruktorral explicit megadhatjuk, mit töröljön a GC, ha éppen gyűjt, addig a Dispose csak egységes kezelést biztosít a nem felügyelt erőforrások determinisztikus felszabadításához Összefoglalás egyszerű, de a WPF jobb Saját vezérlő készítése Három módszer Control osztályból származás akkor használjuk, ha teljesen új vezérlőelemet készítünk
10 emiatt csak az általános Control-ra vonatkozó tulajdonságokat kapjuk meg természetesen hozzáadhatunk saját property-t, eseményt rajzolás is a mi feladatunk pl. aktuális időt mutató label Vezérlőből származás létező vezérlőt akarunk testreszabni (speciális viselkedés megvalósítása) pl. TextBox-ból PasswordBox UserControl készítése mivel a UserControl tartalmazhat más UserControl-okat, lehet a miénken belül is pl. TextBox példa: FilePicker TextBox és mellette egy Button, melyre a OpenFileDialog jön elő összetett, moduláris felület tervezéséhez Grafika GDI graphical devices interface grafikus megjelenítést tesz lehetővé Win32 alkalmazásokhoz képességek: o vektorgrafika o 2D o szöveg, bitmap megjelenítés o kép transzformációk eszközfüggetlen grafikus megjelenítés alapja a DC (Device Context) o grafikus eszközt reprezentál o HDC (HandleDC)-t kapunk, menete: eszközkapcsolat létrehozása rajzolása az eszközre eszközkapcsolat lezárása o bármire rajzolhatunk; fejléc, menü, képernyő, memória, nyomtató o ha rajzoltunk és valami felé kerül, nem jegyzi meg, frissítenünk kéne o WM_PAINT flag - újrarajzolás GDI+ olyan mint a GDI, de.net PaintEventArgs paraméter event-nél PaintEventArgs.Graphics ez a HDC PaintEventArgs.ClipRectangle terület a Graphics-en Form.ClientRectangle ablak területe <component>.clientrectangle akármire rajzolhatunk színkezelés o Color.Red piros szín (wow) o Color.FromArgb() alpha + rgb o Color.Empty nincs kitöltés, null o Color.Transparent key color az átlátszósághoz Graphics osztály o Graphics.Draw(Rectangle Line) o Graphics.FillRectangle
11 Pen o vastagság, szín, stílus (dotted) Brush o nem olyan mint a Pen, sokkal inkább egy tapéta; o kitöltési színt, mintát határoz meg o SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush o előre definiált, pl. Brushes.Blue Bitmap o Image osztály áll egy Bitmap-ból és egy Metafile-ból az eddig említett eszközök (Graphics, Pen,...) mind nagyon sokat esznek, ezért azonnal fel kell szabadítani őket (using, Dispose) egyéb képességek o antialiasing o jpg, png, gif, bmp támogatás o kép effektelés o unicode egyéb megjegyzések o ha lassú a rajzolás, dupla bufferelés: memóriában rajzolunk és csak a kész képet rakjuk ki a képernyőre Generikus Típusok C++ C++-ban tanultuk, hogy kell, és hogy mik a jellemzői.net 1.0 nincs generikus típus, vezess mindent vissza az ős-osztályra (object) macerás megoldás (castolni kell, szintén futási időben derül ki a hiba, keveredhetnek az objektumok) megoldás: leszármaztatni minden típus esetén egy specializált tárolót.net 2.0< generikus típusok (képességek: lásd Java) C++-szal ellentétben: lefordul IL kóddá a template is, majd a behelyettesítés is o a template hibái már fordítási időben kiderülnek referencia típusok esetén futásidőben helyettesítődik be, csak hivatkozások készülnek az objektumokra ezért nincs kódburjánzás mint C++-ban érték típusnál viszont minden template be lesz helyettesítve! reflexiót támogatja template változó helyén állhat: class, struct, interface, delegate, függvény implicit template példányosítás: (ha a függvény paraméterek között van template változó) kényszerek o struct: csak érték típus lehet (int, double, stb.) o class: csak referencia típusok lehetnek (osztályok) o konkrét osztálynév / interfész név: ez legyen az őse o new(): nem lehet letiltva a default konstruktor o pl. class Name<T> where T : new() {... } class Name<T, U> where T : struct where U : class, new() {... }
12 Java generikusság olyan mint a C#-ban template nem működik értékkel, csak referencia típussal kényszerek megadása szintén működik: public class Name<T extends Number & Comparable> {... } viszont nem tudja: T = new T(), vagy T[] = new T[100]; nem támogatja a referencia szerint átvételt viszont tud wildcard-ot: Collection<? extends Osztálynév> Multithreading Bevezetés egy program alatt: o több process, egy process alatt: több thread Process saját címtartomány rendszererőforrások legalább 1 thread (ha nem indítasz külön thread-et, az az 1 thread amiben vagy) def: védelmi egység el vannak egymástól szigetelve, nincs hatással más process-re minden process adott egységnyi (sokszor nagyobbb mint a ram) virtuális címtartományt kap (szaron tanultuk) WinAPI: CreateProcess fgv. elindít egy folyamatot.net: System.Diagnostics.Process.Start Thread a thread egy process-en belül egy feladatot hajt általában végre benne vagyunk a main thread-ben, pl. a main függvény, ha indítunk thread-eket, multithread programunk lesz az OS ütemezi őket egy cpu core-on egyszerre egy thread futhat, (intelen 2, mert hyperthreading) állapotok o futó o felfüggesztett OS felfüggesztette mert másik thread hajt végre valamit o I/O műveletre vár GUI alkalmazásoknál muszáj több szál, különben amíg pl. egy komponens animálódik, nem tudnánk kattintani szerver esetén is több szál kell, pl. minden kliens lekéréséhez (átlagosan jobb kihasználás) Thread vs. Process a thread kis erőforrásigényű, könnyen kommunikálnak egymással minden thread-nek saját stack-je van, lokális változók rejtve a process-ek elszigeteltek, nehéz köztük kommunikálni Szinkron/Aszinkron szinkron végrehajtás: a hívó a művelet befejezéséig várakozik
13 aszinkron: a hívó nem várja meg a művelet befejezését, majd később valamilyen módon értesül az eredményről aszinkront hogyan? o OS belső megszakításával o külön szálban futtatással Win32 szálkezelés CreateThread elindít egy thread-et.net System.Threading névtérben keresgéljünk Thread osztály kezeli a thread-et pl.: Thread t = new Thread(Function); Start() metódus indítja a thread-et (paraméterezve is megadható a függvényünk) foreground/background-thread: a background futásának végét nem várja meg a fő szál (magyarul bezáródik a program), a foreground-ét igen Thread.GetCurrent() akutális szálat adja vissza Thread.Name nevet adhatunk a szálnak Thread.Sleep CPU terhelése nélkül szüneteltetjük a szál futását szálak prioritása o effektív prioritás: priority(process)*priority(thread) o process prioritásai: Idle, BelowNormal, Normal, AboveNormal, RealTime RealTime: kizárhatjuk az OS-t o thread prioritásai: Lowest, BelowNormal, Normal, AboveNormal, Highest o default: Normal o OS függő a pontos prioritás o Windows Forms: aktív ablak thread-nél javasolt a magasabb prioritást kivéve, ha a process vezérlése sokba kerül, ilyenkor alacsonyabbat adjunk a GUI-nak Realtime OS (kitérő) hard realtime o garantált a válaszidő egy előre megadott időn belül (repülőgép) soft relatime o kábé biztosított a válaszidő (Skype) automatikus szemétgyűjtés bezavar, kevésbé determinisztikus vele a program Exception handling thread-ben nem jut ki a thread-ből az exception ThreadException kapja el őket Thread-ek szinkronizációja mutual exclusion problémája o bizonyos erőforrásokhoz több szál fér hozzá, egyszerre nem írhatnak bele o be kell vezetni egy jelzést ami alapján tudjuk, hogy szabad-e az erőforrás o ez a jelzés egy atomi szintű művelet kell, hogy legyen, hogy ne lehessen pont rosszkor/túl későn megnézni az értékét o kritikus szakasz: ez a problémás erőforrással való interakció.net
14 o lock: C# utasítás, thread-ek közül mindig csak egy férhet hozzá o Mutex: processekre is tekintettel van, azokból is csak egy férhet hozzá o Semaphore: Mutex, de több process-t/thread-et engedélyez o ReaderWriterLock: sok olvasó, egy író o lock pont úgy működik mint a Javás synchronized (obj) {... } o minden referencia típus lockolható o szálbiztos osztályok csak amit muszáj, lassú a sok lockolás C# - dokumentációban jelzi CRL van szálbiztos változata is Egyéb o 32 bites vagy annál kisebb típusokat nem kell lockolni, hiszen egy utasítás o C# - Interlocked osztály, atomi szintű aritmetikai utasítások nagyobb típusokra (double, long) o ne cache-elődjön egy változó a regiszterben: volatile (változó sorrend megmarad!) o szál kiléptetése: minden thread nézi, hogy bool end == true-e, ekkor kilép.net szinkronizációs konstrukciók o lock megoldja a mutex problémát o jelzésre alkalmas függvények EventWaitHandle thread jelzésre vár Monitor.Wait / Pulse blokkolásra vár(?!) o WaitHandle olyan osztályok őse amelyekre várakozni lehet AutoResetEvent és ManualResetEvent eseményekre való várakozást tesz lehetővé o AutoResetEvent.Set() jelez az event, az egyik thread-ben lévő lock feloldódik (Java: notify()).waitone() ha az event jelzett, tovább fut (Java: wait()).reset() nem jelzett állapotba állítja az event objektumot (?) o ManualResetEvent Set() ha jelzett, mindenki mehet (Java: notifyall()) ha nem jelzett, mindenki vár o Mutex lassabb mint a lock WaitOne vár, ReleaseMutex elenged o Semaphore lásd Mutex, de több process/thread férhet hozzá egyszerre o Thread.Interrupt használata probléma: ha az osztályunk más osztályok metódusait hívja és ezekben blokkolás történik, nem tudunk flaget ellenőrizni megoldás: Thread.Interrupt-ot meghívjuk a thread-en, és az dob egy exception-t, ha várakozik, így ki tudunk lépni a távoli loop-ból o Thread.Abort használata olyan mint a Thread.Interrupt, de mindenhonnan kilépteti, még egy futó while ciklusból is ne használjuk, csak ha a programból lépünk ki
15 Szál állapotok: o WaitSleepJoin állapot (azt írja fontos...) Sleep, Join, lock, WaitOne, stb. állapotok hatására kerül ide hogy léphet ki belőle: várakozás feltétel teljesül timeout lejár Thread.Interrupt/Abort hívására megszűnik a várakozás Windows Forms Multithreading Probléma: Control objektumok csak a main thread-ből érhetőek el Mi van, ha egy másik thread-ből szeretnénk módosítani egy TextBox tartalmát? o Control.Invoke paranccsal beadhatunk egy függvényt a Control száljának Thread-pool o probléma: sok szált akarunk futtatni, viszont ez költséges és nem optimális o megoldás: program indulásakor indítunk thread-eket, ezekből allokálunk ha szükség van rá, ha befejeződik, visszakerül a pool-ba és újabb kérést szolgálhat ki o ha túl sok szál van, blokkoljuk a hívást, csak akkor indul el, ha van szabad szál Threading összefoglalás növeli az alkalmazás komplexitását o szinkronizáció, mutex nehezen kinyomozható problémák túl sok szál terheli a rendszert deadlock alakulhat ki o több szál egymásra vár a lock miatt o timeout alkalmazása megoldást jelenthet Bináris komponenesek, reflexió Fordítás folyamata C/C++-ban prog2 dll probléma: ha átírjuk a dll-t, a program elszáll megoldás: interfészen keresztül használjuk az osztályt, osztályokat ezt hívják COM-nak (Component Object Model)
16 .NET mi van a dll-ekkel? módosíthatom? igen, megoldották. Reflexió lekérdezhetjük, hogy egy assembly-ben milyen típusok vannak azon belül függvényneveket, tagváltozókat, stb. pl. new Object().GetType o FieldInfo típussal tér vissza: Name tagváltozó neve DeclaringType IsPublic MemberType tagváltozó típusa Saját attribútum System.Attribute osztályból származunk le [AttributeUsage(...)] határozza meg, hogy mire használjuk a tagváltozóinkat példa kód: public static void Save(object o){ Type type = o.gettype(); object[] attributes = type.getcustomattributes(typeof(myattribute), false); if (attributes.length == 0) return; FieldInfo[] fieldinfos = type.getfields(bindingflags.public...); foreach (FieldInfo fi in fieldinfos){ object[] fa = fi.getcustomattributes(type.gettype("storableattribute"), false) if (fa.length == 0) continue; MyAttribute attr = (MyAttribute) fa [0]; Console.WriteLine("Name: {0}", attr.name); Console.WriteLine("Value: {0}", fi.getvalue(o).tostring()); } } Adatbázis Mi az adatbázis? jövő félévben tanultuk SQL bevezető DDL (Data Definition Language) tábla létrehozása, szerkezetének módosítása DML (... Manipulation...) rekordok beszúrása, módosítása, törlése, lekérdezése majd egyszer szoftlab5-ből már tanultuk ADO.NET.NET környezetben adatbázis elérés SQL parancsok futtatása, eredmény elérése alternatívák o LINQ to SQL o Entity Framework Connection kapcsolat a db felé Command SQL parancsok futtatását teszi lehetővé DataReader parancs utáni eredményhalmaz IConnection, DBConnection, Icommand, DbCommand, IDataReader, DbDataReader o interfészek és ősosztályok ADO.NET-hez
17 Előző interfészek implementációi o Oracle: OracleConnection,... o MSSQL: SqlConnection,... Command műveletek o ExecuteNonQuery nem tölti meg DataReader-t (INSERT, UPDATE) o ExecuteScalar egy számmal tér vissza o ExecuteReader egy vagy több rekorddal tér vissza (default?) DataReader-rel nem lehet többször végigmenni az eredményen (mint a C++ forward iterator) DataReader példány["oszlopnév"] visszaadja az aktuális sor oszlopának a tartalmát mivel költséges erőforrás az adatbázis, zárjuk le minél hamarabb DataSet alapú kapcsolat nélküli adathozzáférés o query után betöltődik a DataSet-ben az eredmény o kapcsolatot bontunk o DataSet-tel való interakció, mintha élő db-vel dolgoznánk o újra kapcsolódunk az adatbázishoz o DataSet változásait áttöltjük a db-be Architekturális tervezés Architektúra szoftverrendszer tervezése, strukturálása strukturális elemek kompozíciója, együttműködése architektúra-centrikusság o a modellek láthatóvá teszik, specifikálják, megalkotják és dokumentálják az architektúrát o unified process futtatható architektúra sorozatos finomítását írja elő o modell-nézet architekturális információtartalma o nem minden terv/modell architektúra o architekturális elem meghatározó a rendszer felépítése, teljesítménye szempontjából amiből már nem lehet elvenni ahhoz, hogy megértsük és elmagyarázzuk a rendszer működését architektúra nézetei (elrendezés: csomag, alrendszer, dinamika: kölcsönhatás, állapotok) o use-case nézet use-case-ek o tervezési nézet osztályok, interfészek együttműködések o implementációs nézet komponensek o process részek aktív osztályok o telepítési nézet csomópontok mi az architektúra? (különböző szempontból) o használati eset: funkcionális követelmények o tervezési vagy logikai: főbb csomagok, alrendszerek, osztályok o implementációs nézet: komponensek, dll-ek, exék, forráskódok szervezése
18 o processz nézet: konkurrens aspektus, folyamatok, szálak, deadlock, teljesítmény o telepítési nézet: futtatható és egyéb komponensek mely számítási csomópontokra kerülnek architektúra és funkcionalitás o az architektúrának és a funkcionalitásnak egyensúlyban kell lenni o az architektúra legyen jól strukturált, a funkció működjön jól o klasszikus rendszer: az architektúra forrása nagyrészt az ún. lopás, és másodlagosan a módszer és intuíció o ritka rendszer: leginkább intuíció o mi a lopás? jól bevált megoldások átvétele Rétegelés alapvető szervezési elv: kódot rátegekbe szervezzük előfordulása o OS felépítésénél driver OS alkalmazás o hálózat o vállalati információs rendszerek i-edik réteg szolgáltatást nyújt az i+1-edik rétegnek rétegeken belül tetszőleges függőség lehet a komponensek között o egymástól független komponenseket egy rétegen belül csoportosítjuk o a részek cserélhetők, fejleszthetők rétegezési példa: driverek-nél o driver, alatta polling o driver, alatta interrupt rétegelés előnye o ha a feladat túl komplex, vezessünk be absztrakciós szinteket o a rétegek használatának megértéséhez nem kell a többi réteget ismerni o többféleképpen használhatóak föl (hálózati protokollok) rétegelés hátránya o egyszerű feladatnál felesleges o a nagyobb változások végigvonulnak az összes rétegen Layer o logikai réteg, ezt tervezzük meg először, eddig erről volt szó o célszerű külön modulba tenni Tier o fizikai réteg, más gépen fut, hálózati kommunikáció jellemző rá o a logikai rétegekre mondjuk meg mely gépeken fussanak Információs rendszerek nincsenek rétegek: batch rendszer kétrétegű architektúra: kliens szerver háromrétegű architektúra SOA architektúra Kétrétegű architektúra az adat megosztott, a feldolgozás/megjelenítés elosztott pl. megosztott adatbázis alkalmazások
19 ún. kliens-szerver működés előnyei o adatkarbantartás elkülöníthető az alkalmazási rétegtől o több alkalmazással is hozzáférhetünk a kliensen a szerverhez o RAD támogatás miatt népszerű hátrányai o validálás hova kerül? adatintegritás, üzleti szabályok, számítások? o ha kliens oldalon van, több helyen kell karban tartani o keveredik az üzleti logika a GUI-val o adatbázisban nem nagyon támogatott a validálás és nem is ez a dolga mikor használjuk o egyszerű alkalmazásoknál Háromrétegű architektúra rétegek o alkalmazás (pl. UI) o tartomány üzleti logika o adatbázis belső sémával előnyök o üzleti logika nincs duplikálva az alkalmazásban o könnyen újrafelhasználható (webes és vastag kliens) o az alkalmazás kevésbé függ a fizikai adatszerkezettől és az adatbázis helyétől o db átszervezhető az alkalmazástól függetlenül hátrányok o extra komplexitás o nagy erőforrásigény o üzleti logikai komponenseket le kell képezni relációs modellre, ami nehéz Microsoft háromrétegű modellje nem csak microsoft, minden környezetben ezek szoktak megjelenni adathozzáférési logika (Data Access Layer): elrejti az adatkezelő rendszer szolgáltatásügynökök: külső rendszerrel való kommunikáció üzleti entitás: adatokat reprezentálnak (megrendelés, vásárló) üzleti komponensek: üzleti logikát valósítják meg (pl. megrendelés felvétele, listázás, üzleti számítások, stb.) üzleti munkafolyamatok: bonyolultabb üzleti folyamatok esetén lépéseket definiálnak, a folyamat levezénylése a feladatuk szolgáltatásinterfészek: vékony réteg; kliensek csak ezen keresztül férhetnek hozzá az üzleti szolgáltatásokhoz, belső komponensek szabadon átszervezhetőek felhasználói felület komponensei: felhasználói felület űrlapjai, ablakai rajtuk lévő logikával felhasználói folyamat komponensek: bonyolultabb felhasználói folyamatok interakciók levezénylése (kisebb jelentőségű, ritkán használt) Document-View architektúra leginkább Excel-szerű programoknál ne keverjük a GUI-ba az alkalmazáslogikát válasszuk ketté az adatok kezelését és a megjelenítést másik megoldás az MVC
20 felépítés: o Document feladata az adatok tárolása, menedzselése, modellnek is nevezik olyan osztályok melyek adatokat tagváltozóikban tárolják és olyan tagfügvényekkel rendelkeznek melyek kezelik ezeket (Load, Save, stb.) elérhetővé teszik ezt más osztályok számára (View részére) o View feladata az adatok megjelenítése és az interakciók kezelése ez általában az ablak vagy egy tab több nézet esetén hogy frissítsünk? o kezeljük az adatokat külön dokumentumként, a modellre view-kat regisztrálunk be o ha valamelyik view megváltoztatja a dokumentum adatait, értesíti a többit a változásról Model-View-Controller architektúra leginkább GUI-s programoknál ne legyen köze az alkalmazásnak a megjelenítéshez felépítés o Model alkalmazáslogika tartalmazza az adatokat valamint a műveleteket o View megjelenítés megjeleníti az adatokat amit a modellből olvas ki o Controller interakció a felhasználói interakciót kezeli o Observer ebben tárolódnak a View-k és Controller-ek, garantálja hogy konzisztensen mutassa az adatokat a View és a Controller a Model-nek megfelelően viselkedjen előnyök o többféle nézet ugyanannak az adatnak o szinkronizált nézetek o függetlenül cserélhető bővíthető view-k és controllerek o a modell könnyebben tesztelhető o lehetséges framework(???) hátrányok o komplexitás növekszik o túl sok szükségtelen frissítés o view és controller gyakran nem különválaszthatő vagy nem is célszerű
21 MVC csak a webes világban elterjedt Piping adatfolyamot feldolgozó rendszer szűrőkből áll csővezetékek kötik össze többféleképpen kombinálható pl. videó feldolgozás, banki jelentések részei: forrás, nyelő, szűrők, vezetékek szűrők o transzformációt hajtanak végre o aktív: behív, kiad (szinkronizálhatóak) o passzív: megkap, elveszik tőle pl. FIFO hiba esetén kérdéses a folytatás
C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21
C# Szálkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21 Tartalomjegyzék 1 Bevezetés 2 Szálkezelés 3 Konkurens Programozás Tóth Zsolt (Miskolci Egyetem)
C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?
1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"
Bánsághi Anna anna.bansaghi@mamikon.net
ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64
OOP és UML Áttekintés
OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés
Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás
A szerzõrõl... xi Bevezetés... xiii
TARTALOMJEGYZÉK A szerzõrõl...................................................... xi Bevezetés...................................................... xiii I. rész A Visual Basic 2005 környezet 1. óra Irány
Objektumorientált fogalmak, felügyelt környezetek
Objektumorientált fogalmak, felügyelt környezetek 1. Ismertesse a felügyelt környezetek fontosabb szolgáltatásait! Egy plusz réteg az OS fölött, plusz szolgáltatásokat nyújt Szemétgyűjtés (garbage collector,
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási
Bánsághi Anna anna.bansaghi@mamikon.net
ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 1. ELŐADÁS - C# ÁTTEKINTÉS - 1 2015 Bánsághi Anna 1 of 84 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 84
Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés
Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;
C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18
C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi
C#, OOP. Osztályok tervezése C#-ban
C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat
C# osztályok. Krizsán Zoltán
C# osztályok Krizsán Zoltán Fogalma Önálló hatáskőrrel rendelkező, absztrakt adattípus, amely több, különböző elemet tartalmazhat. Minden esetben a heap-en jön létre! A programozó hozza létre, de a GC
Operációs rendszerek. Az NT folyamatok kezelése
Operációs rendszerek Az NT folyamatok kezelése Folyamatok logikai felépítése A folyamat modell: egy adott program kódját végrehajtó szál(ak)ból és, a szál(ak) által lefoglalt erőforrásokból állnak. Folyamatok
Access adatbázis elérése OLE DB-n keresztül
Access adatbázis elérése OLE DB-n keresztül Készítsünk egy grafikus felülető alkalmazást, ami lehetıvé teszi egy Access adatbázisban tárolt hallgatói adatok (EHA, Név, e-mail cím) lekérdezését (összes
C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4
C# versus Java Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3 Bedők Dávid 2016.10.01. v0.4 Azonosságok I. Curly-bracket nyelvek ({}) C, C++, PHP, JavaScript, stb.) ProgrammingTheorem
2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése
Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,
OOP #14 (referencia-elv)
OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\
Vizuális, eseményvezérelt programozás X. V 1.0
Vizuális, eseményvezérelt programozás X. V 1.0 ÓE-NIK, 2011 1 Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Osztályok. 4. gyakorlat
Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum
1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon
1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
Vizuális, eseményvezérelt programozás XI.
Vizuális, eseményvezérelt programozás XI ÓE-NIK, 2011 1 Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik Ismeretük szükséges,
Interfészek. PPT 2007/2008 tavasz.
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2 Már megismert fogalmak áttekintése Objektumorientált
Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu
Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:
Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén
Már megismert fogalmak áttekintése
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak
Programozás II gyakorlat. 6. Polimorfizmus
Programozás II gyakorlat 6. Polimorfizmus Típuskonverziók C-ben: void * ptr; int * ptr_i = (int*)ptr; Ez működik C++-ban is. Használjuk inkább ezt: int * ptr_i = static_cast(ptr); Csak egymással
I. rész: A Microsoft Visual C# és a Microsoft Visual Studio 2005 bemutatása. 1. Üdvözöljük a C# világában! 3
Köszönetnyilvánítás Bevezetés Honnan kezdjük a könyv olvasását? A könyvben használt konvenciók és egyéb jelölések Konvenciók Egyéb jelölések Online kiegészítő tartalom Technológiai frissítések Rendszerkövetelmények
Java Programozás 11. Ea: MVC modell
Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02 MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát
Concurrency in Swing
Concurrency in Swing A szálkezelés a swing alkalmazásokban is fontos. Cél egy olyan felhasználói felület készítése, amely soha nem fagy, mindig válaszol a felhasználói interakciókra, bármit is csináljon
Konkurens TCP Szerver
A gyakorlat célja: Konkurens TCP Szerver Megismerkedni a párhuzamos programozás és a konkurens TCP szerver készítésének az elméleti és gyakorlati alapjaival és egy egyidejűleg több klienst is kiszolgáló
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
és az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread
Végrehajtási szálak Runnable, Thread Végrehajtási szálak Java-ban A Java program az operációs rendszer egy folyamatán (process) belül fut. A folyamat adat és kód szegmensekből áll, amelyek egy virtuális
Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat
Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot
OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek
OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető
Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Objektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt
A.NET Framework és programozása C# nyelven. Kedd 16-17 30 I104
A.NET Framework és programozása C# nyelven Kedd 16-17 30 I104 Feltételek I104 Visual Studio 2013 Letölthető http://msdn.mik.uni-pannon.hu oldalról Aki saját gépet hoz, annak javasolt a legújabb verzió
JAVA PROGRAMOZÁS 2.ELŐADÁS
Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,
Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 12. előadás Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2014.
Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 8. előadás (ASP.NET WebAPI) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A webszolgáltatás
ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor
ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés Készítette: Gregorics Tibor Előfeltétel: OAF (EAF2) Kötelező házi feladatok: 4 darab feladat max. 5-5 pontért Feltételek 2 hét késés: legfeljebb 3
Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;
PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function
.NET Microsoft.Net Framework
1.oldal.NET Microsoft.Net Framework Előadás jegyzet Előadó: Pócza Krisztián ELTE,2008.NET Framework alapjai Hasznos tudnivalók A jegyzet Pócza Krisztián.NET Framework és Programozása I. című előadása alapján
Programozás C++ -ban 2007/7
Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum
Bevezetés a Python programozási nyelvbe
Bevezetés a Python programozási nyelvbe 7. Gyakorlat osztályok, objektumok (utolsó módosítás 2018. aug. 28.) Szathmáry László Debreceni Egyetem Informatikai Kar 2018-2019, 1. félév OO programozás Pythonban
C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag
C# osztálydeníció Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem.net C# technológiák tananyag objektum orientált programozás tananyag Tartalom 1 Bevezetés 2 Osztály létrehozása, deníció
Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs
Szoftver labor III. Dr. Csébfalvi Balázs Irányítástechnika és Informatika Tanszék e-mail: cseb@iit.bme.hu http://www.iit.bme.hu/~cseb/ Tematika Bevezetés Java programozás alapjai Kivételkezelés Dinamikus
Objektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Láthatósági szintek Névterek és hatókörök Osztály szintő tagok Beágyazott osztályok
Magas szintű programozási nyelvek 2 Előadás jegyzet
Magas szintű programozási nyelvek 2 Előadás jegyzet 1. Rendszerfejlesztés 0. lépés: Elemzés (analízis) 1. lépés: Tervezés a, technológia független rész b, technológia függő rész 2. lépés: Megvalósítás
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus
Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
Operációs rendszerek. Az X Window rendszer
Operációs rendszerek X Windows rendszer Az X Window rendszer Grafikus felhasználói felületet biztosító alkalmazás és a kapcsolódó protokoll 1983-84: a Massachusetts Institute of Technology-n (MIT, USA).
Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor
Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10 1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig
Programozási nyelvek JAVA EA+GY 1. gyakolat
Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program
Programozás 2., I. kötet Az objektumorientált paradigma alapjai
TÁMOP-4.1.1.F-14/1/KONV-2015-0009 A GÉPÉSZETI ÉS INFORMATIKAI ÁGAZATOK DUÁLIS ÉS MODULÁRIS KÉPZÉSEINEK KIALAKÍTÁSA A PÉCSI TUDOMÁNYEGYETEMEN Achs Ágnes Szendrői Etelka Programozás 2., I. kötet Az objektumorientált
Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:
Operációs rendszerek MS Windows NT (2000) folyamatok Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok: szálak ütemezése végrehajtásra
Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?
A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály
Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 4. Előadás Dr. Bécsi Tamás A RadioButton komponens Tulajdonságok: bool Checked Állapotjelző két állapot esetén: (true: bejelölve,false: nem bejelölve) Események: Esemény
Programozási nyelvek Java
statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály
Programozási nyelvek II. JAVA EA+GY 1. gyakolat
Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről
Java II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
Programozás BMEKOKAA146. Dr. Bécsi Tamás 10. Előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 10. Előadás A Timer komponens Tulajdonságok: Típus Tulajdonság Magyarázat bool Enabled Engedélyezve int Interval Meghívás periódusa ms-ban Metódusok: Típus Metódus
1. Bevezetés A C++ nem objektumorientált újdonságai 3
Előszó xiii 1. Bevezetés 1 2. A C++ nem objektumorientált újdonságai 3 2.1. A C és a C++ nyelv 3 2.1.1. Függvényparaméterek és visszatérési érték 3 2.1.2. A main függvény 4 2.1.3. A bool típus 4 2.1.4.
3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1
ADATBÁZIS-KEZELÉS ACTIVEX VEZÉRLİK ALKALMAZÁSÁVAL I.... 1 ACTIVEX... 1 ACTIVEX CONTROL... 1 SAJÁT ACTIVEX VEZÉRLİ LÉTREHOZÁSA... 1 circctrl.cpp... 2 Háttérszín tulajdonság hozzárendelése a vezérlıhöz...
Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés
Tartalom D Szoftvertechnológia elıadás Architektúra D vs CORBA Példá 2 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap) NetDDE NetBIOS
Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék
Az UPPAAL egyes modellezési lehetőségeinek összefoglalása Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Résztvevők együttműködése (1) Automaták interakciói üzenetküldéssel Szinkron
Osztálytervezés és implementációs ajánlások
Osztálytervezés és implementációs ajánlások Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 04. 24. Osztálytervezés és implementációs kérdések OTERV / 1 Osztály tervezés Egy nyelv
Programozás II. labor
Programozás II. labor 1. rész Programozási tételek Öröklődés Interfészek Eseménykezelés Kivételkezelés Visszalépéses keresés Programozás II. Programozási tételek OOP alapok ismétlése Öröklődés Öröklődés
Java és web programozás
Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:
Osztálytervezés és implementációs ajánlások
Osztálytervezés és implementációs ajánlások Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 04. 24. Osztálytervezés és implementációs kérdések OTERV / 1 Osztály tervezés Egy nyelv
Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016
Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS 2015-2016 Objektumorientált programozás OOP PHP-ben 2 A PHP az 5.0-as verziójától megvalósítja az OO eszközrendszerét OO eszközök:
Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015
Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 9. ELİADÁS Kivételkezelés (Exception handling) 2 Mi a kivétel (exception)? A kivétel, olyan hibás állapot vagy esemény, amely
ISA szimulátor objektum-orientált modell (C++)
Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált
A Java nyelv. Dialógus ablakok. Elek Tibor
A Java nyelv Dialógus ablakok Elek Tibor Dialógus ablakok Szerepe: felbukkanó ablak (üzenet, input) Felépítése, használata majdnem ua., mint JFrame Tulajdonos: lehet tulajdonosa, amellyel együtt ikonizálódik,
Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;
Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely
Johanyák Zsolt Csaba: Grafikus felület programozása. http://www.johanyak.hu e-mail: johanyak.csaba@gamf.kefo.hu Copyright 2008 Johanyák Zsolt Csaba
Johanyák Zsolt Csaba: Grafikus felület programozása http://www.johanyak.hu e-mail: johanyak.csaba@gamf.kefo.hu Copyright 2008 Johanyák Zsolt Csaba 1. Gyümölcsárazó automata Készítsünk egy gyümölcsárazó
WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens
WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens Hozzunk létre egy ASP.NET Empty Web Site projektet! A projekt neve legyen WCFAPP1. Ez
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
Programozási nyelvek és módszerek Java Thread-ek
Programozási nyelvek és módszerek Java Thread-ek Laki Sándor lakis@inf.elte.hu 2006. május 3. 0-0 Szálak (Threads) Ahhoz, hogy egy mai rendszer m ködhessen több 10-100 folyamatnak kell futnia. A folyamatok
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális
Objektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok
C++ programozási nyelv
C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/12 Tartalomjegyzék Miért
Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 8. előadás Visszatekintés A Windows Console alkalmazások egy karakteres képernyőt biztosítottak, ahol a kimenet a kiírt szöveg, míg a bemenet a billentyűzet volt.
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html 1 Kivételkezelés I. szokatlan, váratlan
Programozás II. 4. Dr. Iványi Péter
Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include
Java programozási nyelv 5. rész Osztályok III.
Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
Segédanyag: Java alkalmazások gyakorlat
Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2010/2011-2 félév, 11. gyakorlat (az előző 2 gyak közül az egyiken ZH volt, a másik szünet miatt elmaradt) 1 JAR fájl készítés A JAR (Java
Vizuális és eseményvezérelt programozás , II. félév BMF NIK
Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK Eseménykezelés A képviselő( delegate ) Képviselők C# nyelvi megvalósítása Metódushívás képviselőn keresztül Az esemény ( event ) Esemény
Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 2. Előadás Dr. Bécsi Tamás Véletlen számok generálása a Random osztály System.Random Metódus Típus Funkció Next() int Egy véletlen nem-negatív int értékkel tér vissza.
JAVA SE/ME tanfolyam tematika
JAVA SE/ME tanfolyam tematika TANFOLYAM TEMATIKA: A JAVA MEGISMERÉSE Java története, miért készült, miért népszerű NETBEANS környezet telepítése, megismerése Programozási alapok java nyelven Változók,primitív
Tartalomjegyzék. Előszó... 10
Előszó... 10 1. Bevezetés a Symbian operációs rendszerbe... 11 1.1. Az operációs rendszer múltja...11 1.2. Az okos telefonok képességei...12 1.3. A Symbian felépítése...15 1.4. A könyv tartalma...17 2.
Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22
Szerializáció Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 1 / 22 Tartalomjegyzék 1 Szerializációs Alapfogalmak 2 Szerializációs Megoldások Object Szerializáció XML
Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva
Smalltalk 3. Osztályok létrehozása Készítette: Szabó Éva Metaosztály fogalma Mint korában említettük, a Smalltalkban mindent objektumnak tekintünk. Még az osztályok is objektumok. De ha az osztály objektum,
Komponens alapú fejlesztés
Komponens alapú fejlesztés Szoftver újrafelhasználás Szoftver fejlesztésekor korábbi fejlesztésekkor létrehozott kód felhasználása architektúra felhasználása tudás felhasználása Nem azonos a portolással