ASP.NET CORE MVC Model réteg bevezetése Model Binding Repository tervezési minta Dependency Injection Transient és Singleton Custom Binding AutoMapper
|
|
- Donát Molnár
- 5 évvel ezelőtt
- Látták:
Átírás
1 ASP.NET CORE MVC Model réteg bevezetése Model Binding Repository tervezési minta Dependency Injection Transient és Singleton Custom Binding AutoMapper
2 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, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges.
3 Model réteg Webalkalmazásunk működési magjának osztályai Egyed osztályok (autó, személy, hitel, stb.) Egy entitást írnak le Összefogják a jellemzőket és függvényeket, amelyek egy entitás sajátjai Business Logic Pl. egy kártyajáték működését foglalja magában (szabályok, keverés, stb.) Pl. egy üzleti alkalmazás különböző funkciói Megjelenítési rétegtől teljesen független logikai osztályok Mindig úgy kell megírni, hogy akár ConsoleApp-ban is működjön! Repository Elfedi az adatbázist különböző függvényekkel Business Logic fogja használni folyamatosan Erősen javasolt interfészt használni 3
4 Model feladata Megjelenítés során Összegyűjtjük egy modelben a megjelenítendő információkat (Controller végzi) A modelt átadjuk a View-nak Adatbevitel során A HTML form mezőinek értéke átadásra kerül a Controllernek Controller egy Modelt példányosít belőle 4
5 Feladat Készítsünk egy egyszerű regisztrációs felületet, ahol egy hallgatót tudunk beiratkoztatni az egyetemre! Egy hallgató adatai: Név Neptunkód Évfolyam Szak A hallgató kezeléséhez készítsünk megfelelő Model osztályt! 5
6 1. Model osztály elkészítése Készítsük el az alábbi mappaszerkezetet A Model osztály nevébe szokás beleírni, hogy Model public class HallgatoModel public string Nev get; set; public string Neptunkod get; set; public int Evfolyam get; set; public string Szak get; set; 6
7 2. Controller Osztályszintű tagként kezeljük public class HomeController : Controller List<HallgatoModel> hallgatok; public HomeController() hallgatok = new List<HallgatoModel>(); public IActionResult Index() return View(hallgatok); [HttpGet] public IActionResult Add() return View(); a listát Konstruktorban példányosítjuk a listát Az index Action átadja az összes hallgatót a View-jának Majd itt lesz hozzáadás gomb A hozzáadás gomb hatására idekerülünk, itt lesz a form, a formot ugyanide küldjük el, de POST-al [HttpPost] public IActionResult Add(HallgatoModel model) hallgatok.add(model); return RedirectToAction("Index"); POST változat, ez kapja meg a form eredményét, hozzáadja a hallgatót és visszaküld az Indexre egy View mutatás helyett. 7
8 3. Index List<ASPKurzus02.Models.HallgatoModel> <body> <h2>hallgatók</h2> <p> <a href="/home/add">új hallgató</a> </p> <table> <tr> <th>név</th> <th>neptunkód</th> <th>évfolyam</th> <th>szak</th> (var item in Model) <tr> </tr> </table> </body> 8
9 3. Add ASPKurzus02.Models.HallgatoModel <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>új Hallgató</title> </head> <body> <form method="post" action="add"> Név: <br /><input type="text" name="nev" /> <br /> Neptunkód: <br /><input type="text" name="neptunkod" /> <br /> Évfolyam: <br /><input type="text" name="evfolyam" /> <br /> Szak: <br /><input type="text" name="szak" /> <br /> <input type="submit" value="beiratkozás" /> </form> </body> </html> 9
10 Model Binding Hogyan kerülnek a form adatok egy objektumba?! Eddigiekben átadtuk az összes form elem értékét paraméterként Ott is megfigyeltük, hogy a típusátalakítás automatikus (int.parse()) A Model Binder mechanizmus képes a form adatokból objektumot példányosítani 10
11 Model Binding Működési követelmények Az osztálynak legyen paraméternélküli konstruktora Tulajdonságai írhatók és publikusak legyenek A HTML Form name attribútumai egyezzenek meg a Model osztály tulajdonság neveivel Pozitívumok Nem szükséges konstruktort írnunk rengeteg this.valami = valami jellegű sorral 11
12 Tesztelés Nem jelennek meg a felvitt hallgatók az Indexen Debug a Post Action-re! Láthatjuk, hogy megérkezett a model, és a Model Binder is tökéletesen beillesztette a form értékeit az egyes tulajdonságokba Probléma: A Controller minden egyes Action híváskor újrapéldányosul. Teljesen új listánk van az Index hívásakor. 12
13 Megoldás Repository tervezési minta Készítünk egy osztályt, ami a tárolásért felelős Ennek az osztálynak a metódusait fogjuk hívogatni a Controllerből 13
14 2. HallgatoRepository.cs Osztályszintű tagként public class HallgatoRepository List<HallgatoModel> hallgatok; public List<HallgatoModel> GetAll get return hallgatok; public HallgatoRepository() hallgatok = new List<HallgatoModel>(); public void AddHallgato(HallgatoModel model) hallgatok.add(model); kezeljük a listát A listát tulajdonságként visszaadjuk Később majd interfésszel Konstruktorban példányosítjuk a listát Biztosítunk metódust arra, hogy új hallgatót lehessen felvenni 14
15 2. Módosított Controller Osztályszintű tagként public class HomeController : Controller HallgatoRepository tarolo; public HomeController() tarolo = new HallgatoRepository(); kezeljük repót Példányosítjuk a repót public IActionResult Index() return View(tarolo.GetAll); [HttpGet] public IActionResult Add() return View(); Továbbra is fennáll a probléma, hogy a Controller újrapéldányosul, és új repónk lesz így [HttpPost] public IActionResult Add(HallgatoModel model) tarolo.addhallgato(model); return RedirectToAction("Index"); 15
16 Megoldás Valahol máshol példányosítjuk a repót! Startup.cs? Hogy adjuk át? Sehol nem találjuk a Controller konstruktorhívását, hogy beletegyük Dependency Injection + Singleton minta Egy függőség-beszúrás nevezetű mechanizmus példányosít nekünk egyet a repóból és automatikusan átadja a Controller konstruktorának Singleton minta: az osztályunkból egy példány létezik, és bárhol példányosítjuk le, az mindig ugyanarra a memóriában lévő objektumra mutat. 16
17 Megvalósítás Controller módosítása Startup.cs: ConfigureServices() kiegészítése 17
18 Transient vs Singleton services.addtransient<hallgatorepository, HallgatoRepository>(); Mindig új példányt ad át Hogyha az osztály egy adatbáziskapcsolatot fed el, akkor ez bőven elegendő services.addsingleton<hallgatorepository, HallgatoRepository>(); Hogyha az átadott osztály fontos, hogy megőrizze a változói, tagjai értékét, akkor ezt kell használni Tipikusan ha nincs adatbázis, hanem valamilyen adatszerkezet a tároló 18
19 Repository függetlenítés Repository osztály variációk Az osztályban van egy globális tömb, lista, dictionary, stb. Az osztály konstruktorában fájlt olvas, módosításkor fájlt ír Az osztály egy adatbázisba ír/olvas Az osztály API-n keresztül pl. google drive-ba dolgozik Repository függetlenítés Készítünk egy interfészt a repó funkciókkal Pl: Hozzáadás, Törlés, Módosítás, Minden lekérése, Minden törlése, stb. Az interfészt és az adott implementációt összerendeljük Új fajta tárolásra áttérve ezt az egy sort kell más implementációra cserélni 19
20 Nagy feladat: CRUD alkalmazás CRUD: Create, Read, Update, Delete Készítsünk nyilvántartó alkalmazást, amelyben dolgozókat tudunk menedzselni! Készítsünk egy olyan Repositoryt, amely XML fájlból tölti be a dolgozóinkat és minden módosítás után frissíti a fájlt (későbbiekben a fájlkezelést adatbázisra cseréljük) A Repository-t interfészen át használjuk, hogy cserélhető legyen 20
21 Probléma Az update és a delete mint akciógombok megjelennek minden dolgozó mellett GET kérés: elküldjük az adott elem hash-ét Object őstől örökölt függvény: GetHashCode() felüldefiniálható A view-ban a törlő és módosító linknél megadhatjuk közvetlenül a hash-t (ekkor id névvel érjük el a Controllerből) Vagy beparaméterezzük a GET kérés URL-ét Repositoryban adunk lehetőséget hash alapján keresni 21
22 Custom binding A formon a fizetés ezer forintra kerekítve jelenik meg (pl: 100 e Ft) Érdemes lenne a Modelben ténylegesen et tárolni mindenféle belső folyamatok (bérkalkuláció, stb.) miatt Egyszerű probléma, de rengeteg ilyenbe fogunk belefutni később (pl: radiobutton -> enum konverzió) A Model Bindert utasítjuk, hogy a saját konvertáló osztályunkat hívja meg és azzal végezze a konverziót Teljesen testre tudjuk szabni, hogy a form elemei hogyan kerüljenek az objektumba WPF-ben a Converter osztályok működéséhez nagyon hasonló! 22
23 Custom binding Data mappa -> WorkerModelBinder.cs public class WorkerModelBinder : IModelBinder public Task BindModelAsync(ModelBindingContext bindingcontext) if (bindingcontext == null) throw new ArgumentNullException(nameof(bindingContext)); var name = bindingcontext.valueprovider.getvalue("name"); var job = bindingcontext.valueprovider.getvalue("job"); var salary = bindingcontext.valueprovider.getvalue("salary"); WorkerModel model = new WorkerModel() Name = name.firstvalue, Salary = int.parse(salary.firstvalue) * 1000, Job = job.firstvalue ; bindingcontext.result = ModelBindingResult.Success(model); return Task.CompletedTask; 23
24 Custom binding Attribútummal jelezzük a Model osztályunkon, hogy melyik Custom Binder osztályt használja fel a konverzióra 24
25 Custom binding fordítottja Szimplán a View-ban visszaalakítjuk <input type="number" name="salary" value="@(model.salary/1000)" 25
26 Custom binder alkalmazása Olyan esetekben, amikor valami formátum probléma van az űrlapelem tartalma -> osztály között, amit manuálisan kell megoldani Példa: Megadunk egy évet text inputban Kiválasztunk egy oktatási hetet legördülő listából De a Modelben nekünk egy kezdő és egy vég DateTime kell Ezt két DateTime-ot a két mezőből kell kiszámoltatni Ezt nyilván a Model Binder magától nem tudja 26
27 AutoMapper Hasonló, mint a Model Binder, de mégsem Használati eset: Vannak adatok, amelyek repó-ba kellenek, view-ba nem Vannak adatok, amelyek view-ba kellenek, repó-ba nem Vannak adatok, amelyek úgy kellenek a view-ba, hogy a Modelt ki kell egészíteni valamivel (pl. aktuális idő) Megvalósítás: ViewModel készítés CarModel Repository AutoMapper CarViewModel View 27
28 ViewModel (eml.) 3. Repository Models Busines Logic Controller 4. Model ViewModel Car Model Person Model View Amikor a Controller adatot továbbít a View számára, tipikusan egy darab objektumot adunk át. Abban az esetben, hogyha egy Autó objektumot és a rendelkezésünkre álló egyenleget akarjuk megjeleníteni együtt, akkor nem az adott Autó Model osztályt adjuk át, hanem létrehozunk egy ViewModelt, amely egy átmeneti megjelenítési célú összetett objektum. 28
29 Feladat Egészítsük ki a dolgozó CRUD alkalmazást azzal, hogy a felvett dolgozónak megadjuk a felettesét is! Egy legördülő listából engedjük kiválasztani View-nak egy objektumot adunk át Ez az új dolgozónál nem probléma, mert átadjuk a meglévő dolgozókat Módosításnál? Mi kell a view-ba? A meglévő dolgozó objektum Az összes dolgozó listája Megoldás: WorkerViewModel Tartalmazza a dolgozót, meg a többieket is 29
30 1. AutoMapper telepítése Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution 30
31 2. AutoMapper használata Egyszerű bemutató példa (nem a nagyfeladat) Kutya osztály Név Életkor KutyaDetails osztály Név Életkor Feladat: Azonosító (név hossza * életkor) Írni egy automatizmust, ami bármikor Kutya osztályból KutyaDetails osztályra tér át, vagy fordítva 31
32 3. Modelosztályaink public class Kutya public string Nev get; set; public int Eletkor get; set; public class KutyaDetails public string Nev get; set; public int Eletkor get; set; public int Azonosito get; set; 32
33 4. Konverter osztály Azonos nevű propertyk: maguktól átkerülnek public class KutyaProfile : Profile public KutyaProfile() //Kutya -> KutyaDetails áttérés CreateMap<Kutya, KutyaDetails>().ForMember(dest => dest.azonosito, options => options.mapfrom( src => src.nev.length * src.eletkor )).AfterMap((kutya, kutyadetails) => //itt lehet bonyolultabb kódot írni kutyadetails.nev = kutya.nev.toupper(); ); A -> B property ForMember részben A -> B bonyolult kód AfterMap részben //KutyaDetails -> Kutya áttérés CreateMap<KutyaDetails, Kutya>().ForMember(dest => dest.eletkor, options => options.mapfrom( src => src.eletkor + 1 )); 33
34 5. Felhasználás Controllerben osztályszintű tag, példányosítás 34
35 5. Felhasználás Action-ökben felhasználás 1: jön egy KutyaDetails, átalakítjuk Kutyára 2: jön egy Kutya, átalakítjuk KutyaDetails-re 35
36 5. AutoMapper mindenhol Controllerünkben mindenhol elérhető a mapper Jó lenne, ha további Controllerek is tudnák használni Kivisszük a Mappert a Startup osztályba és Singletonként használjuk bárhol 36
WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK
WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816 2 Ismétlés Ismétlés 3 Fájl/Adatbázis 3 4 Szerver 2 CGI
RészletesebbenObjektumorientá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
RészletesebbenA gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.
Vizuális programozás 1. A gyakorlat célja A gyakorlat célja a Könyvtár alkalmazás folytatása az előző gyakorlaton elkészített grafikus felület felhasználásával. Elsőként lemásoljuk az előző gyakorlat eredményeként
RészletesebbenOOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN
OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás
RészletesebbenObjektumorientált Programozás VI.
Objektumorientált Programozás VI. Tömb emlékeztető Egyszerű programozási tételek Összetett programozási tételek V 1.0 ÓE-NIK, 2011 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók
RészletesebbenOOP #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
Részletesebben3. 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
RészletesebbenMVC. Model View Controller
MVC Model View Controller Szoftver fejlesztés régen Console-based alkalmazások Pure HTML weboldalak Assembly, C Tipikusan kevés fejlesztő (Johm Carmack Wolfenstein, Doom, Quake..) Szűkös erőforrások optimális
RészletesebbenSzoftvertechnolo gia 7. gyakorlat
Szoftvertechnolo gia 7. gyakorlat Román Gábor 1. Feladat Készítsen az alábbi leírás alapján egy Egyed kapcsolat (EK) diagramot, majd annak alapján Visual Studio 2013-ban Entity Framework entitás diagramot!
RészletesebbenObjektum Orientált Programozás IV.
Objektum Orientált Programozás IV. Műveletek karaktersorozatokkal Feladatok 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.
RészletesebbenSzoftvertechnolo gia gyakorlat
Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot
RészletesebbenObjektumorientált Programozás IV.
Objektumorientált Programozás IV. Műveletek karaktersorozatokkal Feladatok 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.
RészletesebbenProgramozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,
Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII, 2016 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a
RészletesebbenVizuá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
RészletesebbenWebes 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
RészletesebbenJavaServer Pages (JSP) (folytatás)
JavaServer Pages (JSP) (folytatás) MVC architektúra a Java kiszolgálón Ügyfél (Böngésző) 5 View elküldi az oldal az ügyfélez View (JSP) Ügyfél üzenet küldése a vezérlőnek 1 3 4 Kérelem továbbítása a megjelenítőnek
RészletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés 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
RészletesebbenProgramozási nyelvek II. JAVA
Programozási nyelvek II. JAVA 8. gyakorlat 2017. november 6-10. Általános tudnivalók A feladatmegoldás során fontos betartani az elnevezésekre és típusokra vonatkozó megszorításokat, illetve a szövegek
RészletesebbenJava. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.
Sapientia - EMTE 2008 Az előadás célja JPA - - perzisztencia ORM - - Objektumrelációs leképzés - Entitásbabok Állandóság Mechanizmus amely során az alkalmazás adatai megőrzésre kerülnek valamely perzisztens
RészletesebbenSzerializá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
RészletesebbenWebes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET) Webfejlesztés MVC architektúrában Fejlesztés ASP.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 2. előadás Webfejlesztés MVC architektúrában (ASP.NET) 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenPHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT
alapjai, bevezetés Vincze Dávid Miskolci Egyetem, IIT vincze.david@iit.uni-miskolc.hu PHP Personal Home Page (Tools) Script nyelv -> interpretált Elsősorban weboldal (dinamikus) tartalmak előállítására
RészletesebbenFüggőség injekció Konstantinusz Kft 2010
Függőség injekció Konstantinusz Kft 2010 1 Tartalomjegyzék 1 Tartalomjegyzék 2 2 Bevezetés 3 3 Függőségek formái 4 4 Függőség kezelés problémái 8 5 Megvalósítás 9 2/16 2 Bevezetés Egy objektum modellben
RészletesebbenVizuá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,
RészletesebbenMiután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:
Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba
RészletesebbenJava 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
RészletesebbenJava és web programozás
Budapesti Műszaki Egyetem 2015. 04. 08. 10. Előadás Ami kimearad múlthéten Ha már megvan a KeyListener vagy MouseListener osztályunk a következõ módon tudjuk hozzárendelni egy JFrame vagy JPanel-hez: Ami
RészletesebbenOsztá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
RészletesebbenWebes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Nézetek kezelése Sok esetben
RészletesebbenSzá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 Tömbök (Arrays) Definíció: típus[] név; (pld. int[] szamok; ) Inicializálás: int[] szamok = new int[4]; int[] szamok = 1,2,4,3,5}; int[] szamok
RészletesebbenÖröklés és Polimorfizmus
Öröklés és Polimorfizmus Egy létező osztályból egy (vagy több) újat készítünk A létező osztályt ősnek, az újakat utódnak nevezzük Az utódok öröklik az ős minden tagját Az utódok az öröklött tagokat újakkal
RészletesebbenWebes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás (ASP.NET) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Készült Giachetta Roberto jegyzete alapján
RészletesebbenJava Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa
Web Technológiák Java Server Pages - JSP Répási Tibor egyetemi tanársegéd Miskolc Egyetem Infomatikai és Villamosmérnöki Tanszékcsoport (IVM) Általános Informatikai Tanszék Iroda: Inf.Int. 108. Tel: 2101
RészletesebbenPé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
RészletesebbenSorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás. 1.1. Szükséges névterek. 1.2. Attribútumok. 1.3.
Sorosítás (szerializáció) és helyreállítás Cél: a memóriában tárolt adatok egyszerű lemezre mentése és visszatöltése. A sorosítás során létrehozunk egy állományt és egy sorosítást kezelő objektumot. Ez
RészletesebbenASP.NET CORE MVC. ASP.NET Core bevezetés, Hello World MVC workflow Controller réteg View réteg HTML leíró nyelv ViewModel
ASP.NET CORE MVC ASP.NET Core bevezetés, Hello World MVC workflow Controller réteg View réteg HTML leíró nyelv ViewModel Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk
Részletesebben2011.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,
RészletesebbenOOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
RészletesebbenWCF, 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
RészletesebbenProgramozá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
RészletesebbenAdatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN
Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN B IT v: 2016.03.03 MAN Csomagok A DBMS csomagok a PL/SQL alkalmazások fejlesztését segítik, bennük tároljuk a létrehozott programok kódjait. A specifikációs
RészletesebbenBME MOGI Gépészeti informatika 8.
BME MOGI Gépészeti informatika 8. 1. feladat Készítse beosztottak és vezetők munkahelyi adatait kezelő alkalmazást! A feladat megoldásához hozza létre a következő osztályokat! Beosztott osztály: adatmező
RészletesebbenC++ programozási nyelv Konstruktorok-destruktorok
C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
RészletesebbenJava 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
RészletesebbenProgramozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira
Programozás II gyakorlat 7. Példák a polimorfizmus alkalmazásaira Probléma class A { public: ~A() { cout
RészletesebbenAz osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java
Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:
RészletesebbenProgramozási technológia
Programozási technológia Swing GUI készítése NetBeans IDE segítségével Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Bevezető Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi
Részletesebbené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
RészletesebbenJava és web programozás
Budapesti Műszaki Egyetem 2015. 04. 08. 9. Előadás Kivétel kezelés a kivétel (exception) egy esemény, mely futás közben megbontja a program normális futási folyamatát például kivétel dobódik amikor 0-val
RészletesebbenJava 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
RészletesebbenGrafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez
Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez Székely István Debreceni Egyetem, Informatikai Intézet A rendszer felépítése szerver a komponenseket szolgáltatja Java nyelvű implementáció
RészletesebbenVálasztó lekérdezés létrehozása
Választó lekérdezés létrehozása A választó lekérdezés egy vagy több rekordforrásból származó adatokat jelenít meg. A választó lekérdezések a táblák, illetve az adatbázis tartalmát nem változtatják meg,
RészletesebbenSwing GUI készítése NetBeans IDE segítségével
Programozási Swing e NetBeans IDE segítségével Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 2 Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi feladatunk volt az
RészletesebbenWebes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Nézetek
RészletesebbenWebshop készítése ASP.NET 3.5 ben I.
Webshop készítése ASP.NET 3.5 ben I. - Portál kialakíása - Mesteroldal létrehozása - Témák létrehozása Site létrehozása 1. File / New Web site 2. A Template k közül válasszuk az ASP.NEt et, nyelvnek (Language)
RészletesebbenSQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok
SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok 1 Jogosultság-kezelés Egy fájlrendszer általában jogosultságokat rendel az általa kezelt objektumokhoz. Tipikusan olvasható, írható,
RészletesebbenKivé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
RészletesebbenC++ programozási nyelv
C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok
RészletesebbenJava é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:
RészletesebbenA 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,
RészletesebbenJEE tutorial. Zsíros Levente, 2012
JEE tutorial Zsíros Levente, 2012 A J2EE részei Webkonténer Szervletek JSP oldalak EJB (Enterprise Java Bean) konténer Session Bean Entity Bean (Java Persistence API-t használják) A Glassfish és JBoss
RészletesebbenObjektum Orientált Programozás VII.
Objektum Orientált Programozás VII. Összetett programozási tételek Programozási tételek összeépítése Feladatok ÓE-NIK, 2011 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk
RészletesebbenObjektumorientá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
RészletesebbenProgramozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is
RészletesebbenProgramozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok
Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok 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
RészletesebbenWebes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 2. előadás Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Fejlesztés
RészletesebbenC#, 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
RészletesebbenProgramozás II. 2. gyakorlat Áttérés C-ről C++-ra
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,
Részletesebben500. AA Megoldó Alfréd AA 500.
Programozás alapjai 2. NZH 2010.05.13. gyakorlat: / Hiány:0 ZH:0 MEGOLD IB.027/51. Hftest: 0 Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
RészletesebbenPHP. Adatbázisok gyakorlat
PHP Adatbázisok gyakorlat Mi a PHP? A PHP (PHP: Hypertext Preprocessor) egy nyílt forráskódú, számítógépes szkriptnyelv, legfőbb felhasználási területe a dinamikus weboldalak készítése. A PHP-kódunk általában
RészletesebbenSTL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1
STL gyakorlat C++ Izsó Tamás 2016. május 9. Izsó Tamás STL gyakorlat/ 1 Komponensek kapcsolata Deklarálja az alábbi osztálydiagramon szereplő osztályok közül az A, AA és AB osztályokat! A konstruktorokat
RészletesebbenSzá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
RészletesebbenWebes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 10. előadás Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Tesztelés
Részletesebben.Net adatstruktúrák. Készítette: Major Péter
.Net adatstruktúrák Készítette: Major Péter Adatstruktúrák általában A.Net-ben számos nyelvvel ellentétben nem kell bajlódnunk a változó hosszúságú tömbök, listák, sorok stb. implementálásával, mert ezek
RészletesebbenProgramozá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
RészletesebbenJAVA 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,
RészletesebbenObjektumorientált Programozás VI.
Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. Ó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ő
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)
RészletesebbenC++ 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
RészletesebbenAccess 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
RészletesebbenEntity Framework alapú adatbáziselérés 2
Entity Framework alapú adatbáziselérés 2 Dr. Johanyák Zsolt Csaba http://johanyak.hu A gyakorlat célja az, hogy a korábban létrehozott Telefonszám kezelő alkalmazást kiegészítsük egy WPF típusú felülettel.
RészletesebbenMemória játék. Felhasználói dokumentáció
Memória játék Felhasználói dokumentáció Feladat: JavaScript segítségével, olyan programot írni, mely összekeveri a lapokat, majd a felhasználónak kell párosítani. HTML oldalba ágyazva és CSS-el formázva.
RészletesebbenJava VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1
Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum
RészletesebbenDr. 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:
RészletesebbenAdatbázisok webalkalmazásokban
Sapientia - EMTE, Pannon Forrás,,Egységes erdélyi felnőttképzés a Kárpát-medencei hálózatban 2010 A JDBC API A Data Access Object tervezési minta Adatforrás - DataSource JDBC architektúra A JDBC API java.sql
RészletesebbenEseményvezérelt és objektumorientált programozás
DIALOG BOXES, DATA BINDING, STYLES, TRIGGERS WPF 1 Készítsük el a hallgatók és az oktatók nyilvántartását megvalósító modult. Mindkettő hasonló módon működik, ezért az alábbi leírásban csak a hallgatói
RészletesebbenEnterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans
Enterprise JavaBeans Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Az Enterprise JavaBeans Az Enterprise Javabeans Az Enterprise JavaBeans (EJB) server oldali komponens, amely Az üzleti
RészletesebbenGenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();
BME MOGI Gépészeti informatika 17. A C# nyelv generikus típusait a System.Collections.Generics névtérben találhatjuk meg. Ez a névtér számos osztályt és interfészt tartalmaz, amelyek lehetővé teszik előre
RészletesebbenModern unit és integrációs tesztelés
Modern unit és integrációs tesztelés HOUG Orákulum - 2016. április Viczián István Java fejlesztő - IP Systems @vicziani at Twitter http://jtechlog.hu Miről lesz szó? 1 / 26 Automatizált tesztelés fontossága
RészletesebbenAz iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra
Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama 10. évfolyam: 105 óra 11. évfolyam: 140 óra 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra 36 óra OOP 14 óra Programozási
RészletesebbenELTE SAP Excellence Center Oktatóanyag 1
Oktatóanyag 1 Oktatóanyag 2 Az oktatás folyamán használt példák a fent látható egyszerű modell implementációi. Oktatóanyag 3 A definíciós részben definiálja a fejlesztő az egyes attribútumokat, metódusokat,
RészletesebbenZH mintapélda. Feladat. Felület
ZH mintapélda Feladat Írjon Java alkalmazást, amely képes hallgatók rekordjaittárolni és azokat különbözo rendezo kulcsok szerint sorba rendezni. A program grafikus felhasználói felületén keresztül új
RészletesebbenFordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs
Fordított és szkript nyelvek összehasonlító elemzése Sergyán Szabolcs IEEE: The 2016 Top Programming Languages IEEE: The 2016 Top Programming Language (Enterprise) Kutatás-fejlesztésben használt nyelvek
RészletesebbenXML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1
XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1 A gyakorlat célja a webszolgáltatások létrehozásának és igénybe vételének elsajátítása egyszerű példákon keresztül. 1. Két
RészletesebbenKészítette: Gál Tamás. A tananyag programozott változata itt érhető el: Webfejlesztés
HLTML 5 formok gyorstalpaló Készítette: Gál Tamás A tananyag programozott változata itt érhető el: Webfejlesztés (http://webfejlesztes.gtportal.eu/) Creative Commons Nevezd meg!-ne add el!-így add tovább!
RészletesebbenBevezeté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
RészletesebbenElőszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István (viczus@freemail.hu) Viczián István
Java objektumok leképzése relációs adatbázisokra -vel Viczián István (viczus@freemail.hu) Előszó E cikk olyan haladó programozóknak nyújt segítséget, kik tisztában vannak a Java nyelvvel, és többször is
RészletesebbenInformációs technológiák 2. Gy: CSS, JS alapok
Információs technológiák 2. Gy: CSS, JS alapok 1/69 B ITv: MAN 2017.10.01 Ismétlés Van egy Web nevű mappánk, ebben vannak az eddig elkészített weboldalak (htm, html) képek (jpg, png). Logikai felépítés
RészletesebbenTermészetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.
Csempe kalkula tor A küldetésünk az, hogy segítsünk kiszámítani egy fürdőszoba csempeszükségletét (felületét). Sőt, ha a kalkulátort használó ügyfél elégedett egyből elküldheti az e-mail címét, hogy a
RészletesebbenBevezető. Servlet alapgondolatok
A Java servlet technológia Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 03. 06. Servlet Bevezető Igény a dinamikus WEB tartalmakra Előzmény: CGI Sokáig
Részletesebben