Alkatresz::Alkatresz(string n; int csz, int a) { nev = n; cikkszam = csz; ar = a; };
|
|
- Dániel Varga
- 5 évvel ezelőtt
- Látták:
Átírás
1 1. Mintapélda Feladat: Egy ipari környezetben a gyártott szerelvények tetsz leges számú alkatrészekb l állhatnak, illetve önmagában is hat szerelvényeket, azaz hierarchikus felépítés ek, természetesen a legalsó szerkezeti szinten már csak alkatrészek állhatnak. Az alkatrészeke tekintetében több típust különböztetünk meg, melyek más-más attribútumokkal rendelkeznek. Feladatunk az egyes szerelvények szerkezetének részletes ábrázolása, és annak megállapítása, hogy az alkatrész milyen költségen állhat el, ha pusztán a benne lév alkatrészek árait nézzük Osztályszerkezet Mivel minden egyes alkatrésztípus külön árral rendelkezik, célszer az egyes alkatrészeket külön objektumként kezelni, így mindegyikhez önálló attribútumokat társíthatunk. Ezek az objektumok bár többféle alkatrészt írnak le, ugyanolyan szerkezettel rendelkeznek, hiszen minden alkatrészr l elég nyilvántartanunk annak nevét és cikkszámát az azonosításhoz, illetve az árát a kés bbi számításokhoz. Tehát az alkatrészeket egy önálló osztályba soroljuk a következ szerkezettel: Adattagok: cikkszám: egész szám típusú név: szöveg típusú ár: egész szám típusú M veletek: konstruktor és destruktor adattagok kiolvasása Mivel már az egyes alkatrészek létrehozásakor meg kell adnunk paramétereit, a konstruktor feladata lesz ezen paraméterek átadása az adattagoknak. Értelemszer en hiányos adatokkal rendelkez alkatrészt nem hozhatunk létre. Az osztálynak megfelel C++ kód: class { (string n, int csz, int a); ~(); string Nev() { return nev; } int Cikkszam() { return cikkszam; } int { return ar; } string nev; int cikkszam; int ar; ::(string n; int csz, int a) { nev = n; cikkszam = csz; ar = a; ::~() { // ez üresen marad, a beépített osztálytörlési eljárás // elegend, további adattagokat nem kell törölnünk november oldal
2 Az osztálynak megfelel UML osztálydiagram: string nev int cikkszam int ar string Nev() int Cikkszam() int Ezeknek megfelel en vegyünk egy példányt az osztályból, például hozzunk létre egy 1400-as cikkszámú, 30 Ft-os csavart a következ C++ utasítással: cs( csavar, 1400, 30); Így létrejön egy objektum az osztályhoz, melynek objektumdiagramja: cs: cikkszam = 1400 ar = Adatismétl dés A szerelvények tehát végs soron alkatrészekb l állnak, azaz egy szerelvényben több ugyanolyan alkatrész is lehet. Bár ezek az alkatrészek ugyanazon tulajdonságokkal rendelkeznek, mégis több külön objektumként kell kezelnünk ket az összeszerelés során, így több példányt is létrehozunk azonos attribútumokkal. cs1( csavar, 1400, 30); cs2( csavar, 1400, 30); Jól látható, hogy a két objektum paramétereiben teljesen megegyezik, és mivel ugyanazon osztály példányai, felépítésükben és m veleteikben is megegyeznek, azaz csupán nevük (azonosítójuk) különbözteti meg ket, de mivel két külön objektumként kezeljük, a memóriában két külön adatterületet fog elfoglalni. Ezen objektumok létrehozása során így a következ problémák merülnek fel: Ugyanilyen paraméterekkel rendelkez objektumból ennél sokkal több példányt hozhatunk létre, ami pazarláshoz, redundanciához vezetne, hiszen a memóriában sokszor tárolnánk el ugyanazokat az adatokat. Ha a kés bbiekben módosítani akarnánk egy alkatrésztípus attribútumát (pl. emelkedett az ára), az összes bel le meglév objektumot módosítanunk kéne, ami rengeteg munkát jelent. Ha egy alkatrésztípusból az összes objektumot töröljük a rendszerb l, azok attribútumai is elvesznek, pedig kés bb lehet, hogy létre kívánunk hozni újabb példányokat. Célszer bb lenne tehát az egyes alkatrésztípusok tulajdonságait külön eltárolni, egy másik objektumba, melyb l csak egy létezne, és mely kapcsolatban állna az összes típusnak megfelel alkatrészpéldánnyal. Ezek a ó objektumok pusztán csatolt információkat tárolnak, így nevezzük ket csatolóknak. Ezzel a megközelítéssel mindhárom problémát megoldhatjuk: Az adatokat csak egy helyen tároljuk, megsz nik a redundancia november oldal
3 Az esetleges módosítást csupán egy helyen kell elvégeznünk. A csatoló a konkrét alkatrészekt l függetlenül létezhet, így az adatok bármikor megtalálhatóak a rendszerben Kapcsolatok A módosított tervbe tehát be fog kerülni egy második osztály is, hiszen a csatolóknak is önálló struktúrával kell rendelkezniük, ugyanakkor minden alkatrésznek kapcsolatban állnia egy objektummal, hiszen az alkatrészek ezek után önállóan már nem nak adatokat, azaz önállóan egy alkatrészobjektum már nem használható. A két objektum így kapcsolatban lesz egymással, nevezetesen, hogy a csatoló ja az alkatrészt. Ennek UML objektumdiagramja: cs1 : csat cikkszam = 1400 ar = 30 cs2 : Az ennek megfelel egyszer sített osztálydiagram: Ezek alapján már implementálhatjuk a két osztályt. Nyilván a csatoló osztály felépítése megegyezik az eddigi alkatrészével, hiszen ugyanazon adattagokkal kell rendelkeznie, és csak az ezeket kiolvasó m veleteket kell implementálnunk. Az osztály elveszti eddigi adattagjait, pusztán annyi információt kell tárolnia, hogy elérhesse a hozzá tartozó csatolót, amit egy objektumra történ hivatkozással teszünk lehet vé. Ezt persze már az alkatrész objektum létrehozásakor meg kell adnunk, így a konstruktornak csak a csatolóra történ hivatkozást (mutatót) kell továbbadnia. Emellett az osztály szerkezete nem változik, így a küls viselkedése megegyezik a korábbival, azaz ezen osztály objektumaihoz való hozzáférések a programban változatlanok maradhatnak. class { (string n, int csz, int a); ~(); string Nev() { return nev ; } int Cikkszam() { return cikkszam; } int { return ar; } string nev; int cikkszam; int ar; ::(string n; int csz, int a) { nev = n; cikkszam = csz; ar = a; ::~() { class { november oldal
4 ( cs) { csat = cs; } ~ (); string Nev() { return csat->nev(); } int Cikkszam() { return csat->cikkszam(); } int { return csat->; } csat; Ennek folyományaként az alkatrészek létrehozása több lépésb l fog állni. El ször létre kell hoznunk a megfelel csatoló objektumot, amelyben eltároljuk tulajdonságait, majd ez után hozhatjuk létre az adott típusú alkatrészt. Persze, amint egy adott alkatrész típushoz létrehoztuk a csatolót a programban, a többi ugyanilyen típusú alkatrészhez már nem kell újabb csatolót létrehoznunk. A korábbiakban látott konstrukció tehát a következ képpen valósítható meg: csatolo1( csavar, 1400, 30); cs1(&csatolo1); cs2(&csatolo1); Persze ebben a megvalósításban az alkatrész tulajdonságait továbbra is az alkatrészt l kérdezzük le, amely továbbítja a lekérdezést a hozzákapcsolt csatolóhoz. A csatolón keresztül viszont nincs módunk a hozzákapcsolt alkatrészek eléréséhez, vagyis ez egy asszimetrikus kapcsolat, amit az osztálydiagramon is ábrázolhatunk: 1.4. Üzenetátadás Az osztály els dleges feladata természetesen továbbra is az, hogy adatokat szolgáltasson magáról, amit üzenetküldéssel valósít meg. Az üzenetküldés során a program valamely más komponense, egy kliens objektum lekérdezheti például az alkatrész árát az m velettel. Az alkatrész megvalósításában fogadja az ár m veletet, ám azt rögtön tovább is adja a hozzá tartozó csatolónak, hiszen saját maga nem rendelkezik az adattal, a csatoló objektum viszont már képes visszaadni az adatot, amely így eljut a klienshez. Az üzenetküldés ábrázolása objektumdiagramban (mivel a kliens tetsz leges osztályhoz tartozhat, így nem jelöljük az osztálynevét az objektumdiagramban, illetve a továbbiakban elhanyagoljuk az egyes objektumok megnevezését, illetve egyes attribútumokat, amennyiben azok feleslegesek): kliens : 1.5. Polimorfizmus A programnak azonban szerelvényekkel is dolgoznia kell, így az alkatrészek adatai mellett az egyes szerelvények pontos felépítését is el kell tárolnunk. Szükségünk lesz egy új osztályra, mely a szerelvény objektumok m ködését megvalósítja. A Szerelveny osztály megvalósítását többféleképpen is elképzelhetjük, például a Szerelveny objektumok olyan adatszerkezetekkel rendelkezhetnek, amelyek több más objektumra is képesek hivatkozni, így míg egy alkatrész csak egy csatolóval állt kapcsolatban, a szerelvények több más objektummal is kapcsolatban lehetnek, legyenek azok alkatrészek, vagy más szerelvények (hiszen megengedtük, hogy a szerelvények szerelvényekb l is felépülhessenek). Vegyünk példaként egy egyszer szerelvényt, amely egy tartógerendából és két csavarból áll: november oldal
5 : : : nev = "tartógerenda" Ugyanakkor mivel szerelvény hat szerelvényt is, megtehetjük, hogy el bb két alkatrészt szerelünk össze, majd az így kapott szerelvényt és a harmadik alkatrészt összeszerelve megkapjuk az el bbi szerelvényt, ám az szerkezetileg mégis eltér lesz, ahogy ezt a diagrammon is ábrázoljuk: : : : nev = "tartógerenda" Tehát a hierarchikus szerkezet lehet vé teszi a többszint összeépítést is, ami a modellezés szempontjából annyit jelent, hogy a kapcsolat fennállhat két szerelvény között, valamint egy alkatrész és egy szerelvény között, azaz polimorfizmus lép fel. Ez jól ábrázolható az osztálydiagramon is: Szerelveny Ha ténylegesen így implementálnánk ezt az osztályt, az azt jelentené, hogy két külön megoldás, illetve adatszerkezet kellene a szerelvényekkel és az alkatrészekkel történ összekapcsoláshoz, ráadásul ezzel az UML diagrammunk is elveszítené típusosságát, hiszen ugyanazt a kapcsolatot két különböz osztállyal tartanánk fent. A gyakorlatban ez annyit tesz, hogyha például módosítani szeretnénk egy szerelvény összeszerelését, akkor egy alkatrész helyére nem rakhatunk szerelvényt, és fordítva, így ezzel jelent sen korlátoznánk lehet ségeinket. A megoldás itt egy olyan általános osztály létrehozása, melyre alkalmazhatjuk a asszociációt, ugyanakkor az általános osztály speciális esetei lehetnek a konkrét osztályok, melyeket november oldal
6 alkalmazunk. Így vegyük be a programunkban az Alkotoelem osztályt, melynek specializációi lesznek az és a Szerelveny osztály, így az osztálydiagram a következ képpen módosul: Alkotoelem Szerelveny 0..1 A specializáció implementálásához örökl dést alkalmazunk, ahol az sosztály szerepét az Alkotoelem veszi át, és ebb l származtatjuk két speciális osztályunkat. Nyilván a tényleges alkalmazásban alkotóelemeket sohasem fogunk betenni szerelvényekbe, hanem csak a konkrét alkatrészt, vagy szerelvényt. Így nem is fognak keletkezni önálló Alkotoelem objektumok, hiszen ez csak egy általános fogalmat képvisel, és csupán a kapcsolatot reprezentálja a két speciális alkotóelem között. Ezért az Alkotoelem absztrakt osztályként szerepel a programban, a m veleteinek egy része nem lesz értelmezve, csak a specializációiban. Már csak a rendszer m ködésének felülvizsgálata, az üzenetküldés megvalósítása maradt hátra. Az ármeghatározás esetében egy kliens egy szerelvényt l kérdezi le az árát. A szerelvény ezt az üzenetet továbbküldi az t alkotó alkatrészeknek és szerelvényeknek. Nyilván a szerelvény alkotóelemek is hasonlóan járnak el, míg az alkatrészek csatolójuktól kérdezik le a kívánt adatot, majd a kapott adatokat az egyes Szerelveny objektumok összegzik, és visszaadják. : : : nev = "tartógerenda" Azonban egy szerelvény nem tudhatja, hogy milyen alkotóelemek tartoznak hozzá, hiszen az csak absztrakt Alkotoelem objektumokat lát, ezért már az absztrakt osztálynak is nia kell a megfelel m velet felületét, ám megvalósítását nem, hiszen mint azt láttuk, a két alkotóelem fajta teljesen máshogy valósítja meg például az lekérdezést. Az alkotóelemek hozzárendelését az egyes szerelvényekhez - az alkatrész-csatoló párosításhoz hasonlóan - pointer segítségével valósítjuk meg, a különbség csak annyi, hogy mivel a szerelvény tetsz legesen sok ilyen pointert hat, a mutatókat egy tömbben kell tárolnunk. Erre a feladatra kit n a C++ STL (Standard Template Library) vector típusa, melyben tetsz leges mennyiség november oldal
7 tetsz leges adattípust tárolhatunk (jelen esetben Alkotoelem objektumokra mutató pointereket). Ezen kívül használunk három beépített függvényt: a tömbbeli elemek hozzáadására szolgáló push_back(), a tömb méretét lekérdez size(), valamint tömb kiürítésére szolgáló clear() m veletet. class { (CString n, int csz, int a); ~() {} string Nev() { return nev; } int Cikkszam() { return cikkszam; } int { return ar; } string nev; int cikkszam; int ar; class Alkotoelem { virtual ~Alkotoelem() {} virtual int = 0; virtual void Betesz(Alkotoelem a) {} virtual string Nev() { return ; } virtual int Cikkszam() { return 0; } Alkotoelem() {} class Szerelveny : public Alkotoelem { Szerelveny(); {} ~Szerelveny() { elemek.clear(); } int ; void Betesz(Alkotoelem a) { elemek.push_back(a); } vector<alkotoelem> elemek; class : public Alkotoelem { ( cs) { csat = cs; } ~ (); string Nev() { return csat->nev(); } int Cikkszam() { return csat->cikkszam(); } int { return csat->; } csat; :(string n; int csz, int a) { nev = n; cikkszam = csz; ar = a; int Szerelveny:: { int sum = 0; for ( int i = 0; i < elemek.size(); i++ ){ sum = sum + elemek[i]->; } return sum; november oldal
Szoftvertechnológia. Feladatgyűjtemény. Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék
Szoftvertechnológia Feladatgyűjtemény Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Oktatási segédanyag az Eötvös Loránd Tudományegyetem Informatikai
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 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észletesebbenSzoftvertechnológia. Feladatgyűjtemény (ideiglenes változat) Eötvös Loránd Tudományegyetem Informatikai Kar
Szoftvertechnológia Feladatgyűjtemény (ideiglenes változat) Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Oktatási segédanyag az Eötvös Loránd Tudományegyetem
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é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é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é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é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 é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é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é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é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észletesebbenAdatszerkezetek és algoritmusok
2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók
RészletesebbenSzármaztatási mechanizmus a C++ nyelvben
Származtatási mechanizmus a C++ nyelvben Miskolci Egyetem Általános Informatikai Tanszék CPP2 / 1 Az öröklődés s fogalma 1. Egy osztály deklarálható valamely más osztály(ok) leszármazottjaként. Az deklaráció
RészletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok
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észletesebbenBánsághi Anna anna.bansaghi@mamikon.net. 2014 Bánsághi Anna 1 of 31
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 9. ELŐADÁS - OOP TERVEZÉS 2014 Bánsághi Anna 1 of 31 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív paradigma
RészletesebbenBevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 11. előadás 2014.05.12. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Adatszerkezetek
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észletesebbenBevezetés, a C++ osztályok. Pere László
Programozás módszertan II. p. Programozás módszertan II. Bevezetés, a C++ osztályok Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK
RészletesebbenProgramozási technológia
Programozási technológia UML emlékeztető, Öröklődés Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. UML Osztályok jelölése A diagramokban az osztály jelölésénél a nevét, az attribútumok nevét és a műveletek
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észletesebbenAlgoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:
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é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é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é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é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é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é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észletesebbenProgramozási technológia I. Sike Sándor
Sike Sándor Tudnivalók Előfeltétel: Programozás Számonkérés: jegy (l. gyakorlatok) Irodalom: Sike Sándor, Varga László: Szoftvertechnológia és UML Ian Sommerville: Szoftverrendszerek fejlesztése A szoftvertechnológia
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észletesebbenC++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:
C++ referencia Izsó Tamás 2017. február 17. 1. Bevezetés A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák: Sokan összetévesztik a pointerrel. Keveset alkalmazzák
RészletesebbenOOP és UML Áttekintés
OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés
RészletesebbenProgramozás I gyakorlat
Programozás I. - 9. gyakorlat Sztringkezelés, mutatók Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 2, 2009 1 tar@dcs.vein.hu Tar
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é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é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é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. április 8. Csak bázisosztályként használt/értelmezhető
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é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észletesebbenProgramozás I. - 11. gyakorlat
Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar
RészletesebbenProgramozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)
Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
RészletesebbenMutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában
Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
RészletesebbenHalmazok. Halmazelméleti lapfogalmak, hatványhalmaz, halmazm veletek, halmazm veletek azonosságai.
Halmazok Halmazelméleti lapfogalmak, hatványhalmaz, halmazm veletek, halmazm veletek azonosságai. 1. lapfogalmak halmaz és az eleme fogalmakat alapfogalmaknak tekintjük, nem deniáljuk ket. Jelölés: x H,
RészletesebbenC++ Standard Template Library (STL)
Programozási Nyelvek és Fordítóprogramok Tanszék Programozási Nyelvek I. Témák 1 STL alapok 2 STL fogalmak 3 Konténerek 4 Iterátorok 5 Funktorok C++ STL Ne fedezzük fel újra spanyolviaszt! Sok adatszerkezet/algoritmus
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észletesebbenGlobális operátor overloading
Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal
RészletesebbenMár megismert fogalmak áttekintése
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak
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é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észletesebbenC++ programozási nyelv
C++ programozási nyelv Gyakorlat - 7. 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/17 Tartalomjegyzék Házi
RészletesebbenAdatszerkezetek 2. Dr. Iványi Péter
Adatszerkezetek 2. Dr. Iványi Péter 1 Hash tábla A bináris fáknál O(log n) a legjobb eset a keresésre. Ha valamilyen közvetlen címzést használunk, akkor akár O(1) is elérhető. A hash tábla a tömb általánosításaként
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é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észletesebbenII. év. Adatbázisok és számítógépek programozása
II. év Adatbázisok és számítógépek programozása A programozási ismeretek alapfogalmai a) algoritmus b) kódolás c) program a) algoritmus: elemi lépések sorozata, amely a következı tulajdonságokkal rendelkezik:
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á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é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észletesebbenC++ programozási nyelv Struktúrák a C++ nyelvben
C++ programozási nyelv Struktúrák a C++ nyelvben 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/37 Bevezetés A
RészletesebbenEötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék. Szoftvertechnológia.
Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Szoftvertechnológia feladatgyűjtemény Összeállították: Dr. Sike Sándor Giachetta Roberto Budapest, 2015
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észletesebbenmul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk.
Érdi Gerg EF II. 2/2. Feladat Készítsen egy zsák típust! lkalmazzon osztályt! zsákokat rendezett láncolt listával ábrázolja! Implementálja a szokásos m veleteket, egészítse ki az osztályt a kényelmes és
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észletesebbenGenerikus osztályok, gyűjtemények és algoritmusok
Programozási, gyűjtemények és algoritmusok bejárása Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 bejárása 2 bejárása 2 Java-ban és UML-ben bejárása Az UML-beli paraméteres osztályok a Java
RészletesebbenA C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
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észletesebbenRelációk. 1. Descartes-szorzat. 2. Relációk
Relációk Descartes-szorzat. Relációk szorzata, inverze. Relációk tulajdonságai. Ekvivalenciareláció, osztályozás. Részbenrendezés, Hasse-diagram. 1. Descartes-szorzat 1. Deníció. Tetsz leges két a, b objektum
RészletesebbenSmart Pointer koncepciója
Smart Pointer koncepciója ( Egyszerű Smart Pointer implementálása C++ nyelven ) Bevezetés Mik a smart pointer-ek 1? A válasz egyszerű; a smart pointer-ek olyan mutatók amik okosak. Mit is jelent ez pontosan?
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é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észletesebben22. GRÁFOK ÁBRÁZOLÁSA
22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is
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észletesebbenA C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
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észletesebbenProgramozás alapjai. 10. előadás
10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:
RészletesebbenAdatszerkezetek Tömb, sor, verem. Dr. Iványi Péter
Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot
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észletesebbenRelációk. 1. Descartes-szorzat
Relációk Descartes-szorzat. Relációk szorzata, inverze. Relációk tulajdonságai. Ekvivalenciareláció, osztályozás. Részbenrendezés, Hasse-diagram.. Descartes-szorzat A kurzuson már megtanultuk mik a halmazok
RészletesebbenHOGYAN TOVÁBB, LÖVÉSZEK?
dr. Erdélyi Sándor alezredes 1 HOGYAN TOVÁBB, LÖVÉSZEK? Mottó: Azt a pénzt, amit a tüzérség rovására megtakarítunk, háború esetén gyalogságunk vérével fogjuk megfizetni. 2 Cikkem címével arra szeretném
RészletesebbenProgramozási technológia
Programozási technológia Generikus osztályok Gyűjtemények Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Generikus osztályok Javaban az UML paraméteres osztályainak a generikus (sablon) osztályok felelnek
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 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 alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 15. Leghosszabb 3D vektorok kikeresése 1 #i n c l u d e 2 #i n c l u d e 3 #d e f i n e MAX 1000
Részletesebben1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció
1. Öröklés Az objektum orientált tervezés fontos sarkköve, az osztályok viszonyainak a megtervezése. 1.1. Rétegelés c l a s s Address {..... c l a s s Name {..... c l a s s P e r s o n { Name name ; Address
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é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észletesebbenA C programozási nyelv V. Struktúra Dinamikus memóriakezelés
A C programozási nyelv V. Struktúra Dinamikus memóriakezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 1 A struktúra deklarációja 1.
RészletesebbenEnterprise JavaBeans 1.4 platform (EJB 2.0)
Enterprise JavaBeans 1.4 platform (EJB 2.0) Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11.13. Az Enterprise JavaBeans Az Enterprise Javabeans Az Enterprise JavaBeans
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észletesebbenJava tutorial. Csomagok. A program tagolasa. Alrendszerek kialakıtasa. Csomag. Alrendszerek kialakıtasa
Csomagok A program tagolasa í Tıpusdefinıcio k (oszta lyok, interfe szek) í Meto dusok í Blokk utasıta sok í Csomagok í Bea gyazott oszta lyok Csomag í A tıpusainkat csomagokba soroljuk í O sszetartoza
RészletesebbenSzövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string
Részletesebben5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E
5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus
Részletesebben1000.AA Megoldo Alfréd 1000.A
Programozás alapjai 2. (inf.) 2. PZH 2018.05.22. hiányzás:0+3 L4-R4P ZH: 27,5+26 ABCDEF IB.028/100. Sum:0 e:19 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de
RészletesebbenProgramozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010
Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 Előadás tematika 1. Pascal ismétlés, kiegészítések 2. Objektum orientált programozás (OOP) 3. Delphi környezet 4. Komponensek bemutatása
RészletesebbenAdatbázisok. 4. gyakorlat. Adatmodellezés: E-K modellb l relációs adatbázisséma. Kötelez programok kiválasztása szeptember 24.
Adatbázisok 4. gyakorlat Adatmodellezés: E-K modellb l relációs adatbázisséma. Kötelez programok kiválasztása 2014. szeptember 24. 2014. szeptember 24. Adatbázisok 1 / 20 Az adatbázisok szolgáltatásai
RészletesebbenProgramozás III. - NGB_IN001_3
Programozás III. - az objektumorientált programozásba Varjasi Norbert Széchenyi István Egyetem Informatika Tanszék Programozás III. - 1. el adás institution-log Tartalom 1 El adások és gyakorlatok Zárthelyi
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért
Részletesebben