Objektum Orientált Programozás
5. JAVA osztályok
B IT M A N
21/1
v: 2016.03.09 B IT MAN
Feladatok 1. Készítsen egy Alkalmazott osztályt - legyen név, kor és fizetés adata - legyen egy osztályszintű adattagja a nyugdíj korhatár tárolására, értéke kezdetben legyen 65. - legyen konstruktora, amelyben paraméterként kapott értékekkel inicializálja az adattagokat - legyen metódusa, amely visszaadja hány éve van még nyugdíjig - legyen metódusa, amely string-be összefűzve adja vissza az Alkalmazott adatait, hozzáfűzve a nyugdíjig hátralévő éveinek számát is - legyen metódusa, amely paraméterként kapott értékre állítja be a korhatárt - legyen metódusa, amely paraméterként kapott két Alkalmazott közül a nagyobb fizetésűt adja vissza. Készítsen egy futtatható osztályt, amely beolvas n számú alkalmazottat egy tömbbe. Kiírja az alkalmazottak adatait, majd megváltoztatja a nyugdíj korhatárt és újra kiírja az alkalmazottak adatait. Majd kiírja a legnagyobb fizetésű alkalmazott adatait. 21/2
B IT M A N
Alkalmazott osztály, adattagok: név, kor, fizetes Konstruktor: 3 értékkel inicializál Metódus: Hátra van nyugdíjig Alkalmazott.java public class Alkalmazott { private String nev; private int kor; private int fizetes; private static int Nyugdij= 65; public Alkalmazott(String nev, int kor, int fizetes) { this.nev = nev; this.kor = kor; this.fizetes = fizetes; }
21/3
public int HatraVan() { return Nyugdij-kor; }
B IT M A N
Metódus: Adatok (név+kor+fizetés+hátra van nyugdíjig Metódus: nyugdíj beállítás Metódus: Nagyobb fizetésű alkalmazott (2 bemenő alkalmazott) Alkalmazott.java public String Adatok() { return "Név: "+nev+" Kor: "+kor+"Fizetes: "+fizetes+ " Nyugdijig még "+HatraVan()+" év van hátra"; } static void SetNyugdij(int NyugdijBe){ Nyugdij = NyugdijBe; } static boolean NagyobbFizetes(Alkalmazott A1, Alkalmazott A2){
return A1.fizetes > A2.fizetes; } }
21/4
B IT M A N
Alkalmazottak futtatható osztály: beolvas N alkalmazottat egy tömbbe Adatok kiírása, nyugdíjkorhatár váltás, újbóli adatkiírás
Alkalmazottak.java import java.util.Scanner; public class Alkalmazottak { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Alkalmazottak száma: "); String s1 = sc.nextLine(); int N = Integer.parseInt(s1); Alkalmazott[] A = new Alkalmazott[N]; String nev, s2; int kor, fizetes; for (int i=0; i
B IT M A N
Alkalmazottak futtatható osztály: beolvas N alkalmazottat egy tömbbe Adatok kiírása, nyugdíjkorhatár váltás, újbóli adatkiírás Legnagyobb fizetésű alkalmazott kiírása Alkalmazottak.java System.out.println(i+". alkalmazott fizetése: "); s2 = sc.nextLine(); fizetes = Integer.parseInt(s2); A[i] = new Alkalmazott(nev, kor, fizetes);
} for (int i=0; i
B IT M A N
Alkalmazottak futtatható osztály: beolvas N alkalmazottat egy tömbbe Adatok kiírása, nyugdíjkorhatár váltás, újbóli adatkiírás Legnagyobb fizetésű alkalmazott kiírása Konzol Alkalmazottak száma: 3 0. alkalmazott neve: aaaa 0. alkalmazott kora: 51 0. alkalmazott fizetése: 210 1. alkalmazott neve: bbb 1. alkalmazott kora: 25 1. alkalmazott fizetése: 160
21/7
Konzol 2. alkalmazott neve: ccc 2. alkalmazott kora: 37 2. alkalmazott fizetése: 340 Név: aaaa Kor: 51Fizetes: 210 Nyugdijig még 14 év van hátra Név: bbb Kor: 25Fizetes: 160 Nyugdijig még 40 év van hátra Név: ccc Kor: 37Fizetes: 340 Nyugdijig még 28 év van hátra Név: aaaa Kor: 51Fizetes: 210 Nyugdijig még 29 év van hátra Név: bbb Kor: 25Fizetes: 160 Nyugdijig még 55 év van hátra Név: ccc Kor: 37Fizetes: 340 Nyugdijig még 43 év van hátra Legnagyobb fizetésű: Név: ccc Kor: 37Fizetes: 340 Nyugdijig még 43 év van hátra
B IT M A N
Feladatok 2. Készítsen egy Szam nevű osztályt a sajat.elso nevű csomagba - legyen egy osztályszintű konstans adattagja egy 0.001 értékkel egy tűrés tárolására - legyen egy adattagja egy valós szám tárolására - legyen konstruktora, amely paraméterként kapott értékekkel inicializálja az adattagot. - legyen egy "egyezikE" metódusa, amely igazat ad ha egy paraméterként kapott valós szám eltérése a tűrésen belül van. - legyen getter, setter metódusa a szám adattagra. Készítsen egy SzamProba nevű futtatható osztályt a "masik" nevű csomagba, amelyben létrehoz egy Szam-ot egy 0-1 közötti értéket megadva és eltárolja egy final lokális változóban. Generáljon ciklusban egészen addig 0-1 közötti valós számokat és írja ki, amig egyezőt nem talál a létrehozott Szam-al (tűrésen belülit). Írja ki hanyadik generált szám volt ez. Próbálja ki megtudja-e változtatni a Szam adattagjának értékét. Próbálja ki megtudja-e változtatni a referenciájának értékét. 21/8
B IT M A N
Szam osztály, sajat.elso csomagba, adattagok: Ertek Osztályszintű konstans adattag Tures 0.001 értékkel Alap konstruktor, Metódus: EgyezikE, setErtek, getertek Szam.java package sajat.elso; public class Szam { private double Ertek; private static double Tures= 0.001; public Szam(double Ertek) { this.Ertek = Ertek; } public boolean EgyezikE(double S){ return Ertek < S+Tures && Ertek > S-Tures; } public void SetErtek(double Ertek){ this.Ertek = Ertek; } public double getErtek(){ return Ertek; } } 21/9
B IT M A N
SzamProba futtatható osztály a masik nevű csomagba, Létrehozni egy 0-1 közötti Szam-ot final változóba. Generálni 0-1 közötti számokat, míg tűrésen belüli egyezőt találunk. Hányadik? SzamProba.java package masik; public class Szamproba { public static void main(String[] args) { final sajat.elso.Szam FS = new sajat.elso.Szam(0.55); int N=0; double RndNum; do { RndNum = Math.random(); System.out.println(RndNum); N++; } while (!FS.EgyezikE(RndNum)); System.out.println("Lépésszám: "+N);
} }
21/10
B IT M A N
SzamProba futtatható osztály a masik nevű csomagba, Létrehozni egy 0-1 közötti Szam-ot final változóba. Generálni 0-1 közötti számokat, míg tűrésen belüli egyezőt találunk. Hányadik? Konzol 0.25435953310163084 0.49700661842458393 0.2195481714694223 0.9646464893642208 0.6921162469325784 0.44939819156750616 0.3912471734747871 0.4745622285079234 0.15628421552241034 0.7151303455305675 0.9653425473688079 0.4406471403971898 0.5503804666093234 Lépésszám: 145
21/11
B IT M A N
SzamProba futtatható osztály a masik nevű csomagba, Változtatni Szam adattag értékén. Változtatni Szam referencia értékén. SzamProba.java package masik; public class Szamproba { public static void main(String[] args) { final sajat.elso.Szam FS = new sajat.elso.Szam(0.55); System.out.println("Szam= "+FS.getErtek()); FS.SetErtek(0.23); System.out.println("Szam= "+FS.getErtek()); FS = new sajat.elso.Szam(0.44); Hibás utasítás! sajat.elso.Szam SE = new sajat.elso.Szam(0.74); FS = SE; Hibás utasítás! } } 21/12
B IT M A N
Feladatok 3. Készítsen egy konyves.alap.Konyv osztályt - legyen adattagja iro, cím, oldalszám és ár adatok tárolására - legyen konstruktora, amely paraméterként kapott értékekkel inicializálja az adattagokat. - legyen metódusa, amely String-ben összefüzve adja vissza a könyv adatait - legyen metódusa, amely igazat ad ha a könyv oldalankénti ára nagyobb, mint egy paraméterként kapott könyvvé. - legyen metódusa, amely két paraméterként kapott könyv közül a hosszabbat adja vissza. (!) Készítsen egy konyves.KonyvProba futtatható osztályt, amelyben beolvas n darab könyvet egy tömbbe és meghatározza a legkisebb oldalárút, valamint a leghosszabbat.
21/13
B IT M A N
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+"]"; } 21/14
B IT M A N
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; } }
21/15
B IT M A N
KonyvProba futtatható osztály a konyves nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a leghosszabbat KonyvProba.java package konyves; import java.util.Scanner; public class KonyvProba { 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); konyves.alap.Konyv[] K = new konyves.alap.Konyv[N];
21/16
B IT M A N
KonyvProba futtatható osztály a konyves nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a leghosszabbat KonyvProba.java String iro, cim, s2; int oldal, ar; for (int i=0; i
21/17
B IT M A N
KonyvProba futtatható osztály a konyves nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a leghosszabbat KonyvProba.java int MinOldalarIndex=0; for(int i=0; i
} } 21/18
B IT M A N
KonyvProba futtatható osztály a konyves nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a leghosszabbat Konzol Könyvek száma: 3 0. könyv írójának neve: aaa 0. könyv címe: sdfdg 0. könyv oldalszáma: 230 0. könyv ára: 1500 1. könyv írójának neve: bbb 1. könyv címe: tzjtjtjutj 1. könyv oldalszáma: 342 1. könyv ára: 2835 21/19
Konzol 2. könyv írójának neve: ccc 2. könyv címe: tgrgrgre 2. könyv oldalszáma: 76 2. könyv ára: 900 Legkisebb oldalárú könyv: Konyv [iro=aaa, cim=sdfdg, oldal=230, ar=1500] Leghosszabb könyv: Konyv [iro=bbb, cim=tzjtjtjutj, oldal=342, ar=2835]
B IT M A N
Feladatok Jövő héten órai egyéni feladat! (T: kb. 30 perc) Készítsen egy osztályt (Termek), melyben termékek nevét és árát tudja tárolni. Legyen konstruktora, legyenek az adattagokat kezelő metódusai. Definiálja felül a toString() metódusát, mely így a termék nevét és árát adja vissza. Készítsen egy metódust (Elorebb), mely két Termek-et kap paraméterül, és visszaadja az ABC sorrendben előrébb lévő nevű Termek-et. Készítsen egy metódust (Nagyobb), mely kap két árat (számadatot), és ha az első nagyobb, igaz értéket ad vissza, egyébként hamisat. Készítsen egy futtatható osztályt (Termekek), melyben beolvassa N darab termék nevét és árát. - Írja ki a legdrágább termék nevét és árát. - Rendezze név szerint sorba a termékek adatait, és írja ki a sorba rendezett adatokat.
21/20
B IT M A N
VÉGE 21/21
B IT M A N