OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

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

Java Programozás 3. Gy: Java GUI. Swing, AWT

OOP: Java 8.Gy: Gyakorlás

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Programozási nyelvek II.: JAVA

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

OOP: Java 1.Gy: Java alapok

4. Gy: JAVA osztályok

Programozási nyelvek II.: JAVA

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

7. K: JAVA alapok Konzultáció

OOP: Java 4.Gy: Java osztályok

és az instanceof operátor

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: Java 7.Gy: Öröklődés, referenciák

Java és web programozás

Osztályok. 4. gyakorlat

Szoftvertechnolo gia gyakorlat

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

Java és web programozás

Java és web programozás

C++ programozási nyelv Konstruktorok-destruktorok

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

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

Programozás I. Első ZH segédlet

Generikus osztályok, gyűjtemények és algoritmusok

Java Programozás 1. Gy: Java alapok. Ismétlés ++

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

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

Programozási technológia

Java II. I A Java programozási nyelv alapelemei

Kalapácsvetés 2016 szöveges

A C# programozási nyelv alapjai

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

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

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

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

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

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

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

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

Java és web programozás

Java II. I A Java programozási nyelv alapelemei

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?

Java programozási nyelv 6. rész Java a gyakorlatban

Web-technológia PHP-vel

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

BME MOGI Gépészeti informatika 8.

Java Programozás 3. Ea: Java osztályok. OOP alapalapok

JAVA PROGRAMOZÁS 3.ELŐADÁS

Objektumorientált programozás C# nyelven

Programozási nyelvek Java

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben

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

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

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

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

Objektum Orientált Programozás. 6. JAVA öröklődés 30/1B IT MAN

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

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

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

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

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

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

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

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

Java IX. telkezelés a Java-ban

BME MOGI Gépészeti informatika 4.

Szoftvertechnológia alapjai Java előadások

Java IX. telkezelés a Java-ban

3. Gyakorlat Ismerkedés a Java nyelvvel

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

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Generikus Típusok, Kollekciók

OOP #14 (referencia-elv)

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Segédanyag: Java alkalmazások gyakorlat

Elemi Alkalmazások Fejlesztése II.

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Programozási technológia

Programozási nyelvek Java

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

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

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

Java Programozás 11. Ea: MVC modell

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

Java gyakorlat feladatai e s megolda sai ( )

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java.

Készítette: Nagy Tibor István

Collections. Összetett adatstruktúrák

Objektumok inicializálása

Interfészek. PPT 2007/2008 tavasz.

Átírás:

OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24

ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás Rendezett tömb módosítása Elem beszúrása Elem törlése Keresés a tömbben Végig kell nézni az összes elemet Megoldás: ArrayList, a változtatható méretű tömb 13/2

ArrayList A java.util.arraylist osztályban található Példányosítani kell ArrayList<típus> alist = new ArrayList<típus>(); List<típus> alist = new ArrayList(); Csak burkoló osztály lehet az elemtípusa Integer, Double, Character, Long, Boolean A lista csak és kizárólag referencia típusú adatokat képes tárolni, így primitív típusokat nem rakhatunk bele. Fontos metódusok: add(), size(), get(index), indexof(érték), tostring() remove(érték), set(index, érték), toarray() (elemszám) 13/3

ArrayList Példakód import java.util.arraylist; import java.util.collections; public class ArrListPrb { public static void main(string args[]) { ArrayList<Integer> alist = new ArrayList<Integer>(); for (int i=0; i<8; i++) alist.add( (int)(math.random()*11)-5 ); for (Integer j : alist) System.out.println(j); System.out.println("A lista elemszáma: "+alist.size()); System.out.println("A lista 3. eleme: "+alist.get(2)); System.out.print("Van benne 0 értékű elem? "); int hely = alist.indexof(0); if (hely > -1) System.out.println("Igen, a "+(hely+1)+". helyen"); else System.out.println("Nincs"); 13/4

ArrayList Példakód } System.out.println("Törlöm a legelső elemet!"); alist.remove(0); for (Integer j : alist) System.out.println(j); System.out.println("Törlöm a 0 értékű elemet!"); alist.remove(0); for (Integer j : alist) System.out.println(j); System.out.println("Kicserélem a 2. elemet 10-re!"); alist.set(1,10); for (Integer j : alist) System.out.println(j); System.out.println("A rendezett lista:"); Collections.sort(aList); System.out.println(aList); System.out.println("Berakom az elemeket egy tömbbe"); Integer [] t = new Integer[aList.size()]; t = alist.toarray(t); } 13/5

