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

Programozás III KOLLEKCIÓK. A feladat az eddigi ismeretek alapján tömbökkel oldható meg. Most egy elegánsabb lehetőségről kezdünk el beszélgetni. PROBLÉMAFELVETÉS.

Hasonló előadás


Az előadások a következő témára: "Programozás III KOLLEKCIÓK. A feladat az eddigi ismeretek alapján tömbökkel oldható meg. Most egy elegánsabb lehetőségről kezdünk el beszélgetni. PROBLÉMAFELVETÉS."— Előadás másolata:

1 Programozás III KOLLEKCIÓK

2 A feladat az eddigi ismeretek alapján tömbökkel oldható meg. Most egy elegánsabb lehetőségről kezdünk el beszélgetni. PROBLÉMAFELVETÉS A diákokra vonatkozó kis mintapéldát bővítsük úgy, hogy a diákok adatait a/ névsor szerint növekvő/csökkenő sorrendben b/ átlag szerint növekvő/csökkenő sorrendben írassuk ki.

3 KITÉRŐ – TÖMBÖK RENDEZÉSE int a[] = new int[length]; //buborek algoritmus static void buborek(){ int i, j, temp; for (i = 0; i < a.length-1; i++) for(j = i+1; j

4

5 KONTÉNEREK 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. (A tömb is speciális konténer, de nem osztály, nincs viselkedése, vagyis a tömbben tárolt objektumok karbantartására és az elemek keresésére külön meg kell írni az egyes eljárásokat. Egy konténer osztály az elemek tárolásán kívül a különböző keresési, bejárási, karbantartási funkciókat is megvalósítja.) Egy – sok kapcsolat megvalósítása: konténerek segítségével

6 EGYÜTTMŰKÖDÉSI DIAGRAM Mindegyik elem tudja, hogy ki az utána következő ( next() ).

7 OSZTÁLYDIAGRAM

8 A Java-ban több konténer osztályt implementáltak. java.util csomag, Collection interfész A konténerek általánosak, azokba bármilyen objektumot betehetünk. KONTÉNEREK – KOLLEKCIÓK

9 GYŰJTEMÉNY KERETRENDSZER Java Collections Framework (Gyűjtemény keretrendszer) A JCF tartalma: – interfészek: absztrakt reprezentáció, a szolgáltatások megvalósítás-független ábrázolása. – implementációk: az interfészek konkrét implementációi. – algoritmusok: a műveleteket megvalósító metódusok. (Ezek többalakú (polimorf) metódusok, vagyis ugyanaz a metódus alkalmazható különböző implementációk esetén.)

10 GYŰJTEMÉNY KERETRENDSZER

11 A gyűjtemény interfészei: Set: nem tartalmaz duplikátumot List: tartalmazhat duplikátumot több metódus; bejáráshoz használható az Iterator, ListIterator. Map: kulcs-érték párokat tartalmazó gyűjtemény egy kulcshoz csak egy érték tartozhat GYŰJTEMÉNY KERETRENDSZER

12 A List interfész és implementációi GYŰJTEMÉNY KERETRENDSZER

13 AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector A List interfész ismert implementációi: GYŰJTEMÉNY KERETRENDSZER Érdemes belenézni a megvalósításukba: NetBeans-ben az osztály nevén Ctrl + kattintás.

14 LISTA A lista (List) egy olyan gyűjtemény, amelybe elemeket lehet beszúrni (a végére is és egy adott indexű helyre is), ezeket az elemeket az index alapján el lehet érni, keresni lehet benne, ill. törölni. A listát implementáló osztályok ezeket a funkciókat valósítják meg, illetve bővítik.

15 LISTA Néhány metódus: boolean add(Típus elem) boolean add(int index, Típus elem) void clear() boolean contains(Típus elem) Típus get(int index) int indexOf(Típus elem) int lastindexOf(Típus elem) boolean isEmpty() boolean remove(Típus elem) int size()

16 FELADATMEGOLDÁS Képezzünk név-szám párosokból álló gyűjteményt, és írassuk ki az elemeit! A név-szám párosokat úgy tudjuk együtt kezelni és egy listában tárolni, ha objektumokat készítünk belőlük. Ehhez szükség van a Paros osztály definiálására.

17 FELADATMEGOLDÁS

18

19

20

21 ITERÁLÓ CIKLUS Az iteráló ciklus (foreach típusú) kényelmesebb ciklus- szervezést tesz lehetővé. Pl.:List adatok = new ArrayList<>(); for(Tipus adat: adatok) {…} Tömbökre pl.:int [] tomb = new int [10]; for(int i: tomb) {…} Megjegyzés: A szakirodalomban ezt a fajta ciklust részesítik előnyben.

22 A FELADAT FOLYTATÁSA 1. Állapítsuk meg, hogy a gyűjtemény tartalmaz-e egy adott elemet! 2. Bontsuk metódusokra az előbb megbeszélt programot.

23 1. FELADAT MEGOLDÁSA Magyarázat: A különböző objektumreferenciák.

24 Megoldás: Nem ugyanazt kellene keresni, csak ugyanolyat. Erre szolgál az equals és a hashCode metódus. Ezeket mindig a listában lévő elemekre kell alkalmazni, vagyis abban az osztályban definiálni, amilyen típusú elemeket kezelünk. 1. FELADAT MEGOLDÁSA

25 A Paros osztályban: Most két elemet akkor tekintünk azonosnak, ha megegyezik a nevük. Don’t panic! A NetBeans generálja. 1. FELADAT MEGOLDÁSA

26 A Paros osztály módosítása után: 1. FELADAT MEGOLDÁSA

27 2. FELADAT MEGOLDÁSA (metódusok) Main osztály:

28 MÁSIK FELADAT Az öröklődésnél szó volt róla, hogy a tanár is és a diák is ember. Tegyük fel, hogy adottak ezek az osztályok. Írjunk egy vezérlő osztályt, amelyben egy listába beolvassuk a szükséges adatokat, majd külön kiíratjuk a tanárok és külön a diákok névsorát.

29 MÁSIK FELADAT Szükséges információk:

30 MÁSIK FELADAT

31 ellenőrzött beolvasás kellene

32 MÁSIK FELADAT És ha van olyan ember, aki nem is tanár, nem is diák? Róla hogyan lehet eldönteni, hogy hova tartozik?

33 „Tanítsanak” a tanárok! MÁSIK FELADAT Hopp, nincs tanit() metódus! 

34 „Tanítsanak” a tanárok! ((Tipus)objektum) Veszélyes, mert ha az aktuális objektum mégsem Tanar típusú, akkor futáskor elszáll. Erre a programozónak kell odafigyelnie. Ha a programozó mégis tévedett, a hiba csak futási időben derül ki, pedig az lenne az igazi, ha már fordításkor tudnánk. figyelni kell a zárójelekre!! MÁSIK FELADAT

35 ELEGÁNSABB MEGOLDÁS Nem lenne szükség típuskényszerítésre, ha minden metódus szerepelne az ősosztályban. – Ez viszont az öröklés logikáját sérti. Megoldás: a program (vagy projekt) körültekintő megtervezése. Ennek részei: 1. Interface felület tervezése. Ebben vannak felsorolva az ügyfél által elérhető szolgáltatások (metódusok). 2. Az interface-t megvalósító absztrakt osztályból kiinduló hierarchia.

36


Letölteni ppt "Programozás III KOLLEKCIÓK. A feladat az eddigi ismeretek alapján tömbökkel oldható meg. Most egy elegánsabb lehetőségről kezdünk el beszélgetni. PROBLÉMAFELVETÉS."

Hasonló előadás


Google Hirdetések