Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 1 16.Objektumok, karakterláncok, csomagolók 17.Osztály készítése.

Hasonló előadás


Az előadások a következő témára: "Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 1 16.Objektumok, karakterláncok, csomagolók 17.Osztály készítése."— Előadás másolata:

1 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 1 16.Objektumok, karakterláncok, csomagolók 17.Osztály készítése

2 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / Objektumok, karakterláncok, csomagolók 1.A fejezet osztályainak rendszerezése 2.Primitív típus - referenciatípus 3.Objektum létrehozása, deklarálása 4.Értékadás az objektumok körében 5.Az objektum élete, automatikus szemétgyűjtés 6.String osztály 7.StringBuffer osztály 8.Objektum átadása paraméterként 9.Primitív típusok csomagolása 10.StringTokenizer osztály

3 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 3 A fejezet osztályainak rendszerezése  Java API: kb osztály  A java.lang csomag legfontosabb osztályai: java.lang Byte ShortIntegerLongFloatDouble Object BooleanCharacterNumberMathSystemStringStringBuffer

4 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 4 Az Object osztály  Minden osztály közös őse  Bármely osztályból létrehozott példány “az egy” objektum  A Java minden objektumára jellemző metódusokat tartalmaz. Például: boolean equals(Object obj) String toString() Class getClass()

5 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 5 Az Object osztály leszármazottai  Csomagoló osztályok Boolean, Character, Byte, Short, Integer, Long, Float, Double  Math osztály Matematikai konstansok és függvények  System osztály exit() in, out objektumok  String, StringBuffer

6 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 6 Primitív típus – referenciatípus  8 primitív típus: boolean, char, byte, short, int, long, float, double Primitív típus  A változó azonosítójával közvetlenül hivatkozunk a változó memóriahelyére  A deklaráló utasítás végrehajtása: memória foglalás  A programozó nem definiálhat primitív típust

7 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 7 Közvetlen (direkt) címzés Memória eletkor 12 Memóriacímek byte eletkor=12; Itt az adat!

8 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 8  Objektumra mutat  A változó azonosítójával az objektum memóriahelyére közvetve hivatkozunk egy referencián (hivatkozáson) keresztül  A hivatkozás rejtve marad (automatikus indirekció) Referenciatípus

9 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 9 Közvetett (indirekt) címzés Memória ember Memóriacímek "Erika",1953 ember objektum címe ember.megy(); Automatikus indirekció! Ember ember = new Ember("Erika",1953);

10 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 10 A null referencia  Referencia típusú konstans  Foglalt szó  Értéke: a nulla cím  Nem mutat semmire, nem hivatkozik objektumra Például: ember = null; ember null

11 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 11 Objektum létrehozása  Példányosítás Memóriafoglalás Konstruktorhívás (a megfelelő szignatúrájú)  Beállítja az objektum kezdeti állapotát adatok kapcsolatok new ( )  Visszaadja az új objektum referenciáját  A létrehozásnak nem feltétele a deklarálás!

12 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 12 Objektum deklarálása objektum;  Az objektum egy referencia típusú változó  Memóriafoglalás: csak a referencia részére  Az objektum létrehozása a programozó feladata objektum; objektum=new ( ); objektum = new ( );

13 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 13 new String("Pirkadat") String +String(value: String) +toUpperCase(): String +toString(): String... szöveg: String "Pirkadat" toUpperCase() String szoveg; szoveg = new String("Pirkadat"); System.out.println(szoveg.toUpperCase()); // PIRKADAT System.out.println(szoveg); // Pirkadat Példa: String objektum létrehozása

14 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 14 Értékadás az objektumok körében String ember1 = new String("Timea"); //1 String ember2 = new String("Roland"); //2 Object obj; String ember3; ember1 = ember2; //3 obj = ember1; //4 // ember1 = obj; Szintaktikai hiba! obj általánosabb! // ember1 = ember3; Szintaktikai hiba! ember3-nak // nincs értéke!

15 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 15 ember1 :String "Timea" :String "Roland" ember2 ember3 obj String Object //1 //2 //3 //4

16 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 16 Objektumok egyenlőségvizsgálata String s1 = new String("Hello"), s2 = new String("Hello"); System.out.println((s1==s2)?"Azonosak":"Nem azonosak"); System.out.println((s1.equals(s2))?"Egyenlok":"Nem egyenlok"); Nem azonosak Egyenlok

