OOP: Java 4.Gy: Java osztályok

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

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

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

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

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

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

OOP: Java 8.Gy: Gyakorlás

4. Gy: JAVA osztályok

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

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

OOP: Java 1.Gy: Java alapok

Osztályok. 4. gyakorlat

Programozás I. Első ZH segédlet

Programozási technológia

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

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

Programozási nyelvek Java

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

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

Segédanyag: Java alkalmazások gyakorlat

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

é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

Szoftvertechnolo gia gyakorlat

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

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

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

Java és web programozás

Java Programozás 11. Ea: MVC modell

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ási nyelvek Java

7. K: JAVA alapok Konzultáció

3. Osztályok II. Programozás II

BME MOGI Gépészeti informatika 8.

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

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

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

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

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

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.

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

Programozási nyelvek II.: JAVA

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

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

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

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

BME MOGI Gépészeti informatika 4.

Szoftvertechnológia alapjai Java előadások

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

A C# programozási nyelv alapjai

Java és web programozás

Kalapácsvetés 2016 szöveges

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?

Objektumorientált programozás IX. Osztályok, objektumok

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

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

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

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:)!

OOP: Java 1.Gy: Java alapok

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

Java II. I A Java programozási nyelv alapelemei

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

OOP #14 (referencia-elv)

3. Gyakorlat Ismerkedés a Java nyelvvel

Programozási nyelvek II.: JAVA

Java gyakorlat feladatai e s megolda sai ( )

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Objektumok inicializálása

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

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

INFORMATIKAI ALAPISMERETEK

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

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

Objektumorientált programozás C# nyelven III.

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

Objektumorientált Programozás VI.

Web-technológia PHP-vel

Programozási nyelvek Java

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

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

Informatika terméktervezőknek

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

BME MOGI Gépészeti informatika 7.

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

Java II. I A Java programozási nyelv alapelemei

Java és web programozás

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

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

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

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

BME MOGI Gépészeti informatika 5.

BME MOGI Gépészeti informatika 6.

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

117. AA Megoldó Alfréd AA 117.

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

BME MOGI Gépészeti informatika 1.

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

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

Programozás alapjai 9.Gy: Struktúra 2.

Átírás:

OOP: Java 4.Gy: Java osztályok. 36/1 B ITv: MAN 2019.03.02

Feladat Készítsen el egy Employee osztályt és egy Employee osztályt használó osztályt (EmpProgram). Az Employee osztálynak: van name és salary adattagja (default hozzáférés módosítóval); van egy metódusa, amely egy paraméterként kapott értékkel megnöveli a fizetést (increasesalary) van egy metódusa (displayinfo), amely egy String-be összefűzi a nevet és a fizetést, és ezt adja vissza. Az EmpProgram osztályban egy main metódus van, amelyben létrehozunk egy Employee objektumot: értéket adunk a tagjainak, kiírjuk az adatait, megemeljük a fizetését és újra kiírjuk az adatait. 36/2

EMPLO- YEE 36/3

