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

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

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

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

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

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

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

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

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

és az instanceof operátor

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

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

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

OOP #14 (referencia-elv)

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Osztályok. 4. gyakorlat

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.

Objektumorientált programozás C# nyelven

A C# programozási nyelv alapjai

Öröklés és Polimorfizmus

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

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás BMEKOKAA146. Dr. Bécsi Tamás 10. Előadás

JAVA PROGRAMOZÁS 3.ELŐADÁS

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?

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Bevezetés a Python programozási nyelvbe

Programozási nyelvek Java

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

Informatika terméktervezőknek

Java és web programozás

Abstract osztályok és interface-ek. 7-dik gyakorlat

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

BME MOGI Gépészeti informatika 8.

Objektum orientált programozás (Object Oriented Programming = OOP)

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Java és web programozás

OOP. Alapelvek Elek Tibor

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

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

Vizuális, eseményvezérelt programozás I.

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

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

Programozás I. Első ZH segédlet

Objektumok inicializálása

C#, OOP. Osztályok tervezése C#-ban

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

BME MOGI Gépészeti informatika 7.

Programozási nyelvek Java

III. OOP (objektumok, osztályok)

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

C++ programozási nyelv Konstruktorok-destruktorok

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

Objektumorientált programozás C# nyelven

Web-technológia PHP-vel

Access adatbázis elérése OLE DB-n keresztül

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

Java és web programozás

Programozási alapismeretek 4.

Programozási nyelvek Java

Programozási nyelvek Java

Objektumorientált szoftverfejlesztés alapjai

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Objektum orientált programozás (Object Oriented Programming = OOP)

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?

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

A JavaScript főbb tulajdonságai

C# osztályok. Krizsán Zoltán

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Ugráló gomb oktatási segédlet Ugráló gomb

Programozási nyelvek II.: JAVA, 4. gyakorlat

Apple Swift kurzus 3. gyakorlat

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

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java III. I I. Osztálydefiníció (Bevezetés)

Objektumorientált programozás C# nyelven

Programozási nyelvek II.: JAVA, 4. gyakorlat

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

Java III. I I. Osztálydefiníció (Bevezetés)

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

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

Java II. I A Java programozási nyelv alapelemei

3. Osztályok II. Programozás II

Java programozási nyelv

Programozás II gyakorlat. 6. Polimorfizmus

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

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

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

Programozási nyelvek Java

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

C++ programozási nyelv

OOP: Java 5.Gy: Osztály, referencia, konstruktor

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Átírás:

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

Tömbök (Arrays) Definíció: típus[] név; (pld. int[] szamok; ) Inicializálás: int[] szamok = new int[4]; int[] szamok = 1,2,4,3,5}; int[] szamok = new int[] 1,8,4,3,5}; Elemeke elérése: szamok[0]=1; Hossz lekérése, a Length tulajdonság: int[] szamok = new int[4]1,2,3,4}; int sum=0, i; for (i = 0; i < szamok.length; i++) sum += szamok[i];

Többdimenziós tömbök Definíció: típus[,] név; (pld. int[,] matrix; ) int[,] numbers = new int[3, 2]; int[,] numbers = new int[3, 2] 1,2}, 3,4}, 5,6}}; int[,] numbers = new int[,] 1,2}, 3,4}, 5,6}}; int[,] numbers = 1,2}, 3,4}, 5,6}}; A Length tulajdonság a teljes elemszámot adja vissza (6 jelen esetben) A Rank tulajdonság a mátrix dimenzióját adja vissza. A GetLength(int i) metódus adja vissza az adott dimenzió hosszát

Többdimenziós tömb, példa int[,] matrix = new int[5,4]; for (int li = 0; li < matrix.getlength(0); li++) for (int lj = 0; lj < matrix.getlength(1); lj++) matrix[li, lj] = li * lj; 0 0 0 0 0 1 2 3 0 2 4 6 0 3 6 9 0 4 8 12

Tömbök tömbje (Nem azonos a többdimenziós tömbbel) int[][] haromszog = new int[5][]; for (int i = 0; i < haromszog.length; i++) haromszog[i] = new int[i+1]; for (int j = 0; j < haromszog[i].length; j++) haromszog[i][j] = j; } haromszog[0]: 0 } haromszog[1]: 0, 1 } haromszog[2]: 0, 1, 2 } haromszog[3]: 0, 1, 2, 3 } haromszog[4]: 0, 1, 2, 3, 4 }