17 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 17 ember1 = new String("Gábor"); ember1 = new String("Anikó"); ember1 :String "Anikó" :String "Gábor" Az objektum élete, automatikus szemétgyűjtés

18 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 18 String osztály  Értéke egész élete során állandó  Unikód karakterek sorozata String szoveg=new String("Kész!"); String szoveg="Kész!"; // optimalizáció Kézs! 01324

19 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 19 String osztály (folyt.)  Konstruktorok String() String(value: String) String(buffer: StringBuffer)  Hossz, index length(): int charAt(index: int): char

20 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 20 String osztály (folyt.)  Manipulált karakterláncok toLowerCase(): String toUpperCase(): String toString(): String trim(): String replace(oldChar: char, newChar: char): String substring(beginIndex: int): String substring(beginIndex: int, endIndex: int): String

21 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 21 String osztály (folyt.)  Egyenlőségvizsgálat, hasonlítás equals(anObject: Object): boolean equalsIgnoreCase(anotherString: String): boolean compareTo(o: Object): int compareTo(str: String): int compareToIgnoreCase(str: String): int  Konkatenálás concat(str: String): String

22 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 22 String osztály (folyt.)  Keresések indexOf(ch: int): int indexOf(ch: int, fromIndex: int): int indexOf(str: String): int indexOf(str: String, fromIndex: int): int  Karakterláncformák valueOf(value: Type): String valueOf(value: type): String  Kivételek StringIndexOutOfBoundsException NullPointerException