Az Employee osztály kódja public class Employee { String name; long salary; Adattagok void increasesalary(long sum) { salary += sum; Metódusok String displayinfo() { return " Name: " + name + " Salary: "+ salary; 36/4

Az EmpProgram osztály kódja public class EmpProgram { public static void main(string[] args) { Employee employee = new Employee(); Példányosítás - new employee.name = "John Smith"; Értékadás adattagnak employee.salary = 150000; System.out.println(employee.displayInfo()); employee.increasesalary(1000); Metódus hívás System.out.println(employee.displayInfo()); Az Employee osztály ugyanabban a csomagban van, mint az EmpProgram osztály, ezért példányosításkor elegendő a nevét megadni (egyébként kellene az elérési útvonala is, vagy importálni kellene az osztályt!). 36/5 Name: John Smith Salary: 150000 Name: John Smith Salary: 151000

Feladat Írjuk át az Employee osztályban az adattagokat private-ra és készítsünk setter metódusokat az adatok beállításához, és getter metódusokat az adatok lekérdezéséhez (adatrejtés). Írjuk át ennek megfelelően az Employee osztályt használó osztályt. 36/6

Tagok hozzáférési kategóriái Az információ rejtés alapelv megvalósításának eszköze. Feladatuk az objektumok (osztály, metódus, adattag) láthatóságának (elérhetőségének) szabályozása Módosító private nincs megadva protected public Hozzáférési kategória Privát: más osztályból nem látható, de az adott osztály összes példánya számára elérhető Alap (félnyilvános): csak az azonos csomagban levő osztályok érhetik el (angolul default vagy packageprivate) Védett: az adott csomagban lévő és a leszármazott osztályok érik el Nyilvános: bármely csomagban levő bármely osztályból elérhető 36/7

Az Employee osztály kódja public class Employee { private String name; private long salary; Védett adattagok public void increasesalary(long sum) { salary += sum; public String displayinfo() { return " Name: " + name + " Salary: "+ salary; public String getname() { return name; getter metódusok public long getsalary() { return salary; public void setname(string name) { this.name = name; public void setsalary(long salary) { this.salary = salary; 36/8 setter metódusok Nézzük meg az EmpProgram osztályban a hibaüzeneteket!

Az EmpProgram osztály kódja public class EmpProgram { public static void main(string[] args) { Employee employee = new Employee(); Példányosítás - new employee.setname("john Smith"); employee.setsalary(150000); System.out.println(employee.displayInfo()); employee.increasesalary(1000); System.out.println(employee.displayInfo()); Metódus hívások Name: John Smith Salary: 150000 Name: John Smith Salary: 151000 36/9

Feladat Egészítsük ki az Employee osztályt a következő metódusokkal: adjon vissza igazat, ha a fizetés a paraméterként megadott határok közé esik, és hamisat ha nem (isinsalaryrange); adja vissza a fizetendő adó értéket, ha az adókulcs 16% (gettax); adjon vissza igazat, ha a fizetés nagyobb, mint egy paraméterként megadott másik alkalmazott fizetése (hashighersalary). Egészítsük ki az EmpProgram osztályt úgy, hogy minden funkciót ki tudjunk próbálni. 36/10

Az Employee osztály kódja TXT public class Employee {... public boolean isinsalaryrange(long lowerboundary, long upperboundary) { if (this.salary<=upperboundary && this.salary>=lowerboundary) { return true; else return false; public long gettax() { return Math.round(this.salary*0.16); Ajánlom a fenti metódus helyett: public boolean isinsalaryrange(long lowerboundary, long upperboundary) { return this.salary<=upperboundary && this.salary>=lowerboundary; 36/11

Az Employee osztály kódja TXT public class Employee {... public boolean hashighersalary(employee employee) { if (this.salary>employee.salary) { return true; else return false; Ajánlom a fenti metódus helyett: public boolean hashighersalary(employee employee) { return this.salary>employee.salary; 36/12

Az EmpProgram osztály kódja TXT import java.util.scanner; public class EmpProgram { public static void main(string[] args) { Employee employee_1 = new Employee(); employee_1.setname("john Smith"); employee_1.setsalary(250000); System.out.println(employee_1.displayInfo()); employee_1.increasesalary(1000); System.out.println(employee_1.displayInfo()); //new features System.out.println(employee_1.getName() + "'s salary is " + employee_1.getsalary()); long lowerboundary = readlowerboundary(); long upperboundary = readupperboundary(lowerboundary); System.out.print("Salary is in [" + lowerboundary + " - " + upperboundary + "] : "); System.out.println(employee_1.isInSalaryRange(lowerBoundary, upperboundary)); System.out.println("Tax to be paid: " + employee_1.gettax()); 36/13

Az EmpProgram osztály kódja TXT System.out.println("Tax to be paid: " + employee_1.gettax()); Employee employee_2 = new Employee(); employee_2.setname("julia Smith"); employee_2.setsalary(150000); if (employee_1.hashighersalary(employee_2)) System.out.println(employee_1.getName() + " has higher salary than " + employee_2.getname()); else System.out.println(employee_2.getName() + " has higher salary than " + employee_1.getname()); //=== End of main public static long readlowerboundary() { Scanner input = new Scanner(System.in); long n; do { System.out.println("Enter lower boundary (min. 100000): "); while (!input.hasnextlong()) { System.out.println("That's not a number"); input.next(); 36/14

Az EmpProgram osztály kódja TXT public static long readlowerboundary() { Scanner input = new Scanner(System.in); long n; do { System.out.println("Enter lower boundary (min. 100000): "); while (!input.hasnextlong()) { System.out.println("That's not a number"); input.next(); n = input.nextlong(); while (n<100000); return n; public static long readupperboundary(long lowerboundary) { Scanner input = new Scanner(System.in); long n; do { System.out.println("Enter upper boundary: "); while (!input.hasnextlong()) { System.out.println("That's not a number"); input.next(); 36/15

Az EmpProgram osztály kódja TXT System.out.println("That's not a number"); input.next(); n = input.nextlong(); while (n<100000); return n; public static long readupperboundary(long lowerboundary) { Scanner input = new Scanner(System.in); long n; do { System.out.println("Enter upper boundary: "); while (!input.hasnextlong()) { System.out.println("That's not a number"); input.next(); n = input.nextlong(); while (n<=lowerboundary); return n; 36/16

Az EmpProgram osztály kódja Name: John Smith Salary: 250000 Name: John Smith Salary: 251000 John Smith's salary is 251000 Enter lower boundary (min. 100000): 120000 Enter upper boundary: 200000 Salary is in [120000-200000] : false Tax to be paid: 40160 John Smith has higher salary than Julia Smith 36/17

Feladat Az EmpProgram osztályban deklaráljunk és beolvasással töltsünk fel adatokkal egy Employee-ból álló 5 elemű tömböt. Állapítsuk meg, hogy kinek a legmagasabb a fizetése. Számoljuk meg, hogy hány alkalmazott fizetése esik egy megadott intervallumba. Számítsuk ki az alkalmazottak átlagfizetését. Számítsuk ki az alkalmazottak által befizetett adó összértékét. 36/18

Az EmpProgram osztály kódja TXT import java.util.scanner; public class EmpProgram { public static void main(string[] args) { Employee[] employeearray= new Employee[10]; for (int i = 0; i < employeearray.length; i++) { employeearray[i]= new Employee(); employeearray[i].setsalary( (i+1)*100000+i*200 ); employeearray[i].setname("worker_" + (i+1)); listarray(employeearray); System.out.println("Best paid employee : " + employeearray[hasmaxsalary(employeearray)].getname()); System.out.println("Average salary : " + avgsalary(employeearray)); System.out.println("Give a salary range : "); long lowerboundary = readlowerboundary(); long upperboundary = readupperboundary(lowerboundary); System.out.println("Number of salaries in range: " + countsalaries(employeearray, lowerboundary, upperboundary)); 36/19

Az EmpProgram osztály kódja TXT System.out.println("Sum of tax to be paid: " + sumtax(employeearray)); //=== End of main public static int hasmaxsalary(employee[] employeearray) { int maxindex = 0; for (int i = 1; i < employeearray.length; i++) { if (employeearray[i].hashighersalary(employeearray[maxindex])) { maxindex=i; return maxindex; public static long avgsalary(employee[] employeearray) { double avg = 0; for (Employee employee : employeearray) { avg += employee.getsalary(); avg /= employeearray.length; return Math.round(avg); 36/20

Az EmpProgram osztály kódja TXT public static long readlowerboundary() { Scanner input = new Scanner(System.in); long n; do { System.out.println("Enter lower boundary (min. 100000): "); while (!input.hasnextlong()) { System.out.println("That's not a number"); input.next(); n = input.nextlong(); while (n<100000); return n; public static long readupperboundary(long lowerboundary) { Scanner input = new Scanner(System.in); long n; do { System.out.println("Enter upper boundary: "); while (!input.hasnextlong()) { System.out.println("That's not a number"); input.next(); 36/21

Az EmpProgram osztály kódja TXT public static long readupperboundary(long lowerboundary) { Scanner input = new Scanner(System.in); long n; do { System.out.println("Enter upper boundary: "); while (!input.hasnextlong()) { System.out.println("That's not a number"); input.next(); n = input.nextlong(); while (n<=lowerboundary); return n; public static int countsalaries(employee[] employeearray, long lowerboundary, long upperboundary) { int counter = 0; for (Employee employee : employeearray) if (employee.isinsalaryrange(lowerboundary, upperboundary)) counter++; return counter; 36/22

Az EmpProgram osztály kódja TXT public static long sumtax(employee[] employeearray) { long sum = 0; for (Employee employee : employeearray) sum += employee.gettax(); return sum; public static void listarray(employee[] employeearray) { for (Employee employee : employeearray) { System.out.println(employee.displayInfo()); //=== End of Program 36/23

36/24

Feladat Készítsen Book osztályt és egy BookProgram osztályt. A Book osztály adattagjai: author, title, yearofpublication, price Legyen egy metódusa, amely a paraméterként kapott százalékos értékkel növeli a könyv árát (increaseprice). Legyen egy metódusa, ami egy String-be összefűzi az adatokat és ezt adja vissza (displayinfo). Írjunk setter metódusokat az adatok beállításához, és getter metódusokat az adatok lekérdezéséhez (adatrejtés ellenőrzött adathozzáférés). A BookProgram osztályban hozzunk létre egy könyvet és kérdezzük le az adatait. 36/25

A Book osztály kódja public class Book { private String author; private String title; private int yearofpublication; private int price; public void increaseprice(int percentage) { price += Math.round(price*(float)percentage/100); public String displayinfo() { return author + ": " + title + ", " + yearofpublication + ". Price: " + price + " Ft"; public String getauthor() { return author; public void setauthor(string author) { this.author = author; 36/26

A Book osztály kódja public String gettitle() { return title; public void settitle(string title) { this.title = title; public int getyearofpublication() { return yearofpublication; public void setyearofpublication(int yearofpublication) { this.yearofpublication = yearofpublication; public int getprice() { return price; public void setprice(int price) { this.price = price; 36/27

A BookProgram osztály kódja public class BookProgram { public static void main(string[] args) { Book book = new Book(); book.setauthor("j.k. Rowling"); book.settitle("harry Potter"); book.setyearofpublication(2008); book.setprice(3500); System.out.println(book.displayInfo()); book.increaseprice(10); System.out.println(book.displayInfo()); J.K. Rowling: Harry Potter, 2008. Price: 3500 Ft J.K. Rowling: Harry Potter, 2008. Price: 3850 Ft 36/28

/son 36/29

Házi feladat Készítsen egy Person osztályt az alábbi adatokkal: name, weight (int), height (float) Legyen egy metódusa, amely visszaadja a testtömeg indexet (tti=tomeg/(m*m)) (calculatebmi). Legyen egy metódusa, amely visszaad egy alkatot jellemző szöveget (bodyshape): 36/30 "thin": tti<18,5 "fat": tti>25 "normal": egyébként Legyen egy metódusa (displayinfo), amely egy String-be összefűzi az adatokat és visszaadja azokat az alábbi alakban: név, súly, magasság, tti: alkat. Írjunk setter metódusokat az adatok beállításához, és getter metódusokat az adatok lekérdezéséhez (adatrejtés ellenőrzött adathozzáférés).

Feladat Készítsen egy futtatható osztályt (PersonProgram), amelyben beolvassa egy személy adatait (név, súly, magasság) és kiírja azokat összefűzve a kiszámított testtömegindexel és alkattal. 36/31

A Person osztály kódja public class Person { private String name; private int weight; private float height; public float calculatebmi() { return weight / (height*height); public String bodyshape() { if (calculatebmi() < 18.5) return "thin"; else if (calculatebmi() > 25) return "fat"; else return "normal"; public String displayinfo() { return name + ", " + weight + "kg, " + height + "m, BMI: " + calculatebmi() + " -> " + bodyshape(); 36/32

A Person osztály kódja public String getname() { return name; public void setname(string name) { this.name = name; public int getweight() { return weight; public void setweight(int weight) { this.weight = weight; public float getheight() { return height; public void setheight(float height) { this.height = height; 36/33

A PersonProgram osztály kódja import java.util.scanner; public class PersonProgram { public static void main(string[] args) { 36/34 Person person = new Person(); Scanner input = new Scanner(System.in); System.out.println("Név: "); String name = input.nextline(); person.setname(name); System.out.println("Tömeg (kg): "); int weight = input.nextint(); person.setweight(weight); System.out.println("Magasság (m): "); float height = input.nextfloat(); person.setheight(height); System.out.println(person.displayInfo()); Név: John Tömeg (kg): 84 Magasság (m): 1,75 John, 84kg, 1.75m, BMI: 27.428572 -> fat

36/35

VÉGE VÉGE 36/36