Programozási nyelvek II.: JAVA

Hasonló dokumentumok
Programozási nyelvek II.: JAVA

Osztályok. 4. gyakorlat

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

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

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

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

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

Java és web programozás

Programozási nyelvek Java

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

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

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

Programozási nyelvek Java

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

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

Programozási nyelvek Java

OOP: Java 8.Gy: Gyakorlás

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

III. OOP (objektumok, osztályok)

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

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

Segédanyag: Java alkalmazások gyakorlat

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

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

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

C++ programozási nyelv Konstruktorok-destruktorok

és az instanceof operátor

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

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 VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

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

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

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

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

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.

Programozási nyelvek II.: JAVA

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

OOP: Java 4.Gy: Java osztályok

Objektumorientált programozás C# nyelven

Bánsághi Anna

4. Gy: JAVA osztályok

Elemi Alkalmazások Fejlesztése II.

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

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

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

Osztály és objektum fogalma

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

O B J E K T U M O R I E N TÁ LT P R O G R A M O Z Á S P É L D ATÁ R

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

7. K: JAVA alapok Konzultáció

JAVA PROGRAMOZÁS 3.ELŐADÁS

Java VII. Polimorfizmus a Java nyelvben

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

3. Osztályok II. Programozás II

Java és web programozás

Programozási nyelvek II. JAVA

Programozási nyelvek II.: JAVA

Java és web programozá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?

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

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

Szoftvertechnológia alapjai Java előadások

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

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

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Web-technológia PHP-vel

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

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

Java VII. Polimorfizmus a Java nyelvben

Bevezetés a Python programozási nyelvbe

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

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

Objektumok inicializálása

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

BME MOGI Gépészeti informatika 7.

Java II. I A Java programozási nyelv alapelemei

Programozási nyelvek Java

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

Programozás I. Első ZH segédlet

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

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Programozási nyelvek JAVA EA+GY 1. gyakolat

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.

Objektumorientált programozás C# nyelven

BME MOGI Gépészeti informatika 8.

Kalapácsvetés 2016 szöveges

C++ programozási nyelv

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

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

Programozási technológia

Szoftvertechnolo gia gyakorlat

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

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

Programozási nyelvek Java

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

Java gyakorlat feladatai e s megolda sai ( )

Átírás:

Programozási nyelvek II.: JAVA 6. gyakorlat 2017. október 16-20. 6. gyakorlat Programozási nyelvek II.: JAVA 1 / 1

Az 6. gyakorlat tematikája Túlterhelés - összefoglalás statikus adattagok és metódusok - összefoglalás default konstruktor -összefoglalás Filefeldolgozás - példa Enum 6. gyakorlat Programozási nyelvek II.: JAVA 2 / 1

Túlterhelés - overloading egy osztályban több művelet ugyanazzal a névvel, de különböző paraméterezéssel különböző számú formális paraméter, pl. ArrayList: void add( elem ) void add( elem, index ) különböző deklarált típusú (különböző "statikus" típusú) paraméterek 6. gyakorlat Programozási nyelvek II.: JAVA 3 / 1

Egy sokszor látott példa System. out. println ( int ); System. out. println ( double ); System. out. println ( String ); 6. gyakorlat Programozási nyelvek II.: JAVA 4 / 1