23 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 23 Feladat – StringTeszt Kérjünk be terminálról egy szöveget, majd: 1) Írjuk ki fordítva! 2) Írjuk ki csupa nagybetűvel, aztán csupa kisbetűvel! 3) Írjuk ki az első 9 karakterét és az utolsó 3 karakterét! 4) Cseréljük ki az összes szóközt kötőjelre! import extra.*; public class StringTeszt { public static void main(String[] args) { // következő dián }

24 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 24 String szoveg = Console.readLine("Szöveg: "); for (int i=szoveg.length()-1; i>=0; i--)//1 System.out.print(szoveg.charAt(i)); System.out.println(); System.out.println(szoveg.toUpperCase());//2 System.out.println(szoveg.toLowerCase()); if (szoveg.length()>=9)//3 System.out.println(szoveg.substring(0,9)); if (szoveg.length()>=3) System.out.println(szoveg.substring(szoveg.length()-3)); System.out.println(szoveg.replace(' ','-'));//4

25 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 25 StringBuffer osztály  Konstruktorok StringBuffer() StringBuffer(length: int) StringBuffer(str: String) Manipulálható szöveg  Kapacitás, hossz, index capacity(): int length(): int ensureCapacity(minimumCapacity: int) setLength(newLength: int) charAt(index: int): char

26 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 26 StringBuffer osztály (folyt.)  Bővítés append (value: ): StringBuffer insert (offset: int, value: ): StringBuffer  Törlés deleteCharAt(index: int): StringBuffer delete(start: int, end: int): StringBuffer

27 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 27 StringBuffer osztály (folyt.)  Egyéb setCharAt(index: int, ch: char) replace(start: int, end: int, str: String): StringBuffer reverse(): StringBuffer substring(start: int): String substring(start: int, end: int): String toString(): String

28 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 28 StringBuffer hegy1 = new StringBuffer("Machu");//1 StringBuffer hegy2 = hegy1.append(" Picchu");//2 hegy2.insert(0,"Ez is ");//3 hegy1 :StringBuffer "Machu" //1 hegy1 hegy2 :StringBuffer "Machu Picchu" //2 hegy1 hegy2 :StringBuffer "Ez is Machu Picchu" //3

29 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 29 Feladat – Csere Olvassunk be egy szöveget, majd cseréljük ki az összes & jelet az and szóra! import extra.*; public class Csere { public static void main(String[] args) { // következő dián }

30 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 30 StringBuffer szoveg = new StringBuffer(Console.readLine("Szoveg: "));//1 int poz = szoveg.toString().indexOf('&');//2 while (poz!=-1) { szoveg.replace(poz,poz+1,"and");//3 poz = szoveg.toString().indexOf('&');//4 } System.out.println(szoveg);//5

31 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 31 Objektum átadása paraméterként Feladat – Objektum paraméter Írjunk egy olyan eljárást, amely a paraméterként megkapott szöveget széthúzza, vagyis minden karaktere után beszúr egy szóközt! import extra.*; public class ObjektumParameter { //következő dián }

32 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 32 static void szethuz(StringBuffer str) { for (int i=str.length()-1; i>0; i--) str.insert(i,' '); str = null;// csak demonstrációs célú utasítás } public static void main(String[] args) { StringBuffer sb = new StringBuffer("Peace"); szethuz(sb); System.out.println("*"+sb+"*");//  "*P e a c e*" } Értékadás szerinti kompatibilitás! Csak a referencia másolódik át!

33 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 33 :StringBuffer "Peace" str sb :StringBuffer "P e a c e" str sb null A metódusba való belépéskor: A metódusból való kilépés előtt: A metódus csak a mutatott objektumot változtathatja meg, a referenciát nem!

34 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 34 Primitív típusok csomagolása  Célok: Primitív típusú változók objektumként kezelése Primitív típusokkal kapcsolatos információk lekérdezése  Minden primitív típushoz tartozik egy csomagoló osztály: Character, Boolean, Byte, Short, Integer, Long, Float, Double  A csomagoló osztályok példányai változtathatatlanok!

35 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 35 Konstruktorok  ( value) Például: Character cObj = new Character('A');  (String s) Például: Boolean bObj = new Boolean("True"); Példánymetódusok  String toString() Például: Double dObj = new Double(6099.8); String s = dObj.toString();//s=="6099.8"

36 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 36  Value() Például: Integer iObj = new Integer(30); int i = iObj.intValue();// i==30 double d = iObj.doubleValue();// d==30.0  boolean equals(Object obj) Például: Integer iObj = new Integer(30), jObj = new Integer(30); if (iObj.equals(jObj)) …// true if (iObj.equals("30")) …// false, más osztály Példánymetódusok (folyt.)

37 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 37 Statikus metódusok  static valueOf(String s) Például: Integer iObj, jObj; iObj = Integer.valueOf("30"); jObj = Integer.valueOf("45D"); //NumberFormatException! Boolean osztály  static final Boolean TRUE = new Boolean(true);  static final Boolean FALSE = new Boolean(false);

38 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 38 Character osztály  static final char MIN_VALUE = '\u0000'; static final char MAX_VALUE = '\uffff';  static boolean isUpperCase(char ch) static boolean isLowerCase(char ch) static boolean isDigit(char ch) static boolean isLetter(char ch) static boolean isSpaceChar(char ch) static boolean isWhitespace(char ch)  static char toUpperCase(char ch) static char toLowerCase(char ch)

39 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 39 Feladat – Milyen karakter? Kérjünk be karaktereket '-' végjelig! Állapítsuk meg minden egyes karakterről, hogy az szám, betű (azon belül kisbetű vagy nagybetű), szóköz, fehér szóköz vagy egyéb! import extra.*; public class MilyenKarakter { public static void main(String[] args) { //következő dián }

40 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 40 char kar = Console.readChar("Karakter:"); while (kar != '-') { if (Character.isDigit(kar)) System.out.println("szam"); else if (Character.isLetter(kar)) { if (Character.isUpperCase(kar)) System.out.println("nagybetu"); else System.out.println("kisbetu"); } else if (Character.isSpaceChar(kar)) System.out.println("szokoz"); else if (Character.isWhitespace(kar)) System.out.println("fehér szokoz"); else System.out.println("egyeb"); kar = Console.readChar("Karakter:"); }

41 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 41 Numerikus csomagoló osztályok  static final MIN_VALUE = ; static final MAX_VALUE = ; Például: System.out.println(Byte.MIN_VALUE);  static parse (String s) Például: int i = Integer.parseInt("50");// i==50

42 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / Osztály készítése 1.OO paradigma - Emlékeztető 2.Első mintaprogram - Raktárprogram 3.Második mintaprogram - Bank és a “Jószerencse” 4.Az osztály felépítése, az osztály deklarációi 5.Osztálytag, példánytag 6.Azonosító, hivatkozási kör, takarás 7.Változók alapértelmezés szerinti kezdeti értékei 8.A this objektumreferencia 9.Konstruktorok 10.Inicializálók

43 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 43 OO paradigma - Emlékeztető  Példánydeklaráció: példányváltozó, példánymetódus  Osztálydeklaráció: osztályváltozó, osztálymetódus  Objektumok, osztályok sztereotípusai: információhordozó, határ, kontroll, konténer  Objektumdiagram, osztálydiagram, együttműködési diagram  Két osztály közötti egy-egy kapcsolat  Láthatóság: nyilvános (+), védett (#), privát (-)

44 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 44 Osztály feje [ ] class [extends ] [implements [,... ]] { } Az osztály felépítése Módosítók public abstract final Példák public class JoSzerencse public class Bank public final class String implements java.io.Serializable,Comparable

45 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 45 Az osztály deklarációi Osztályváltozó Osztálymetódus Példányváltozó Példánymetódus Osztálytag PéldánytagOsztály- inicializáló blokk KonstruktorPéldány- inicializáló blokk Belső osztály Osztály szintű deklaráció Ajánlott deklarálási sorrend: változók, kapcsolatok konstruktorok metódusok (get/set/main)

46 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 46 A tagok módosítói  Hozzáférési módosítók public protected private alapértelmezés: csomag  Egyéb módosítók static final abstract (metódus)

47 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 47 Feladat – Raktárprogram Adott egy zöldségraktár, melyben pillanatnyilag egyetlen árut, paradicsomot raktározunk. A raktárba gyakran teszünk be, illetve veszünk ki onnan paradicsomot. A paradicsom pillanatnyi egységára 300 Ft, de ez változhat. Készítsünk olyan programot, mely segítségével rögzíteni tudjuk a megfelelő adatokat, és bármikor jelentést tudunk adni a paradicsom aktuális mennyiségéről, egységáráról és értékéről! Végezzük el a következő akciókat: Tegyünk a raktárba 125 kg paradicsomot, aztán vegyünk ki 25 kg-ot, majd szállítsuk le a paradicsom egységárát 210 Ft-ra! Mindhárom akció után írjuk ki, mennyi paradicsom van raktáron és milyen értékben!

48 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 48 Együttműködési diagram RaktarProgram aru:Aru program: RaktarProgram 2: RaktarProgram() 4: akciok() 3: Aru(aNev,aEgysegar) 5: hozzatesz(aMenny) 6: elvesz(aMenny) 7: setEgysegar(aEgysegar) 1: main(args)

49 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 49 Osztálydiagram RaktarProgram +RaktarProgram() +akciok() +main(args) -aru -nev: String -egysegar: double -menny: double Aru +Aru(aNev:String,aEgysegar:double) +getNev(): String +getEgysegar(): double +setEgysegar(aEgysegar:double) +getMenny(): double +getAr(): double +hozzatesz(aMenny:double) +elvesz(aMenny:double) +toString(): String

50 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 50 class Aru { private String nev; private double egysegar; private double menny; public Aru(String aNev, double aEgysegar) { nev = aNev; egysegar = aEgysegar; menny = 0; } public String getNev() { return nev; } Példányváltozók Konstruktor

51 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 51 public double getEgysegar() { return egysegar; } public void setEgysegar(double aEgysegar) { if (aEgysegar >= 0) egysegar = aEgysegar; } public double getMenny() { return menny; } public double getAr() { return menny*egysegar; }

52 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 52 public void hozzatesz(double aMenny) { if (aMenny>0) menny += aMenny; } public void elvesz(double aMenny) { if (aMenny>0 && aMenny<=menny) menny -= aMenny; } public String toString() { return nev+"\tEgysegar: "+egysegar+ "\tMenny: "+menny+"\tAr: "+getAr(); }

53 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 53 public class RaktarProgram { private Aru aru; public RaktarProgram() { aru = new Aru("Paradicsom",300); } public void akciok() { aru.hozzatesz(125); System.out.println(aru); aru.elvesz(25); System.out.println(aru); aru.setEgysegar(210); System.out.println(aru); } Kapcsolat

54 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 54 public static void main(String[] args) { RaktarProgram program = new RaktarProgram(); program.akciok(); } Objektum létrehozása saját osztályából program: RaktarProgram main() RaktarProgram RaktarProgram() akciok()

55 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 55 Feladat – Bank Az OTP bank “Jószerencse” fantázianevű befektetési jegyeket forgalmaz. Egy ügyfél számlát nyithat ehhez a befektetési formához, majd vásárolhat vagy eladhat befektetési jegyeket. A számla nyitásakor meg kell adni a számlatulajdonos nevét, és megadható a kedvezményezett neve is (azé, aki örökli a számlát). Az induló összeg a számla nyitásakor nulla. A befektetési jegynek árfolyama van; a vásárlás és az eladás mindig az aktuális árfolyamon történik. Vásárláskor 200 Ft, eladáskor 400 Ft kezelési költséget kell fizetni. Készítsünk olyan programot, amely a bank “Jószerencse” befektetési jegyeinek forgalmazását szimulálja! Két ügyfél nyisson számlát, majd menüből választhatóan vásároljanak és adjanak el az ügyfelek befektetési jegyeket, és lehessen az árfolyamot is változtatni!

56 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 56 Együttműködési diagram :JoSzerencse otp:Bank JoSzerencse("Arany Dániel") vasarlas(10000) eladas(50000) main() :JoSzerencse szamla1 szamla2 ugyfelKiszolgalas(szamla) jelentes() ügyfél Bank JoSzerencse Bank() menu() getArfolyam() setArfolyam(...) jegyDb(...) ertek(...)

57 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 57 2 > JoSzerencse -utolsoSzamlaSzam: long = arfolyam: double = vasarKezKoltseg, eladKezKoltseg: int -szamlaSzam: long -tulajdonos, kedvezmenyezett: String -jegyDb: long +JoSzerencse (tulajdonos, kedvezmenyezett) +JoSzerencse (tulajdonos) +getArfolyam(): double +setArfolyam(arf) +jegyDb(ertek): long +ertek(jegyDb): long +getJegyDb(): long +ertek(): long +vasarlas(osszeg): long +eladas(osszeg): long +toString(): String > Bank +Bank() +ugyfelKiszolgalas(jo) +jelentes() +menu() +main(...) Osztálydiagram

58 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 58 import extra.*; class JoSzerencse { private static long utolsoSzamlaSzam = 10000; private static double arfolyam = 1.03; private static int vasarKezKoltseg = 200; private static int eladKezKoltseg = 400; private long szamlaSzam; private String tulajdonos, kedvezmenyezett; private long jegyDb; Példány- változók Osztály- változók

59 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 59 public JoSzerencse(String tulajdonos,String kedvezmenyezett) { szamlaSzam = ++utolsoSzamlaSzam; this.tulajdonos = tulajdonos; this.kedvezmenyezett = kedvezmenyezett; jegyDb = 0; } public JoSzerencse(String tulajdonos) { this(tulajdonos,""); } Konstruktor túlterhelése másik konstruktor hívása

60 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 60 public static double getArfolyam() { return arfolyam; } public static void setArfolyam(double arf) { if (arf >= 0) arfolyam = arf; } Osztály- metódusok

61 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 61 public static long jegyDb(long ertek) { return (long)(ertek/arfolyam); } public static long ertek(long jegyDb) { return (long)(jegyDb*arfolyam); } public long getJegyDb() { return jegyDb; } public long ertek() { return ertek(jegyDb) ; } OsztálymetódusokPéldánymetódusok

62 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 62 Példánymetódus osztályváltozóra hivatkozik public long vasarlas(long osszeg) { long db = jegyDb(osszeg); jegyDb += db; return ertek(db)+vasarKezKoltseg; // a befizetendõ összeg } public long eladas(long osszeg) { long db = jegyDb(osszeg); jegyDb -= db; return ertek(db)-eladKezKoltseg; // a kifizetendõ összeg }

63 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 63 public String toString() { return "Szamlaszam: "+szamlaSzam+ " Tulajd.: "+Format.left(tulajdonos,15)+ " Kedv.: "+Format.left(kedvezmenyezett,15)+ " Jegyszam: "+Format.right(jegyDb,8)+ " Ertek: "+Format.right(ertek(),8); } } // JoSzerencse

64 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 64 public class Bank { JoSzerencse szamla1, szamla2; public Bank() { szamla1 = new JoSzerencse("Arany Daniel", "Ezust Hajnalka"); szamla2 = new JoSzerencse("Fejer Lipot"); } Kapcsolatok

65 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 65 public void ugyfelKiszolgalas(JoSzerencse szamla) { long osszeg; System.out.println("\n"+szamla); char valasz; do { valasz = Character.toUpperCase (Console.readChar("V(asarlas)/E(ladas)")); } while (valasz!='V' && valasz != 'E'); if (valasz == 'V') { osszeg=szamla.vasarlas(Console.readInt("Mennyiert vasarol?")); System.out.println("Befizetendo: "+osszeg+" ft"); } else { osszeg = szamla.eladas(Console.readInt("Mennyiert ad el? ")); System.out.println("Kifizetendo: "+osszeg+" ft"); }

66 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 66 public void jelentes() { System.out.println("\n* - * - * - JELENTES - * - * - *"); System.out.println("Arfolyam: "+JoSzerencse.getArfolyam()); System.out.println(szamla1); System.out.println(szamla2); } public void menu() { char valasz; do { jelentes(); System.out.println("\n1. ugyfel kiszolgalasa"); System.out.println("2. ugyfel kiszolgalasa"); System.out.println("3: Arfolyam modositas "); System.out.print ("V: Vege "); valasz = Character.toUpperCase(Console.readChar());

67 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 67 switch (valasz) { case '1': { ugyfelKiszolgalas(szamla1); break; } case '2': { ugyfelKiszolgalas(szamla2); break; } case '3': { JoSzerencse.setArfolyam( Console.readDouble("Uj arfolyam:")); break; } } while (valasz!='V'); }

68 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 68 public static void main(String[] args) { Bank otp = new Bank(); otp.menu(); } } // Bank Objektum létrehozása saját osztályából otp:Bank main() Bank Bank() menu()

69 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 69 class JoSzerencse { int joSzerencse; int joSzerencse() { int joSzerencse = this.joSzerencse; return joSzerencse; } … } Hivatkozási kör Lokális változó Példányváltozó

70 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 70 Takarás class Proba { int szam=1; static char kar='A'; void proba() { int szam=2; char kar='B'; System.out.println(szam);//  2 System.out.println(this.szam);//  1 System.out.println(kar);//  B System.out.println(Proba.kar);//  A }

71 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 71 A this objektumreferencia  Példánymetódusok utolsó, rejtett paramétere  A megszólított objektum referenciája public long vasarlas(long osszeg, JoSzerence this) { long db = jegyDb(osszeg); this.jegyDb += db; return ertek(db)+vasarKezKoltseg; }

72 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 72  Beállítja az objektum kezdeti állapotát adatok kapcsolatok  Hasonlít a metódushoz, de nincs visszatérési értéke  Neve megegyezik az osztály nevével  Csak a new-val hívható  Csak a hozzáférési módosítók használhatók  Túlterhelhető  Nem öröklődik Konstruktor

73 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 73 Alapértelmezés szerinti konstruktor  Nincs (explicit) konstruktor  egy alapértelmezés szerinti (implicit) konstruktor fut le paraméter nélküli adatok, kapcsolatok alapértelmezések  nullaszerű kezdőértékek: false, ’\u0000’, 0, null  Van legalább 1 (explicit) konstruktor  nincs alapértelmezés szerinti konstruktor

74 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 74 Példányinicializáló blokk Inicializáló kifejezésOsztályinicializáló blokk class Tanulo2 { static int alapTandij; double atlag;int tandij; static { alapTandij = 2000; } { atlag = Console.readDouble("Atlag: "); tandij = alapTandij + (int)Math.round(3000*(5-atlag)); } // … } Inicializálók

75 Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 75 Az inicializálás sorrendje  Osztályadatok (osztály betöltésekor) alapértelmezés szerinti értékek osztályinicializáló kifejezések osztályinicializáló blokkok  Objektum adatai (objektum születésekor) alapértelmezés szerinti értékek példányinicializáló kifejezések példányinicializáló blokkok konstruktor(ok)


Letölteni ppt "Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 1 16.Objektumok, karakterláncok, csomagolók 17.Osztály készítése."

Hasonló előadás


Google Hirdetések