Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Programozás III KOLLEKCIÓK 2.
2
KONTÉNEREK – GYŰJTEMÉNYEK (ismétlés)
A konténer olyan objektum, amely objektumokat tárol, és alkalmas különböző karbantartási, keresési és bejárási funkciók megvalósítására. Csomagja: java.util A konténerek általánosak, azokba bármilyen objektumot betehetünk. (De csak objektumot!) A gyűjtemények „változtatható méretű tömbök”, rendelkeznek karbantartási és keresési funkciókkal.
3
FELADATMEGOLDÁS (ismétlés)
Gondoljuk végig egy klinika latogato() metódusát: A betegek listája tartalmazza a regisztrált betegek adatait, keresünk egy konkrét beteget. A programrészlet:
4
FELADATMEGOLDÁS (ismétlés)
5
FELADATMEGOLDÁS (ismétlés)
Biztos, hogy megtalálja? Csak akkor, ha a Paciens osztályban van equals() és hashcode() metódus. És ezek a metódusok honnan tudják, hogy orvos vagy barát keresi az illetőt? Egyelőre sehonnan, fel kell rá készíteni őket.
6
FELADATMEGOLDÁS (ismétlés)
7
FELADATMEGOLDÁS (ismétlés)
Mikor nem kell a kikommentezett rész?
8
FELADATMEGOLDÁS (ismétlés)
9
FELADATMEGOLDÁS (ismétlés)
Mi történik, ha a Paciens osztálynak van egy utód osztálya, és az utódok „ugyanolyanságára” még egy további saját jogú feltétel is van? A név-re, tajszámra vonatkozó feltétel öröklődik a Paciens osztályból, a saját feltételre vonatkozó megkötést viszont az utód osztályban kell generálni.
10
RENDEZÉS (ismétlés) A Collections osztály algoritmusai úgy működnek, hogy páronként összehasonlítják a gyűjtemény elemeit. Ezért ezek a metódusok megkövetelik, hogy a konténerbe betett objektumok összehasonlíthatóak legyenek, vagyis hogy a/ maguk implementálják a Comparable interfészt, vagy b/ létezzen hozzájuk a Compator interfészt implementáló hasonlító osztály.
11
RENDEZÉS (ismétlés) Mikor használható a Collections.sort(adatok) hívás? adatok: List<Adat> adatok; Adat: class Adat implements Comparable Adat-ban: compareTo() metódus
12
RENDEZÉS (ismétlés) Mikor használható a Collections.sort(adatok, new Hasonlitas()) hívás? adatok: List<Adat> adatok; Adat: class Adat Hasonlitas: class Hasonlitas implements Comparator Hasonlitas-ban: compare() metódus
13
RENDEZÉS (ismétlés) Rendezések: Mindegy, hogy melyik fajtát használják, de egy projekten belül lehetőleg csak egyfajta legyen. (Az AlapOsztaly implements Comparable megoldás esetén is lehet többféle szempontú rendezés – hogyan?)
14
„VÁLASZTHATÓ” RENDEZÉS
? Hogyan oldható meg, hogy választható szempont szerint rendezzünk?
15
„VÁLASZTHATÓ” RENDEZÉS
16
„VÁLASZTHATÓ” RENDEZÉS
17
RENDEZÉS AZ EDDIGIEKTŐL CSÖPPET ELTÉRŐ MÓDON
Példa elsődleges – másodlagos rendezésre Ld. witch/… eloadas/peldak/Rendezos szerző: Pintér Tamás
18
MÚLT ÓRAI „MARADVÁNY” Mi ez?
19
JAVA – GENERIKUSOK A generikus lehetőséget ad osztályok más típussal való paraméterezésére. Pl.: A generikusan (általánosan) definiált List aktuális típus-paramétere az lehet, hogy a lista milyen konkrét típusú adatokat tartalmazzon – pl. List<Paros>
20
JAVA – GENERIKUS PÉLDA De sok más helyen is használhatjuk a generikust. Pl. készíthetünk olyan saját generikus (általános) számológép típust, amely ugyanúgy teszi a dolgát: összead, szoroz, de egyszer egészekkel, máskor törtekkel, attól függően, hogy az Integer vagy a Double típussal paraméterezve konkretizáltuk-e.
21
PÉLDA SAJÁT GENERIKUS OSZTÁLYRA
22
PÉLDA SAJÁT GENERIKUS OSZTÁLYRA
23
MÁSIK PÉLDA SAJÁT GENERIKUS OSZTÁLYRA
24
MÉG KÉT FOGALOM – 1. Iterátor: Egy iterátor segítségével végigmehetünk egy kollekción, sőt, elemet is törölhetünk belőle.
25
MÉG KÉT FOGALOM – 1. Iterátor példa
26
MÉG KÉT FOGALOM – 1. – idő teszt
27
MÉG KÉT FOGALOM – 2. Enumerátor: Az enum fix konstans értékek létrehozására használható. Mivel típusos, így biztonságosabb mint egy int konstans. Pl: public static final int HETFO = 1 – nem tudjuk, hogy az 1-es mit takar, és kezelni kell az érvénytelen értéket public enum Nap { HETFO, KEDD,… – típusos, így nem kell foglalkozni az érvénytelen értékekkel Lehet konstruktora, és használhatunk benne final és nem final mezőket.
28
NÉHÁNY OSZTÁLY Enumerátor példa 1.
29
MÉG KÉT FOGALOM – 2.
30
MÉG KÉT FOGALOM – 2. Enumerátor példa 2.
31
MÉG KÉT FOGALOM – 2.
32
ADÓSSÁG: PROBLÉMAFELVETÉS
Kívülről módosítható
33
ADÓSSÁG: MEGOLDÁSOK Egy lehetséges megoldás: Másik lehetőség: Mi a különbség?
34
ADÓSSÁG: MEGOLDÁSOK Első változat: A lista = getTantargyak() lista módosítható, de a getTantargyak() hívás eredménye mindig az eredeti lista. Második változat: A lista = getTantargyak() lista egyáltalán nem módosítható.
35
ÚJABB PROBLÉMAFELVETÉS
Hogyan lehet megoldani azt, hogy minden példánynak egyedi sorszáma legyen? Még várom az önálló kísérletezést.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.