1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

C++ programozási nyelv Gyakorlat hét
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
Öröklődés 2..
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Dinamikus tömbök.
Bevezetés a Java programozásba
Öröklődés Polimorfizmus Csomagok Absztrakt osztályok, interfészek
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 8. Gyakorlat Operator overloading II.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Mutatók, tömbök, függvények
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/10 C++ programozási nyelv Gyakorlat - 5. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 5. rész – Osztályok III.
C# tagfüggvények.
C# tagfüggvények.
6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.
Csomagok.
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Tömbök Csernoch Mária.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Java programozási nyelv Metódusok
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Programozás III OOP ALAPOK.
Programozás III OOP ÖRÖKLŐDÉS.
Programozás III KOLLEKCIÓK.
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
Ficsor Lajos A C++ programozási nyelv I. CPP1/ 1 Osztály és objektum fogalma.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 5. gyakorlat.
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Programtervezés, programozás I. 2.5 tömbök,stringek
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Informatikai gyakorlatok 11. évfolyam
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat.
V 1.0 Programozás I. Osztályok, objektumok 1 ÓE-NIK-AII, 2014.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
a programegységek között
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Programozás I. 4. gyakorlat.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor2Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Tömbök Egynél több érték tárolására vannak kitalálva, de az elemek száma rögzített. Adott számú, azonos típust tartalmazó adattípus Az indexelés 0-val kezdődik Tömböket dinamikusan, a new operátorral lehet létrehozni, mérete a length adatmezővel lekérdezhető A Java teljes körű indexhatár-ellenőrzést végez, kivétellel jelzi, ha alul- vagy túlindexelés történik Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor2

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor3Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Egydimenziós tömbök Az egyetlen kiterjedéssel rendelkező tömböket szokás vektornak is nevezni Definíció: –típus tömbnév[ ]; –típus[ ] tömbnév; A tömböt futás során a new operátorral hozzuk létre –new típus[ méret ]; –a méret egy nemnegatív egész szám, értéke nem lehet nagyobb, mint az Integer.MAX_VALUE –pl.: int[ ] x = new int[5]; elemei: x[0], x[1], x[2], x[3], x[4]

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor4Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Egydimenziós tömbök A Java lehetővé teszi, hogy a tömböket a definiálás során konstans értékekkel töltsük fel. Ilyenkor a tömböt a fordító hozza létre –típus[ ] tömbnév = { konstans1, konstans2 } –int[ ] arr = { 1, 2, 3, 4, 5 };

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor5Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Többdimenziós tömbök Tömbhivatkozás definíciója: –típus[ ] [ ]... [ ] tömbnév; –típus tömbnév[ ][ ]... [ ]; 2D-s tömb létrehozása: –new típus[ méret1 ][ méret2 ] Inicializálás konstans értékekkel: –int[ ][ ] matrix = { { 1, 2 }, { 3, 4 } }; Dinamikusan: –int[ ][ ] matrix = new int[ 2 ][ 2 ];

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor6Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Tömbök másolása System.arraycopy() metódussal –public static void arraycopy(Object forrás, int forrásKezdetiElem, Object cél, int kezdetiPozíció, int hossz) char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' }; char[] copyTo = new char[7]; System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo)); Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor6

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor7Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Feladat Hozzunk létre egy 7*10-es int-eket tartalmazó tömböt, töltsük fel őket: –tömb[x][y] = x*y; (pl.: tömb[5][8] = 40;) Hozzunk létre egy karakter tömböt ‘t’ ‘e’ ‘l’ ‘e’ ‘f’ ‘o’ ‘n’ karakterekkel Másoljuk egy új tömbbe a ‘l’ ‘e’ karaktereket!

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor8Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Osztály Az objektumok formai leírása, melyek azonos tulajdonságokkal és operációkkal rendelkeznek Osztályokból objektumokat készítünk Ezt példányosításnak nevezzük Minden objektum pontosan egy osztály példánya Egy osztályból több objektumpéldány is létrehozható

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor9Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Osztály Egy osztálynak lehetnek: –adattagjai –metódusai Adattagok megadása: –[láthatóság] [static] [final] [transient] [volatile] típus változóNév; Metódusok megadása: –[láthatóság] [static] [abstract] [final] [native] [synchronized] visszatérésiTípus metódusNév ([paraméterek]) [throws kivételLista]

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor10Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Példa public class Ember { private String nev; private int kor; public void beszel(){ System.out.println(nev + ” beszel!”); }

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor11Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Példányosítás public class Program{ public static void main(String[] args){ Ember jozsi = new Ember(); // példány jozsi.beszel(); }

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor12Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Láthatóság elérés vezérlése (külső osztályok) az adattagok és metódusok láthatóságát korlátozni kell –az OO fontos eleme az implementáció elrejtése: a felhasználó használhatja anélkül, hogy pontosan ismerné a működését (kevesebb programhiba) a láthatóság beállításával módosíthatjuk, hogy ki mit érhet el ha nincs megadva láthatóság, akkor package- private lesz („friendly”) (nincs kulcsszava!) –csomagon belül public, csomagon kívül private

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor13Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Láthatóság A láthatóság ezen kívül lehet: –public: minden külső osztály számára látható, szabadon használható –protected: az adott osztály és a gyerekosztályai használhatják –private: az osztályon kívül nem érhető el, csak az adott osztályon belül, ahol létrehozták az adattagok általában private láthatóságúak a main függvény mindig public láthatóságú –különben a futtatókörnyezet nem férne hozzá

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor14Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Láthatóság Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor14

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor15Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Konstruktor különleges metódus neve meg kell egyezzen az osztály nevével visszatérési értéke/típusa nincs (nem lehet!) új objektum létrejöttekor fut le –adattagok inicializálására használjuk leggyakrabban általában public láthatóságú

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor16Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Default konstruktor ha egy konstruktornak nincsenek paraméterei, akkor default konstruktornak, ellenkező esetben paraméteres konstruktornak nevezzük –alapértelmezett beállításokkal rendelkező objektumok létrehozására használjuk ha nem készítünk semmilyen konstruktort a fordító létrehoz egy default konstruktort –ha legalább egy konstruktort készítettünk, akkor nem jön létre default konstruktor

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor17Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Konstruktor példa public class Pont { private int x; private int y; public Pont() { //default konstruktor x = 0; y = 0; } public Pont(int xErtek, int yErtek) { //parameteres konstruktor x = xErtek; y = yErtek; }

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor18Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Overloading operáció kiterjesztése (overloading): Ugyanaz a függvénynév, de más a paraméterlista Láttuk a konstruktoroknál, de egyéb metódusokra is működik, pl.: –void osszeAd(int a, int b); –void osszeAd(int a, int b, int c); –void osszeAd(int a, double b);

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor19Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Static kulcsszó Adattag esetén: ugyanazon a helyen tárolódik az összes példány  ugyanaz lesz az értéke bármely objektumpéldány esetén Alma osztály adattagja legyen: tomeg –public static int tomeg; –minden Alma típusú objektum tömege ugyanannyi lesz statikus adattag objektumpéldány nélkül is létezik –Az Alma osztály tömeg adattagjára hivatkozás –Alma.tomeg; (HA publikus az adattag!)

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor20Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Static kulcsszó Metódus esetén: Objektum létrehozása nélkül is meghívható –pl.: public static void main(), Integer.parseInt() –nem lehet felüldefiniálni statikus metódusban csak statikus adattagok használhatóak

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor21Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Final kulcsszó Adattag esetén: az adattag kezdeti értékét nem változtathatjuk meg (adni kell kezdőértéket!) –pl.: private final int tomeg = 10; –tomeg=20; // Fordítási hiba!! Metódus esetén: a gyerekosztályban nem lehet felüldefiniálni –Pl.: public final leesik(){...} –minden private metódus impiciten final

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor22Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Final kulcsszó Osztály esetén: nem lehet gyerekosztálya –pl.: final class Alma{} –minden metódusa impliciten final Nem primitív típusokra használva nem az osztály final, hanem a referencia

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor23Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Konstans Valódi konstans létrehozása a static és final kulcsszavakkal –kezdőértékük nem változtatható meg –nevüket csupa nagybetűvel szoktuk írni –szóhatárnál aláhúzást teszünk –pl.: public class Alma { public static final int ALMA_TOMEG = 10; } Ezek elérése kívülről: –int a_tom = Alma.ALMA_TOMEG;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor24Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Getter/Setter Az adattagok értékeinek lekérésére (getter), valamint inicializálás utáni módosítására (setter) használjuk. Elnevezési szabály: –Getter: getAdattagNeve() visszatérési típusa: az adattag típusa ha az adattag boolean, akkor get helyett is-t használunk, pl.: boolean ferfi;  isFerfi() –Setter: setAdattagNeve() Visszatérési típusa void

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor25Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Getter/Setter Példa getter metódusokra: public class Alma{ private int tomeg; private boolean ferges; public int getTomeg() { return tomeg; } public boolean isFerges() { return ferges; }

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor26Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Getter/Setter Példa setter metódusokra: public class Alma{ private int tomeg; private boolean ferges; public void setTomeg(int t) { tomeg = t; } public void setFerges(boolean f) { ferges = f; }

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor27Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor This kulcsszó Hivatkozás az aktuális objektumra Akkor használjuk, ha egy metódus formális paraméterének neve megegyezik az egyik adattag nevével, például: public Pont(int x, int y) { this.x = x; this.y = y; }

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor28Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Garbage collection Objektumok élettartama Java-ban: –élettartam: objektum létrejöttétől a felszabadításig –létrejöttekor (new kulcsszóval) a heapen keletkezik (ellentétben a primitív típusokkal) –felszabadítás: automatikus, a garbage collector („Szemétgyűjtő”) végzi null kulcsszó: Azt jelöli, hogy az adott referencia nem hivatkozik egyetlen objektumra sem (pl. jozsi = null; ) Garbage collector hívása manuálisan (nem biztos hogy lefut): –System.gc();

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor29Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Feladatok Írj egy osztály, amely téglalapot reprezentál,annak oldalhosszait tárolja. Írj az osztálynak egy default konstruktor. Írj az osztálynak egy konstruktort, amely egy paramétert vár és amellyel négyzet hozható létre. Írj az osztálynak metódusokat a kerület és a terület kiszámítására. Írj egy futtatható osztályt, amely parancssori paraméterek alapján létrehoz objektumokat a Téglalap osztályból, majd kiszámolja azok területeinek kerületeinek átlagát.

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor30Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Kisdolgozat Jövő héten kisdolgozat –gyakorlat helyén, idején –téma: bármi, ami volt a gyakorlaton, pl.: Mire jó a garbage collector? Hogy jelölünk..-t UML-ben? Írj meg egy osztályt, ami egy embert reprezentál. Legyen neki neve, tömege, kedve, és hogy férfi-e (ez csak igaz/hamis értéket vehessen fel). Írj hozzájük getter/setter metódust, valamint default és paraméteres konstruktort is! Ábrázolj valamit UML-ben! Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor30