Objektumleírók Konstantinusz Kft 2010
|
|
- Alajos Molnár
- 7 évvel ezelőtt
- Látták:
Átírás
1 Objektumleírók Konstantinusz Kft. 2010
2 1. Tartalomjegyzék 1. Tartalomjegyzék Mi az a leíró? Közvetett paraméter átadások Absztrakt metódusok, absztrakt konstrukció Validálás leíróval Mi az a leíró? Vegyünk egy egyszerű példát egy osztályra és annak a konstruktorára, egy C-szerű fiktív nyelven. class Szemely{ string nev,cim,telefon; public Szemely(string nev, string cim, string telefon){ this.nev=nev; this.cim=cim; this.telefon=telefon; Most pedig, ahelyett, hogy a konstruktor paramétereit külön-külön szerepeltetnénk, mint formális paramétereket, definiáljunk egy adattípust, ami ugyanazokat a mezőket tartalmazza, mint az adott metódus formális paraméterei. Ezt a struktúrát fogjuk leírónak nevezni. Ezek után a metódus nem a paramétereket kéri be egyenként, hanem egy leírót. 2/12
3 struct Szemely_leiro { string nev, cim, telefon; class Szemely{ string nev,cim,telefon; public Szemely(Szemely_leiro leiro){ this.nev=leiro.nev; this.cim=leiro.cim; this.telefon=leiro.telefon; Eddig látszólag nem történt semmi különös, szóval mégis mire jó ez? A továbbiakban nézzünk meg néhány specifikus esetet, amin keresztül megérthetjük ennek a módszernek a hasznát. 3/12
4 3. Közvetett paraméter átadások Tegyük fel, hogy a fent látott Szemely osztálynál kötelező kitölteni a nevet és a címet, és azt szeretnénk, hogy addig ne is lehessen létrehozni egy Szemely példányt, amíg a paraméterek nincsenek rendben. Ehhez mindenképp kell még a konstruktor előtt valamilyen ellenőrzés, más néven validálás, hiszen mire a konstruktorba írt kód lefut, addigra már késő, a példány létrejött. Tehát kell egy osztálymetódus, ami bekéri ugyanazokat a paramétereket, mint a konstruktor, leellenőrzi őket, és a minden rendben, akkor példányosítja az objektumot, és visszaadja a példányt. Az ilyen metódusokat hívják factory metódusnak, mivel objektumok gyártását végzik. Most lássuk először a hagyományos paraméterezéssel. class Szemely{ string nev,cim,telefon; public static bool validalas(string nev, string cim, string telefon){ if (nev== or cim== ) return false; return true; public static Szemely letrehoz(string nev, string cim, string telefon){ if (!validalas(nev, cim, telefon)) return null; return new Szemely(nev, cim, telefon); protected Szemely(string nev, string cim, string telefon){ this.nev=nev; this.cim=cim; this.telefon=telefon; 4/12
5 Itt a konstruktor nem publikus, tehát kívülről nem konstruálható közvetlenül ez az osztály, muszáj a letrehoz() metódust használni. Viszont itt máris látható egy kellemetlenség. A nev, cim, telefon paramétereket a letrehoz() metódus, illetve a validalas() metódus formális paraméter listájában is szerepeltetni kell, és át is kell adni őket, egymásnak és a konstruktornak. Ez a helyzet problémás redundanciákat okozhat. Ötször kell leírnom ugyanazt a paraméter listát. Ez fölösleges, és ráadásul amikor egyik metódus átadja a másiknak, akkor még a jó sorrendre is figyelni kell, nehogy összekeveredjenek. Gondoljuk el, mi lenne, ha a paraméterlistát változtatni kell, vagyis bővíteni, és/vagy kivenni belőle dolgokat. Ekkor még jobb esetben is öt helyen kell átírni, és nem elrontani a sorrendeket. Ebben a helyzetben már sokkal vonzóbbnak tűnik a leírós megoldás: class Szemely{ string nev,cim,telefon; public static bool validalas(szemely_leiro leiro){ if (leiro.nev== or leiro.cim== ) return false; return true; public static Szemely letrehoz(szemely_leiro leiro){ if (!validalas(leiro)) return null; return new Szemely(leiro); protected Szemely(Szemely_leiro leiro){ this.nev=leiro.nev; this.cim=leiro.cim; this.telefon=leiro.telefon; 5/12
6 Figyeljük meg, mennyivel szebb és egyszerűbb lett a kód. Itt már ha változtatni akarok a paraméter listán, akkor nem kell számtalan helyen átírnom, és nem kell a paramétereket egyesével átadogatni a metódusok között. Ha lenne egy tucat mezője a leírónak, a legtöbb helyen akkor is csak a leírót adom át, így teljesen átlátható marad a kód. Általánosságban tehát azt mondhatjuk, hogy a leírók paraméter listákat fognak össze egy csomagba, ezzel a csomag könnyen hordozhatóvá válik, ráadásul a metódusok, amik között átadogatjuk, nem is kell hogy ismerjék a tartalmát. Figyeljük meg, hogy a letrehoz() metódus semmit nem kell hogy foglalkozzon a leíró tartalmával, nem kell tudnia róla hogy mi van benne, csak közvetítenie kell a validalas() metódus és a konstruktor között. A leíróknak ez a tulajdonsága pedig egészen új, érdekes lehetőségeket nyit meg előttünk. 6/12
7 4. Absztrakt metódusok, absztrakt konstrukció Leírók kapóra jönnek amikor az ember absztrakt osztályokkal, és erős polimorfizmussal dolgozik. Előfordulnak olyan helyzetek, amikor olyan kódot kell írni, ami paraméterként kapott ismeretlen szerkezetű információk alapján ismeretlen osztályú absztrakt objektumok metódusait kell hogy használja. Absztrakt metódus interfésze (formális paraméterlista, stb.) az azt implementáló alosztályokban ugyanaz kell hogy maradjon. Viszont előfordulhat, hogy alosztályonként más kellene hogy legyen ennek a metódusnak a paraméter listája. Ez főleg akkor történhet meg, ha ez a metódus valamilyen másik osztályt példányosít, aminek a konstruktorához szükséges információt ő maga is paraméterként kéri be. Ekkor a különböző implementációk más paraméterlistát igényelhetnének, mivel más fajta objektumokat akarnak konstruálni. Ez hagyományos módon nem lehetséges, már eleve azért sem, mert ez nyelvi szinten ellentmondásos lenne. De szerencsére leírók használatával van egy kiskapunk. Most nézzünk erre a szituációra egy példát. Lesz egy műhelyünk ami mindenféle típusú autókat szerel össze, majd végül leteszteli a motort, a féket, és kifesti a megadott színre. A trükk az, hogy a különféle autótípusok összeszerelése egyedi módon történik, egyedi alkatrészekből. Ezért, hogy ne a műhelynek kelljen tudnia, hogy hogyan kell minden egyes típust összeszerelni, autószerelők vannak, akik értenek egy-egy típus összeszereléséhez. Így a műhely csak megkapja egy nagy konténerben az alkatrészeket, amikről nem is kell tudnia semmit, átadja a megfelelő szerelőnek, az összeszereli, a műhely pedig elvégzi a teszteket, és az utómunkát. abstract class Auto_leiro{ abstract class Auto{ Szin szin; void motorteszt(){ //motor tesztelési kódja.. void fekteszt(){ //fék tesztelési kódja.. 7/12
8 void kifest(szin szin){ this.szin=szin; abstract class AutoSzerelo{ abstract Auto osszeszerel(auto_leiro alkatreszek); class Muhely{ public Auto autoosszeszerel(autoszerelo szerelo, Auto_leiro alkatreszek, Szin szin) { Auto auto; auto=szerelo.osszeszerel(alkatreszek); auto.motorteszt(); auto.fekteszt(); auto.kifest(szin); return Auto; Ebben az esetben annyival tovább léptünk, hogy már leíró is egy objektum, nem csak egy sima adatszerkezet. Így neki is lehetnek alosztályai, absztrakt tagjai stb. Láthatjuk hogy az autót, és az autószerelőt is egy absztrakt osztály képviseli, amiből majd a konkrét autó típusok, és a hozzájuk tartozó szakértő szerelők fognak származni. Az AutoSzerelo osztály ebben az esetben egy úgynevezett factory szerepét tölti be, vagyis egy olyan objektum, ami más osztályok 8/12
9 példányosítását végzi. Ebben az esetben az AutoSzerelo osztály osszeszerel metódusa ugyanaztteszi, mint korábban a Szemely osztály letrehoz() metódusa. Ide is ugyanúgy lehetne validálást is beépíteni, mint ahogy azt fent láttuk. A lényeg, hogy minden AutoSzerelo alosztály ebben a metódusban példányosítja a megfelelő osztályú autót, és az ehhez szükséges információt egy leírón keresztül kapja, amit akár egyenesen tovább is adhat az autó konstruktorának anélkül hogy kibontaná, hiszen az autó konstruktora is működhet leíróval. Így végül, mint láthatjuk, a Muhely autoosszeszerel() metódusa teljesen vakon tud autókat gyártani, anélkül hogy tudná, hogy mit gyárt és miből. Ezt hívjuk absztrakt konstrukciónak. Ezek a helyzetek leginkább akkor fordulnak elő, ha valamilyen plugin-ezhető rendszert kell készíteni. Például ebben az esetben a különböző autó típusok, az alkatrészeik, és a szerelőik működhetnének plugin-ként. 9/12
10 5. Validálás leíróval Végül jöjjön a leíróknak egy érdekes alkalmazása. Láttuk korábban, hogy objektumok konstruálása valamilyen ellenőrzésen megy át először, ezért használunk validáló metódusokat, amik vagy az adott osztály statikus metódusai, vagy egy factory példány metódusai. Viszont, ha az ember leírót használ, akkor a validálást fel lehet fogni úgy is, hogy egy adott paraméter listáról szeretném eldönteni,hogy valid-e vagy sem. Ha pedig valid, akkor fel lehet használni. Ebben az elgondolásban úgy tűnik mintha a validálás, illetve validitás magához a paraméter listához kötődne. Márpedig ha a leíró egy paraméter listát testesít meg, akkor ezek a leírónak a tulajdonságai, illetve viselkedése, vagyis a leíró validálja önmagát. Konkrétabban fogalmazva, a korábban látott validáló metódusok átköltözhetnek a leíróba, persze feltéve, hogy a leíró egy objektum. Nézzük meg, hogyan változik ezzel a Szemely és Szemely_leiro példakódunk: class Szemely_leiro { string nev, cim, telefon; bool valid=false; Szemely_leiro(string nev, string cim, string telefon){ this.nev=nev; this.cim=cim; this.telefon=telefon; bool validalas(){ //ha már validak vagyunk akkor nem kell újra ellenőrzés if (this.valid) return true; if (this.nev== or this.cim== ) return false; 10/12
11 //beállítjuk a leíró állapotát validra this.valid=true; return true; class Szemely{ string nev,cim,telefon; public static Szemely letrehoz(szemely_leiro leiro){ //itt már a leírótól kérdezzük meg, hogy valid-e if (!leiro->validalas()) return null; return new Szemely(leiro); protected Szemely(Szemely_leiro leiro){ this.nev=leiro.nev; this.cim=leiro.cim; this.telefon=leiro.telefon;; Ezt a fajta leírót akár előre be is validálhatom, és amikor átadom a letrehoz() metódusnak, akkor a validálási folyamat nem fog még egyszer lefutni. 11/12
12 Leírókkal ennél messzebbre is lehet menni. Például lehet beépíteni automatikus validálásokat olyan dolgokra, amiket gyakran kell vizsgálni (string üres-e, számmá konvertálható-e, stb). Lehet alapértelmezett értékek incializálását is végezni, lehet automatikus hibaüzeneteket generálni. Mindenképp érdemes élni ezzel a módszerrel, ha mást nem akkor csak a kód egyszerűsítése céljából. 12/12
Fü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é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é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é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é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é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é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é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é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 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é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é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é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é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észletesebbenProgramozá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
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 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észletesebbenA C++ öröklés. (Előfeltétel: 12. tétel ismerete)
Az öröklés fogalma: A C++ öröklés (Előfeltétel: 12. tétel ismerete) olyan alapvető programozási technika, amely lehetővé teszi, hogy a már meglévő osztályainkból újakat tudunk származtatni, valamint az
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é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észletesebbenList<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error
Generics Egyszerűbb példák (java.util csomagból): public interface List { void add(e x); Iterator iterator(); public interface Iterator { E next(); boolean hasnext(); E - formális típusparaméter,
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é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é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é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észletesebbenProgramozási nyelvek II. JAVA
Programozási nyelvek II. JAVA 10. gyakorlat 2017. november 20-24. Szoftver minőségbiztosítás (ismétlés) Adott: Specifikáció (követelmények halmaza) Cél: A követelményeket teljesítő ("helyes") program Megközelítések:
RészletesebbenJava Programozás 1. Gy: Java alapok. Ismétlés ++
Java Programozás 1. Gy: Java alapok Ismétlés ++ 24/1 B ITv: MAN 2018.02.18 Feladat Készítsünk egy komplett konzolos alkalmazást, mely generál egy számot 0 és 100 között (mindkét határt beleértve), feladatunk
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é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észletesebbenOAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.
OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Szimuláljuk különféle élőlények túlélési versenyét. A lények egy pályán haladnak végig, ahol váltakozó viszonyok vannak. Egy lénynek
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 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é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é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észletesebbenOsztá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
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észletesebbenOsztá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
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é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é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észletesebbenC# 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
RészletesebbenFelhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
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é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é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é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észletesebbenOOP: Java 8.Gy: Gyakorlás
OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét
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észletesebbenProgramozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia
Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
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é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 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é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é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é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é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é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é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észletesebben4. Gy: JAVA osztályok
Objektum Orientált Programozás 4. Gy: JAVA osztályok 25/1B IT MAN B IT v: 2016.02.24 MAN Feladatok 1. Készítsen egy Teglalap osztályt - legyen adattagja a két oldal tárolására (egészek) - legyen konstruktora,
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észletesebbenProgramozási nyelvek II.: JAVA
Programozási nyelvek II.: JAVA 6. gyakorlat 2017. október 16-20. 6. gyakorlat Programozási nyelvek II.: JAVA 1 / 1 Az 6. gyakorlat tematikája Túlterhelés - összefoglalás statikus adattagok és metódusok
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ási Paradigmák és Technikák
Programozási Paradigmák és Technikák Öröklődés Interfészek Kivételkezelés Rekurzió Eseménykezelés Programozási Paradigmák és Technikák Öröklődés Öröklődés a C# nyelvben Öröklődés feladatok Gyakorló feladatok
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észletesebbenBá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
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é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észletesebbenInterfé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
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észletesebbenObjektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN
Objektum Orientált Programozás 5. JAVA osztályok 21/1B IT MAN B IT v: 2016.03.09 MAN Feladatok 1. Készítsen egy Alkalmazott osztályt - legyen név, kor és fizetés adata - legyen egy osztályszintű adattagja
RészletesebbenOOP: Java 4.Gy: Java osztályok
OOP: Java 4.Gy: Java osztályok. 36/1 B ITv: MAN 2019.03.02 Feladat Készítsen el egy Employee osztályt és egy Employee osztályt használó osztályt (EmpProgram). Az Employee osztálynak: van name és salary
Részletesebben#include <iostream> using namespace std; // struct macska is lehetne class macska { public: int kor; int suly; }; void main() { macska cirmi;
1. Készítsünk egy macska osztályt amely két információt tárol: a kor (int) és a súly (int). Mind a két tulajdonság legyen publikus. Próbáljuk ki az osztályt. Definiáljunk egy cirmi nevű macskát és adjuk
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észletesebbenProgramozás C++ -ban 2007/4
Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos
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észletesebbenOOP. Alapelvek Elek Tibor
OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós
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 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 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észletesebbenProgramozás II. ATM példa Dr. Iványi Péter
Programozás II. ATM példa Dr. Iványi Péter 1 ATM gép ATM=Automated Teller Machine Pénzkiadó automata Kezelő szoftvert szeretnénk írni Objektum-orientált módon 2 Követelmények Egyszerre csak egy embert
RészletesebbenISA 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
RészletesebbenProgramozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.
Programozás C++ osztályok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. február 25. Osztályok C++ osztályok Bevezetés Objektum-orientáltság
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é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észletesebbenSmalltalk 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,
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é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é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ás C++ -ban
Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több
RészletesebbenBevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 8. előadás 2014.03.31. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Öröklődés
RészletesebbenOEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1
OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Különféle élőlények egy túlélési versenyen vesznek részt. A lények egy pályán haladnak végig, ahol váltakozó terep viszonyok vannak.
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észletesebbenGENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok
GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és Függvénysablonok Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben
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észletesebbenElemi Alkalmazások Fejlesztése II.
Elemi Alkalmazások Fejlesztése II. Osztályok közötti kapcsolatok öröklődés asszociáció aggregáció kompozíció 1. Feladat Készítsünk programot, amellyel testek térfogatát határozhatjuk meg, illetve megadhatjuk
RészletesebbenBevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum
Bevezetés a programozásba 2 1. Előadás: Tagfüggvények, osztály, objektum Ismétlés int main() { string s; s; s= bla ; cout
RészletesebbenProgramozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter
Programozás(A szakirány) II. beadandó feladat 2014.05.05. Farkas András HP6S15 fafee@fafeecorp.com 1. csoport Veszprémi Anna / Hudoba Péter Feladat: Egy szöveges állományban bekezdésekre tördelt szöveg
RészletesebbenBME MOGI Gépészeti informatika 4.
BME MOGI Gépészeti informatika 4. 1. feladat önálló feladatmegoldás Generáljon két 1 és 10 közötti véletlen egész számot, majd kiírja ezekre a számokra a tízes szorzótáblákat! Ha az első generált szám
RészletesebbenC++ programozási nyelv
C++ programozási nyelv Gyakorlat - 9. 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/15 Tartalomjegyzék Hozzáférési
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észletesebben