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

Hasonló dokumentumok
Programozási nyelvek II.: JAVA, 3. gyakorlat

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

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

Programozási nyelvek Java

é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

Osztályok. 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

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?

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

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

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

Programozási nyelvek II.: JAVA

Programozási nyelvek Java

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

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

Programozási nyelvek II.: JAVA

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

Java és web programozás

Programozási nyelvek Java

Programozási technológia

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

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

Java VII. Polimorfizmus a Java nyelvben

Programozási nyelvek Java

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

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

Java VII. Polimorfizmus a Java nyelvben

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

Programozási nyelvek II.: JAVA

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

Java és web programozás

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven

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

OOP: Java 4.Gy: Java osztályok

Java és web programozás

JAVA PROGRAMOZÁS 3.ELŐADÁS

Java programozási nyelv

Java IX. telkezelés a Java-ban

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

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

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

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

Java IX. telkezelés a Java-ban

Programozás II. labor

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

Programozás I. Első ZH segédlet

OOP: Java 8.Gy: Gyakorlás

Interfészek. PPT 2007/2008 tavasz.

Magas szintű programozási nyelvek 2 Előadás jegyzet

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

Collections. Összetett adatstruktúrák

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

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

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

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

Objektumorientált programozás Java-ban

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

Objektumok inicializálása

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

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

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

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

Generikus Típusok, Kollekciók

Web-technológia PHP-vel

ZH mintapélda. Feladat. Felület

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

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

Programozási nyelvek Java

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

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

Objektumelvű programozás

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

Elemi Alkalmazások Fejlesztése II.

Informatikai Kar. 3. fejezet. alapismeretek. Giachetta Roberto


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

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

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

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

7. K: JAVA alapok Konzultáció

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.

Segédanyag: Java alkalmazások gyakorlat

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

Programozási technológia

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

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

Már megismert fogalmak áttekintése

Bánsághi Anna

Osztályok, objektumok

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

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

Objektumorientált programozás C# nyelven

Szoftvertechnolo gia gyakorlat

Programozási nyelvek Java

Átírás:

Programozási nyelvek II.: JAVA, 11. gyakorlat 2017. november 27-december 1. Programozási nyelvek II.: JAVA, 11. gyakorlat 1 / 54

A 11. gyakorlat tematikája Örökl dés Osztályhierarchia Az Object osztály Láthatósági módosítók A super pszeudováltozó Felüldeniálás Kompozíció Aggregáció Programozási nyelvek II.: JAVA, 11. gyakorlat 2 / 54

A 11. gyakorlat tematikája Interfészek Interfészek deníciója Örökl dés Interfész megvalósítása Az interfész mint típus változódeklarációkban formális paraméterek specikációjában Generikus interfészek Programozási nyelvek II.: JAVA, 11. gyakorlat 3 / 54

Örökl dés Osztályok származtatása és kiterjesztése (formailag: extends, pl. class Circle extends Shape, isa reláció) Osztály kiegészítése új tagokkal (példányváltozókkal, metódusokkal) Szül osztály, gyermekosztály Žs: a szül reexív, tranzitív lezártja Leszármazott: a gyermek reexív, tranzitív lezártja A gyermek a szül tagjaival is rendelkezik (az öröklés révén) + ki is terjesztheti azokat Programozási nyelvek II.: JAVA, 11. gyakorlat 4 / 54

Örökl dés El nyei: Kódújrafelhasználás (a kód redundanciája csökken) Olvashatóság + karbantarthatóság megkönnyítése Örökl dés (mint tervezésszint fogalom, l. kés bb a kompozíció és az aggregáció fogalmát): kódmegosztás, altípusképzés Programozási nyelvek II.: JAVA, 11. gyakorlat 5 / 54

Örökl dés mint altípusképzés (egy parciális rendezés) A gyermek típusa a szül típusának egy altípusa, mert a gyermek rendelkezik a szül összes attribútumával a gyermek minden eseményre reagálni tud, amelyre a szül je is Következmény: minden olyan helyzetben, amikor a szül t használhatjuk, használhatjuk a gyermeket is Programozási nyelvek II.: JAVA, 11. gyakorlat 6 / 54

Osztályhierarchia Az örökl dési reláció gráfként megadva Egyszeres örökl dés esetén ez egy (irányított) erd Javában az Object minden osztály közös se (univerzális sosztály) = az örökl dési gráf egy fa Ha nem adunk meg extendset, akkor implicit extends van Programozási nyelvek II.: JAVA, 11. gyakorlat 7 / 54

