Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Bánsághi Anna 2014 Bánsághi Anna 1 of 68"

Átírás

1 IMPERATÍV PROGRAMOZÁS Bánsághi Anna 8. ELŐADÁS - OBJEKTUMOK, OSZTÁLYOK 2014 Bánsághi Anna 1 of 68

2 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív paradigma Procedurális paradigma Generikus paradigma III. STRUKTÚRÁLT PROGRAMOZÁS Objektumorientált paradigma Moduláris paradigma 2014 Bánsághi Anna 2 of 68

3 III. STRUKTÚRÁLT PROGRAMOZÁS OBJEKTUMORIENTÁLT PARADIGMA 1. Absztrakt adattípus 2. Objektumok, osztályok Objektumorientált alapok Osztályok, objektumok Egységbezárás Nyílt rekurzió Névterek 3. OOP tervezés 4. Öröklődés 5. Adatszerkezetek megvalósítása 2014 Bánsághi Anna 3 of 68

4 1. OBJEKTUMORIENTÁLT ALAPOK FELVEZETŐ FELADAT Számítsuk ki egy téglalap, egy négyzet és egy kör kerületét és területét nem vezethető vissza semmilyen programozási tételre helyette használjuk az adatabsztrakciót, azaz térjünk át rögtön a lehetséges típusok keresésére típusértékek ~ főnevek ~ téglalap, négyzet, kör műveletek ~ igék ~ kerületszámítás, területszámítás 2014 Bánsághi Anna 4 of 68

