7. K: JAVA alapok Konzultáció

Hasonló dokumentumok
OOP: Java 8.Gy: Gyakorlás

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

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

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

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

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

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

4. Gy: JAVA osztályok

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

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

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

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

BME MOGI Gépészeti informatika 8.

Kivételek. A program végrehajtása során ritkán bekövetkező események Nem a fő végrehajtási ág ; logikailag alacsonyabbrendű feladat jelzése

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

Java Programozás 5. Ea: OOP alapok. Abstract Javaságok

é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 bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Objektumorientált programozás C# nyelven

OOP: Java 1.Gy: Java alapok

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?

OOP: Java 7.Gy: Öröklődés, referenciák

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

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

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

Programozási technológia

Kivételkezelés, naplózás. Exception handling, logging

Osztályszintű elérés, kivételkezelés, fájlkezelés

Szoftvertechnolo gia gyakorlat

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

Programozási nyelvek Java

Programozási nyelvek Java

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

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

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Objektumorientált programozás C# nyelven

Java Programozás 11. Ea: MVC modell

Programozási nyelvek II.: JAVA

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

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

Kivételkezelés a C++ nyelvben Bevezetés

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

Programozás I. Második ZH segédlet

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

Java és web programozás

OOP: Java 4.Gy: Java osztályok

Java és web programozás

Globális operátor overloading

BME MOGI Gépészeti informatika 4.

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

Osztályok. 4. gyakorlat

Kalapácsvetés 2016 szöveges

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

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

Pénzügyi algoritmusok

Programozás I. Második ZH segédlet

S ha kettészelik is: balfelöl belőle Valamivel mindig - Valamivel mindiq több marad. (Nyugat )

Java programozási nyelv 9. rész Kivételkezelés

Programozási technológia

Segédanyag: Java alkalmazások gyakorlat

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

JAVA PROGRAMOZÁS 3.ELŐADÁS

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

Java és web programozás

Kivételek, kivételkezelés a C++ nyelvben

Objektumorientált programozás C# nyelven III.

Java gyakorlat feladatai e s megolda sai ( )

3. Osztályok II. Programozás II

Informatika terméktervezőknek

Programozási nyelvek Java

1. Jelölje meg az összes igaz állítást a következők közül!

Programozási nyelvek Java

OOP #14 (referencia-elv)

Segédanyag: Java alkalmazások gyakorlat

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Öröklés és Polimorfizmus

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

Segédanyag: Java alkalmazások gyakorlat

Programozás II. labor

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

Objektumorientált programozás C# nyelven

INFORMATIKAI ALAPISMERETEK

Gábor Dénes Főiskola (IAI) Programozási technológia (Java) - I. / 1

Bánsághi Anna

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

Java és web programozás

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

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

BME MOGI Gépészeti informatika 1.

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

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

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

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

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

Programozási nyelvek II. JAVA

Átírás:

Objektum Orientált Programozás 7. K: JAVA alapok Konzultáció 35/1B IT MAN B IT v: 2017.05.03 MAN

Hiba, biztonságos program 01. Szintaktikai hiba imt i = 0; system.out.println( alma ); for (int i = 0, i<= 10, i++)... Szemantikai hiba int a=0, b=10/a; x1=(-b+math.sqrt(b*b-4*a*c))/2*a; args[++i] Biztonságos program szemantikai hibákat megpróbálja kezelni a belőlük következő hibákkal együtt ennek módja: kivételkezelés 35/2 B IT MAN

Kivételkezelés 02. kivétel (exception): a program futása során bekövetkező hiba; olyan esemény, amely megszakítja az utasítások végrehajtásának normális menetét kivételobjektum: ha hiba keletkezik, automatikusan létrejön kivétel kiváltódása: a hiba hatására létrejön az objektum kivétel elkapása: kivételt lehetőségünk van elkapni és kezelni kivételkezelés: azt a programrészletet, melyben az adott hibát orvosoljuk ellenőrzött kivétel: kezelése minden esetben kötelező; nem kezelése szintaktikai hibát eredményez, és a program fordítása sikertelen lesz nem ellenőrzött kivétel: kezelése nem kötelező; kiváltódásának ellenőrzése sem kötelező, ám minden esetben ajánlott 35/3 B IT MAN

