Java és web programozás

Hasonló dokumentumok
Java és web programozás

Collections. Összetett adatstruktúrák

Programozási nyelvek Java

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Java és web programozás

Java és web programozás

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java.

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Java és web programozás

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Programozási technológia

Reader /Writer InputStreamReader, OutputStreamWriter

Programozás I. 8. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

OOP: Java 8.Gy: Abstract osztályok, interfészek

Generikus osztályok, gyűjtemények és algoritmusok

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Java osztálykönyvtár és használata

Generikus Típusok, Kollekciók

Tömbök, kollekciók és egyéb alaposztályok

Magas szintű programozási nyelvek 2 Előadás jegyzet

Java tutorial. Object. Nehany alaposztaly, amit ismerni illik. tostring. equals vs. ==

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Java és web programozás

Java Programozás 3. Gy: Java GUI. Swing, AWT

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Abstract osztályok és interface-ek. 7-dik gyakorlat


3. Osztályok II. Programozás II

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

BME MOGI Gépészeti informatika 8.

Generikusok, Collections Framework JAVA PROGRAMOZÁS 5. GYAKORLAT

Programozás II gyakorlat. 8. Operátor túlterhelés

Java programozási nyelv

Osztályok. 4. gyakorlat

Programozás II. labor

ZH mintapélda. Feladat. Felület

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA, 3. gyakorlat

Programozási technológia

Programozási nyelvek II.: JAVA

4. Gy: JAVA osztályok

OOP: Java 8.Gy: Gyakorlás

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Smalltalk 2. Készítette: Szabó Éva

JAVA PROGRAMOZÁS 3.ELŐADÁS

.Net adatstruktúrák. Készítette: Major Péter

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

OOP: Java 4.Gy: Java osztályok

Java gyakorlat feladatai e s megolda sai ( )

J2SE 1.5 Tiger. Bevezetés. Metaadatok. Generikus típus. J2SE 1.5 Tiger. Viczián István (viczian.istvan a gmail-en)

Java programozási nyelv 4. rész Osztályok II.

Java és web programozás

Java és web programozás

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Programozási nyelvek II.: JAVA, 11. gyakorlat

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Kalapácsvetés 2016 szöveges

C# osztályok. Krizsán Zoltán

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Újdonságok a Java nyelvben

Java Programozás 1. Gy: Java alapok. Ismétlés ++

és az instanceof operátor

Programozási nyelvek Java

Java programozási nyelv 6. rész Java a gyakorlatban

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Programozási nyelvek Java

OOP #14 (referencia-elv)

7. K: JAVA alapok Konzultáció

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

Programozás I. Első ZH segédlet

Szoftvertechnológia alapjai Java előadások

Java Programozás 11. Ea: MVC modell

Programozási nyelvek II.: JAVA

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Programozási nyelvek Java

Objektumorientált programozás C# nyelven

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Objektumorientált programozás C# nyelven III.

Programozási Paradigmák és Technikák

Objektumorientált programozás C# nyelven

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Szoftvertechnolo gia gyakorlat

Programozási nyelvek II.: JAVA

Objektumorientált programozás C# nyelven

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

JAVA SE/ME tanfolyam tematika

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Objective-C PPKE-ITK

OOP: Java 5.Gy: Osztály, referencia, konstruktor

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Átírás:

Budapesti M szaki Egyetem 2015. 03. 18.

5. El adás

