Függőség injekció Konstantinusz Kft 2010
|
|
- Irén Hegedűsné
- 8 évvel ezelőtt
- Látták:
Átírás
1 Függőség injekció Konstantinusz Kft 2010
2 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
3 2 Bevezetés Egy objektum modellben az objektumok több féle viszonyban lehetnek egymással Az egyik ilyen viszony a funkcionális függőség, ami jelenti, hogy egyik objektumnak szüksége van a másikra, működési szempontból, vagyis használja azt az objektumot A problémát az okozza, hogy egyik objektum hogyan tud hozzájutni a másik objektumnak egy példányához, hogy használhassa Az alkalmazásfejlesztésnek ez egy komoly kihívása, és merőben eltérő alkalmazás szerkezetek léteznek ennek a megoldására Hogy megérthessük, mi is itt a probléma, nézzük meg milyen lehetséges esetei vannak a függőségeknek, és milyen problémák merülhetnek fel ezzel kapcsolatban 3/16
4 3 Függőségek formái A legegyszerűbb eset, ha egy objektum bekér egy másik objektumot paraméterként, amit a hívó fél kell hogy adjon Ezt teheti a konstruktorában, vagy akármilyen metódusában Nézzünk egy példát, egy C-szerű fiktív nyelven, ahol van egy Tablazat nevű osztály, aminek a feladata, hogy a konstruktorában megkapott tömbben szereplő adatokból táblázatot jelenítsen meg valamilyen módon class Tablazat { Array adatok; Tablazat(Array adatok){ thisadatok=adatok; void megjelenit(){ Ez így rendben is van A hívó fél összeállít egy Array osztályú objektumot, és átadja a egy Tablazat objektumnak (amit akár ő maga példányosít) Hívjuk ezt a szituációt lokális függőségnek, mivel a hívó fél adja át az adatok tömböt a táblázatnak 4/16
5 A második függőség éppen a táblázatot használó kód oldaláról keletkezik, a táblázat felé class RaktarKeszletOldal{ void megjelenit(){ Array adatok; tablazat=new Tablazat(adatok); tablazatmegjelenit(); A függőség itt abból adódik, hogy a RaktarKeszletOldal közvetlenül hivatkozik a Tablazat osztályra, mivel példányosítja azt Ez legyen a konstruált függőség Végül pedig jöjjön a legproblémásabb függőség, a globális függőség Ez esetben egy objektumnak egy olyan másik objektumra van szüksége, aminek van egy kitűntetett példánya valahol, és ezt használja minden más objektum is Ilyen dolog lehet például egy adatbázis objektum A probléma itt az lesz, hogy hogyan is jutunk hozzá ehhez a kitűntetett példányhoz class Kereso{ void keres(){ Array adatok=adatbazisquery( SELECT * FROM `keszlet` ); 5/16
6 Az egyik lehetőség, hogy van valahol egy példány a globális térben, ami akárhonnan elérhető A gond ezzel annyi lehet, hogy nem egyértelmű, hogy mikor és hol lesz ez az objektum példányosítva Amúgy sem jó ötlet a globális névtérbe rakni dolgokat, többek között például a hordozhatóság, és az információ elrejtés elve miatt A másik lehetőség ami követi az OO filozófiát, az úgynevezett Singleton A megoldás lényege, hogy az adott osztálytól kérdezzük le a példányt, egy osztálymetóduson keresztül Ezt a metódust konvenció szerint getinstance()-nek szokás hívni Ez a metódus pedig szükség szerint példányosíthatja az objektumot class Adatbazis { static private Adatbazis peldany; static void Adatbatis getinstance(){ if (peldany==null) peldany=new Adatbazis(); return peldany; class Kereso{ void keres(){ Adatbazis adatbazis=adatbazisgetinstance(); Array adatok=adatbazisquery( SELECT * FROM `keszlet` ); 6/16
7 Ezek a módszerek a függőségek kezelésének a hagyományos módjai Alap esetekben nincs is velük semmi gond, viszont vannak olyan korlátaik, amik miatt komolyabb alkalmazásoknál már nem nyújtanak kielégítő megoldást Ezek a korlátok főleg a bővíthetőség, módosíthatóság, flexibilitás területén jelentkeznek 7/16
8 4 Függőség kezelés problémái A legkomolyabb probléma, hogy ezek a módszerek nem teszik lehetővé a polimorfizmust Mivel az Adatbazis osztályra közvetlenül hivatkozok, illetve a konstruált függőségek esetén is a Tablazat osztályt is közvetlenül konstruálom, ezért nincs lehetőség arra, hogy a ezeknek az osztályoknak valamilyen alosztálya szerepeljen ott ahol ezeket az osztályokat használom Azt sem tehetem meg, hogy a Kereso-t úgy használjam, hogy a program futásán belül egyszer egyik, egyszer másik adatbázissal dolgozzon A második probléma, hogy ezek az osztályok nehezen tesztelhetőek Tesztelés során ugyanis úgy szeretném kipróbálni egy-egy osztály működését, hogy csak az adott osztály működjön, a függőségei ne Például nem szeretném azt, hogy egy adatbázist használó objektum tényleg belepiszkáljon az adatbázisba Ezért jó lenne ha az adatbázis objektumot ki tudnám cserélni valamilyen teszt verzióra, ami nem csinál semmit Statikus hivatkozás miatt viszont ez problémás Azt sem tehetem meg, hogy az egész rendszerből kettőt futtassak egymás mellett, egy névtérben, mondjuk más adatbázissal, hiszen mindkét rendszer objektumai ugyanarra a statikus adatbázis példányra hivatkoznának A függőségek statikus konstruálása pedig nem teszti lehetővé a pluginezhetőséget Például a táblazat megjelenítő esetében nem tehetem meg, hogy valami új táblázat megjelenítőt feltelepítek, és beállítom hogy azt használja a rendszer, mivel explicit módon meg van adva, hogy a Tablazat osztályt példányosítsa Ezek miatt az lenne a legjobb, ha globális függőségeket is megkaphatná paraméterként egy adott objektum, mint ahogy a lokális függőségeknél láttuk Ennek persze semmi akadálya, a probléma viszont ezzel az, hogy ki adja át ezeket a paramétereket? A hívó fél? És a hívó fél honnan kapta? Mi van ha a hívó félnek nem is függősége az az objektum? Ha minden objektum csak paraméterben kaphat meg mindent, akkor minden létező globális objektumot végig kell adogatni az egész hívási láncon a főprogramtól egészen a legalsó objektumig? Szerencsére nem, viszont egészen új módon kell felépítenünk az alkalmazásunk szerkezetét 8/16
9 5 Megvalósítás Az első dolog, hogy mindent paraméterben kérünk be Legtöbbször ez a konstruktorban történik, ahol az ott megkapott függőségeket megjegyezzük attribútumokban class Kereso{ Adatbazis adatbazis; Kereso(Adatbazis adatbazis){ thisadatbazis=adatbazis; void keres(){ Array adatok=adatbazisquery( SELECT * FROM `keszlet` ); A gondot az okozza, hogy a Kereso-t példányosító kód hogyan fogja konstruálni azt, anélkül, hogy át kellene neki adni a globális függőségeit A trükk az lesz, hogy nem fogunk objektumokat közvetlenül példányosítani, hanem erre segéd osztályokat használunk Az általános elv az, hogy el kell választani az objektumok konstruálását a viselkedési modelltől Igazából egy objektumnak nem felelőssége az, hogy tudja konstruálni egy függőségét Helyette factoryk fogják végezni ezt a feladatot A factory egy olyan objektum, aminek az a feladata, hogy más objektumot vagy objektumokat példányosítson, és ami esetünkben lényegesebb, hogy összekösse őket a megfelelő függőségeikkel A most következő példában ezt láthatjuk, viszont egyelőre itt még kihagyjuk azt hogyan a factoryhoz hogyan jutunk hozzá, és hogy a factory hogyan jut hozzá az adatbázishoz 9/16
10 class KeresoFactory{ Kereso ujpeldany(){ Adatbazis adatbazis; return new Kereso(adatbazis); class RaktarKeszletOldal{ void megjelenit(){ KeresoFactory keresofactory; kereso=keresofactoryujpeldany(); Array adatok=keresokeres(); 10/16
11 Láthatjuk, hogy itt a RaktarKeszletOldal nem példányosítja a Kereso-t közvetlenül, hanem a KeresoFactory-t kéri meg erre Ezzel azt is elérjük, hogy a RaktarKeszletOldal-nek nem kell kezelnie a Kereso globális függőségeit, sőt nem is tudja hogy milyen globális függőségei vannak Tehát a két kérdés ami nyitva maradt, hogy hogyan jutunk hozzá a factoryhoz, és a factory hogyan jut hozzá a az adatbázishoz? Ha tökéletes megoldást akarunk, ami megfelel az összes fentebb meghatározott igényünknek, akkor teljesen komolyan kell venni azt az elvet, hogy semmit de semmit nem szabad statikus módon elérni, mindent meg kell kapnia az objektumoknak közvetlenül Ezen túl, két újabb segédobjektumra van szükségünk Egyrészt, kell egy factory menedzser, amiből lekérhetjük a kívánt factoryt Továbbá kell valami ami a globális objektumainkat tárolja, és majd a factoryk ezen keresztül jutnak hozzájuk Ez a kettő lehet akár ugyanaz az objektum is, vagy akár a tároló lekérdezhető a factory menedzseren keresztül is Végül pedig, ahhoz hogy tényleg semmit ne kelljen statikusan elérnünk, muszáj lesz a factory menedzsert végig egyik objektumról a másikra passzolgatni a teljes hívási láncon Persze ez csak egyetlen objektum, és szerencsére ezt is a factoryk fogják átadogatni, tehát a valódi objektumoknak ezzel sem kell foglalkozniuk Ezek után valahogy így fog kinézni az előbbi kódunk: abstract class Factory{ FactoryMenedzser factorymenedzser; Factory(FactoryMenedzser factorymenedzser){ thisfactorymenedzser=factorymenedzser; class FactoryMenedzser{ Array globalis_objektumok; Object getsingleton(string nev){ 11/16
12 return globalis_objektumok[nev]; Factory getfactoryosztalyhoz(string osztalynev){ /*osztálynév alapján példányosítás nyelvfüggő, ha ezt nem tudja a nyelv, máshogy kell */ return new osztalynev(this); class KeresoFactory{ Kereso ujpeldany(){ //A factorymenedzsertől elkérjük az globális adatbázis objektumot Adatbazis adatbazis=factorymenedzsergetsingleton( Adatbazis ); return new Kereso(adatbazis); class RaktarKeszletOldal{ FactoryMenedzser factorymenedzser; 12/16
13 void megjelenit(){ //Lekérdezzük a factory-t; KeresoFactory keresofactory=factorymenedzsergetfactoryosztalyhoz( Kereso ); //A factorytól kérunk egy új példányt kereso=keresofactoryujpeldany(); Array adatok=keresokeres(); //Lekérdezzük a táblazat factory-ját is, és példányt kérünk tőle Tablazatfactory tablazatfactory=factorymenedzsergetfactoryosztalyhoz( Tablazat ); tablazat=tablazatfactoryujpeldany(adatok); tablazatmegjelenit(); Tehát innentől úgy épül fel az alkalmazásom, hogy a főprogramban példányosítom a globális objektumokat, a factory menedzsert, a globális tárolót, és a globális objektumokat elhelyezem benne Ezután már a factory menedzseren keresztül példányosítom az első objektumokat 13/16
14 void main(){ Adatbazis adatbazis=new Adatbazis(); FactoryMenedzser factorymenedzser=new FactoryMenedzser(); factorymenedzsersingletonhozzaad( Adatbazis,adatbazis); factory=factorymenedzsergetfactoryosztalyhoz( RaktarKeszletOldal ); RaktarKeszletOldal raktarkeszletoldal=factoryujpeldany(); raktarkeszletoldalmegjelenit(); Ezzel a módszerrel megvalósul a polimorfizmus, mivel itt a főprogramban döntöm el, hogy milyen adatbázis objektumot példányosítok, és én adom át a rendszernek közvetlenül Megvalósul a tesztelhetőség is, mivel minden osztály minden függőséget kívülről kap meg paraméterként, ezért minden osztály tesztelhető elkülönítve, csak be kell helyettesíteni a függőségeket teszt objektumokkal Ezt még úgy is meg lehet tenni, ha egy névtérben vagyunk az élő rendszerrel Az is megoldható, hogy akár két példányt futtassak a teljes rendszerből, csak annyit kell tennem hogy a main() metódusban látott objektumokból többet példányosítok Még azzal is eljátszhatok, hogy bizonyos globális objektumok közösek legyenek, mások meg egyediek Minden csak attól függ, hogy mivel töltöm fel a globális objektum tárolót Még az objektumok konstruálását is lehet polimorfizálni, például ha azt szeretném, hogy a RaktarKeszletOldal tetszőleges osztályú táblázat objektumot példányosítson Ezt meg lehet tenni úgy is, hogy olyan factory menedzsert hozok létre, ami a Tablazat osztályhoz olyan factoryt ad vissza, ami igazából annak egy alosztályát konstruálja, bár ezzel igazából becsapjuk a rendszert, szóval nem ajánlott, de meg lehet tenni, és jól mutatja mennyire laza a rendszer A Jó megoldás az, hogy a RaktarKeszletOldal osztály valahonnan paraméterként kapja, vagy valami konfigurációs 14/16
15 állományból kiolvassa, hogy milyen osztályú táblázatot kell példányosítania, és akkor olyan osztályra kért factoryt a factory menedzsertől Mindezt megtehetjük, hiszen az osztály nevét csak sima szövegként kezeljük class RaktarKeszletOldal { string tablazat_osztalynev; //A konstruktorban kapjuk a táblazat osztálynevét RaktarKeszletOldal(string tablazat_osztalynev){ thistablazat_osztalynev=tablazat_osztalynev; void megjelenit(){ Tablazatfactory tablazatfactory= factorymenedzsergetfactoryosztalyhoz(tablazat_osztalynev); tablazat=tablazatfactoryujpeldany(adatok); tablazatmegjelenit(); Még attól sem kell félnünk, hogy a legyártott objektumnak egyedi függőségei vannak, hiszen azokat mindet a megfelelő factory szerzi be és adja át az objektumnak, anélkül hogy a hívó fél bármit is tudna róla 15/16
16 Az egyetlen szépséghiba, hogy itt muszáj vagyunk factory menedzsert minden objektumba beinjektálni Ezt éppen meg lehet úszni azzal, ha a factory menedzsert egy hagyományos, statikusan elérhető singletonként valósítjuk meg, így mindenhonnan globálisan elérhető Ezzel viszont elveszítünk néhány jó tulajdonságot Nem fogunk tudni két külön rendszert egymás mellett futtatni, mivel mindkettő ugyanarra a globális tárolóra fog hivatkozni Tesztelhetőség is sérül, mivel minden osztály statikusan hivatkozik a factory menedzserre, így nem tudom az általa létrehozott objektumok függőségit olyan nagy szabadsággal befolyásolni Mindenesetre a statikus factory menedzser is egy jó megoldás és messze jobb flexibilitást ad, mintha minden globális objektum statikus singleton lenne De ha a mindent tudó megoldást szeretnénk, akkor muszáj lesz legalább a factory menedzsert végigpasszolgatni az objektumainkon, viszont legalább ezt a factoryk intézik, mint minden más függőséget is, szóval nem nagy ár ez azért amit kapunk cserébe Általában a legtöbb alkalmazás elműködik komoly függőség injekció nélkül, tisztán singletonokkal Ám komolyabb alkalmazásoknál, ahol fontos a jó bővíthetőség, már megjelennek az ehhez hasonló függőség injekciós eszközök és megvalósítások Ha más nem is, a tesztelhetőség igénye miatt már muszáj ebbe az irányba elmenni Igazán nagy rendszereknél pedig, ahol már csak méretük és bonyolultságuk miatt is létfontosságú a bővíthetőség, flexibilitás, tesztelhetőség, egyenesen kötelező a függőség injekció, és factoryk alkalmazása 16/16
Objektumleírók Konstantinusz Kft 2010
Objektumleírók Konstantinusz Kft. 2010 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Mi az a leíró?... 2 3. Közvetett paraméter átadások... 4 4. Absztrakt metódusok, absztrakt konstrukció... 7 5. Validálás
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é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é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észletesebbenWebes alkalmazások helyes szerkezete PHP-ban
Webes alkalmazások helyes szerkezete PHP-ban Konstantinusz Kft. 2010 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Mi az a leíró?... Hiba! A könyvjelző nem létezik. 3. Közvetett paraméter átadások... Hiba!
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észletesebbenProgramozá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
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 V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:
Java V. szint lyszintű ű tagok A final minősítő Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 05. Java V.: szintű tagok JAVA5 / 1 Példányváltozó Az eddig megismert adattagokból
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é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észletesebbenAbstract osztályok és interface-ek. 7-dik gyakorlat
Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,
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észletesebbenProgramozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.
KIINDULÁS Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg. Programozás III Az egyszerűség kedvéért mindegyiket a nevük alapján regisztráljuk,
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észletesebbenJava VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.
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észletesebbenJava 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
RészletesebbenPelda ö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
RészletesebbenAz élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal.
Objektumorientált programozás Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal. Ez a nem művészi értékű, de idillikus kép azt a pillanatot mutatja,
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é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észletesebbenObjektum perzisztencia és objektum relációs modell
Objektum perzisztencia és objektum relációs modell Konstantinusz Kft 2009 Tartalomjegyzék Bevezetés 3 Mi a perzisztencia? 3 Aktív és passzív programok 4 Miért gond az objektum perzisztencia megvalósítása?
RészletesebbenStatikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék
Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma
RészletesebbenJAVA PROGRAMOZÁS 3.ELŐADÁS
Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 3.ELŐADÁS 2014-2015 tavasz Polimorfizmus, absztrakt osztályok, interfészek 2 Példa - Hengerprogram 3 Példa - Hengerprogram 4 Példa - Hengerprogram
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észletesebbenProgramozási alapismeretek 4.
Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.)
RészletesebbenJava programozási nyelv 4. rész Osztályok II.
Java programozási nyelv 4. rész Osztályok II. 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/17 Tartalomjegyzék
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észletesebbenObjektum orientált kiterjesztés A+ programozási nyelvhez
Szegedi Tudományegyetem Informatikai Tanszékcsoport Objektum orientált kiterjesztés A+ programozási nyelvhez Diplomamunka terve Készítette: Bátori Csaba programtervező matematikus hallgató Témavezető:
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é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észletesebbenProgramozá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
RészletesebbenProgramozási technológia
Programozási technológia Osztályszintű elérés Kivételkezelés, Fájlkezelés Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Osztályszintű elérés (statikusság) Az osztályban definiált attribútumok és műveletek
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észletesebben8. gyakorlat Pointerek, dinamikus memóriakezelés
8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.
RészletesebbenA programozás alapjai 1 Rekurzió
A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder
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észletesebbenHelyes-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
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észletesebbenObjektumelvű programozás
Objektum, osztály Objektumelvű programozás Az elemzés együttműködő objektumok rendszereként fogalmazza meg a feladatot. Objektum-központú elemzés A tervezés a feladat tárgyköreit egy-egy objektum felelősségévé
RészletesebbenC# 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ó
RészletesebbenSzé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:
RészletesebbenObjektum 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.
RészletesebbenProgramozá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
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észletesebbenJava Programozás 9. Gy: Java alapok. Adatkezelő 5.rész
Java Programozás 9. Gy: Java alapok Adatkezelő 5.rész 15/1 B ITv: MAN 2018.04.22 A Keresés funkció Programlogika: 1. A keresés az etm táblamodellben fog keresni, és a találat rekordokat átmásolja egy másik
RészletesebbenBevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok
Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int
RészletesebbenA függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.
Függvények A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük. Mint egy dzsinn: Hogyan is "használunk" egy dzsinnt? megszólítjuk megmondjuk,
RészletesebbenJava programozási nyelv 6. rész Java a gyakorlatban
Java programozási nyelv 6. rész Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október A Java programozási nyelv Soós Sándor 1/16 Tartalomjegyzék
Részletesebben1. 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 (
RészletesebbenProgramozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:
RészletesebbenVisual C++ 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.
Visual C++ 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. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat
RészletesebbenBevezetés a programozásba előadás: Öröklődés
Bevezetés a programozásba 2 5. előadás: Öröklődés emlékeztető Tagfüggvény struct koord { double x,y,r; void set(double ux, double uy) { x=ux; y=uy; r=sqrt(x*x+y*y); } Használat: koord k; k.set(4,5); Egységbezárás
RészletesebbenIII. OOP (objektumok, osztályok)
III. OOP (objektumok, osztályok) 1. Természetes emberi gondolkozás Az Objektumorientált paradigma alapelvei nagyon hasonlítanak az emberi gondolkozásra. Érdemes ezért elsőként az emberi gondolkozás elveit
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észletesebbenObjektumorientált paradigma és programfejlesztés Bevezető
Objektumorientált paradigma és programfejlesztés Bevezető Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján
RészletesebbenOsztályszintű elérés, kivételkezelés, fájlkezelés
Programozási, kivételkezelés, fájlkezelés Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 3 4 2 (statikusság) Az osztályban definiált attribútumok és műveletek az osztályból példányosított
RészletesebbenC# 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
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észletesebbenProgramozá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
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észletesebbenOBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat
2. Digitális óra 28 OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK 2.1 A feladat Ebben a fejezetben egy viszonylag egyszerő problémára alkalmazva tekintjük át az OO tervezés modellezési technikáit. A feladat
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észletesebbenOsztá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
RészletesebbenProgramozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 5. gyakorlat 1 Objektumorientáltság Egységbezárás és információ elrejtése (absztrakt adattípus) Adatok és rajtuk végzett műveletek egységbezárása (osztályok írása, múlt hét) Öröklődés Polimorfizmus
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észletesebbenOBJEKTUM 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ő
RészletesebbenEntity Framework alapú adatbáziselérés
Entity Framework alapú adatbáziselérés Dr. Johanyák Zsolt Csaba http://johanyak.hu A gyakorlat célja Model-first megközelítéssel Entity-Framework modell létrehozása, majd ebből adatbázis generálása LocalDB-ben.
RészletesebbenOsztály és objektum fogalma
Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály
RészletesebbenPHP5 Új generáció (2. rész)
PHP5 Új generáció (2. rész)...avagy hogyan használjuk okosan az osztályokat és objektumokat PHP 5-ben. Cikksorozatom elõzõ részében képet kaphattunk arról, hogy valójában mik is azok az objektumok, milyen
RészletesebbenWeb-technológia PHP-vel
Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float
RészletesebbenAlkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus
Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 6. előadás Objektumorientált programozás: öröklődés és polimorfizmus 2011.10.24. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
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é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észletesebben1. 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"
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észletesebbenBevezeté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;
RészletesebbenJAVA nyelvi alapok. Adatbányászati technikák (VISZM185) Dávid István david@cs.bme.hu
JAVA nyelvi alapok Adatbányászati technikák (VISZM185) Dávid István david@cs.bme.hu Bevezető Hol és miért van szükség a JAVÁra az adatbányászatban? Programozott végrehajtás (imperatív, WF ) Platform (JRE
RészletesebbenProgramozási nyelvek Java
-en objektumot tárolunk. Automatikus változók Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 3. előadás - végrehajtási vermen (execution stack) jönnek létre - alprogramok
RészletesebbenBánsághi Anna 2014 Bánsághi Anna 1 of 33
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
RészletesebbenJava VII. Polimorfizmus a Java nyelvben
Java VII. Polimorfizmus a Java nyelvben Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 19. Java VII. Polimorfizmuss JAVA7 / 1 A kötés (binding( binding) ) fogalma Kötés (binding)
RészletesebbenObjektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben
Eötvös Loránd Tudományegyetem Informatikai Kar Objektumelvű alkalmazások fejlesztése 6. gyakorlat, polimorfizmus 2011.10.27. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Kódismétlődés
Részletesebben4. Öröklődés. Programozás II
4. Öröklődés Programozás II Mielőtt belevágunk Egy Tárgy típusú objektumokat tároló tömb i. elemében tároljunk el egy új tárgyat Rossz módszer: tomb[i].setnev( uj.getnev() ); tomb[i].setertek( uj.getertek()
RészletesebbenJava VII. Polimorfizmus a Java nyelvben
Java VII. Polimorfizmus a Java nyelvben Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 19. Java VII. Polimorfizmuss JAVA7 / 1 A kötés (binding( binding) ) fogalma Kötés (binding)
RészletesebbenDokumentáció. 1. Beadandó feladat
Ballai Brigitta XG3077 gittacska91@gmail.com 2013.11.25. Dokumentáció 1. Beadandó feladat Feladat : A feladat egy kellően bonyolult osztálystruktúra megtervezése és implementálása Java nyelven. Minimális
RészletesebbenGenerikus Típusok, Kollekciók
Generikus Típusok, Kollekciók Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 1 / 26 Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections
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észletesebbenSikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.
1 1. fejezet A JUnit tesztelési környezet A JUnit egy szabad forráskódú modultesztelő rendszer, amely Java programjaink automatikus teszteléséhez nyújt segítséget. A rendszer letölthető a http://junit.org
RészletesebbenBevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 5. előadás Objektumorientált programozás és tervezés 2014.03.10. Giachetta Roberto groberto@inf.elte.hu
RészletesebbenSzálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?
Szálkezelés 1. A szekvencia diagram feladata az objektumok egymás közti üzenetváltásainak ábrázolása egy időtengely mentén elhelyezve. Az objektumok életvonala egy felülről lefelé mutató időtengely. A
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é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é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é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észletesebbenProgramozási nyelvek II.: JAVA, 4. gyakorlat
Programozási nyelvek II.: JAVA, 4. gyakorlat 2017. október 2-6. Programozási nyelvek II.: JAVA, 4. gyakorlat 1 / 32 A 4. gyakorlat tematikája Tömbök A java.util.arrays osztály A String osztály A StringBuffer
RészletesebbenWEBFEJLESZTÉ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észletesebbenProgramozási nyelvek Java
Objektum-orientált szemlélet - Egységbe zárás (incapsulation) - Információ elrejtés - Öröklődés altípusosság dinamikus kötés Öröklődés Programozási nyelvek Java - kiterjesztem, kibővítem, megváltoztatom
RészletesebbenProgramozás 1. 2.gyakorlat
Programozás 1. 2.gyakorlat Ismétlés Objektum: Egy a való világból vett elem (ami lehet elvonatkoztatott is) számítógépes ábrázolása. Pl: Kurzus, Személy stb Minden Objektum rendelkezik: Állapottal Viselkedéssel
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észletesebben