5 TÍPUSOK - ELSŐ KÖZELÍTÉS Három típusunk lesz: Téglalap, Négyzet, Kör értékhalmaz { téglalapok művelethalmaz { Kerület, Terület értékhalmaz { négyzetek művelethalmaz { Kerület, Terület értékhalmaz { körök művelethalmaz { Kerület, Terület 2014 Bánsághi Anna 5 of 68

6 EGY LEHETSÉGES ÁBRÁZOLÁS struct Téglalap {..., double Kerulet(), double Terulet() struct Négyzet {..., double Kerulet(), double Terulet() struct Kör {..., double Kerulet(), double Terulet() érezzük, hogy a típusok hasonlítanak egymásra, jobb lenne együttesen kezelni őket 2014 Bánsághi Anna 6 of 68

7 A FELADAT ÁLTALÁNOSÍTÁSA Számítsuk ki különféle síkidomok kerületét és területét típusértékek ~ főnevek ~ síkidomok műveletek ~ igék ~ kerületszámítás, területszámítás a típusértékhalmaz általánosítása jó lépésnek tűnik, benne van a lehetőség egy későbbi bővítésre is (háromszögek,...) 2014 Bánsághi Anna 7 of 68

8 TÍPUSOK - MÁSODIK KÖZELÍTÉS Egyetlen típusunk lesz: Síkidom értékhalmaz { síkidomok művelethalmaz { Kerület, Terület EGY LEHETSÉGES ÁBRÁZOLÁS struct Síkidom {..., double Kerulet(), double Terulet()... var síkidomok = new List<Síkidom> elveszett az információ, hogy éppen milyen síkidomról van szó, melyik képletet kell alkalmazni 2014 Bánsághi Anna 8 of 68

9 ALTÍPUSOS POLIMORFIZMUS szükségünk van egy olyan nyelvi eszközre, amellyel egy típusértéket (pl. téglalap) több típushoz tartozónak tekinthetünk, hol a speciálisabb típusa (Téglalap), hol az általánosabb típusa (Síkidom) jut érvényre, a programkörnyezettől függően téglalap Téglalap téglalap Síkidom a típusértékek többalakúak, több típushoz is tartozhatnak 2014 Bánsághi Anna 9 of 68

10 SÍKIDOMOK OSZTÁLYOZÁSA egy lehetséges típushierarchia a síkidomok tulajdonságai alapján minden leszármazott tartalmazza az őt befoglaló jellemzőit minden leszármazott specializáltabb, mint az őt befoglaló 2014 Bánsághi Anna 10 of 68

11 ÖRÖKLŐDÉS szükségünk van egy olyan nyelvi eszközre, amellyel ki tudjuk fejezni a típushierarchiát a típusok közötti altípusképzési műveletet öröklődésnek nevezzük téglalap Téglalap Síkidom az altípus örökli az őstípus összes jellemzőjét és műveletét 2014 Bánsághi Anna 11 of 68

12 ÖRÖKLŐDÉSI HIERARCHIA 2014 Bánsághi Anna 12 of 68

13 TÍPUSÉRTÉKEK BELSŐ ADATAI a típusértékek egyedi jellemzőkkel bírnak egy Téglalap típusú síkidomot a szomszédos oldalainak hossza jellemez egy Kör típusú síkidomot a sugarának hossza jellemez szükségünk van egy olyan nyelvi eszközre, mely biztosítja, hogy a típusértékek belső adataihoz (a mezők értékeihez) csak az adott típus műveletein keresztül lehessen hozzáférni 2014 Bánsághi Anna 13 of 68

14 EGYSÉGBEZÁRÁS ÉS NYÍLT REKURZIÓ a típusértékek adatait és az ezen adatokon végrehajtott műveleteket egyetlen egységként kezeljük a belső adatok és a műveletek ábrázolásának elrejtésével biztosítható, hogy a külvilág ne férjen hozzá egy típusérték belső adataihoz egy téglalap Téglalap objektum tudni fogja, hogy mekkorák az oldalai, viszont a külvilág csak a kerületét és a területét kérdezheti le, hiszen ezek a megengedett típusműveletek 2014 Bánsághi Anna 14 of 68

15 OBJEKTUMORIENTÁLTSÁG TÉNYEZŐI absztrakció az objektum reprezentációs szintjének megválasztása egységbezárás az adatok és alprogramok egységbe zárása, a belső működés elrejtése nyílt rekurzió az objektum mindig látja saját magát, eléri műveleteit és adatait öröklődés az objektum tulajdonságainak átruházása más objektumokra polimorfizmus és dinamikus kötés történő működéshez kötése a műveletek futási időben 2014 Bánsághi Anna 15 of 68

16 A STRUCT ÉS A CLASS NYELVI SZERKEZETEK a struct egyszerű adatszerkezetek megvalósítására szolgál, az objektumok általában változatlanok maradnak a létrehozás után a class komplex adatszerkezetek megvalósítására szolgál, az objektumok általában megváltoznak a program futása során 2014 Bánsághi Anna 16 of 68

17 struct KÜLÖNBSÉGEK ÉS HASONLÓSÁGOK class értéktípus egységbezárás referencia típus öröklődés altípusos polimorfizmus egységbezárás felüldefiniálható a paraméter nélküli konstruktor 2014 Bánsághi Anna 17 of 68

18 2. OSZTÁLYOK, OBJEKTUMOK az objektumelvű paradigma a feladatot együttműködő, egymással kommunikáló objektumokkal modellezi az adattípusok megvalósításának célja, hogy az összetett szerkezetű adatok is jól, könnyen kezelhetővé váljanak ha csak egy programon használnánk az új adattípust, akkor nem feltétlenül térülne meg a befektetett energia, ezért a típusok újrafelhasználhatóságára törekszünk 2014 Bánsághi Anna 18 of 68

19 osztály OBJEKTUMORIENTÁLT FOGALMAK ~ típus objektumok tagok objektum állapota ~ ~ ~ típusértékek típusérték adatai és műveletei típusérték belső adatainak értéke 2014 Bánsághi Anna 19 of 68

20 PROGRAM VÉGREHAJTÁSA 2014 Bánsághi Anna 20 of 68

21 OBJEKTUMORIENTÁLT PROGRAM program, melyet egymással kommunikáló objektumok összessége alkot minden adat egy objektumhoz tartozik, és minden algoritmus egy objektumhoz rendelt tevékenység, nincsenek globális adatok vagy globális algoritmusok a program így kellő tagoltságot kap az objektumok mentén az adatok élettartama így összekapcsolható az objektum élettartamával a módosítások általában az objektum belsejében véghezvihetők, ami nem befolyásolja a többi objektumot, így nem szükséges jelentősen átalakítani a programot 2014 Bánsághi Anna 21 of 68

22 AZ OBJEKTUM egy rendszer egyedileg azonosítható szereplője, amelyet belső struktúrájával, aktuális állapotával és a külvilág felé mutatott viselkedésével jellemezhetünk reagál a neki küldött üzenetekre, azaz megváltoztatja az állapotát, elvégez valamilyen műveletet, információt ad a külvilágnak, üzenetet küld más objektumoknak információt tárol és kérésre feladatot hajt végre, tehát az objektum adatok és műveletek összessége 2014 Bánsághi Anna 22 of 68

23 OBJEKTUMOK ÁLLAPOTA az objektum állapotát mezőértékeinek összessége adja két objektum állapota ugyanaz, ha értékeik megegyeznek (ettől függetlenül az objektumok különböznek) az objektum állapota valamilyen esemény (műveletvégzés, kommunikáció) hatására változhat meg a teljes program állapotát a benne lévő objektumok összállapota adja meg 2014 Bánsághi Anna 23 of 68

24 OBJEKTUMOK TULAJDONSÁGAI egyedi azonosító aktuális állapot (mezők aktuális értéke) a metódusok listája 2014 Bánsághi Anna 24 of 68

25 OBJEKTUMOK DINAMIKUS VISELKEDÉSE objektumokat érő hatások és azok sorrendje a metódusok végrehajtásának ütemezése állapotváltozások folyamata 2014 Bánsághi Anna 25 of 68

26 AZ OSZTÁLY az objektumok viselkedési mintáját tartalmazza, az osztályból példányosíthatjuk az objektumokat az osztály az objektum típusa az osztályban tárolt adatokat konstansoknak, mezőknek, tulajdonságoknak nevezzük az osztály által elvégezhető műveletek a konstruktorok, destruktorok, metódusok, operátorok az osztály adatait és műveleteit együttesen tagoknak nevezzük a tagok láthatósága szabályozható, a kívülről látható rész az interfész, a kívülről nem látható rész az implementáció a műveletek megvalósítása az implementáció része, tehát más osztályok számára a működés mindig ismeretlen 2014 Bánsághi Anna 26 of 68

27 AZ OSZTÁLY ugyanazon tagokkal rendelkező objektumok típusa minden objektum valamilyen osztály egy példánya 2014 Bánsághi Anna 27 of 68

28 OBJEKTUMOK ÉLETTARTAMA létrejön él megszűnik memóriafoglalás mezők inicializálása állapotváltozások üzenetküldések rendrakás memóriafelszabadítás futási idejű környezet konstruktor new saját metódusok végrehajtása más objektumokon metódushívások szemétgyűjtő/destruktor delete, ~ futási idejű környezet 2014 Bánsághi Anna 28 of 68

29 LÉTREJÖN PÉLDÁNYOSÍTÁSSAL NEW 2014 Bánsághi Anna 29 of 68

30 KONSTRUKTOROK minden osztály rendelkezik legalább egy, paraméter nélküli konstrukciós művelettel a művelet neve megegyezik az osztály nevével beállítja az új objektum kezdőállapotát class OsztalyNev {... OsztalyNev objektum = new OsztalyNev(); // a két értékeadás ekvivalens int i = 0; int i = new int(); 2014 Bánsághi Anna 30 of 68

31 MEGSEMMISÜL DESTRUKTORRAL VAGY AU TOMATIKUSAN public class Pont {... public class Gomb {... public class Urteleszkop { public static void Main() { Gomb gomb = new Gomb( new Pont(0,0,0), 10 ); // létrejön a gömb Pont pont1 = new Pont(12, 1, 3); Pont pont2 = new Pont(3, 4, 5); Pont pont3 = new Pont(2, 2, 3); // létrejön a pont1 objektum // létrejön a pont2 objektum // létrejön a pont3 objektum // Mi történik az objektumokkal a végrehajtásnak ezen a pontján? 2014 Bánsághi Anna 31 of 68

32 A GÖMB OBJEKTUM A MEMÓRIÁBAN blokkon belül elérhető a gömb nevű referencián keresztül blokkon kívül elérhetetlen, nincs rá érvényes referencia PROBLÉMA, HOGY OTT MARAD SZEMÉTKÉNT A MEMÓRIÁBAN 2014 Bánsághi Anna 32 of 68

33 DESTRUKTOR minden osztály rendelkezik egyetlen destrukciós művelettel az objektum megszűnésekor automatikusan hívódik meg csak egyetlen, paraméter nélküli destruktor létezhet class OsztalyNev { ~OsztalyNev() { Bánsághi Anna 33 of 68

34 FUTÁSI IDEJŰ KÖRNYEZET VIRTUÁLIS GÉP az OO programok végrehajtását menedzselő környezet FELADATAI forráskód fordítása a számítógép által végrehajtható kóddá dinamikus és hatékony memóriagazdálkodás típusellenőrzés, futási idejű típuskonverzió automatikus szemétgyűjtés kivételkezelés szálkezelés 2014 Bánsághi Anna 34 of 68

35 OBJEKTUMOK MEGSEMMISÍTÉSE a lefoglalt memóriarekeszeket előbb-utóbb fel kell szabadítani AUTOMATIKUS SZEMÉTGYŰJTÉS a hivatkozás nélküli objektumokat (nincs rájuk mutató vagy érvényes referencia) a környezet automatikusan, nemdeterminisztikus időközönként felszabadítja PROGRAMOZÓ ÁLTALI MEMÓRIA FELSZABADÍTÁS explicite is kezdeményezhető a szemétgyűjtés objektumok megszüntetése destruktorokkal 2014 Bánsághi Anna 35 of 68

36 3. EGYSÉGBEZÁRÁS rekord / osztály belsejében a mezők mellett definiálhatunk műveleteket, melyek közvetlenül az adott típusú változóhoz fognak kötődni amikor deklarálunk egy változót, akkor a műveletek automatikusan értelmezésre kerülnek rajta a típus műveleteinek beágyazását a rekordba / osztályba nevezzük egységbezárásnak a műveleteket csak változón keresztül érhetjük el, tehát kell, hogy legyen egy példányunk a típusból, melyen meghívhatjuk az adott típusműveletet 2014 Bánsághi Anna 36 of 68

37 A TÉGLALAP TÍPUSSPECIFIKÁCIÓJA értékhalmaz R R = R 2 művelethalmaz { Téglalap : Téglalap, Téglalap : R R Téglalap, Kerület : R R R, Terület : R R R Téglalap = ( R 2, { Téglalap, Kerület, Terület ) 2014 Bánsághi Anna 37 of 68

38 TÉGLALAP OSZTÁLYDIAGRAMJA 2014 Bánsághi Anna 38 of 68

39 A TÉGLALAP MEGVALÓSÍTÁSA public class Teglalap { // mezők: public double a; public double b; // konstruktorok: public Teglalap() { a = b = 10; public Teglalap( double oldal1, double oldal2 ) { a = oldal1; b = oldal2; // metódusok: public double Kerulet() { return 2 * a + 2 * b; public double Terulet() { return a * b; 2014 Bánsághi Anna 39 of 68

40 A TÉGLALAP PÉLDÁNYOSÍTÁSA public static void Main() { // "Teglalap" típusú példányváltozó (objektum) létrehozása Teglalap teglalap = new Teglalap( 2, 3 ); // az objektumhoz kötött típusműveletek hívása az objektumon double kerulet = teglalap.kerulet(); double terulet = teglalap.terulet(); Console.WriteLine( "A {0x{1-as téglalap kerülete: {2", teglalap.a, teglalap.b, kerulet ); 2014 Bánsághi Anna 40 of 68

41 a HATÓKÖR, ÉLETTARTAM, LÁTHATÓSÁG hatókör a programnak az a része, ahol egy adott programelem (változó, objektum, alprogram, osztály) látható, elérhető, felhasználható az élettartam a program futási idejének az az intervalluma, amikor egy adott programelem elérhető, felhasználható 2014 Bánsághi Anna 41 of 68

42 HATÓKÖRÖK a teljes program egy fordítási egység egy névtér egy osztály egy alprogram egy kódblokk a hatókörök egymásba is ágyazhatók 2014 Bánsághi Anna 42 of 68

43 HATÓKÖRÖK public class C1 { static int i = 3; public static void Eljaras( int j ) { // C1.Eljaras j *=2; // Eljaras-ra lokális j public static int Fuggveny() { i = 12; if( i > 10) { int j = 4; Eljaras(j); return i; // C1.Fuggveny // C1.i // if blokkra lokális j public class C2 { public static void Main() { int i = 5; C1.Fuggveny(); // Main-re lokális i 2014 Bánsághi Anna 43 of 68

44 STATIKUS ÉLETTARTAM globális vagy névtérbeli változó, illetve statikus adattag létrejön a programegység elején megszűnik a programegység végén public class StatikusElettartam { public const string s = "konstans"; // inicializáció: s static int i; // inicializáció: i public static void Main() {... // megsemmisülés: i, s 2014 Bánsághi Anna 44 of 68

45 AUTOMATIKUS ÉLETTARTAM automatikus, névvel rendelkező programelem létrejön a deklaráció kiértékelésekor megszűnik, amikor a vezérlés elhagyja a deklaráló blokkot public class AutomatikusElettartam { static void Eljaras() { int i = 2; // initializáció: i... // megsemmisülés: i public static void Main() { Eljaras(); 2014 Bánsághi Anna 45 of 68

46 DINAMIKUS ÉLETTARTAM dinamikus objektum a szabad memóriában létrejön a new operátorral megszűnik a delete operátorral ha van ilyen public class DinamikusElettartam { public static void Main() { DateTime d = new DateTime(2010,1,18); // initializáció: d... d = null; // "megsemmisülés": d Bánsághi Anna 46 of 68

47 LÁTHATÓSÁG KEZELÉS rekord / osztály mezőit célszerű védeni a külvilágtól az egymástól függő mezők inkonzisztens állapotba hozhatják az objektumot, pl. negatív értékű oldalhossz egy Téglalap típusú objektum esetén a láthatóság szabályozásával elrejthetjük a tagokat a külvilág elől, így rejtett tagra való hivatkozás esetén fordítási hibát kapunk általában a mezőket és a segédműveleteket elrejtjük, de a konstruktorok nyilvánosak, különben nem tudnánk példányosítani 2014 Bánsághi Anna 47 of 68

48 + # - ~ public protected private internal TAGOK LÁTHATÓSÁGI KÖRE az osztályon vagy más struktúrán kívül és belül teljes mértékben hozzáférhető csakis a tartalmazó osztályon és annak leszármazottain belül látható csakis a tartalmazó osztályon belül látható, a leszármazottak sem láthatják alapértelmezett láthatóság ugyanazon fordítási egységhez tartozó fájlokban látható 2014 Bánsághi Anna 48 of 68

49 TÉGLALAP OSZTÁLYDIAGRAMJA 2014 Bánsághi Anna 49 of 68

50 A Téglalap megvalósítása hozzáférhetetlen mezőkkel public class Teglalap { // mezők: private double a; private double b; // konstruktorok: public Teglalap() {... public Teglalap( double oldal1, double oldal2 ) {... // metódusok: public double Kerulet() {... public double Terulet() { Bánsághi Anna 50 of 68

51 MEZŐK ÉS TULAJDONSÁGOK ha mégis biztosítani akarjuk a mezők nyilvános hozzáférését, akkor azt speciális tulajdonságokkal tehetjük a mezőneveket kisbetűvel kezdjük, a tulajdonságok neve megegyezik a nagybetűvel kezdődő mezőnévvel private double a; // rejtett mező public double A { // nyilvános tulajdonság get { // mező értékét lekérdező return a; set { // mező értékét beállító a = value; 2014 Bánsághi Anna 51 of 68

52 AUTOMATIKUS TULAJDONSÁGOK a fenti rejtett mező - nyilvános tulajdonság koncepció nagyban megnöveli a kód hosszát ha a tulajdonság lekérdezés vagy beállítás nem tartalmaz további logikát, akkor használhatjuk az automatikus megvalósítású tulajdonságokat public double A { get; set // nyilvános tulajdonság a C# fordítási környezet számos funkcionalitást biztosít a tulajdonságokhoz 2014 Bánsághi Anna 52 of 68

53 A TÉGLALAP MEGVALÓSÍTÁSA TULAJDONSÁGOKKAL legyenek a téglalap oldalai kívülről lekérdezhetők, de nem módosíthatók legyen a téglalapnak egy új tulajdonsága, a szín, amely kivülről is módosítható és lekérdezhető használjunk mezők helyett automatikus tulajdonságokat 2014 Bánsághi Anna 53 of 68

54 TÉGLALAP OSZTÁLYDIAGRAMJA 2014 Bánsághi Anna 54 of 68

55 TÉGLALAP OSZTÁLY public class Teglalap { // automatikus tulajdonságok: public double A { get; private set; public double B { get; private set; public string Szin { get; set; // konstruktor: public Teglalap( double a, double b, string szin ) { A = a; B = b; Szin = szin; // metódusok: public double Kerulet() { return 2 * A + 2 * B; public double Terulet() { return A * B; 2014 Bánsághi Anna 55 of 68

56 FŐPROGRAM public static void Main() { Teglalap teglalap = new Teglalap( 2, 3, "zöld" ); teglalap.szin = "piros"; // módosítható a Szin Console.WriteLine( teglalap.szin ); // lekérdezhető a Szin //teglalap.b = 13; Console.WriteLine( teglalap.b ); // fordítási hiba, nem módosítható a B oldal // lekérdezhető a B olal 2014 Bánsághi Anna 56 of 68

57 4. NYÍLT REKURZIÓ az osztálydefinícióban a műveleteken belül mindig hivatkozhatunk magára az objektumra this kulcsszóval a this egy referencia, és arra az objektumra mutat, amelyiken meghívtuk az adott műveletet műveleten kívül és statikus műveletekbe nem szabad írni segítségével hívhatók meg egymásból a konstruktorok függvény visszatérési értéke, hogyha egymás után láncolható műveleteket (fluent interface) akarunk megvalósítani 2014 Bánsághi Anna 57 of 68

58 TÉGLALAP OSZTÁLY public class Teglalap { // automatikus tulajdonságok: public double A { get; private set; public double B { get; private set; public string Szin { get; set; // konstruktor: public Teglalap( double a, double b, string szin ) { this.a = a; this.b = b; this.szin = szin; // metódusok: public double Kerulet() { return 2 * this.a + 2 * this.b; public double Terulet() { return this.a * this.b; 2014 Bánsághi Anna 58 of 68

59 KONSTRUKTOR HÍVÁSA MÁSIK KONSTRUKTORBÓL public class Teglalap { // automatikus tulajdonságok: public double A { get; private set; public double B { get; private set; public string Szin { get; set; // konstruktorok: public Teglalap() { this.a = this.b = 10; this.szin = "kék"; public Teglalap( double a, double b ) : this() { this.a = a; this.b = b; public Teglalap( double a, double b, string szin ) { this.a = a; this.b = b; this.szin = szin; 2014 Bánsághi Anna 59 of 68

60 KONSTRUKTOR HÍVÁSA MÁSIK KONSTRUKTORBÓL public static void Main() { var t1 = new Teglalap( 2, 3, "zöld" ); var t2 = new Teglalap( 2, 3 ); Console.WriteLine( t1.szin ); // Mi lenne t2.szin értéke, ha nem hívnánk meg // a paraméter nélküli konstruktort is? Console.WriteLine( t2.szin ); 2014 Bánsághi Anna 60 of 68

61 TÉGLALAP DUPLÁZ, FELEZ MŰVELETEKKEL Valósítsuk meg a Dupláz és a Felez műveleteket, melyek a téglalap oldalainak hosszát módosítják public class Teglalap { // automatikus tulajdonságok: //... // konstruktorok: //... // metódusok: //... public Teglalap Duplaz() { this.a *= 2; this.b *= 2; return this; public Teglalap Felez() { this.a /= 2; this.b /= 2; return this; 2014 Bánsághi Anna 61 of 68

62 FŐPROGRAM DUPLÁZ, FELEZ MŰVELETEKKEL public static void Main() { var teglalap = new Teglalap( 20, 30 ); Console.WriteLine( "Az 'a' oldal eredetileg: {0", teglalap.a ); Console.WriteLine( "Az 'a' oldal duplázva: {0", teglalap.duplaz().a ); Console.WriteLine( "Az 'a' oldal felezve: {0", teglalap.felez().a ); Console.WriteLine( "Az 'a' oldal 2x felezve: {0", teglalap.felez().felez().a ); 2014 Bánsághi Anna 62 of 68

63 TÉGLALAP MÓDOSÍT MŰVELETTEL Valósítsuk meg a Módosít műveletet, mely paraméterben kapja, hogy hányszorosára módosítsa az oldalakat public class Teglalap { // automatikus tulajdonságok: //... // konstruktorok: //... // metódusok: //... public Teglalap Modosit( double szorzo ) { this.a *= szorzo; this.b *= szorzo; return this; 2014 Bánsághi Anna 63 of 68

64 FŐPROGRAM MODÓSÍT MŰVELETTEL public static void Main() { var teglalap = new Teglalap( 20, 30 ); Console.WriteLine( "Az 'a' oldal eredetileg: {0", teglalap.a ); Console.WriteLine( "Az 'a' oldal duplázva: {0", teglalap.modosit(2).a ); Console.WriteLine( "Az 'a' oldal felezve: {0", teglalap.modosit(0.5).a ); Console.WriteLine( "Az 'a' oldal negyedelve: {0", teglalap.modosit(0.25).a ); 2014 Bánsághi Anna 64 of 68

65 5. NÉVTEREK az egymással összefüggő típusokat célszerű névterekbe rendezni, és külön fájlokba csomagolni így azok újrafelhasználhatók lesznek bármely másik programban vagy típusban, miközben csökken a kód bonyolultsága is az önálló fordítási egységben lévő névtereket a using kulcsszóval vehetjük használatba a fordítóprogram szerkeszti össze a számos fordítási egységből álló programot a névterek egymásba ágyazhatók 2014 Bánsághi Anna 65 of 68

66 A FŐPROGRAM SZERKEZETE using System; using System.Collections; using EgyikNévtér; // használatba vesszük a külső fájlokban // elhelyezett kódot namespace FoprogramNevtere { // a Main főprogramot tartalmazó névtér public class Osztaly1 {... public class Osztaly2 { public static void Main() {... // pontosan egy Main metódus namespace MasikNevter { public class Osztaly1 {... public class Osztaly2 {... // fordítási egységen belüli névtér 2014 Bánsághi Anna 66 of 68

67 SÍKIDOMOK NÉVTERE Készítsük el a Síkidomok névterét önálló fordítási egységben namespace Sikidomok { public class Teglalap { public double A { get; private set; public double B { get; private set; public string Szin { get; set; public Teglalap() {... public Teglalap( double a, double b, string szin ) {... public double Kerulet() {... public double Terulet() { Bánsághi Anna 67 of 68

68 Főprogram using System; using Sikidomok; namespace Foprogram { public class SikidomokPelda { public static void Main() { var teglalap = new Teglalap( 2, 3, "zöld" ); Console.WriteLine( teglalap.szin ); 2014 Bánsághi Anna 68 of 68

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Bá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észletesebben

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozá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észletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Szé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észletesebben

Java programozási nyelv 4. rész Osztályok II.

Java 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észletesebben

Bánsághi Anna anna.bansaghi@mamikon.net. 2014 Bánsághi Anna 1 of 31

Bá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észletesebben

Osztályok. 4. gyakorlat

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észletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda ö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észletesebben

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.

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. 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észletesebben

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása

Bevezeté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észletesebben

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 5. előadás Objektumorientált programozás és tervezés 2014.03.10. Giachetta Roberto groberto@inf.elte.hu

Részletesebben

és az instanceof operátor

é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észletesebben

Java 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. 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észletesebben

Bevezeté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

Bevezeté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észletesebben

Objektumelvű programozás

Objektumelvű 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észletesebben

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Statikus 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

Programozá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 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észletesebben

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

Objektumelvű 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észletesebben

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

Alkalmazott 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észletesebben

OOP. Alapelvek Elek Tibor

OOP. 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észletesebben

Bevezeté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

Bevezeté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észletesebben

Programozási alapismeretek 4.

Programozá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észletesebben

Java programozási nyelv 5. rész Osztályok III.

Java 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észletesebben

Már megismert fogalmak áttekintése

Má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észletesebben

Interfészek. PPT 2007/2008 tavasz.

Interfé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észletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Szá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észletesebben

OOP #14 (referencia-elv)

OOP #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észletesebben

Java és web programozás

Java é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észletesebben

Objektumorientált programozás IX. Osztályok, objektumok

Objektumorientált programozás IX. Osztályok, objektumok Objektumorientált programozás IX. Osztályok, objektumok 1 Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,

Részletesebben

Alkalmazott Modul III 4. előadás. Objektumorientált programozás: objektumok és osztályok. Procedurális programozás Koncepció

Alkalmazott Modul III 4. előadás. Objektumorientált programozás: objektumok és osztályok. Procedurális programozás Koncepció Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 4. előadás : objektumok és osztályok 2011.10.10. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Koncepció

Részletesebben

C++ programozási nyelv Struktúrák a C++ nyelvben

C++ 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észletesebben

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA 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észletesebben

Programozás módszertan p.1/46

Programozás módszertan p.1/46 Programozás módszertan Öröklődés Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK MAGYAR TUDOMÁNYOS AKADÉMIA SZÁMÍTÁSTECHNIKAI ÉS

Részletesebben

C# 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. .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észletesebben

Objektumorientált programozás C# nyelven

Objektumorientá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észletesebben

Elemi Alkalmazások Fejlesztése II.

Elemi 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észletesebben

Bevezetés a Python programozási nyelvbe

Bevezeté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észletesebben

Programozási nyelvek Java

Programozá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észletesebben

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int

Részletesebben

Objektumorientált paradigma és programfejlesztés Bevezető

Objektumorientá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észletesebben

Objektumorientált szoftverfejlesztés alapjai

Objektumorientá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észletesebben

Dr. 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. 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észletesebben

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Bevezeté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észletesebben

Programozás II. 4. Dr. Iványi Péter

Programozá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észletesebben

C++ programozási nyelv

C++ 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észletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: 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

Programozási nyelvek Java

Programozá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észletesebben

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivé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észletesebben

Programozási nyelvek Java

Programozá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észletesebben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozá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

Osztálytervezés és implementációs ajánlások

Osztá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észletesebben

A 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. 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észletesebben

Osztálytervezés és implementációs ajánlások

Osztá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észletesebben

III. OOP (objektumok, osztályok)

III. OOP (objektumok, osztályok) III. OOP (objektumok, osztályok) 1. Természetes emberi gondolkozás Az Objektumorientált paradigma alapelvei nagyon hasonlítanak az emberi gondolkozásra. Érdemes ezért elsőként az emberi gondolkozás elveit

Részletesebben

Programozás C++ -ban

Programozá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észletesebben

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

Bevezeté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észletesebben

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?

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? 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észletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Programozá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észletesebben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztá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észletesebben

Objektum orientált programozás Bevezetés

Objektum orientált programozás Bevezetés Objektum orientált programozás Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 03. 04. OOPALAP / 1 A program készítés Absztrakciós folyamat, amelyben a valós világban

Részletesebben

Alkalmazott modul: Programozás 6. előadás. Strukturált programozás: újrafelhasználható adattípusok

Alkalmazott modul: Programozás 6. előadás. Strukturált programozás: újrafelhasználható adattípusok Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 6. előadás Strukturált programozás: újrafelhasználható adattípusok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás: Objektum orientált programozás Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 03. 04. OOPALAP / 1 A program készítés Absztrakciós folyamat, amelyben a valós világban

Részletesebben

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Java 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észletesebben

C++ programozási nyelv

C++ 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észletesebben

Java 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. 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

Helyes-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?

Helyes-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észletesebben

Java és web programozás

Java é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észletesebben

Virtuális függvények (late binding)

Virtuális függvények (late binding) Virtuális függvények (late binding) Miskolci Egyetem Általános Informatikai Tanszék Virtuális függvények CPP5 / 1 Azonos nevű függvények megkülönböztetése paraméterszignatúra (függvény overloading) - egy

Részletesebben

Objektumorientált paradigma és a programfejlesztés

Objektumorientált paradigma és a programfejlesztés Objektumorientált paradigma és a programfejlesztés 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 Objektumorientált

Részletesebben

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozá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észletesebben

Adatstruktúrák, algoritmusok, objektumok

Adatstruktúrák, algoritmusok, objektumok Adatstruktúrák, algoritmusok, objektumok 3. Az objektumorientált paradigma alapelemei Objektum Osztály Példányosítás A konstruktor és a destruktor Osztályok közötti kapcsolatok Miklós Árpád, BMF NIK, 2006

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientá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észletesebben

Objektumorientált programozás C# nyelven

Objektumorientá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 Láthatósági szintek Névterek és hatókörök Osztály szintő tagok Beágyazott osztályok

Részletesebben

ISA szimulátor objektum-orientált modell (C++)

ISA 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észletesebben

C++ programozási nyelv Konstruktorok-destruktorok

C++ 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

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Miutá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

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64

Részletesebben

Bevezetés a programozásba előadás: Öröklődés

Bevezetés a programozásba előadás: Öröklődés Bevezetés a programozásba 2 5. előadás: Öröklődés emlékeztető Tagfüggvény struct koord { double x,y,r; void set(double ux, double uy) { x=ux; y=uy; r=sqrt(x*x+y*y); } Használat: koord k; k.set(4,5); Egységbezárás

Részletesebben

Web-technológia PHP-vel

Web-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észletesebben

Számítógép és programozás 2

Szá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észletesebben

Pénzügyi algoritmusok

Pé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észletesebben

3. Osztályok II. Programozás II

3. 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észletesebben

Bevezetés, a C++ osztályok. Pere László

Bevezeté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észletesebben

Objektumorientált programozás C# nyelven

Objektumorientá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észletesebben

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance Az objektum-orientált programozás (röviden OOP) a természetes gondolkodást, cselekvést közelítő programozási mód, amely a programozási nyelvek tervezésének természetes fejlődése következtében alakult ki.

Részletesebben

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Bevezeté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észletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja

Részletesebben

Alkalmazott modul: Programozás 11. előadás. Objektumorientált programozás: öröklődés

Alkalmazott modul: Programozás 11. előadás. Objektumorientált programozás: öröklődés Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 11. előadás Objektumorientált programozás: öröklődés Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Programozás II gyakorlat. 6. Polimorfizmus

Programozá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észletesebben

Öröklés és Polimorfizmus

Ö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észletesebben

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

A 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észletesebben

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Programozási nyelvek a közoktatásban alapfogalmak II. előadás Programozási nyelvek a közoktatásban alapfogalmak II. előadás Szintaxis, szemantika BNF szintaxisgráf absztrakt értelmező axiomatikus (elő- és utófeltétel) Pap Gáborné. Szlávi Péter, Zsakó László: Programozási

Részletesebben

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

Osztály és objektum fogalma

Osztá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észletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozá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észletesebben

Programozás I. - 11. gyakorlat

Programozá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észletesebben

BME MOGI Gépészeti informatika 8.

BME 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észletesebben

Bevezetés a programozásba Előadás: A const

Bevezeté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észletesebben

5. Gyakorlat. struct diak {

5. Gyakorlat. struct diak { Rövid elméleti összefoglaló 5. Gyakorlat Felhasználó által definiált adattípusok: A typedef egy speciális tárolási osztály, mellyel érvényes típusokhoz szinonim nevet rendelhetünk. typedef létező_típus

Részletesebben