Az Object osztály Predenit, a java.langban van deniálva Az Object osztály olyan metódusok denícióit tartalmazza, amelyekkel minden objektumnak rendelkeznie kell, pl. boolean equals(object obj), String tostring(), int hashcode() (http://docs.oracle.com/javase/8/docs/api/java/lang/object.html) Programozási nyelvek II.: JAVA, 11. gyakorlat 8 / 54

Láthatósági módosítók (emlékeztet ) Minden adattagra és minden metódusra pontosan egy hozzáférési kategória vonatkozhat, ezért az alább megadott módosítószavak közül pontosan egyet lehet használni minden egyes tag és metódus esetében. A hozzáférési kategóriák (módosítószavak) a következ k: Félnyilvános (package-private): ha nem írunk semmit azonos csomagban deniált osztályok (objektumai) Nyilvános: public különböz csomagokban deniált osztályok is elérik pl. a f programnak is ilyennek kell lennie, hogy futtatható legyen: public static void main(string[] args) Privát: private csak az osztálydeníción belül érhet el az osztály minden objektuma Védett: protected a félnyilvános kategória kiterjesztése: azonos csomagban lév, plusz a leszármazottak Programozási nyelvek II.: JAVA, 11. gyakorlat 9 / 54

Láthatósági reláció (emlékeztet ) public protected package-private private Módosító osztály csomag leszármazott mindenki public igen igen igen igen protected igen igen igen nem nincs (package-private) igen igen nem nem private igen nem nem nem Programozási nyelvek II.: JAVA, 11. gyakorlat 10 / 54

A super pszeudováltozó A konstruktor nem örökölhet, de meghívható super névvel (a szül osztálybeli konstruktor a legels sorban) Ha nem hívunk meg egy konstruktorban egy másikat, akkor implicit módon egy paraméter nélküli super(); hívás történik Ha a szül nek nincs paraméter nélküli konstruktora, akkor fordítási hibát kapunk A super megel zi az osztálydenícióban szerepl példányváltozó inicializálásokat Egy protected konstruktort newval csak a csomagon belül hívhatunk meg Programozási nyelvek II.: JAVA, 11. gyakorlat 11 / 54

Felüldeniálás A gyermek osztályban bizonyos eseményekre másképp kell / lehet reagálni, mint a szül osztályban ( sosztályban) = felüldeniálás Örökölt metódushoz új deníciót rendelünk A felüldeniált metódus elérése: super.xxx() Programozási nyelvek II.: JAVA, 11. gyakorlat 12 / 54

A felüldeniálás szabályai A szignatúra megegyezik (ha a szignatúra különböz : túlterhelés) A visszatérési típus altípusa a szül ben megadottnak (általában megegyezik vele) A hozzáférési kategória: nem sz kíthet (private félnyilvános protected public) Specikált ellen rzött kiváltható kivételek: nem b víthet k (nem ellen rzött kivételekkel [RuntimeException altípusai] b víthet ) Ha a szignatúra ugyanaz, de az el bbi három feltétel nem teljesül, akkor fordítási hibát kapunk Programozási nyelvek II.: JAVA, 11. gyakorlat 13 / 54

Az örökl dés szemléltetése egy példán...az Alakzatok osztálya... (Point.java, Circle.java, Rectangle.java, Shape.java, ShapeTest.java) Programozási nyelvek II.: JAVA, 11. gyakorlat 14 / 54

Pontok osztálya (Point.java) class Point { public double x ; public double y ; public Point ( double x, double y ) { this. x = x ; this. y = y ; public double getx () { return x ; public double gety () { return y ;... Programozási nyelvek II.: JAVA, 11. gyakorlat 15 / 54

Pontok osztálya (Point.java)... public void setx ( double x ) { this. x = x ; public void sety ( double y ) { this. y = y ; public void move ( double dx, double dy ) { x += dx ; y += dy ;... Programozási nyelvek II.: JAVA, 11. gyakorlat 16 / 54

Pontok osztálya (Point.java)... public double distance ( Point p ) { return distance ( this, p ); public static double distance ( Point p1, Point p2 ) { return Math. sqrt ( Math. pow ( p1. x - p2.x, 2) + Math. pow ( p1. y - p2.y, 2)); public String tostring () { return " ( " + x + "," + y + " ) " ; Programozási nyelvek II.: JAVA, 11. gyakorlat 17 / 54

Alakzatok osztálya (Shape.java) class Shape { private Point center ; protected double area ; protected double circumference ; public Shape ( double x, double y ) { center = new Point (0.0,0.0); center. x = x ; center. y = y ; public Shape () { center = new Point (0.0,0.0);... Programozási nyelvek II.: JAVA, 11. gyakorlat 18 / 54

Alakzatok osztálya (Shape.java)... public Point getcenter () { Point result = new Point (0.0,0.0); result. x = this. center. x ; result. y = this. center. y ; return result ; public void setcenter ( Point center ) { this. center. x = center. x ; this. center. y = center. y ; public double getarea () { return area ;... Programozási nyelvek II.: JAVA, 11. gyakorlat 19 / 54

Alakzatok osztálya (Shape.java)... public double getcircumference () { return circumference ; public void move ( double dx, double dy ) { center. move ( dx, dy ); public void tocenterpoint ( Point p ) { center = p ; public String tostring () { return " kozeppont = ( " + center. x + ", " + center. y + " ) " ; Programozási nyelvek II.: JAVA, 11. gyakorlat 20 / 54

Körök osztálya (Circle.java) class Circle extends Shape { private double radius ; public Circle ( Point p, double radius ) { super ( p.x, p. y ); this. radius = radius ; public Circle ( double x, double y ) { super (x, y ); public Circle () { super ();... Programozási nyelvek II.: JAVA, 11. gyakorlat 21 / 54

Körök osztálya (Circle.java)... public double getradius () { return radius ; public void setradius ( double r ) { if ( r < 0.0) r = 0.0; radius = r ; public void enlarge ( double factor ) { radius *= factor ;... Programozási nyelvek II.: JAVA, 11. gyakorlat 22 / 54

Körök osztálya (Circle.java)... public double getarea () { super. area = Math. PI * radius * radius ; return super. getarea (); public double getcircumference () { super. circumference = 2* Math. PI * radius ; return super. getcircumference (); public boolean lieswithin ( Point p, double delta ) { return Math. abs ( super. getcenter (). distance ( p ) - radius ) < delta ;... Programozási nyelvek II.: JAVA, 11. gyakorlat 23 / 54

Körök osztálya (Circle.java)... public boolean isinside ( Point p ) { return ( Math. pow ( p. x - super. getcenter (). getx (),2) + Math. pow ( p. y - super. getcenter (). gety (),2) <= Math. pow ( radius,2)); public String tostring () { return super. tostring () + ", sugar = " + radius ; Programozási nyelvek II.: JAVA, 11. gyakorlat 24 / 54

Téglalapok osztálya (Rectangle.java) class Rectangle extends Shape { private double length ; private double width ; public Rectangle ( Point p, double length, double width ) { super ( p.x, p. y ); this. length = length ; this. width = width ; public Rectangle ( double x, double y ) { super (x, y ); public Rectangle () { super ();... Programozási nyelvek II.: JAVA, 11. gyakorlat 25 / 54

Téglalapok osztálya (Rectangle.java)... public double getlength () { return length ; public void setlength ( double l ) { if ( l < 0) { l = -l ; length = l ; public double getwidth () { return width ;... Programozási nyelvek II.: JAVA, 11. gyakorlat 26 / 54

Téglalapok osztálya (Rectangle.java)... public void setwidth ( double w ) { if ( w < 0) { w = -w ; width = w ; public double getarea () { super. area = width * length ; return super. getarea ();... Programozási nyelvek II.: JAVA, 11. gyakorlat 27 / 54

Téglalapok osztálya (Rectangle.java)... public double getcircumference () { super. circumference = 2*( width + length ); return super. getcircumference (); public String tostring () { return super. tostring () + ", hosszusag = " + length + ", szelesseg = " + width ; Programozási nyelvek II.: JAVA, 11. gyakorlat 28 / 54

A f program (ShapeTest.java) class ShapeTest { public static void main ( String [] args ) {... Programozási nyelvek II.: JAVA, 11. gyakorlat 29 / 54

Kompozíció Az objektumtípusok közötti kapcsolat (asszociáció) egyik fajtája A két osztály között nem örökl dési kapcsolat van, hanem csupán az egyik osztály felhasználja a másik osztályt a deníciójához, annak szerves része lesz, anélkül nem létezhet Programozási nyelvek II.: JAVA, 11. gyakorlat 30 / 54

Kompozíció class Person { private String name ; /* String " is part of " Person */ private Integer age ; /* Integer " is part of " Person */ public static Person make ( String name, Integer age ) { return (( age > 0 &&! name. isempty ())? new Person ( name, age ) : null ); private Person ( String name, Integer age ) { this. name = new String ( name ); this. age = new Integer ( age );... Programozási nyelvek II.: JAVA, 11. gyakorlat 31 / 54

Kompozíció... public String getname () { return new String ( name ); public Integer getage () { return new Integer ( age ); public String tostring () { return String. format ( " Person { name = %s, age = % d ", name, age ); Programozási nyelvek II.: JAVA, 11. gyakorlat 32 / 54

Aggregáció class Person { private String name ; /* String " is part of " Person */ private Integer age ; /* Integer " is part of " Person */ private ArrayList < Person > friends ; /* Person " has " Persons */ public static Person make ( String name, Integer age ) { return (( age > 0 &&! name. isempty ())? new Person ( name, age ) : null ); private Person ( String name, Integer age ) { this. name = new String ( name ); this. age = new Integer ( age ); this. friends = new ArrayList < Person >();... Programozási nyelvek II.: JAVA, 11. gyakorlat 33 / 54

Aggregáció... public String getname () { return new String ( name ); public Integer getage () { return new Integer ( age ); public void addfriend ( Person friend ) { friends. add ( friend ); public String tostring () { return String. format ( " Person { name = %s, age = %d, friends = % s ", name, age, friends. tostring ()); Programozási nyelvek II.: JAVA, 11. gyakorlat 34 / 54

Interfészek referenciatípus absztrakt osztályok típusspecikáció többszörös örökl dés (altípus reláció) Elnevezési konvenció: nevük gyakran a -ható, -het képz vel végz dik (azaz -able), pl. Comparable, Runnable (Futtatható) Programozási nyelvek II.: JAVA, 11. gyakorlat 35 / 54

Interfészek deníciója metódusdeklarációk (absztract metódusok) public final static adattagok tagosztályok (taginterfészek) default metódusok (Java 8tól) statikus metódusok (Java 8tól) Programozási nyelvek II.: JAVA, 11. gyakorlat 36 / 54

Interfész példa interface Bicycle { void changecadence ( int newvalue ); void changegear ( int newvalue ); void speedup ( int increment ); void applybrakes ( int decrement ); Programozási nyelvek II.: JAVA, 11. gyakorlat 37 / 54

Az interfészt megvalósító osztály példa class BMXBicycle implements Bicycle { int cadence = 0; int speed = 0; int gear = 1; public void changecadence ( int newvalue ) { cadence = newvalue ; public void changegear ( int newvalue ) { gear = newvalue ; public void speedup ( int increment ) { speed = speed + increment ;... Programozási nyelvek II.: JAVA, 11. gyakorlat 38 / 54

Az interfészt megvalósító osztály példa... public void applybrakes ( int decrement ) { speed = speed - decrement ; public void printstates () { System. out. println ( " cadence : " + cadence + " speed : " + speed + " gear : " + gear ); Programozási nyelvek II.: JAVA, 11. gyakorlat 39 / 54

Interfészt megvalósító osztály Az interfészek nem példányosíthatók, el bb meg kell ket valósítani Az osztálydeklarációban szerepel az implements kulcsszó, amely után több interfész felsorolható, amelyeket az osztály megvalósít A metódusok megvalósítása public kell, hogy legyen A konstansok specikációját nem kell megismételni Programozási nyelvek II.: JAVA, 11. gyakorlat 40 / 54

Örökl dés Interfészek is kiterjeszthetik egymást: extends után azoknak az interfészeknek a listája, amelyekt l az adott interfész örököl Többszörös örökl dés lehetséges Az osztályok megvalósíthatnak interfészeket ugyanazt az interfészt többen is ugyanaz az osztály többet is Programozási nyelvek II.: JAVA, 11. gyakorlat 41 / 54

Relációk a referenciatípusokon Örökl dés osztályok között fa (egyszeres örökl dés, közös gyökér) kódöröklés Örökl dés interfészek között körmentes gráf (többszörös örökl dés, nincs közös gyökér) specikáció öröklése Megvalósítás osztályok és interfészek között kapcsolat a két gráf között, továbbra is körmentes specikáció öröklése Programozási nyelvek II.: JAVA, 11. gyakorlat 42 / 54

Interfész megvalósítása Pl. ha az I egy interfész, J az I egyik se, az A osztály megvalósítja It, B leszármazottja az Anak, akkor B megvalósítja Jt. Programozási nyelvek II.: JAVA, 11. gyakorlat 43 / 54

Az interfész mint típus használható változódeklarációkban használható formális paraméterek specikációjában Programozási nyelvek II.: JAVA, 11. gyakorlat 44 / 54

Az interfész mint típus változódeklarációkban egy interfész típusú változó: referencia, amely olyan objektumra mutathat, amely osztálya (közvetlenül vagy közvetve) megvalósítja az interfészt I v = new A (); J w = new B (); Programozási nyelvek II.: JAVA, 11. gyakorlat 45 / 54

Az interfész mint típus formális paraméterek specikációjában egy interfész típusú formális paraméter: megadható egy olyan aktuális paraméter, amely egy objektum, és amely osztálya (közvetlenül vagy közvetve) megvalósítja az interfészt void m ( I p ){... m ( new A ()); void n ( J p ){... n ( new B ()); Programozási nyelvek II.: JAVA, 11. gyakorlat 46 / 54

Az interfész mint típus formális paraméterek specikációjában Ha egy változó (vagy formális paraméter) deklarált típusa (azaz statikus típusa) egy interfész, akkor dinamikus típusa egy azt megvalósító osztály a változóra olyan m veleteket használhatunk, amelyek az interfészben (közvetlenül vagy közvetve) deniálva vannak Programozási nyelvek II.: JAVA, 11. gyakorlat 47 / 54

Generikus interfészek Típussal paraméterezhet interfészek public interface Pair <K, V > { public K getkey (); public V getvalue (); Programozási nyelvek II.: JAVA, 11. gyakorlat 48 / 54

Generikus interfészek public class OrderedPair <K, V > implements Pair <K, V > { private K key ; private V value ; public OrderedPair ( K key, V value ) { this. key = key ; this. value = value ; public K getkey () { return key ; public V getvalue () { return value ; Programozási nyelvek II.: JAVA, 11. gyakorlat 49 / 54

Generikus interfészek Pair < String, Integer > p1 = new OrderedPair < String, Integer >( " Even ", 8); Pair < String, String > p2 = new OrderedPair < String, String >( " hello ", " world " ); Programozási nyelvek II.: JAVA, 11. gyakorlat 50 / 54

Programozási nyelvek II.: JAVA, 11. gyakorlat 51 / 54

SzínesPont és SzínesKör osztály (ColouredPoint.java, ColouredCircle.java, ColouredShapeTest.java Készítsük el a SzínesPont osztályt a Pont osztály leszármazottjaként. Új tulajdonság: szín. Új m veletek: szín beállítása és lekérdezése. A szín attribútum legyen privát. Készítsük el a SzínesKör osztályt a Kör osztály leszármazottjaként. Új m veletei: a szín beállítása és lekérdezése. A színes körök színét a középpontjuk színe határozza meg, amely nem közönséges pont, hanem színes pont. Készítsünk f programot e két osztály tesztelésére! Oldjuk meg a feladatot csomagok nélkül és csomagokkal is (rakjuk a Kör és az Alakzat osztályt a geo, a SzínesKör osztályt geo.coloured, a Pont osztályt a utils.basics, a SzínesPont osztályt a utils.basics.coloured, a f programot pedig a main csomagba)! Programozási nyelvek II.: JAVA, 11. gyakorlat 52 / 54

Stack<T> generikus interfész (Stack.java) Készítsünk egy Stack<T> generikus interfészt, amely egy verem m veleteit deniálja (elem elhelyezése a verem tetején, elem kivétele a verem tetejér l, legfels elem lekérdezése, iterátor létrehozása, méret lekérdezése, kivételek dobása hibák esetén)! Programozási nyelvek II.: JAVA, 11. gyakorlat 53 / 54

ArrayStack<T>, LinkedStack<T> (ArrayStack.java, LinkedStack.java, StackTest.java) Valósítsuk meg az ArrayStack<T> és a LinkedStack<T> osztályt, amelyek a Stack<T> interfész két különböz implementációját adják meg! Az ArrayStack<T> osztály egy tömbbel, a LinkedStack<T> osztály pedig egy láncolt listával ábrázolja a vermet. Készítsünk f programot, amely teszteli az egyes osztályokban deniált m veleteket! Programozási nyelvek II.: JAVA, 11. gyakorlat 54 / 54