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

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

4. Gy: JAVA osztályok

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

OOP: Java 8.Gy: Gyakorlás

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

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

7. K: JAVA alapok Konzultáció

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

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

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

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

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

Programozási technológia

OOP: Java 4.Gy: Java osztályok

Programozás I. Első ZH segédlet

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

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

é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

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

Osztályok. 4. gyakorlat

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

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

Java IX. telkezelés a Java-ban

BME MOGI Gépészeti informatika 8.

Java IX. telkezelés a Java-ban

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

Szoftvertechnolo gia gyakorlat

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?

Programozási nyelvek Java

Objektumorientált programozás C# nyelven

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

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

Öröklés és Polimorfizmus

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

OOP: Java 1.Gy: Java alapok

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

OOP: Java 1.Gy: Java alapok

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

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

Programozási nyelvek Java

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

Java Programozás 11. Ea: MVC modell

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

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

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.

Java és web programozás

Adatszerkezetek és algoritmusok

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

Kalapácsvetés 2016 szöveges

Java és web programozás

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

Elemi Alkalmazások Fejlesztése II.

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Programozási nyelvek II.: JAVA

Java gyakorlat feladatai e s megolda sai ( )

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

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

OOP #14 (referencia-elv)

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

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

Java és web programozás

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

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

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

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

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

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA

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

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

Programozási nyelvek Java

Eseménykezelés - Lottó játék

Programozási nyelvek Java

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

Java VII. Polimorfizmus a Java nyelvben

Vizuális programozás Komplex számok

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

3. Osztályok II. Programozás II

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

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

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

Programozási nyelvek Java

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozási nyelvek Java

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

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

Segédanyag: Java alkalmazások gyakorlat

Származtatási mechanizmus a C++ nyelvben

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

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

Programozás I. Objektum-orientált programozás Stringműveletek V 1.0 ÓE-NIK-AII,

Java VII. Polimorfizmus a Java nyelvben

JAVA PROGRAMOZÁS 3.ELŐADÁS

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

Segédanyag: Java alkalmazások gyakorlat

BME MOGI Gépészeti informatika 4.

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Bevezetés a Python programozási nyelvbe

Átírás:

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

Feladatok Órai egyéni feladat (T: kb. 30 perc) Készítsen egy osztályt (Ember), melyben emberek nevét, magasságát és súlyát tudja tárolni. Legyen konstruktora, legyenek az adattagokat kezelő metódusai. Definiálja felül a tostring() metódusát, mely így az ember nevét, magasságát, súlyát adja vissza. Készítsen egy metódust (Magasabb), mely két Ember-t kap paraméterül, és visszaadja a magasabb Ember-t. Készítsen egy metódust (Konnyebb), mely kap két súlyt (számadatot), és ha az első kisebb, igaz értéket ad vissza, egyébként hamisat. Készítsen egy futtatható osztályt (Emberek), melyben beolvassa N darab ember adatait. - Írja ki a legmagasabb ember adatait. - Írja ki a legnehezebb ember adatait. 30/2 B IT MAN

