Objektum Orientált Programozás
4. Gy: JAVA osztályok
B IT M A N
25/1
v: 2016.02.24 B IT MAN
Feladatok 1. Készítsen egy Teglalap osztályt - legyen adattagja a két oldal tárolására (egészek) - legyen konstruktora, amely két paraméterként kapott értékkel inicializál. - legyen konstruktora, amely egy paraméterként kapott értékkel inicializálja mindkét adattagot (négyzet) - legyen metódusa, amely visszaadja a teruletet - legyen metódusa, amely egy String-be összefüzve adja vissza a téglalap adatait a következő alakban: "aoldal, boldal: terulet" - legyen metódusa, amely beállítja a téglalap oldalait paraméterként kapott két értékkel. - legyen metódusa, amely beállítja a téglalap oldalait paraméterként kapott egy értéket állítva mindkét oldalnak. - legyen metódusa, amely igazat ad, ha a téglalap nagyobb területű, mint a paraméterként kapott téglalap, hamisat ad ha nem. 25/2
B IT M A N
Feladatok 1. Készítsen egy Teglalap osztályt - legyen metódusa, amely igyazat ad, ha a téglalap oldalai megegyeznek a paraméterként kapott téglalap oldalaival, hamisat ha nem (egyenloE). Készítsen egy TeglalapProba futtatható osztályt, amelyben - létrehoz két téglalap objektumot ("a" és "b"), valamint deklarál egy harmadik változót ("c"), amely értékül "a"-t veszi fel. - Majd kiírja mindhárom változóra a String-be összefüzött adatokat. - Majd megváltoztatja "a" oldalait és újra kiírja mindhármat. - - Változtassa meg az "a" oldalait úgy, hogy megegyezzen "b" oldalaival. - Majd írja ki az (a == b) és az (a == c) értékét. - Majd használja az "egyenloE" metódust "a" és "B" között. 25/3
B IT M A N
Teglalap osztály, adattagok: oldal1, oldal2 Konstruktor: 2 oldallal inicializál, 1 oldallal inicializál Metódus: terület függvény Teglalap.java public class Teglalap { private int AOldal; private int BOldal; public Teglalap(int AOldal, int BOldal) { this.AOldal = AOldal; this.BOldal = BOldal; } public Teglalap(int Oldal) { AOldal = Oldal; BOldal = Oldal; } int Terulet(){ return AOldal*BOldal; }
} 25/4
B IT M A N
Metódus: Adatok függvény: oldalak, terület Metódus: 2 oldal beállítása Metódus: Egyforma oldalak beállítása
Metódus: nagyobb területű Metódus: Egyforma
Teglalap.java String Adatok(){ return "Aoldal="+AOldal+" Boldal="+BOldal+" Terület="+Terulet(); } void setOldal(int AOldal, int BOldal) { this.AOldal = AOldal; this.BOldal = BOldal; } void setOldal(int Oldal) { AOldal = Oldal; BOldal = Oldal; } boolean NagyobbTerületu(Teglalap Masik){ return Terulet() > Masik.Terulet(); } boolean Egyforma(Teglalap Masik){ return AOldal==Masik.AOldal && BOldal==Masik.BOldal; } }
25/5
B IT M A N
TeglalapProba futtatható osztály: Példányosítás A, B, C=A;
TeglalapProba.java public class TeglalapProba { public static void main(String[] args) Teglalap A = new Teglalap(4, 7); Teglalap B = new Teglalap(5); Teglalap C = A; System.out.println(A.Adatok()); System.out.println(B.Adatok()); System.out.println(C.Adatok()); } }
25/6
{
Konzol Aoldal=4 Boldal=7 Terület=28 Aoldal=5 Boldal=5 Terület=25 Aoldal=4 Boldal=7 Terület=28
B IT M A N
TeglalapProba futtatható osztály: A oldalainak megváltoztatása, kiíratás.
TeglalapProba.java public class TeglalapProba { public static void main(String[] args) Teglalap A = new Teglalap(4, 7); Teglalap B = new Teglalap(5); Teglalap C = A; System.out.println(A.Adatok()); System.out.println(B.Adatok()); System.out.println(C.Adatok()); A.setOldal(6,3); System.out.println(A.Adatok()); B.setOldal(3,4); System.out.println(B.Adatok()); } } 25/7
{
Konzol Aoldal=4 Aoldal=5 Aoldal=4 Aoldal=6 Aoldal=3
Boldal=7 Boldal=5 Boldal=7 Boldal=3 Boldal=4
Terület=28 Terület=25 Terület=28 Terület=18 Terület=12
B IT M A N
TeglalapProba futtatható osztály: A oldalainak megváltoztatása, kiíratás. A==B, A==C, A.Egyforma(B) kiíratása. TeglalapProba.java public class TeglalapProba { public static void main(String[] args) Teglalap A = new Teglalap(4, 7); Teglalap B = new Teglalap(5); Teglalap C = A; A.setOldal(5); System.out.println(A.Adatok()); System.out.println(B.Adatok()); System.out.println(A==B); System.out.println(A==C); System.out.println(A.Egyforma(B)); } } 25/8
{
Konzol Aoldal=5 Boldal=5 Terület=25 Aoldal=5 Boldal=5 Terület=25 false true true
B IT M A N
Feladatok 2. Készítsen egy Teglak futtatható osztályt, amelyben létrehoz 10 darab Teglalap-ot és eltárolja a referenciájukat egy tömbben, véletlenszerűen generálva az oldalaikat a 2-10 tartományban. Ezután írja ki az összes téglalap adatait, majd határozza meg és írja ki a legnagyobb területű téglalap adatait. Majd hozzon létre egy téglalapot beolvasott oldalakkal és írja ki az ettől kisebb területű téglalapokat. Majd írja ki az első olyan téglalapnak az indexét, amelynek az oldalai megegyeznek a beolvasott téglalapéval, vagy ha nincs ilyen, akkor azt hogy "nincs egyező".
25/9
B IT M A N
Teglak futtatható osztály: Véletlenszerű (2-10) oldalakkal 10 téglalap. Adataik kiírása. Teglak.java public class Teglak { public static void main(String[] args) { Teglalap[] T = new Teglalap[10]; int AOldal, BOldal; for(int i=0; i<10; i++){ AOldal = 2+(int)(Math.random()*9); BOldal = 2+(int)(Math.random()*9); T[i] = new Teglalap(AOldal, BOldal); } for(int i=0; i<10; i++) System.out.println(T[i].Adatok()); } } 25/10
B IT M A N
Teglak futtatható osztály: Véletlenszerű (2-10) oldalakkal 10 téglalap. Adataik kiírása. Konzol Aoldal=2 Aoldal=2 Aoldal=8 Aoldal=3 Aoldal=8 Aoldal=6 Aoldal=7 Aoldal=7 Aoldal=2 Aoldal=5
25/11
Boldal=9 Terület=18 Boldal=9 Terület=18 Boldal=6 Terület=48 Boldal=7 Terület=21 Boldal=10 Terület=80 Boldal=4 Terület=24 Boldal=7 Terület=49 Boldal=3 Terület=21 Boldal=6 Terület=12 Boldal=3 Terület=15
B IT M A N
Teglak futtatható osztály: Legnagyobb területű téglalap
Teglak.java public class Teglak { public static void main(String[] args) { Teglalap[] T = new Teglalap[10]; int AOldal, BOldal; for(int i=0; i<10; i++){ AOldal = 2+(int)(Math.random()*9); BOldal = 2+(int)(Math.random()*9); T[i] = new Teglalap(AOldal, BOldal); } for(int i=0; i<10; i++) System.out.println(T[i].Adatok()); int MaxIndex = 0; for(int i=1; i<10; i++){ if (T[i].Terulet() > T[MaxIndex].Terulet()) MaxIndex = i; } System.out.println("Legnagyobb: "+T[MaxIndex].Adatok()); } } 25/12
B IT M A N
Teglak futtatható osztály: Legnagyobb területű téglalap
Konzol Aoldal=10 Boldal=7 Terület=70 Aoldal=2 Boldal=10 Terület=20 Aoldal=10 Boldal=8 Terület=80 Aoldal=10 Boldal=3 Terület=30 Aoldal=6 Boldal=4 Terület=24 Aoldal=3 Boldal=2 Terület=6 Aoldal=2 Boldal=3 Terület=6 Aoldal=8 Boldal=10 Terület=80 Aoldal=2 Boldal=8 Terület=16 Aoldal=4 Boldal=6 Terület=24 Legnagyobb: Aoldal=10 Boldal=8 Terület=80
25/13
B IT M A N
Teglak futtatható osztály: Téglalap beolvasása, ettől kisebb területűek kiírása
Teglak.java . . . Scanner sc = new Scanner(System.in); System.out.println("A oldal: "); String s = sc.nextLine(); int a = Integer.parseInt(s); System.out.println("B oldal: "); s = sc.nextLine(); int b = Integer.parseInt(s); Teglalap A = new Teglalap(a, b); for(int i=0; i<10; i++){ if (A.NagyobbTerületu(T[i])) System.out.println(T[i].Adatok()); } . . . 25/14
B IT M A N
Teglak futtatható osztály: Téglalap beolvasása, ettől kisebb területűek kiírása Konzol
25/15
Aoldal=7 Boldal=2 Terület=14 Aoldal=4 Boldal=10 Terület=40 Aoldal=2 Boldal=4 Terület=8 Aoldal=5 Boldal=6 Terület=30 Aoldal=8 Boldal=8 Terület=64 Aoldal=3 Boldal=4 Terület=12 Aoldal=6 Boldal=2 Terület=12 Aoldal=10 Boldal=8 Terület=80 Aoldal=8 Boldal=5 Terület=40 Aoldal=2 Boldal=7 Terület=14 A oldal: 6 AB oldal: 5 Aoldal=2 Boldal=4 Terület=8 Aoldal=3 Boldal=4 Terület=12 Aoldal=6 Boldal=2 Terület=12 Aoldal=2 Boldal=7 Terület=14
B IT M A N
Teglak futtatható osztály: Megegyező területű téglalap kiírása
Teglak.java . . . System.out.println("Megegyező téglalap:"); boolean VanEgyezo = false; int i = 0; while (!VanEgyezo && i<9) { if (A.Egyforma(T[i])) { System.out.println(T[i].Adatok()); VanEgyezo = true; } i++; } if (!VanEgyezo) System.out.println("Nincs egyező téglalap"); . . . 25/16
B IT M A N
Teglak futtatható osztály: Megegyező területű téglalap kiírása
Konzol Aoldal=10 Boldal=3 Terület=30 Aoldal=10 Boldal=9 Terület=90 Aoldal=9 Boldal=7 Terület=63 Aoldal=6 Boldal=10 Terület=60 Aoldal=10 Boldal=6 Terület=60 Aoldal=6 Boldal=8 Terület=48 Aoldal=10 Boldal=6 Terület=60 Aoldal=5 Boldal=6 Terület=30 Aoldal=3 Boldal=10 Terület=30 Aoldal=10 Boldal=3 Terület=30 A oldal: 10 B oldal: 6 Megegyező téglalap: Aoldal=10 Boldal=6 Terület=60 25/17
Konzol Aoldal=5 Boldal=4 Terület=20 Aoldal=7 Boldal=3 Terület=21 Aoldal=4 Boldal=4 Terület=16 Aoldal=2 Boldal=6 Terület=12 Aoldal=8 Boldal=10 Terület=80 Aoldal=5 Boldal=9 Terület=45 Aoldal=5 Boldal=6 Terület=30 Aoldal=8 Boldal=2 Terület=16 Aoldal=5 Boldal=2 Terület=10 Aoldal=6 Boldal=7 Terület=42 A oldal: 4 B oldal: 7 Megegyező téglalap: Nincs egyező téglalap
B IT M A N
Feladatok 3. Készítsen egy HangLemez osztályt - Legyen adattagja az előadó, a cím és a hossz (egész) tárolására - Legyen konstruktora, amely paraméterként kapott értékekkel inicializálja az adattagokat. - Legyen metódusa, amely egy String-ben összefüzve adja vissza a lemez adatait a következő alakban "Elődó: Cim, hossz perc". - Legyen metódusa, amely 1-t ad vissza, ha a lemez hosszabb, mint a paraméterként kapott lemez, -1-et ad vissza, ha a paraméterként kapott a hosszabb és 0-t ad, ha egyforma hosszúak. - Legyen egy metódusa, amely paraméterként egy előadót kap (String) és igazat ad, ha a a lemeznek ő az előadója. (A String-ek tartalmi egyezőségének vizsgálatára használja a String osztály equals() vagy equalsIgnoreCase() metódusát.) Készítsen egy Lemezek futtatható osztály, amelyben létrehoz és tömbben tárol beolvasott számú beolvasott adatú hanglemezt. Majd írja ki a leghosszabb lemez adatait. Majd írja ki a egy beolvasott nevű előadó lemezeit.
25/18
B IT M A N
Hanglemez osztály, adattagok: eloado, cím, hossz, alap konstruktor Metódus: Adatok: Előadó, Cím, Hossz
Teglak.java public class Hanglemez { private String eloado; private String cim; private int hossz; public Hanglemez(String eloado, String cim, int hossz){ this.eloado = eloado; this.cim = cim; this.hossz = hossz; } String Adatok(){ return "Előadó: "+eloado+" Cím: "+cim+" Hossz: "+hossz; } 25/19
B IT M A N
Hanglemez osztály, Metódus: ellHossz: 1-hosszabb, mint a másik, -1-rövidebb, 0-egyforma hosszú Metódus: ellEloadó: igaz, ha az előadó egyezik a kapott stringgel Teglak.java int getHossz(){ return hossz; } int ellHossz(Hanglemez A){ int vi = 0; if (hossz > A.getHossz()) vi=1; if (hossz < A.getHossz()) vi=-1; return vi; } boolean ellEloado(String eloado){ return eloado.equals(this.eloado); } } 25/20
B IT M A N
Lemezek futtatható osztály: N darab hanglemez beolvasása, tárolása tömbben
Teglak.java import java.util.Scanner; public class Lemezek { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Lemezek száma: "); String s1 = sc.nextLine(); int db = Integer.parseInt(s1); Hanglemez [] t = new Hanglemez[db+1];
25/21
B IT M A N
Lemezek futtatható osztály: N darab hanglemez beolvasása, tárolása tömbben
Teglak.java String s2, s3; int lh; for (int i=1; i<=db; i++) { System.out.println(i+". előadó: "); s1 = sc.nextLine(); System.out.println(i+". cím: "); s2 = sc.nextLine(); System.out.println(i+". lemezhossz: "); s3 = sc.nextLine(); lh = Integer.parseInt(s3); t[i] = new Hanglemez(s1, s2, lh); }
25/22
B IT M A N
Lemezek futtatható osztály: Leghosszabb lemez adatai Beolvasott nevű előadó lemezei Teglak.java int MaxIndex = 1; for (int i=1; i<=db; i++) { if (t[i].ellHossz(t[MaxIndex]) == 1) MaxIndex = i; } System.out.println("A leghosszabb lemez: "+t[MaxIndex].Adatok()); System.out.println("Előadó: "); s1 = sc.nextLine(); for (int i=1; i<=db; i++) { if (t[i].ellEloado(s1)) System.out.println(t[i].Adatok()); } } } 25/23
B IT M A N
Lemezek futtatható osztály: Leghosszabb lemez adatai Beolvasott nevű előadó lemezei
25/24
Konzol
Konzol
Lemezek száma: 4 1. előadó: aaaa 1. cím: gwegrgregwh 1. lemezhossz: 45 2. előadó: bbbb 2. cím: getwhhterh 2. lemezhossz: 43 3. előadó: aaaa 3. cím: hhrfeheth4zth 3. lemezhossz: 42
4. előadó: aaaa 4. cím: dghrehfuur 4. lemezhossz: 59 A leghosszabb lemez: Előadó: aaaa Cím: dghrehfuur Hossz: 59 Előadó: aaaa Előadó: aaaa Cím: gwegrgregwh Hossz: 45 Előadó: aaaa Cím: hhrfeheth4zth Hossz: 42 Előadó: aaaa Cím: dghrehfuur Hossz: 59
B IT M A N
VÉGE 25/25
B IT M A N