Ismétlés: osztály, konstruktor, objektum public class Complex { private float repart_; private float impart_; public Complex(float repart, float impart) { repart_ = repart; impart_ = impart;... public class Main { public static void main(string[] args) { Complex comp = new Complex(5, 6); System.out.println(comp.rePart_); // Hiba System.out.println(comp); // Nem hiba

Ismétlés: memóriakép Position pos1; Position pos2 = new Position(3.0f, 2.5f); pos1 = new Position(5.0f, -1.0f);

Ismétlés: statikus adattag, metódus public class Pelda { public static int szamlalo = 0; public Pelda() { Pelda.szamlalo++; public static String koszon() { return "Hello!"; public static void main(string[] args) { System.out.println(Pelda.koszon()) // Hello! Pelda pelda1 = new Pelda(); Pelda pelda2 = new Pelda(); System.out.println(Pelda.szamlalo); // 2

Ismétlés: öröklés, interface public interface Drawable { public void draw();... Drawable drawables[] = new Drawable[2];... drawables[0] = new SpaceShip(...); drawables[1] = new Asteroid(...); for(drawable d : drawables) { d.draw();

Adatszerkezetek Ezek mind csak interface-ek, tulajdonságok. Nem hozhatunk létre konkrét Set objektumot. Viszont lesznek majd olyan osztályok, amik rendelkeznek valamennyi tulajdonsággal ezek közül, belõlük már létrehozhatunk objektumokat. Amint látható hierarchiába vannak szervezve, mind Collection, és pl a SortedSet egy Set.

Collection Annyit tud, hogy objektumoknak valamilyen csoportját tárolja. List A List rendezetten tárol elemeket. Set A Set egyedi elemeket tárol. SortedSet Rendezett és egyedi elemeket tárol. Map Egyedi kulcsokhoz értékeket rendel. (Dictionary) SortedMap A kulcsokat rendezetten tárolja. Map.Entry Leír egy kulcs-értek párt. Ez a Mapnek egy belsõ osztálya.

Az osztályok Nem mindet fogom felsorolni, a többinek utána lehet nézni (van sok). Amiket felsorolok az általam gondolt leghasznosabbak, a félév során ezeket fogjuk használni: ArrayList HashSet HashMap

Közös metódusok Ezeket a metódusokat a Collection interface implementálja, így az elõbb említett összes adatszerkezetben mûködnek. Nem sorolok fel minden létezõ metódust, a továbbiakról eclipse-ben is olvashattok. Kiemelve írom a Collection-t, amin a metódusok meg vannak hívva, amikor nem lenne egyértelmû.

Közös metódusok Ezeket a metódusokat a Collection interface implementálja, így az elõbb említett összes adatszerkezetben mûködnek. Nem sorolok fel minden létezõ metódust, a továbbiakról eclipse-ben is olvashattok. Kiemelve írom a Collection-t, amin a metódusok meg vannak hívva, amikor nem lenne egyértelmû. boolean add(object o) A Collection végére beteszi az adott objektumot. boolean addall(collection c) A kapott Collection összes elemét beteszi a Collectionbe. void clear() Törli a Collection tartalmát. boolean contains(object obj) Igazat ad, ha az adott elemet tartalmazza a Collection, hamisat különben. boolean isempty() Üres-e a Collection.

Iterator iterator() Visszaadja a Collection iterátorát (errõl késõbb). boolean remove(object obj) Töröl egy olyan elemet a Collectionbõl ami megegyezik a kapott obj objektummal. Hamisat ad, ha nem volt mit kitörölni. int size() Visszaadja, hogy hány elem található a Collectionben. Object[] toarray() Visszaadja a tárolt elemekbõl készitett tömböt.

List Ahogy a nevébõl ki lehet találni, ez egy List. Szinte az összes tömbünket le fogjuk cserélni erre. Dinamikusan nõ a mérete, így nem kell foglalkozunk a létrehozásakor azzal, hogy majd hány elem lesz benne. Fontos metódusai: void add(int index, Object element) Az adott indexre berakja az objektumot a már bentlevõket jobbra eltolja. (Nem irja felül az indexen találhato objektumot.) void ensurecapacity(int mincapacity)) Elõre lefoglal legalább ennyi helyet. Ha ezen túlnõ, tovább növeli a tárolt helyet. Object get(int index) Visszaadja az adott indexen tárolt elemet. int indexof(object o) Hanyadik indexen található az adott elem elõször. Object remove(int index) Adott indexû elemet töröl.

void removerange(int fromindex, int toindex) Két index között mindent töröl. Object set(int index, Object element) Lecseréli az adott indexen találhato elemet egy új elemre. import java.util.*; public class ArrayListDemo { public static void main(string args[]) { // Létrehozunk egy ArrayList-et ArrayList al = new ArrayList(); System.out.println("Initial size: " + al.size()); // hozzáadunk elemeket al.add("c"); al.add("a"); al.add("e"); al.add("b"); al.add("d"); al.add("f"); al.add(1, "A2");

System.out.println("Size after additions: " + al.size()); // kiírtuk a méretét, majd szépen ki is tudjuk írni: System.out.println("Contents: " + al); // Elemeket törölhetünk al.remove("f"); al.remove(2); System.out.println("Size after deletions: " + al.size()); System.out.println("Contents: " + al); Eredmény: Initial size: 0 Size after additions: 7 Contents: [C, A2, A, E, B, D, F] Size after deletions: 5 Contents : [C, A2, E, B, D]

Set Egy Set, ami hash táblát használ az elemek tárolásához. Azok a metódusai, mint a Collectionnek. import java.util.*; public class HashSetDemo { public static void main(string args[]) { HashSet hs = new HashSet(); // hozzáadunk elemeket hs.add("b"); hs.add("a"); hs.add("d"); hs.add("e"); hs.add("c"); hs.add("f"); System.out.println(hs); Eredmény: [D, E, F, A, B, C]

Map Hasonlóan mûködik, mint pythonban a dictionary. Szintén hashelés segítségével tárolja az elemeket. Fontos metódusai: boolean containskey(object key) Tartalmazza-e az adott kulcsot. boolean containsvalue(object value) Tartalmazza-e az adott érteket. Object get(object key) Az adott kulcshoz tartozó értéket lekéri. Object put(object key, Object value) Berakja ezt a kulcs-érték párt. Object remove(object key) Az adott kulcsú elemet törli.

import java.util.*; public class HashMapDemo { public static void main(string args[]) { HashMap hm = new HashMap(); // Put elements to the map hm.put("zara", new Double(3434.34)); hm.put("mahnaz", new Double(123.22)); hm.put("ayan", new Double(1378.00)); hm.put("daisy", new Double(99.22)); hm.put("qadir", new Double(-19.08)); // A tárolt párok halmazát lekérjük Set set = hm.entryset(); // Majd ennek egy iterátorát Iterator i = set.iterator(); // Display elements

while(i.hasnext()) { // amíg van következõ elem Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); // Hozzáadunk 1000-et Zara számlájához double balance = ((Double)hm.get("Zara")).doubleValue(); hm.put("zara", new Double(balance + 1000)); System.out.println("Zara's new balance: " + hm.get("zara")); Eredmény: Zara: 3434.34 Mahnaz: 123.22 Daisy: 99.22 Ayan: 1378.0 Qadir: -19.08 Zara's new balance: 4434.34

Iterátor Elég gyakori, hogy végig szeretnénk futni egy Collection elemein. Például egyenként ki akarjuk õket írni, vagy valami mûveletet végrehajtani rajtuk. Ekkor jönnek szóba az iterátorok Elõször el kell kérni az adott objektumtól az iterátorát, a már említett metódussal.

Iterátor Elég gyakori, hogy végig szeretnénk futni egy Collection elemein. Például egyenként ki akarjuk õket írni, vagy valami mûveletet végrehajtani rajtuk. Ekkor jönnek szóba az iterátorok Elõször el kell kérni az adott objektumtól az iterátorát, a már említett metódussal. Ezek az általános lépések az iterálásra: Elkérjük az iterátort Ciklust készitünk, melynek a feltétele, az iterátor hasnext() metódusa. A cikluson belül az iterátor next() metódusával lekérjük a következõ elemet. Az iterátoroknak van remove() metódusa is, amivel az adott elemet törölhetjük a Collectionbõl.

import java.util.*; public class IteratorDemo { public static void main(string args[]) { ArrayList al = new ArrayList(); al.add("c"); al.add("a"); al.add("e"); al.add("b"); al.add("d"); al.add("f"); // Iterátorral kiírjuk az al elemeit System.out.print("Original contents of al: "); Iterator itr = al.iterator(); while(itr.hasnext()) { Object element = itr.next(); System.out.print(element + " "); System.out.println();

Eredmény: // Változtathatjuk is az elemeket ListIterator litr = al.listiterator(); while(litr.hasnext()) { Object element = litr.next(); litr.set(element + "+"); System.out.print("Modified contents of al: "); itr = al.iterator(); while(itr.hasnext()) { Object element = itr.next(); System.out.print(element + " "); System.out.println(); Original contents of al: C A E B D F Modified contents of al: C+ A+ E+ B+ D+ F+

Tárolt típus Az eddigi kódokban a Collectionjeinknek nem mondtuk meg, hogy mit tarolnak. Ez általában nem jó ötlet. A következõ módon lehet tudatni bármelyik Collectionnel, hogy egy adott dolgot tárol: ArrayList<String> mylist = new ArrayList<String>();

Tárolt típus Az eddigi kódokban a Collectionjeinknek nem mondtuk meg, hogy mit tarolnak. Ez általában nem jó ötlet. A következõ módon lehet tudatni bármelyik Collectionnel, hogy egy adott dolgot tárol: ArrayList<String> mylist = new ArrayList<String>(); A String helyére persze bármilyen tipust írhatunk, akár általunk írt osztályt is. Sõt, mivel tudjuk, hogy ezek implementálják a korábban említett interface-eket, így a következõt is írhatjuk (és fogjuk is írni): List<String> mylist2 = new ArrayList<String>(); Collection<String> mylist3 = new ArrayList<String>();

Kényelem Tanultunk már egy speciális for ciklust, amivel bejárhatunk pl egy tömböt. Ezt a szintaxist használhatjuk bármilyen Collection-re is: List<Integer> testlist = new ArrayList<Integer>(); testlist.add(5); testlist.add(6); testlist.add(7); for(integer i : testlist) { System.out.println(i); Amint látjátok primitíveket nem tudnak a Collection-ök tárolni, így muszáj volt az Integer osztályt használni.

Mapek használata A Map-ek kicsit bonyolultabban járhatók be: Map<String, Integer> map = new HashMap<String, Integer>(); map.put("kutya", 5); map.put("macska", 11); for(map.entry<string, Integer> pair : map.entryset()) { System.out.println(pair); A Map-nek két típust kell megadni, a kulcs típusát és a tárolt érték típusát. Ciklusban pedig csak a tárolt párokon tudunk végigmenni. Ezt úgy tesszük meg, hogy ennek egy halmazát (Set) kérjük le. A Map.Entry a tárolt pároknak a típusa.