Kivételosztályok 03. Ellenőrzött kivételek IOException Ki- és bemeneti hibák esetén váltódik ki, pl. konzolról való beolvasáskor. FileNotFoundException EOFException Nem ellenőrzött kivételek Az IOException egyik alkivételosztálya. Akkor kapjuk például, ha nem létező fájlba próbálunk írni. Fájl végét jelző kivétel. Szintén az IOException alosztálya. RuntimeException NullPointerException IndexOutOfBounds Exception ArithmeticException Valamennyi futásidejű kivétel ősosztálya. Olyan esetben kapjuk, ha null értékű, azaz inicializálatlan változóra vagy objektumra hivatkozunk. Túlindexelést jelző kivétel. Akkor kapjuk, ha egy tömb, karakterlánc, vagy más indexelhető szerkezet nem létező indexére hivatkozunk. Aritmetikai műveletek hibájakor kapjuk, például nullával való osztáskor. NumberFormatException Akkor kapjuk például, ha nem megfelelő számot tartalmazó karakterláncot próbálunk szám típusúvá konvertálni. IllegalArgument Akkor váltódik ki, ha egy metódust nem megfelelő paraméterekkel Exception hívunk. 35/4 B IT MAN

Try-catch blokk 04. Ha a kivételt nem kezeljük abban a blokkban, ahol keletkezett, úgy a tartalmazó blokknak adódik át. Ez egészen addig folytatódik, míg valahol nincs egy olyan kivételkezelő blokk, mely az adott kivételt kezelné. Ha a kivételt egyik blokkban sem kezeljük, és feljut a legfelsőbb szintre: a program terminál Szintaktikája try { kritikus műveletek; catch (KivételTípus1 e1) { hibakezelés catch (KivételTípus2 e2) { hibakezelés... 35/5 B IT MAN

HibaProba futtatható osztály Direkt hibázunk, kiíratjuk a hiba típusát, aztán lekezeljük! public class HibaProba { public static void main(string[ ] args) { int [ ] s = new int[4]; for (int i=1; i<4; i++){ s[i] = (int)(math.random()*20); for (int i=0; i<4; i++) System.out.println(s[i]); System.out.println(s[2]/s[0]); Konzol Az s tömbnek minden eleme 0 értékkel jön létre. A 0. elem 0 marad, a többi elem más értéket kap. 0 12 15 15 Exception in thread "main" java.lang.arithmeticexception: / by zero 35/6 at HibaProba.main(HibaProba.java:12) B IT MAN

HibaProba futtatható osztály Direkt hibázunk, kiíratjuk a hiba típusát, aztán lekezeljük! public class HibaProba { public static void main(string[ ] args) { int [ ] s = new int[4]; for (int i=1; i<4; i++){ s[i] = (int)(math.random()*20); for (int i=0; i<4; i++) System.out.println(s[i]); try { System.out.println(s[2]/s[0]); catch(arithmeticexception ae){ System.out.println("Nullával osztottál!"); Konzol 0 12 15 15 35/7 Nullával osztottál! B IT MAN

HibaProba futtatható osztály Direkt hibázunk, kiíratjuk a hiba típusát, aztán lekezeljük! public class HibaProba { public static void main(string[ ] args) { int [ ] s = new int[4]; for (int i=1; i<4; i++){ s[i] = (int)(math.random()*20); for (int i=0; i<4; i++) System.out.println(s[i]); System.out.println("Az 5. elem értéke: "+s[5]); Konzol 0 12 7 11 Exception in thread "main" java.lang.arrayindexoutofboundsexception: 5 A tömbnek csak 4 eleme van! 35/8 at HibaProba.main(HibaProba.java:12) B IT MAN

HibaProba futtatható osztály Direkt hibázunk, kiíratjuk a hiba típusát, aztán lekezeljük! public class HibaProba { public static void main(string[ ] args) { int [ ] s = new int[4]; for (int i=1; i<4; i++){ s[i] = (int)(math.random()*20); for (int i=0; i<4; i++) System.out.println(s[i]); try { System.out.println("Az 5. elem értéke: "+s[5]); catch(arrayindexoutofboundsexception e){ System.out.println("Hibás indexhasználat a tömbnél!"); Konzol 0 12 15 15 35/9 Hibás indexhasználat a tömbnél! B IT MAN

HibaProba futtatható osztály Direkt hibázunk, kiíratjuk a hiba típusát, aztán lekezeljük! public class HibaProba { public static void main(string[ ] args) { int [ ] s = new int[4]; for (int i=0; i<4; i++) System.out.println(s[i]); s = null; System.out.println(s[0]); Konzol Az s tömbnek minden eleme 0 értékkel jön létre. Az s tömbnek minden eleme null referenciájú lesz! Mi az s változó dinamikus és statikus típusa? 0 0 0 0 Exception in thread "main" Null értékre mutató referencia kivétel! java.lang.nullpointerexception at HibaProba.main(HibaProba.java:12) 35/10 B IT MAN

HibaProba futtatható osztály Direkt hibázunk, kiíratjuk a hiba típusát, aztán lekezeljük! public class HibaProba { public static void main(string[ ] args) { int [ ] s = new int[4]; for (int i=0; i<4; i++) System.out.println(s[i]); s = null; try { System.out.println(s[0]); catch(arrayindexoutofboundsexception e){ System.out.println("Null értékre mutató referencia!"); 0 12 15 15 Konzol 35/11 Null értékre mutató referencia! B IT MAN

SajatKivetel osztály Mindig az Exception osztály leszármazottja public class SajatKivetel extends Exception { SajatKivetel(String uzenet) { super(uzenet); 35/12 B IT MAN

HibaProba futtatható osztály Kivételek lekezelése saját kivétel osztállyal public class HibaProba { public static void main(string[ ] args) { int [ ] s = new int[4]; for (int i=0; i<4; i++) System.out.println(s[i]); s = null; try { if (s == null) throw new SajatKivetel("Null értékre mutató referencia!"); System.out.println(s[0]); catch(sajtkivetel sk){ System.out.println(sk.getMessage()); 0 0 0 0 Konzol public class SajatKivetel extends Exception { SajatKivetel(String uzenet) { super(uzenet); 35/13 Null értékre mutató referencia! B IT MAN

HibaProba futtatható osztály Kivételek lekezelése saját kivétel osztállyal public class HibaProba { public static void main(string[ ] args) { int [ ] s = new int[4]; for (int i=0; i<4; i++) System.out.println(s[i]); s = null; try { if (s[0] == 0) throw new SajatKivetel("Az osztó értéke: 0!"); System.out.println(s[2]/s[0]); if (5 > s.length) throw new SajatKivetel("Az index nagyobb, mint a tömb mérete!"); System.out.println("Az 5. elem értéke: "+s[5]); catch(sajtkivetel sk){ System.out.println(sk.getMessage()); 0 0 0 0 Konzol public class SajatKivetel extends Exception { SajatKivetel(String uzenet) { super(uzenet); 35/14 Az osztó értéke: 0! B IT MAN

Gyakorló példa a számonkérésre 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét (szöveg) és Neptun kódját (szöveg) Készítsen konstruktort, mely a név és a kód alapján inicializál egy példányt Legyen az osztálynak a nevet visszaadó metódusa Alkosson olyan törzs nélküli metódust, mellyel egész értékként kiszámítja a Juttatás-t. 2. Feladat: Készítse el a Hallgato nevű osztályt, a Szemely osztály leszármazottjaként Az osztály tárolja a Hallgató féléves jegyeit egy egész típusú tömbbe, és legyen egy Ösztöndíjat tároló adattagja is. Az osztályhoz tartozzon egy konstans, mely az ösztöndíj számítás ALAPértékét jelentse, értéke legyen 10000. 35/15 B IT MAN

Gyakorló példa a számonkérésre A 2. Feladat folytatása: Készítsen egy, a jegyek számát beállító metódust Készítsen egy metódust, egy konkrét (valahányadik) jegy beírására Alkosson metódust az ösztöndíj beállítására Készítsen egy Átlag metódust, mely a jegyek átlagát adja vissza A Juttatás metódus adja vissza egy hallgató juttatását, mely ha az átlag legalább hármas, akkor az átlag és az alap szorzata, egyébként nulla. Az osztály tostring metódusa a következő formában adjon vissza adatot: Név: Géza, Átlag: 3.1, Ösztöndíj: 31000 Készítsen egy jegykiír nevű metódust, mely kiírja egy hallgató nevét és összes jegyét a következő formában: Géza 0. jegye: 5 Géza 1. jegye: 5 Géza 2. jegye: 2 Géza 3. jegye: 3... 35/16 B IT MAN

Gyakorló példa a számonkérésre 3. Feladat: Készítsen egy HallgatoProgram nevű futtatható osztályt Készítsen egy 5 elemű tömböt hallgatók adatainak tárolására Olvasson be a billentyűzetről a hallgatók nevét és kódját, és az adatokkal inicializálja a hallgatók adatait Állítsa be a jegyek számát 10-re, és minden hallgatóhoz generáljon véletlenszerűen az (1-5) tartományban jegyeket Állítsa be minden hallgatónál az ösztöndíjat, melyet a Juttatás metódussal határozzon meg Írassa ki minden Hallgató adatait a képernyőre Írassa ki az utolsó hallgató jegyeit a képernyőre 35/17 B IT MAN

Gyakorló példa a számonkérésre Futtatási minta: A hallgató neve: Jenő A hallgató kódja: ab45bb A hallgató neve: Béla A hallgató kódja: 3mz675 A hallgató neve: Éva A hallgató kódja: cc98vv A hallgató neve: Zoli A hallgató kódja: zxa3e4 A hallgató neve: Géza A hallgató kódja: wxyc78 Név: Jenő, Átlag: 3.5, Ösztöndíj: 35000 Név: Béla, Átlag: 4.0, Ösztöndíj: 40000 Név: Éva, Átlag: 2.5, Ösztöndíj: 0 Név: Zoli, Átlag: 2.6, Ösztöndíj: 0 Név: Géza, Átlag: 3.1, Ösztöndíj: 31000 Géza 0. jegye: 5 Géza 1. jegye: 5 Géza 2. jegye: 2 Géza 3. jegye: 3 Géza 4. jegye: 5 Géza 5. jegye: 1 Géza 6. jegye: 3 Géza 7. jegye: 4 Géza 8. jegye: 1 Géza 9. jegye: 2 35/18 B IT MAN

Szemely osztály, adattagok: név, neptunkód Konstruktor (név, neptunkód). Metódusok: getnev, Juttatás public abstract class Szemely { private String Nev; private String Neptunkod; public Szemely (String Nev, String Kod){ this.nev = Nev; Neptunkod = Kod; public String getnev(){ return Nev; public abstract int Juttatas(); 35/19 B IT MAN

Hallgato osztály, szülő: Szemely, adattagok: jegyek[ ], Ösztöndíj Konstruktor (név, neptunkód). Metódusok: setjegyek, JegyBeír, setösztöndíj, Átlag, Juttatás, tostring, jegykiír public class Hallgato extends Szemely { private int [ ] jegyek; private int Osztondij; final static int ALAP = 10000; public Hallgato (String Nev, String Kod){ super(nev, Kod); public void setjegyek(int j){ jegyek = new int[j]; public void JegyBeir(int i, int jegy){ jegyek[i] = jegy; public void setosztondij(int od){ Osztondij = od; 35/20 B IT MAN

Hallgato osztály, szülő: Szemely, adattagok: jegyek[ ], Ösztöndíj Konstruktor (név, neptunkód). Metódusok: setjegyek, JegyBeír, setösztöndíj, Átlag, Juttatás, tostring, jegykiír public double Atlag(){ double atlag = 0d; for (int i=0; i<10; i++) atlag += jegyek[i]; return atlag/10d; public int Juttatas(){ if (Atlag() >= 3) return (int)(atlag()*alap); else return 0; public String tostring(){ return "Név: "+getnev()+", Átlag: "+Atlag()+", Ösztöndíj: "+Osztondij; public void jegykiir(){ for (int i=0; i<10; i++) System.out.println(getNev()+" "+i+". jegye: "+jegyek[i]); 35/21 B IT MAN

HallgatoProgram futtatható osztály 5 hallgató beolvasása tömbbe, 10 jegy generálása hallgatónként, ösztöndíj számítása, hallgatók adatainak kiírása, utolsó hallgató jegyeinek kiírása import java.util.scanner; public class HallgatoProgram { public static void main(string[ ] args) { Scanner sc = new Scanner(System.in); Hallgato [ ] h = new Hallgato[5]; String s1, s2; for (int i=0; i<5; i++){ System.out.println("A hallgató neve: "); s1 = sc.nextline(); System.out.println("A hallgató kódja: "); s2 = sc.nextline(); h[i]= new Hallgato(s1, s2); h[i].setjegyek(10); for (int j=0; j<10; j++){ h[i].jegybeir(j, 1+(int)(Math.random()*5)); h[i].setosztondij(h[i].juttatas()); 35/22 B IT MAN

HallgatoProgram futtatható osztály 5 hallgató beolvasása tömbbe, 10 jegy generálása hallgatónként ösztöndíj számítása, hallgatók adatainak kiírása, utolsó hallgató jegyeinek kiírása for (int i=0; i<5; i++) System.out.println(h[i]); h[4].jegykiir(); 35/23 B IT MAN

Gyakorló példa a számonkérésre 1. Feladat: Készítsen egy Alkoholos nevű interfészt, benne egy mennyialkoholttartalmaz nevű valós eredményt visszaadó metódust 2. Feladat: Készítsen egy Ital nevű osztályt, legyen az adattagja az ital neve Készítsen a névvel inicializáló konstruktort Készítsen getnév metódust Alkosson olyan törzs nélküli metódust, mellyel szövegként visszaadja azt, hogy mibőlkészült az ital Alkosson olyan törzs nélküli metódust, mellyel szövegként visszaadja azt, hogy milyenízű az ital 35/24 B IT MAN

Gyakorló példa a számonkérésre 3. Feladat: Készítse el a Gyümölcslé nevű osztályt, az Ital osztály leszármazottjaként Az osztály adattagként tárolja az alapanyag-ot, és a gyümölcslé ízét Legyen az osztálynak olyan konstruktora, mely a három adattag értékével inicializás (név, alapanyag, íz) Valósítsa meg a szükséges metódusokat Az osztály tostring metódusa a következő formában adjon vissza adatot: Hohes C: nem alkoholos, citrom alapú ital 35/25 B IT MAN

Gyakorló példa a számonkérésre 4. Feladat: Készítse el a AlkoholosItal nevű osztályt, az Ital osztály leszármazottjaként, melyben megvalósítja az Alkoholos interfészt Az osztály adattagként tárolja az alapanyag-ot, és a gyümölcslé ízét, és az alkoholtartalmat (0-1 közötti valós szám) Legyen az osztálynak olyan konstruktora, mely a négy adattag értékével inicializás (név, alapanyag, íz, alkohol) Valósítsa meg a szükséges metódusokat Az osztály tostring metódusa a következő formában adjon vissza adatot: Pálinka: 40.0% alkohol tartalmú ital 35/26 B IT MAN

Gyakorló példa a számonkérésre 5. Feladat: Készítsen egy AbsztinensProgram nevű futtatható osztályt Készítsen egy osztályszintű elfogyaszt nevű metódust, mely egy italt kap paraméterül. Kiírja a kapott ital nevét, és ha az ital alkoholos, akkor a "Köszönöm, nem kérem! Alkoholt tartalmaz!" szöveget, egyébként a "Megittam, finom volt!" szöveget. Hozzon létre egy 4 elemű Ital típusú tömböt Töltse fel 2 Gyümölcslével, és 2 AlkoholosItal-lal Fogyassza el az italokat 35/27 B IT MAN

Gyakorló példa a számonkérésre Futtatási minta: Megkínáltak a következővel: Sió barack: nem alkoholos, barack alapú ital Megittam, finom volt! Megkínáltak a következővel: Sör: 5.0% alkohol tartalmú ital Köszönöm, nem kérem! Alkoholt tartalmaz! Megkínáltak a következővel: Hohes C: nem alkoholos, citrom alapú ital Megittam, finom volt! Megkínáltak a következővel: Pálinka: 40.0% alkohol tartalmú ital Köszönöm, nem kérem! Alkoholt tartalmaz! 35/28 B IT MAN

Alkoholos interfész, mennyialkoholttartalmaz metódus public interface Alkoholos { public double mennyialkoholttartalmaz(); 35/29 B IT MAN

Ital osztály, név adattag, konstruktor, getnév metódus, törzsnélküli mibőlkészült és milyenízű metódusok public abstract class Ital { private String nev; public Ital(String nev) { this.nev = nev; public String getnev(){ return nev; public abstract String mibolkeszult(); public abstract String milyenizu(); 35/30 B IT MAN

Gyümölcslé osztály, szülő: Ital, adattagok: alapanyag, íz Konstruktor (név, alapanyag, íz). Metódusok: milyenízű, mibőlkészült tostring: Sió barack: nem alkoholos, barack alapú ital public class Gyumolcsle extends Ital { private String alapanyag; private String iz; public Gyumolcsle(String nev, String alap, String iz) { super(nev); alapanyag = alap; this.iz = iz; public String milyenizu() { return iz; public String mibolkeszult(){ return alapanyag; public String tostring() { return getnev()+": nem alkoholos, "+alapanyag+" alapú ital"; 35/31 B IT MAN

AlkoholosItal osztály, szülő: Ital, implementálja az Alkoholos interfészt adattagok: alapanyag, íz, alkohol. Konstruktor (név, alapanyag, íz, alkohol). Metódusok: milyenízű, mibőlkészült tostring: Pálinka: 40.0% alkohol tartalmú ital public class AlkoholosItal extends Ital implements Alkoholos { private String alapanyag; private String iz; private double alkoholtartalom; public AlkoholosItal(String nev, String alap, String iz, double alk) { super(nev); alapanyag = alap; this.iz = iz; alkoholtartalom = alk; public String milyenizu() { return iz; public String mibolkeszult(){ return alapanyag; public String tostring() { return getnev()+": "+alkoholtartalom*100+"% "+" alkohol tartalmú ital"; 35/32 B IT MAN

AbsztinensProgram futtatható osztály elfogyaszt osztály metódus, 4 elemű Ital tömb, feltöltés adatokkal, italok elfogyasztása public class AbsztinensProgram { public static void elfogyaszt(ital i) { System.out.println("Megkínáltak a következővel: "+i); if (i instanceof Alkoholos) System.out.println("Köszönöm, nem kérem! Alkoholt tartalmaz!"); else System.out.println("Megittam, finom volt!"); public static void main(string[ ] args) { Ital [ ] ital = new Ital [4]; ital[0] = new Gyumolcsle("Sió barack", "barack", "édes"); ital[1] = new AlkoholosItal("Sör", "komló", "keserű", 0.05); ital[2] = new Gyumolcsle("Hohes C", "citrom", "savanykás"); ital[3] = new AlkoholosItal("Pálinka", "szilva", "szilva", 0.4); for (int i=0; i<4; i++) AbsztinensProgram.elfogyaszt(ital[i]); 35/33 B IT MAN

Konzol Megkínáltak a következővel: Sió barack: nem alkoholos, barack alapú ital Megittam, finom volt! Megkínáltak a következővel: Sör: 5.0% alkohol tartalmú ital Köszönöm, nem kérem! Alkoholt tartalmaz! Megkínáltak a következővel: Hohes C: nem alkoholos, citrom alapú ital Megittam, finom volt! Megkínáltak a következővel: Pálinka: 40.0% alkohol tartalmú ital Köszönöm, nem kérem! Alkoholt tartalmaz! 35/34 B IT MAN

VÉGE VÉGE 35/35 B IT MAN