A foreach foreach (azonosító in vektor) utasítás; Ez az utasítás egyenértékű a vektor-elemeken történő végiglépdeléssel. Az azonosító, mint ciklusváltozó felveszi egyenként e vektor elemeit. int paros = 0, paratlan = 0; int[] v = new int[] 0, 1, 2, 5, 7, 8, 11 }; foreach (int i in v) if (i % 2 == 0) paros++; else paratlan++; }

Függvények paraméterátadása Alapesetben érték szerinti a paraméterátadás: void swap( int a, int b) int c = a; a = b; b = c; } int a, b; a = 10; b = 11; swap( a, b); MessageBox.Show("a:"+a.ToString() + " b:" + b.tostring());

Függvények paraméterátadása cím (referencia) szerinti átadás Ha a paraméternév elé a ref(hivatkozás) kulcsszót beszúrjuk, akkor a hivatkozás szerinti paraméterátadást definiáljuk. Ezt a kulcsszót be kell szúrnunk a függvénydefinícióba és a konkrét hívás helyére is void swap( ref int a, ref int b) int c = a; a = b; b = c; } int a, b; a = 10; b = 11; swap(ref a, ref b); MessageBox.Show("a:"+a.ToString() + " b:" + b.tostring());

Függvények paraméterátadása kimenő paraméter Ha a paraméternév elé a out kulcsszót beszúrjuk, akkor a paraméter kimenő Ezt a kulcsszót be kell szúrnunk a függvénydefinícióba és a konkrét hívás helyére is void feltolt(out int[] vektor) vektor = new int[5] 1, 2, 3, 4, 5}; } void megegy(int[] vektor) for (int i = 0; i < vektor.length;i++) vektor[i]++; } int[] vektor; string s = ""; feltolt(out vektor);//vektor: 1,2,3,4,5} megegy(vektor); //vektor: 2,3,4,5,6}

A Form Komponens (System.Windows.Forms.Form) Eddig tanult tagok: tulajdonság int Width Szélesség Pixelben tulajdonság int Height Magasság pixelben tulajdonság int Top pozíció (Form teteje a tároló tetejétől) tulajdonság int Bottom pozíció (Form alja a tároló tetejétől) tulajdonság int Left pozíció (Form bal széle a tároló bal szélétől) tulajdonság int Right pozíció (Form jobb széle a tároló bal szélétől) tulajdonság string Text Fejlécfelirat tulajdonság bool Enabled Engedélyezve tulajdonság Color BackColor Háttérszín tulajdonság Color ForeColor Előtér színe tulajdonság bool Visible Látható esemény Load A Form betöltésekor esemény Click A Form-ra klikkeléskor

A Button Komponens (System.Windows.Forms.Button) Eddig tanult tagok: tulajdonság int Width Szélesség Pixelben tulajdonság int Height Magasság pixelben tulajdonság int Top pozíció (Button teteje a tároló tetejétől) tulajdonság int Bottom pozíció (Button alja a tároló tetejétől) tulajdonság int Left pozíció (Button bal széle a tároló bal szélétől) tulajdonság int Right pozíció (Button jobb széle a tároló bal szélétől) tulajdonság string Text Fejlécfelirat tulajdonság bool Enabled Engedélyezve tulajdonság Color BackColor Háttérszín tulajdonság Color ForeColor Előtér színe tulajdonság bool Visible Látható esemény Click A Form-ra klikkeléskor

A TextBox Komponens (System.Windows.Forms.Textbox) Eddig tanult tagok: tulajdonság int Width,Height Méret tulajdonság int Top, Bottom, Left, Right Pozíció tulajdonság string Text Fejlécfelirat tulajdonság bool Enabled Engedélyezve tulajdonság Color BackColor, Forecolor Szinek tulajdonság bool Visible Látható tulajdonság bool MultiLine metódus AppendText(string s) szöveg hozzáfűzése esemény TextChanged Szöveg megváltozásakor

A Timer Komponens (System.Windows.Forms.Timer) Események: Tick Amikor az előre beállított idő lejár Fontosabb Tulajdonságok bool Enabled Amennyiben true, a timer számol, ellenkező esetben nem. int Interval A timer periódusideje ms-ban. Metódusok void Start() elindítás (Enabled=true;) void Stop() leállítás (Enabled=false;)

