Objektum-orientált programozás
|
|
- Jakab Takács
- 8 évvel ezelőtt
- Látták:
Átírás
1 Objektum-orientált programozás A programozás történetének során folyamatosan alakultak ki szabályok, amelyek célja a programkód átláthatósága, hibalehetőségek kizárása, alkalmazások közös fejlesztésének megkönnyítése és a már megírt kódrészletek újra felhasználása. Ilyen meggondolásból először strukturálttá tették a programkódot: az alaputasításokat kizárólag szekvenciálisan sorolhatjuk (lineárisan egymásután), elágazásokba (if, switch) és ismétlésekbe foglalhatjuk. Azelőtt lehetséges volt ugrálni a programsorok között. A fejlődés másik lépése az alfeladatokra való lebontás, alprogramok, modulok használata. Az alprogramokra bontott programot, már többen tudják fejleszteni és könnyebben javítható, hiszen a hiba egyszerűbben lokalizálható. irányzat. Az objektum-orientáltság egy újabb szint ebben a fejlődésben, ez az uralkodó programozási Az objektum-orientált programozás lehetővé teszi az adatok és a hozzá tartozó műveletek összezárását. Az objektum tervezője és fejlesztője kontrollálhatja az adatokhoz való hozzáférést. Az objektumok megértését elősegítheti a már használt C++ objektumok működésének elemzése. Ilyen objektumok (osztályok) a string, a queue és a stack. Az objektum-orientáltság string s; //a string az osztály, az s az objektum osztályok (class) írását jelenti. s="almafa"; //a string osztályban fölül van írva (értelmezve van) az Objektumnak az osztály egy példányát nevezzük. Pl: a string osztályt használhatjuk, ha karakterláncot szeretnénk tárolni. értékadás operátor, ezért használhatjuk az s esetén cout<<s; //a string osztályban fölül van írva a << operátor is for (int i=0;i<s.length();i++) s[i]=s[i]+1; //a string osztályban fölül van írva a [] operátor is, ezért indexelhetjük cout<<s; Az objektumokkal kapcsolatos fogalmakat a tört adatszerkezet (osztály) fokozatos felépítésével vegyük sorra. A megírt tört osztályt a stringhez hasonlóan, bármilyen törttel kapcsolatos feladat megoldása során használhatjuk. 1
2 A tört osztály 1. Adattagok - az osztályoknak (hasonlóan a struktúrához) adattagjaik vannak, amelyek lehetnek kifele látható (módosítható, lekérdezhető) vagy éppen láthatatlanok. Azért, hogy megvalósuljon az adatok védettsége nem tanácsos láthatóvá tenni őket. A tagokhoz csatolhatjuk a következő kulcsszavakat: a private (rejtett) ez az alapértelmezett érték. Az adattagot csak a metódusok és a friend alprogramok módosíthatják. a public (nyilvános) ez nem javasolt, mert bárki módosíthatja az értéküket. a protected (védett) hasonló a private-hoz, de az öröklődés során előállított leszármazott osztályokban is módosíthatóak. //ugyanúgy lehetne használni, mint a struct mezőit, ha nem lenne private, így nem matathatunk hozzájuk //előjel nélküli egész szám elég a számlálónak az előjel ; 2. Metódusok (setter, getter) alprogramok, amelyek az adattagokra vonatkoznak műveletek, amelyeket velük elvégezhetünk. Gyakori metódus típusok az adattagok értékeit lekérő és módosító (setter, getter) metódusok. Lehetővé teszik az ellenőrzött hozzáférést az adattagokhoz. //ezek nyilvános metódusok //a Get-esek visszatérítik egy-egy mező értékét int GetSzamlalo() { return szamlalo; unsigned int GetNevezo() { return nevezo; //a Set-eseknél ellenőrizhetjük, hogy a nevező ne legyen 0 void SetSzamlalo(int sz) { szamlalo=sz; void SetNevezo(unsigned int n) { if (n!=0) nevezo=n; ; 2
3 tort t; //a t egy tort objektum t.setnevezo(5); //a nevező és a számláló kissé bonyolult beállítása t.setszamlalo(4); cout<<t.getszamlalo()<<"/"<<t.getnevezo(); //a kiírás 3. Metódusok (konstruktorok) speciális metódus(ok), amelyek automatikusan meghívódnak az objektumok létrehozásakor: nevük az osztály nevével kell azonos legyen több is lehet, amennyiben más-más paraméterezéssel rendelkeznek visszatérített értéket nem kell megadni void-ot sem Ha a tort-höz adunk konstruktort, a Set-es alprogramokat esetleg módosításra maradhatna //konstruktor mivel a paramétereknek kezdőértéket adtam meghívható több módon is ha nincs változó a paraméter helyén, az alapértelmezett értéket adja át tort(int sz=0, unsigned int n=1) { szamlalo=sz; if (n!=0) nevezo=n; else nevezo=1; int GetSzamlalo() {return szamlalo; unsigned int GetNevezo(){return nevezo; ; int main(){ tort t, t1(5), t2(5, 4); //a t esetén nincs paraméter, ezért 0/1 lesz cout<<t.getszamlalo()<<"/"<<t.getnevezo()<<endl; //a t1 esetén csak az első paraméter kap más értéket, a második marad 1: 5/1 cout<<t1.getszamlalo()<<"/"<<t1.getnevezo()<<endl; //a t2-re kiírt érték: 5/4 cout<<t2.getszamlalo()<<"/"<<t2.getnevezo(); 3
4 4. Metódusok (az osztályon kívül) a gyakorlatban nem az osztályon belül szoktuk kifejteni a metódusok kódját. Az osztályon kívüli alprogramokat normális alprogramként kezeli a környezet, az inline függvényeket behelyettesíti a kódba, nem javasolt túl sok kódot így hagyni. Az alprogramok használatának épp az lenne az egyik lényege, hogy ne ismétlődjenek a kódok. tort(int sz=0, unsigned int n=1); //ha csak a kiírásra használnánk a get-es metódusokat, akár egy kiír-t is írhatunk. void Kiir(); ; //metódusok kifejtése az osztályon kívül tort::tort(int sz, unsigned int n) { szamlalo=sz; if (n!=0) nevezo=n; else nevezo=1; void tort::kiir(){ cout<<szamlalo<<" / "<<nevezo; ; tort t, t1(5), t2(5, 4); //az előző kiírást helyettesíthetjük a kiír metódussal t.kiir(); cout<<endl; t1.kiir(); cout<<endl; t2.kiir(); cout<<endl; 5. Metódusok (private) nem minden metódus nyilvános. Például, ha egyszerűsíteni szeretném időnként a törtet, ezt nem szükséges az osztályom felhasználójának is megengedjem. Egyszerűsíthetek a tört létrehozásakor, illetve ha valamilyen műveletet végzek vele. 4
5 tort(int sz=0, unsigned int n=1); void Kiir(); //csak az osztályon belül használható metódus void Egyszerusit(); ; tort::tort(int sz, unsigned int n) { szamlalo=sz; if (n!=0) nevezo=n; else nevezo=1; Egyszerusit(); //egyszerűsíthetem létrehozáskor void tort::kiir(){ cout<<szamlalo<<" / "<<nevezo; ; void tort::egyszerusit() { int a, b, r; a=szamlalo; b=nevezo; while (b){ r=a%b; a=b; b=r; szamlalo/=a; nevezo/=a; tort t2(5, 40); t2.kiir();cout<<endl; 6. Metódusok (túlterhelés) - ugyanolyan névvel több metódust is írhatunk. A feladatuk azonos, csak más kell legyen a paraméterezés. tort(int sz=0, unsigned int n=1); //a Kiir alprogram két változata következik, az újabb egy karakterláncot is kap, amit szintén kiír. void Kiir(); void Kiir(string sz); ; 5
6 tort::tort(int sz, unsigned int n) { szamlalo=sz; if (n!=0) nevezo=n; else nevezo=1; void tort::kiir(){ cout<<szamlalo<<" / "<<nevezo; ; void tort::kiir(string sz){ cout<<sz<<" "<<szamlalo<<" / "<<nevezo; ; tort t, t1(5, 40); t.kiir("elso tort");cout<<endl; t1.kiir();cout<<endl; 7. Metódusok ( kettős operátor túlterhelés) - a törtekhez értelmezhetjük a klasszikus C++ operátorok bármelyikét, azaz megadhatjuk, hogy mit értünk az alatt, hogy tört + tört vagy éppen tört * tört. Az értékadást az ilyen típusú objektumokra megy automatikusan a fenti alprogramok esetén ki lehet próbálni. Dinamikusan tárolt elemek esetén lehet gond és szükséges az értékadás felülírása. int main(){ tort t, t1(5, 40); t=t1; //a t tort 0/1, a t1 5/40 az értékadás következtében a t is 5/40 kell legyen t1.setszamlalo(11); //hogy leteszteljük, hogy a címét erőltette a t1 a t-re, vagy a mezők értékei lettek átmásolva lecseréltem a t1 számlálóját. Külön változnak, tehát nem közös a címük, a művelet sikerült. t.kiir("elso tort");cout<<endl; t1.kiir();cout<<endl; Az összeadás viszont már nem működik, tehát ha használni akarjuk, meg kell írni. Többféleképpen megoldható ez is. Kiegészíthető egyszerűsítéssel, a rend kedvéért és természetesen egyéb műveleteket is érdemes megírni. A példák tehát: 6
7 tort(int sz=0, unsigned int n=1); //ha egy tört után teszünk + jelet ez a metódus hívódik meg paraméter lesz, amit hozzá akarunk adni ez a t. Eredményként ennek a két törtnek az összege kerül visszatérítésre. tort operator+(tort& t); void Kiir(); ; tort tort::operator+(tort& t){ //a paraméterre hivatkozást adunk át. Így az eredeti objektummal dolgozunk, nem egy másolatával. Működik referencia nélkül is. tort eredm; //az eredm egy ideiglenes objektum, amely mezőinek értéke az értékadás révén az eredmény törtbe másolódnak. eredm.szamlalo=t.nevezo*szamlalo+t.szamlalo*nevezo; eredm.nevezo=nevezo*t.nevezo; return eredm; tort::tort(int sz, unsigned int n) { szamlalo=sz; if (n!=0) nevezo=n; else nevezo=1; void tort::kiir(){ cout<<szamlalo<<"/"<<nevezo; ; tort t, t2(1,2), t1(3, 2); t=t1+t2; t.kiir();cout<<" = ";t1.kiir();cout<<" + ";t2.kiir(); Igazán szép az lenne, ha a fejléc így nézne ki: const tort operator+(const tort& t) const 7
8 A const a konstansra értékét nem változtató adatra utal. Az eredmény const-ja miatt a t1+t2=t formájú utasításra hibát ad a környezet, mert az eredményként létrehozott ideiglenes törtet nem engedi változtatni, ezért nem is szerepelhet értékadás bal oldalán. A paraméter const-ja biztosítja, hogy bár a törtet, amit hozzáadunk az aktuális objektumhoz hivatkozással adtuk át, nem fogjuk az alprogramban véletlenül sem megváltoztatni. A harmadik const az aktuális objektumra vonatkozik, amelyet szintén nem indokolt változtatni. 8. Metódusok (friend függvény) - a kiírás alprogram helyettesíthető a << operátorral, nem is beszélve, hogy elegánsabb is. A << operátor végül nem a törtre, hanem valamilyen stream objektumra, ezért hiába akarjuk törtre fölülírni. Viszont használhatunk friend függvényt. Ezeket az alprogramokat az objektumon belül értelmezzük, de nem alkalmazhatjuk rájuk a private, protected kulcsszavakat. Az osztály barát alprogramja hozzáférhet az adott osztály egyébként rejtett mezőihez. tort(int sz=0, unsigned int n=1); //a friend kulcsszó jelzi a barátalprogramot //a törtet amit a << jel után teszünk paraméter lesz //azért kell visszatérített értéket adni, hogy láncolni lehessen a kiírást friend ostream & operator<<(ostream & ki, tort & t); ; //ide már nem kell friend ostream& operator<<(ostream &ki, tort& t){ //ki az ostreamre a hivatkozás képernyőre és állományra is mehet. ki<<t.szamlalo<<"/"<<t.nevezo; return ki; tort::tort(int sz, unsigned int n) { szamlalo=sz; if (n!=0) nevezo=n; else nevezo=1; 8
9 tort t(1,2); //mostmár nem kell a kiir cout<<t; 9. Metódusok (destruktor) Destruktor a konstruktor párja, akkor hívódik meg, amikor az objektum felszámolódik. A törthöz erre nincs szükség, a dinamikusan lefoglalt helyeket kell az objektum felszámolása esetén szabályosan felszabadítani. Ha megírnánk valahogy ilyen formája kellene legyen: ~tort(){cout<<"felszamolva!!!!"; 10. Hibakezelés (Hibák dobálása ) Programjaink futtatása közben felmerülhetnek olyan problémák, amelyek meghiúsítják az alprogram/program helyes végrehajtását, de amelyekre valamilyen formában reagálni kell. Az alprogram return-nal vagy paraméterként visszatéríthet számértékeket, amelyek alapján az alprogramot meghívó programozó eldöntheti mit kezd a hibával. Pl: a string osztálynak van egy find nevű metódusa, amely visszatéríti, hogy egy másik string hol van az alapstringen belül. Persze előfordulhat, hogy nincs meg benne. Ebben az esetben a visszatérített érték a string hosszának a lehető legnagyobb értéke. Ebből lehet kisütni, hogy nincs eredmény. string s="almafa"; if (s.find("bu")>s.length()) cout<<"nincs benne."; else cout<<"benne van."; Egy másik lehetőség a hiba feldobása, amelyet gyakran használnak objektum-orientált környezetben. Például a törtek esetén, ha 0 nevezőt adnak meg, lehet önkényesen helyettesíteni más értékkel, mint ahogy a fenti példákban vagy pedig jelezhetünk hibát. Ilyenkor az osztály leírásában nyilván meg kell adni, hogy miként reagál a konstruktor erre az esetre. Baj lehet akkor is, ha állományból olvasunk és nem létezik stb. Ez esetben nem igazán lehet a programot folytatni. tort(int sz=0, int n=1); friend ostream & operator<<(ostream & ki, tort & t); ; 9
10 ostream& operator<<(ostream &ki, tort& t){ ki<<t.szamlalo<<"/"<<t.nevezo; return ki; tort::tort(int sz, int n) { szamlalo=sz; if (n>0) nevezo=n; else if (n==0) throw(1); else throw(2); //átírtam a konstruktort, hogy ha 0 a nevező dobjon egy egyest, ha negatív (átírtam az n-et int-re) dob egy kettest. Lehet hibaüzenetet is. try{ tort t(1,-1); //ezek után, ha értelmezni akarok rossz törtet leáll a program, ennek elkerülésére jön a try catch... cout<<t; //a try-ba írom a problémás utasítást catch (const int val){ //a catch-be azt, hogy mit kezdjen, ha hiba lép fel if (val==1) cout<<"nincs tort! 0 a nevezo!"; if (val==2) cout<<"nem hozhattam letre a tortet! negativ nevezo"; vagy másképp a főprogram: int x, y; tort t; cin>>x>>y; try{ tort t1(x,y); t=t1; catch (const int val){ if (val==1) {tort t1(x,1); t=t1; if (val==2) {tort t1(x,-y); t=t1; 10
11 cout<<t; Gyakorlatok: 1. Írd meg kiegészítve a tort osztályt (alapműveletek, egyszerűsítés), majd írj egy programot, amely felhasználva az osztályt a következő opciókat kínál fel: a) művelet két törttel: összeadás kivonás szorzás osztás b) művelet egy törteket tartalmazó állományra: összeadás kiírás képernyőre 2. Írj egy nagyszámokat leíró osztályt. Nagyszám, ami már nem tárolható egy számként, hanem szükséges számjegyenként tárolni (Pl: tömbben). Írj programot, amely az osztályt felhasználva megvalósít egy nagyszámokkal foglalkozó számológépet. Bibliográfia: Emanuela Cerchez, Marinel Serban: Programarea în limbajul C/C++, vol. 4 11
Osztályok. 4. gyakorlat
Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum
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++ 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é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é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é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észletesebbenBevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 3. előadás Biztonságos adattípusok megvalósítása 2014.02.24. Giachetta Roberto groberto@inf.elte.hu
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észletesebbenBevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása. Biztonságos adattípusok megvalósítása
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 3. előadás Biztonságos adattípusok megvalósítása 2014.02.24. Giachetta Roberto groberto@inf.elte.hu
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é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é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é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é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észletesebbenBevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok
Bevezetés a programozásba II 5. Előadás: Másoló konstruktor, túlterhelés, operátorok Emlékeztető struct Vektor { int meret, *mut; Vektor(int meret); int szamlal(int mit); }; int Vektor::szamlal(int mit)
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é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é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észletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát
RészletesebbenProgramozá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é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ás II gyakorlat. 8. Operátor túlterhelés
Programozás II gyakorlat 8. Operátor túlterhelés Kezdő feladat Írjunk egy Vector osztályt, amely n db double értéket tárol. A konstruktor kapja meg az elemek számát. Írj egy set(int idx, double v) függvényt,
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é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é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é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 BMEKOKAA146. Dr. Bécsi Tamás 5. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 5. előadás Tömbök átméretezése public static void Resize( ref T[] array, int newsize ) Példa: int[] a=new int[20]; Array.Resize(ref a, 22); 2016. 10. 19.
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észletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
RészletesebbenA szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok
A szemantikus elemzés helye Forrásprogram Forrás-kezelő (source handler) Lexikális elemző (scanner) A szemantikus elemzés feladatai Fordítóprogramok előadás (A, C, T szakirány) Szintaktikus elemző (parser)
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á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é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é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é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észletesebben1. Alapok. Programozás II
1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph
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á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észletesebben1. Bevezetés A C++ nem objektumorientált újdonságai 3
Előszó xiii 1. Bevezetés 1 2. A C++ nem objektumorientált újdonságai 3 2.1. A C és a C++ nyelv 3 2.1.1. Függvényparaméterek és visszatérési érték 3 2.1.2. A main függvény 4 2.1.3. A bool típus 4 2.1.4.
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é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észletesebbenObjektumok inicializálása
Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú
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é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é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é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á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é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é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é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észletesebbenBevezetés a programozásba Előadás: A const
Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout
RészletesebbenProgramozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
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é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é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észletesebbenBevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 2. előadás Adattípusok megvalósítása egységbe zárással 2014.02.17. Giachetta Roberto groberto@inf.elte.hu
RészletesebbenAz osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java
Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:
RészletesebbenProgramozás módszertan
Programozás módszertan p. Programozás módszertan Operátorok túlterhelése a C++ nyelvben Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA TANSZÉK Bevezetés Programozá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észletesebbenSzámítógép és programozás 2
Számítógép és programozás 2 10. Előadás Öröklődés http://digitus.itk.ppke.hu/~flugi/ Tagfüggvény struct Particle { int x,y; unsigned char r,g,b; void rajzol() { gout
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észletesebbenJava IX. telkezelés a Java-ban
Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes
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é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é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észletesebbenC programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
RészletesebbenProgramozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 7. előadás AZ OOP alapelvei Egységbezárás(Encapsulation) Az adatokat es a hozzájuk tartozó eljárásokat egyetlen egységben (osztályban) kezeljük. Az osztály adatmezői
RészletesebbenProgramozás I. Első ZH segédlet
Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett
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észletesebbenTömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása
Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző
RészletesebbenJava IX. telkezelés a Java-ban
Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes
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é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é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é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é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é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é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é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é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észletesebbenSzoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
RészletesebbenObjektumorientált szoftverfejlesztés alapjai
Objektumorientált szoftverfejlesztés alapjai Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben @Katona József Kővári Attila Lektorálta: Dr. Fauszt Tibor DOI:
RészletesebbenKivételkezelés a C++ nyelvben Bevezetés
Kivételkezelés a C++ nyelvben Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Kivételkezelés a C++ nyelvben CPP9 / 1 Hagyományos hibakezelés Függvény visszatérési értéke (paramétere) hátrányai:
RészletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelık Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát
RészletesebbenInformatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
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é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 C++ -ban
8. Dinamikus objektumok Programozás C++ -ban Ahhoz hogy általános prolémákat is meg tudjunk oldani, szükség van arra, hogy dinamikusan hozhassunk létre vagy szüntethessünk meg objektumokat. A C programozási
RészletesebbenProgramozás C++ -ban
Programozás C++ -ban 6. Konstansok A C nyelvben konstansokat makróval is deklarálhatunk. Ebben az esetben mindenhol ahol a makró előfordul a fordító a definiált értéket behelyettesíti a makró helyére.
RészletesebbenApple Swift kurzus 3. gyakorlat
Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()
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é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észletesebbenProgramozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek Szeberényi Imre BME IIT M Ű E G Y T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2011.03.01. -1-
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é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é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é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észletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális
Ré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észletesebben