1. : Egy enum osztály megvalósítható tagosztályként vagy önálló osztályként. Készítsünk Planet enum osztályt (önálló osztályként), amely tartalmazza a bolygókat és az alábbi konstans adataikat (enum konstansok): Az osztálynak ezen felül legyen egy osztályszintű private final adattagja: az egyetemes tömegvonzás konstans (G = 6.67300e-11) és legyen konstruktora. Figyelem! Az enum osztály konstruktora legyen private. Ez automatikusan létrehozza az enum konstansokat, de nem hívható (az enum osztályt nem lehet példányosítani). 13/6

1. : Az osztály metódusai: Írjuk meg az adattagokat lekérdező metódusokat. Számítsuk ki a bolygón a tömegvonzást (double): G * bolygó tömege/(sugár*sugár) Számítsuk ki az egyik bolygón mért tömeget (paraméter) a másik bolygón mérhető tömegre: paraméterként kapott tömeg * tömegvonzás az adott bolygón. 13/7

1. : Készítsünk futtatható osztályt, amelyben felhasználjuk a Planet osztályt. Beolvasunk egy tömeget. Ezt elosztjuk a bolygóra jellemző tömegvonzással. Ezt a tömeget lehet átszámítani másik bolygón mérhető tömegre. Egy enum típus összes tagjának elérése a values() metódussal történik. int earthweight = readint(); double mass = earthweight/planet.earth.surfacegravity(); for (Planet p : Planet.values()) { System.out.printf("Your weight on %s is %f%n", p, p.surfaceweight(mass)); } 13/8

1. : Elmélet: A private konstruktorral rendelkező osztály közvetlenül nempéldányosítható, de a private konstruktor az osztályon belüli public static metódusból hívható. Használatának esetei: a) Enum osztály konstruktora (az osztály nem példányosítható). b) Az osztály csak static tagokat tartalmaz, azaz nem példányosítható. Pl. Math osztály. c) Olyan osztály konstruktora, ahol a példányok számát korlátozni akarjuk (pl. Singleton osztály csak egyszer példányosítható). d) A private konstruktor közös inicializáló kódot tartalmaz, a többi public konstruktor ezt hívja 13/9

2. : Hozzunk létre egy Egyenlet osztályt, azon belül két osztályszintű tagosztályt: Elsőfokú és Másodfokú. Az Elsőfokú tagosztály adattagjai: 2 double változó az elsőfokú egyenlet konstansainak tárolásához; a Másodfokú tagosztály adattagjai: 3 double változó a másodfokú egyenlet konstansainak tárolásához. Készítsük el az osztályok konstruktorait, valamint az adattagok lekérdezését és beállítását megvalósító metódusokat. 13/10

2. : Hozzuk létre az Egyenlet osztály kiterjesztésével az EgyenletMegoldás osztályt, és ezen belül két példányszintű tagosztályt: Elsőfokú és Másodfokú. Itt az Elsőfokú tagosztály adattagjai: egy double megoldás; a Másodfokú tagosztály adattagjai: 2 double megoldás és egy logikai típusú változó, amelyben azt tároljuk, hogy van-e megoldás. Mindkét tagosztályban írjuk meg a konstruktort, és a megoldást kiszámító és visszaadó metódusokat (külön-külön). A Másodfokú osztályban legyen külön diszkriminánst visszaadó metódus. Írjunk használó osztályt a feladathoz. Olvassuk be egy elsőfokú és egy másodfokú egyenlet konstansait és számítsuk ki a megoldásokat. 13/11

3. : Lokális osztály, névtelen osztály. Elmélet: a lokális osztály blokkon belül definiált osztály, hatásköre a blokk végéig terjed. Névtelen osztályról akkor beszélünk, amikor egy osztályt egyidejűleg definiálunk és példányosítunk ugyanabban a kifejezésben. A gyakorlatban vagy interfész implementációjakor vagy örökléssel jön létre. Definiáljunk Autó osztályt, rendszámellenőrzéssel. Az osztály adattagjai: márka (String), évjárat (int), rendszám (String). A rendszám legyen lokális osztály; majd egy másik verzióban névtelen osztály, amit az autó osztály rendszámellenőrző metódusán belül definiálunk. A rendszám 6 karakter hosszú: az első 3 karakter betű, a második 3 karakter szám. Az alábbi megoldás értelmezése: a replaceall() metódussal a rendszám azon karaktereit, amelyek megfelelnek a reguláris kifejezésben megadott mintának, space-re cseréljük és eltároljuk. Ezt összevetjük a megadott rendszámmal. Ha azonos hosszúságúak, akkor helyes a rendszám (nem lett kicserélve egyik karaktere sem). Készítsünk futtatható osztály, amelyben létrehozunk egy autó objektumot. Létrehozáskor ellenőrizzük a rendszámát. Ha helyes eltároljuk, ha nem akkor üres lesz a rendszám. 13/12

VÉGE VÉGE 13/13