Osztályok class osztálynév [: szülő, ] osztálytaglista }; Minden osztály egy közös ősből, az object osztályból származik

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 tároljak az adatokat, a metódusok kommunikálnak a külvilággal. Öröklés (Inheritance) Az osztály továbbfejlesztése. Ennek során a származtatott osztály örökli az ősosztálytól az összes attribútumot, metódust. Ezeket azonban újakkal is kibővíthetjük, ill. bizonyos szabályok mellett az örökölt metódusokat is megváltoztathatjuk. Sokalakúság (Polymorphism) Ugyanarra a metódusra a különböző objektumok különbözőképpen reagáljanak. A származtatás során az ősosztályok metódusai képesek legyenek az új, átdefiniált metódusok használatára újraírás nélkül is. Ezt virtuális (vagy dinamikus) metódusokkal érhetjük el.

Hozzáférési szintek osztályok esetében 1. A private tagokat csak az adott osztályon belülről érhetjük el. 2. Az osztályok publikus public mezőit bárhonnan elérhetjük, módosíthatjuk. 3. A protected mezők az osztályon kívüliek számára nem elérhetőek, míg az utódosztályból igen. 4. Az internal mezőket a készülő program osztályaiból érhetjük el. 5. A protected internal elérés valójában egy egyszerű vagy kapcsolattal megadott hozzáférési engedély. A mező elérhető a programon belülről, vagy az osztály utódosztályából! (Egy osztályból természetesen tudunk úgy utódosztályt származtatni, hogy ez nem tartozik az eredeti programhoz.)

Konstruktorok Osztályok esetén ez a kezdőérték-adás nem biztos, hogy olyan egyszerű, mint volt elemi típusok esetén, ezért ebben az esetben egy függvény kapja meg az osztály inicializálásával járó feladatot. Ez a függvény az osztály születésének pillanatában automatikusan végrehajtódik, és konstruktornak vagy konstruktor függvénynek nevezzük. A konstruktor neve mindig az osztály nevével azonos. Ha ilyet nem definiálunk, a keretrendszer egy paraméter nélküli automatikus konstruktort definiál az osztály számára. Az osztály referencia típusú változó, egy osztálypéldány létrehozásához kötelező a new operátort használni, ami egyúttal a konstruktor függvény meghívását végzi el.

Példa egyszerű osztályra class Ember private int eletkor; public string nev; } Ember e = new Ember(); //automatikus konstruktor e.nev = "Béla"; //működik e.eletkor = 12; //nem működik

Példa egyszerű osztályra 2. class Ember private int eletkor; public string nev; public Ember(int peletkor) eletkor = peletkor; } public int geteletkor() return eletkor; } Ember le = new Ember(12); le.nev = "Béla"; MessageBox.Show(le.getEletkor().ToString());

is, as operátorok Az is operátor ellenőrzi, hogy egy objektum kompatibilis-e egy típussal. Az as operátor kompatibilis objektumok közötti típus konverzióra ad lehetőséget.

Egyszerű példa öröklődésre class UjEmber : Ember public bool nem; public UjEmber(int peletkor) : base(peletkor) } } UjEmber le = new UjEmber(13); le.nev = "Béla"; //örökölt tulajdonság le.nem = true; //saját tulajdonság // is operátor: if (le is Ember) MessageBox.Show("Ember"); if (le is UjEmber) MessageBox.Show("UjEmber"); if (le is object) MessageBox.Show("object"); if (le is Button) MessageBox.Show("Button");

Egyszerű példa is, as operátorokra object akarmi; UjEmber valaki; akarmi = new UjEmber(12); if (akarmi is UjEmber) valaki = akarmi as UjEmber;

is as példa Visual Studioban

Statikus osztályok,tagok (a static kulcsszó) Egy statikus osztály lényegében ugyanolyan, mint a nem statikus osztály, azzal a különbséggel, hogy a statikus osztályt nem lehet példányosítani. Egy nem statikus osztálynak is lehetnek statikus tagjai (metódusai és adatelemei), ezeket a static kulcsszóval jelöljük. A static függvények éppen ezért nem érhetik el a nem statikus adatokat, hiszen azok egyedfüggőek. A static elemeket típusnévvel, a nem static elemeket egyedhivatkozással érjük el.

Példa statikus elemekre Statikus MessageBox.Show() Convert.ToInt32() int.parse() Math.akármi stb Nem statikus akármi.tostring()

Példa static tagokra class Osztaly public static int static_szam = 2; public int szam = 3; public static int static_osszead(int a) return a + static_szam; } public int osszead(int a) return a + szam + static_szam; } } Osztaly.static_szam++; MessageBox.Show( Osztaly.static_szam.ToString() ); Osztaly c = new Osztaly(); MessageBox.Show( c.osszead(21).tostring() ); MessageBox.Show( Osztaly.static_osszead(21).ToString() );