Ember osztály Ember.java public class Ember { private String nev; private int magassag; private int suly; public Ember(String nev, int magassag, int suly){ this.nev = nev; this.magassag = magassag; this.suly = suly; public String tostring() { return nev + "-" + magassag + "-" + suly; 30/3 B IT MAN

Ember osztály Ember.java public int getsuly(){ return suly; public static Ember Magasabb(Ember a, Ember b){ if (a.magassag > b.magassag) return a; else return b; public static boolean Konnyebb (int a, int b){ return a < b; 30/4 B IT MAN

Emberek osztály Emberek.java import java.util.scanner; public class Emberek { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Emberek száma: "); String s1 = sc.nextline(); int N = Integer.parseInt(s1); Ember[] E = new Ember[N]; String nev, s2; int suly, magassag; for (int i=0; i<n; i++) { System.out.println(i+". ember neve: "); nev = sc.nextline(); System.out.println(i+". ember magassága: "); s1 = sc.nextline(); System.out.println(i+". ember súlya: "); s2 = sc.nextline(); 30/5 B IT MAN

Emberek osztály Emberek.java magassag = Integer.parseInt(s1); suly = Integer.parseInt(s2); E[i] = new Ember(nev, magassag, suly); Ember legmagasabb = E[0]; for (int i = 1; i < N; i++) legmagasabb = Ember.Magasabb(E[i],legmagasabb ); System.out.println("A legmagasabb: " + legmagasabb.tostring()); Ember legnehezebb = E[0]; for (int i = 1; i < N; i++) if (!Ember.Konnyebb(E[i].getSuly(),legnehezebb.getSuly())) legnehezebb = E[i]; System.out.println("A legnehezebb: " + legnehezebb.tostring()); 30/6 B IT MAN

Feladatok 1. Készítsen java nyelvű osztályt (arus.aru) egy áru modellezésére - legyen név, nettó ár (egész), áfakulcs (egész, százalék) adata - legyen konstruktora, amely mindhárom adata megadásával inicializálja az adatokat - legyen metódusa, amely visszaadja a bruttóárat (egész, kerekítve) - legyen metódusa, amely egy stringbe összefűzve vissza adja a nevet és a bruttó árat. (Definiálja felül az Object osztálybeli tostring metódust!) - legyen metódusa, amely paraméterben megadott százalék értékkel növeli a nettó árat. - legyen metódusa, amely 1 ad ha az aru drágább (buttóár), mint egy paraméterben kapott, 0-t ad, ha egyforma árúak, és -1-t ad ha a paraméterben kapott a drágább. 30/7 B IT MAN

arus.aru osztály, adattagok: név, nettoar, afakulcs Konstruktor: 3 értékkel inicializál Metódus: tostring() Aru.java package arus; public class Aru { private String nev; private int nettoar; private int afakulcs; public Aru(String nev, int nettoar, int afakulcs) { this.nev = nev; this.nettoar = nettoar; this.afakulcs = afakulcs; @Override public String tostring() { return nev + ", bruttó ár: " + bruttoar(); 30/8 B IT MAN

Metódus: aratemel(szazalék) Metódus: hasonlit(másik Aru) Metódus: bruttoar() Aru.java public void aratemel(int szazalek) { this.nettoar += Math.round(this.nettoAr * szazalek/100.0); public int hasonlit(aru masik) { int ar = this.bruttoar(); int masikar = masik.bruttoar(); if (ar > masikar) return 1; if (masikar > ar) return -1; return 0; public int bruttoar() { return (int)math.round(this.nettoar * (1 + this.afakulcs/100.0)); 30/9 B IT MAN

Feladatok Készítsen egy arus.kenyer osztályt, amely az Aru leszármazottja - legyen mennyiség (valós, pl. 0.75) adata - legyen konstruktura, amely négy paraméterben kapott adattal inicializálja az objektumot - legyen felüldefiniálva a String-et visszaadó metódusa úgy, hogy az ősbelihez képest fűzze még hozzá az egységárat (bruttóár/mennyiség). - legyen metódusa, amely visszaadja a mennyiséget. - legyen osztályszintű metódusa, amely igazat ad, ha paraméterként kapott két Kenyer közül az elsőnek nagyobb az egységára. 30/10 B IT MAN

Öröklődés Eclipse-ben 30/11 B IT MAN

Aru arus.kenyer osztály, adattagok: mennyiség Konstruktor: 4 értékkel inicializál Metódus: tostring(), getmennyiség(), elsőnagyobbe(kenyér A,B) package arus; public class Kenyer extends Aru { private double mennyiseg; public Kenyer(String nev, int nettoar, int afakulcs, double mennyiseg) { super(nev, nettoar, afakulcs); this.mennyiseg = mennyiseg; @Override public String tostring() { return super.tostring() + ", egységár: " + egysegar(); public double getmennyiseg() { return mennyiseg; public static boolean elsonagyobbe(kenyer a, Kenyer b) { return a.egysegar() > b.egysegar(); private double egysegar() { return this.bruttoar()/mennyiseg; 30/12 B IT MAN Kenyer.java

Feladatok Készítsen egy arus.futo.aruproba futtatható osztályt, amelyben létrehoz egy Aru és egy Kenyer objektumot tetszőleges adatokkal. Kiírja az adataikat, kiírja a drágábbat. Hozzon létre még egy Kenyer típusú objektumot, de a referenciáját egy Aru típusú változóba tárolja (neve: aru2). Próbálja ki, hogy az "aru2" referenciával, mit ad a String-et visszaadó metódusa, megtudja-e hívni ezzen a referencián keresztül a mennyiséget visszaadó metódusát. Hozzon létre még egy Kenyer példányt (neve: keny2) és az "aru2" referenciával hivatkozott másik Kenyerrel összehasonlítva a nagyobb egységárút kell kiírni (konvertálásra lesz szükség). 30/13 B IT MAN

Osztály importálása Eclipse-ben Source \ Organize Imports 30/14 B IT MAN

arus.futo.aruproba osztály, Aru és Kenyér példányosítás, drágábbik kiírása package arus.futo; import arus.aru; import arus.kenyer; public class AruProba { public static void main(string[] args) { Aru aru1 = new Aru("Naptár", 140, 27); System.out.println(aru1.toString()); Kenyer k1 = new Kenyer("Miskolci fehér", 150, 10, 0.75); System.out.println(k1.toString()); Szam.java System.out.print("A drágább: "); if (aru1.hasonlit(k1) == 1) System.out.println(aru1.toString()); else System.out.println(k1.toString()); 30/15 B IT MAN

arus.futo.aruproba osztály, Aru és Kenyér példányosítás, drágábbik kiírása Konzol Naptár, bruttó ár: 178 Miskolci fehér, bruttó ár: 165, egységár: 220.0 A drágább: Naptár, bruttó ár: 178 30/16 B IT MAN

arus.futo.aruproba osztály, Aru és Kenyér példányosítás, Kenyér példányosítás Aru referenciával, Kenyér példányosítás, Nagyobb egységárú kenyér kiírása Szam.java package arus.futo; import arus.aru; import arus.kenyer; public class AruProba { public static void main(string[] args) { Aru aru1 = new Aru("Naptár", 140, 27); Kenyer k1 = new Kenyer("Miskolci fehér", 150, 10, 0.75); Aru aru2 = new Kenyer("Barna", 180, 10, 0.5); System.out.println(aru2.toString()); //System.out.println(aru2.getMennyiseg()); Kenyer k2 = new Kenyer("Rozsos", 200, 10, 0.5); System.out.println(k2.toString()); 30/17 B IT MAN

arus.futo.aruproba osztály, Aru és Kenyér példányosítás, Kenyér példányosítás Aru referenciával, Kenyér példányosítás, Nagyobb egységárú kenyér kiírása Konzol Naptár, bruttó ár: 178 Miskolci fehér, bruttó ár: 165, egységár: 220.0 Barna, bruttó ár: 198, egységár: 396.0 Rozsos, bruttó ár: 220, egységár: 440.0 30/18 B IT MAN

arus.futo.aruproba osztály, Aru és Kenyér példányosítás, Kenyér példányosítás Aru referenciával, Kenyér példányosítás, Nagyobb egységárú kenyér kiírása package arus.futo; import arus.aru; import arus.kenyer; public class AruProba { public static void main(string[] args) { Aru aru1 = new Aru("Naptár", 140, 27); Kenyer k1 = new Kenyer("Miskolci fehér", 150, 10, 0.75); Szam.java Aru aru2 = new Kenyer("Barna", 180, 10, 0.5); Kenyer k2 = new Kenyer("Rozsos", 200, 10, 0.5); Kenyer nagyobbearu; if (Kenyer.elsoNagyobbE(k2, (Kenyer)aru2)) nagyobbearu = k2; else nagyobbearu = (Kenyer)aru2; System.out.println("A nagyobb egységárú kenyér: " + nagyobbearu.tostring()); 30/19 B IT MAN

arus.futo.aruproba osztály, Aru és Kenyér példányosítás, Kenyér példányosítás Aru referenciával, Kenyér példányosítás, Nagyobb egységárú kenyér kiírása Konzol Naptár, bruttó ár: 178 Miskolci fehér, bruttó ár: 165, egységár: 220.0 Barna, bruttó ár: 198, egységár: 396.0 Rozsos, bruttó ár: 220, egységár: 440.0 A nagyobb egységárú kenyér: Rozsos, bruttó ár: 220, egységár: 440.0 30/20 B IT MAN

Feladatok 2. Készítsen java nyelvű osztályt ujkonyves.konyvstilussal néven a korábbi konyves.alap.konyv osztály kiterjesztésére. - legyen még stílus (szöveg) adata - legyen konstruktora, amely minden adatát paraméterben kapott adatokkal inicializálja. - legyen metódusa, amely visszaadja a stílust - legyen metódusa, amely felüldefiniálva a String-et visszadó metódus, úgy hogy az ősbeli Stringhez még fűzze hozzá a stílust is. Készítsen egy futtatható osztályt az ujkonyves.futo csomagba, amelyben beolvas n darab konyvet egy tömbbe és kiírja a legkisebb oldalárút valamint a "Scifi" stílusú könyveket. (A String-ek egyezésének vizsgálatára használja a String osztály következő metódusát: boolean equalsignorecase(string anotherstring) Compares this String to another String, ignoring case considerations.) 30/21 B IT MAN

Konyv osztály, konyves.alap csomagba, adattagok: író, cím, oldalszám, ár Alap konstruktor Metódus: tostring könyv adatok Konyv.java package konyves.alap; public class Konyv { private String iro; private String cim; private int oldal; private int ar; public Konyv(String iro, String cim, int oldal, int ar) { this.iro = iro; this.cim = cim; this.oldal = oldal; this.ar = ar; @Override public String tostring() { return "Konyv [iro="+iro+", cim="+cim+", oldal="+ oldal+", ar="+ar+"]"; 30/22 B IT MAN

Metódus: dragabbe Metódus: oldalar Metódus: hosszabb Konyv.java public boolean dragabb(konyv masik) { return this.oldalar() > masik.oldalar(); private double oldalar() { return (double)this.ar/this.oldal; public static Konyv hosszabb(konyv a, Konyv b) { if (a.oldal > b.oldal) return a; return b; 30/23 B IT MAN

KonyvStilussal létrehozása Eclipse-ben 30/24 B IT MAN

Konyv ukjonyves.konyvstilussal osztály, stilus adattag, Alap konstruktor, Metódusok: getstílus(), tostring() KonyvStilussal.java package ujkonyves; import konyves.alap.konyv; public class KonyvStilussal extends Konyv { private String stilus; public KonyvStilussal(String iro, String cim, int oldal, int ar, String stilus) { super(iro, cim, oldal, ar); this.stilus = stilus; public String getstilus() { return stilus; @Override public String tostring() { return super.tostring() + ", Stílusa=" + this.stilus; 30/25 B IT MAN

KonyvesProba futtatható osztály a ujkonyves.futo nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a Scifi könyveket (equalsignorecase-t használva) KonyvesProba.java package ujkonyves.futo; import ujkonyves.konyvstilussal; import java.util.scanner; public class KonyvesProba { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Könyvek száma: "); String s1 = sc.nextline(); int N = Integer.parseInt(s1); KonyvStilussal[] K = new KonyvStilussal[N]; String iro, cim, s2, stil; int oldal, ar; 30/26 B IT MAN

KonyvesProba futtatható osztály a ujkonyves.futo nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a Scifi könyveket (equalsignorecase-t használva) KonyvesProba.java for (int i=0; i<n; i++) { System.out.println(i+". könyv írójának neve: "); iro = sc.nextline(); System.out.println(i+". könyv címe: "); cim = sc.nextline(); System.out.println(i+". könyv oldalszáma: "); s1 = sc.nextline(); oldal = Integer.parseInt(s1); System.out.println(i+". könyv ára: "); s2 = sc.nextline(); ar = Integer.parseInt(s2); System.out.println(i+". könyv stílusa: "); stil = sc.nextline(); K[i] = new KonyvStilussal(iro, cim, oldal, ar, stil); 30/27 B IT MAN

KonyvesProba futtatható osztály a ujkonyves.futo nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a Scifi könyveket (equalsignorecase-t használva) KonyvesProba.java KonyvStilussal legolcsobb = K[0]; for (int j = 1; j < N; j++) if (legolcsobb.dragabb(k[j])) legolcsobb = K[j]; System.out.println("A legolcsóbb: "+legolcsobb.tostring()); System.out.println("SciFi könyvek: "); for (int j = 0; j < N; j++) if (K[j].getStilus().equalsIgnoreCase("scifi")) System.out.println(K[j].toString()); 30/28 B IT MAN

KonyvesProba futtatható osztály a ujkonyves.futo nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a Scifi könyveket (equalsignorecase-t használva) Konzol Könyvek száma: 3 0. könyv írójának neve: aaa 0. könyv címe: aaa 0. könyv oldalszáma: 297 0. könyv ára: 1899 0. könyv stílusa: scifi 1. könyv írójának neve: bbb 1. könyv címe: bbb 1. könyv oldalszáma: 372 1. könyv ára: 1700 1. könyv stílusa: matek 2. könyv írójának neve: ccc 2. könyv címe: ccc 2. könyv oldalszáma: 433 2. könyv ára: 2999 2. könyv stílusa: scifi Konzol A legolcsóbb: Konyv [iro=bbb, cim=bbb, oldal=372, ar=1700], Stílusa=matek SciFi könyvek: Konyv [iro=aaa, cim=aaa, oldal=297, ar=1899], Stílusa=scifi Konyv [iro=ccc, cim=ccc, oldal=433, ar=2999], Stílusa=scifi 30/29 B IT MAN

VÉGE VÉGE 30/30 B IT MAN