Túlterhelés - Konstruktor túlterhelése public class Point { private int x, y; public Point ( int x, int y ){ this.x = x; this.y = y; public Point (){ x = 0; y = 0; // amugy is 0 public class Point { private int x, y; public Point ( int x, int y ){ this.x = x; this.y = y; public Point (){ this (0,0); 6. gyakorlat Programozási nyelvek II.: JAVA 5 / 1

Default konstruktor 1 paraméter nélküli 2 automatikusan generált - amennyiben nincs konstruktor megadva 3 inicializálja a példányváltozókat alapértelmezés, illetve a törzsben megadott értékek szerint 4 alapértelmezett értékek: 1 Primítiv típusoknál 0 / u0000 / false 2 Referencia: null 6. gyakorlat Programozási nyelvek II.: JAVA 6 / 1

Default construktor példa 1. public class Circle { private int x, y; private double radius ; public static void main ( String [] args ){ Circle c = new Circle (); // x:0; y:0, radius: 0.0 public class Circle { private int x = 0, y = 0; private double radius = 1.0; // inicialiozalo kifejezes public static void main ( String [] args ){ Circle c = new Circle (); // x:0; y:0, radius: 1.0 6. gyakorlat Programozási nyelvek II.: JAVA 7 / 1

Default konstruktor 1 Addig léteznek, amíg a programozó nem definiál saját kosntruktort. 2 Az alábbi kód már nem fordul le: public class Circle { private int x, y; private double radius ; public Circle ( int x,int, int r){ /*... */ public static void main ( String [] args ){ //compiler error: //constructor Circle in class Circle cannot be applied to given types; Circle c = new Circle (); 6. gyakorlat Programozási nyelvek II.: JAVA 8 / 1

Statikus tagok 1 Más néven osztályszintű tagok, azaz az egész osztályhoz, nem annak egy adott példányához tartoznak; 2 A statikus változók az osztály betöltésekor(első használatakor) jönnek létre és inicializálódnak 3 A statikus metódusokra ezekből következően vonatkozik két egyszerű szabály: 4 1 Csak statikus adattagokra hivatkozhatnak 2 Csak statikus metódusokra hivatkozhatnak 6. gyakorlat Programozási nyelvek II.: JAVA 9 / 1

Példa statikus adattagra public class Circle { public static int counter = 0; private int x, y; private double radius ; public Circle (){ counter ++; /*... */ public static void main ( String [] args ){ System. out. println ( Circle. counter ); Circle c1 = new Circle (); System. out. println ( Circle. counter ); Circle c2 = new Circle (); System. out. println ( Circle. counter ); Kimenet: 0 1 2 6. gyakorlat Programozási nyelvek II.: JAVA 10 / 1

Példas statikus metódusokra public class Circle { public static int counter = 0; private int x, y; private double radius ; private static void incrementcounter (){ counter ++; public Circle ( String sx, String sy, String sradius ){ incrementcounter (); x = Integer. parseint (sx ); public static void main ( String [] args ){ incrementcounter (); System. out. println ( Circle. counter ); Circle c1 = new Circle ("1","2","3"); System. out. println ( Circle. counter ); Kimenet: 1 2 6. gyakorlat Programozási nyelvek II.: JAVA 11 / 1

Statikus tagok - némi konvenció 1 konvenció szerint a statikus tagokhoz a jobb olvashatóság érdekében az osztály nevével, nem az objektumreferencián keresztül hivatkozunk( bár ezt a nyelv megengedi..) public class Main { public static void main ( String [] args ){ Circle. incrementcounter (); // -> OK System. out. println ( Circle. counter ); //->OK Circle c1 = new Circle ("1","2","3"); c1. incrementcounter (); // ->NEM OK!! System. out. println (c1. counter ); // ->NEM OK!! class Circle { public static int counter = 0; /*... */ public static void incrementcounter (){ counter ++; 6. gyakorlat Programozási nyelvek II.: JAVA 12 / 1

Enum - Felsorolási típus 1 A java enum típus egy speciális típus ami lehetővé teszi olyan változók használatát, melyek csak valamely előre konstans definiált értéket vehetnek fel 2 Az egyik általánosan használt példa a hét napjait reprezentáló osztály: 3 valueof(string) - statikus metódus, a paraméterként kapott névvel egyező enumobjektummal tér vissza (ha nincs: null) public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY //... Day d1 = Day. MONDAY ; Day d2 = Day. valueof (" MONDAY "); 4 Általánosságban elmondható, hogy tanácsos minden olyan esetben enumokat használni, amikor konstansok egy meghatározott halmazával dolgozunk, vagyis ahol egy változó által felvehető minden lehetséges értéket ismerünk. 6. gyakorlat Programozási nyelvek II.: JAVA 13 / 1

Enum - Példa használatra 1. public class EnumTest { Day day ; public EnumTest ( Day day ) { this. day = day ; public void tellitlikeitis () { switch ( day ) { case MONDAY : System. out. println (" Mondays are bad."); break ; case FRIDAY : System. out. println (" Fridays are better."); break ; case SATURDAY : case SUNDAY : System. out. println (" Weekends are best."); break ; default : System. out. println (" Midweek days are so -so."); break ; //... 6. gyakorlat Programozási nyelvek II.: JAVA 14 / 1

Enum - Példa használatra 2. //... public static void main ( String [] args ) { EnumTest firstday = new EnumTest ( Day. MONDAY ); firstday. tellitlikeitis (); EnumTest thirdday = new EnumTest ( Day. WEDNESDAY ); thirdday. tellitlikeitis (); EnumTest fifthday = new EnumTest ( Day. FRIDAY ); fifthday. tellitlikeitis (); EnumTest sixthday = new EnumTest ( Day. SATURDAY ); sixthday. tellitlikeitis (); EnumTest seventhday = new EnumTest ( Day. SUNDAY ); seventhday. tellitlikeitis (); 6. gyakorlat Programozási nyelvek II.: JAVA 15 / 1

Enum mint osztály - kicsit haladóbb példa 1 A Javában az enumok speciális osztályt jelenítenek meg, és mint Java osztályok tartalmazhatnak metódusokat és adattagokat is. 2 Emellett az enumnal definiált osztályokhoz a fordító egy sor metódust generál nekünk, pl: values() statikus metódus, mely visszaadja az összes enumértéket, vagy ordinal() amely az adott enum érték az osztálydefinicióban való helyzetét adja meg 3 Hogy miért is jók nekünk ezek, ezt illusztrálnánk a következő bolygós példával. 4 Szeretnénk létrehozni egy bolygókat felsoroló típust, mely tartalmaz bizonyos, az adott bolygót jellemző értékeket, mint például bolygó tömege és sugara, valamint ezen alaptulajdonságokból származó lekérdezéseket írni, mint hogy mennyi a gravitáció a planéta felületén. Ahhoz hogy ezt ki tudjuk számolni szükségünk lesz az általános gravitációs állandóra is (ez minden bolygó esetén ugyanaz) Végül az egészből szeretnénk írni egy tesztprogramot, mely kiszámolja valakinek a súlyát az összes bolygón. 6. gyakorlat Programozási nyelvek II.: JAVA 16 / 1

Enum mint osztály - kicsit haladóbb példa 1 A vonatkozó információk eltárolására létrehozhatunk példányváltozókat, illetve egy osztályváltozót a gravitációs állandónak. 2 Ezen példányváltozók értékei általában az adott objektum tulajdonságait írják le, ezért nem szeretnénk változtatni őket, és ezeket a létrehozás pillanatában tudjuk, így érdemes lehet konstruktorral beállítani őket: 3 Hogy miért is jók nekünk ezek, ezt illusztrálnánk a következő bolygós példával. 4 Szeretnénk létrehozni egy bolygókat felsoroló típust, mely tartalmaz bizonyos, az adott bolygó jellemző értékeket, mint a bolygó tömege és sugara, valamint ezen alaptulajdonságokból származó lekérdezéseket írni, mint hogy mennyi a gravitáció a planéta felületén. Végül az egészből szeretnénk írni egy tesztprogramot, mely kiszámolja valakinek a súlyát az összes bolygón. 6. gyakorlat Programozási nyelvek II.: JAVA 17 / 1

Enum mint osztály - kicsit haladóbb példa 1 A vonatkozó információk eltárolására létrehozhatunk példányváltozókat, illetve egy osztályváltozót a gravitációs állandónak. 2 Ezen példányváltozók értékei általában az adott objektum tulajdonságait írják le, ezért nem szeretnénk változtatni őket, és ezeket a létrehozás pillanatában tudjuk, így érdemes lehet konstruktorral beállítani őket: public enum Planet { VENUS (4.869 e+24, 6.0518 e6), EARTH (5.976 e+24, 6.37814 e6), //... private final double mass ; // in kilograms private final double radius ; // in meters Planet ( double mass, double radius ) { this. mass = mass ; this. radius = radius ; public static final double G = 6.67300 E -11; double surfacegravity () { return G * mass / ( radius * radius ); //... 6. gyakorlat Programozási nyelvek II.: JAVA 18 / 1

Enum mint osztály - kicsit haladóbb példa 1 a main metódus a values() és ordinal() használatával //.. double surfaceweight ( double othermass ) { return othermass * surfacegravity (); public static void main ( String [] args ) { if ( args. length!= 1) { System. exit ( -1); double earthweight = Double. parsedouble ( args [0]); double mass = earthweight / EARTH. surfacegravity (); for ( Planet p : Planet. values ()) System. out. printf (" Your weight on %s ( the %d th planet ) is %f%n", p, p. ordinal ()+1, p. surfaceweight ( mass )); 6. gyakorlat Programozási nyelvek II.: JAVA 19 / 1

6. gyakorlat Programozási nyelvek II.: JAVA 20 / 1

Feladatok Hibakeresés Main.java, Finder.java 1 Keressük meg a hibákat a következő programban! LETÖLT 2 A Finder osztály néhány fájlműveletet tartalmaz: 1 a konstruktor egy fájlnevet vár,amellyel pédányosít egy PrintWriter objektumot melynek segítségével kiírja az eredményeit 2 a findtext túlterhelt metódusok egy paraméterként adott szöveget keresnek rekurzívan, a szintén paraméterként kapot nevű fájlban(rekurzív - ha könyvtárral találkozik belenéz az abban található fájlokba) 3 a printfile túlterhelt metódusok egy paraméterként adott File tartalmát írja a PrintWriter objektumba, szintén rekurzívan.(rekurzív - ha könyvtárral találkozik belenéz az abban található fájlokba) 3 A Main.java példányosítja a Finder osztályt, majd a paraméterként kapott fájl/könyvtár tartalmát átírja egy output.txt állományba első lépésben, másodikban pedig végignézi azt hogy a standard inputról beolvasott szöveg megtalálható-e benne. 6. gyakorlat Programozási nyelvek II.: JAVA 21 / 1

Feladat 1 (Color.java) Készítsünk egy egyszerű Color felsoroló típust, mely a következő értékeket tárolhatja: RED,GREEN,BLUE. 6. gyakorlat Programozási nyelvek II.: JAVA 22 / 1

Feladat 2 (Auto.java) 1 Írjunk egy Auto osztályt, mely a következő tagokat tárolja objektumonként: 1 rendszám (String) 2 szín (Color) 3 maximális sebesség (int) 2 Az osztályban legyen számláló, mely tárolja, hogy hány objektumot hoztunk eddig létre. 3 Írjunk az osztályhoz egy kunstruktort, mely ezt a három értéket várja paraméterként, és a megfelelőket beállítja az új objektumon. 4 Írjunk egy paraméter nélküli konstruktort is mely AAA-000, BLUE és 120 értékekkel hoz létre objektumot 5 Írjunk egy osztályszintű összehasonlító metódust, mely két autó objektumot vár, is igazzal tért vissza, ha az első gyorsabb mint a második 6. gyakorlat Programozási nyelvek II.: JAVA 23 / 1

Feladat 3 (Main.java) 1 Helyezzük a Color osztályt az auto.utils csomagba, az Autót pedig az auto csomagba! 2 Hozzunk létre egy input.txt fájlt, melyben autók adatai vannak soronként megadva, vesszővel elválasztva. Pl: "ABC-123","RED","100" 3 Írjunk egy Main osztályt (a csomogokon kívül), amely a tesztprogramunkat fogja tartalmazni! 4 A Main osztály main metódusában olvassuk be az input fájl sorait, a létrehozott objektumokat perdig tároljuk el egy ArrayListbe! 5 segítség: használhatjuk a java.util.scannert, illetve az Enum.valueOf(String) metódust 6. gyakorlat Programozási nyelvek II.: JAVA 24 / 1