Java és web programozás

Hasonló dokumentumok
Java és web programozás

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

és az instanceof operátor

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

Java és web programozás

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

Java és web programozás

OOP: Java 8.Gy: Gyakorlás

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

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

Osztályok. 4. gyakorlat

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

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

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

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

Szoftvertechnolo gia gyakorlat

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

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

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ás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

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

Java és web programozás

Programozási nyelvek Java

Java és web programozás

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

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

Programozási nyelvek II.: JAVA

Objektumorientált programozás C# nyelven

Java és web programozás

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

BME MOGI Gépészeti informatika 8.

3. Osztályok II. Programozás II

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

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Tervminták a valósidejű gyakorlatban

C++ programozási nyelv Konstruktorok-destruktorok

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

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

OOP: Java 4.Gy: Java osztályok

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Java és web programozás

7. K: JAVA alapok Konzultáció

Java Programozás 11. Ea: MVC modell

Java programozási nyelv 5. rész Osztályok III.

OOP #14 (referencia-elv)

Kalapácsvetés 2016 szöveges

Programozás I. Első ZH segédlet

Programozási alapismeretek 4.

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

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

Segédanyag: Java alkalmazások 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

Programozási nyelvek II.: JAVA

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás II. labor

JAVA PROGRAMOZÁS 3.ELŐADÁS

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

TestLine - OO Programozás alapjai Minta feladatsor

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Segédanyag: Java alkalmazások gyakorlat

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

Swing. (A javax.swing csomag)

Programozási nyelvek II.: JAVA

ZH mintapélda. Feladat. Felület

Bánsághi Anna

Bevezető. Servlet alapgondolatok

OOP: Java 7.Gy: Öröklődés, referenciák

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

OOP: Java 1.Gy: Java alapok

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira

Kezdő programozók hibái

Informatika terméktervezőknek

BME MOGI Gépészeti informatika 4.

Programozási nyelvek Java

1. Alapok. Programozás II

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés)


GYAKORLATIAS JAVA MINTA

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Java programozási nyelv

INFORMATIKAI ALAPISMERETEK

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

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.

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

4. Gy: JAVA osztályok

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

I. fejezet Hello Világ! Programozás tankönyv. II. Fejezet. Helló Világ! avagy a Miért?-ek elkezdődnek

Programozási nyelvek és módszerek Java Thread-ek

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Programozás C++ -ban 2007/7

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

Szoftvertechnológia alapjai Java előadások

Objektumorientált programozás IX. Osztályok, objektumok

Átírás:

Budapesti M szaki Egyetem 2013. október 9.

5. El adás

Interface-ek Korábban már említettem az interface-eket. Akkor úgy fogalmaztam, hogy valamilyen tulajdonságot adnak az osztályoknak. A lényegüket talán abból lehet legjobban megérteni, hogy miért találták ki ket. Képzeljük el azt a helyzetet, hogy több fejleszt i cégnek meg kell állapodni valamilyen szabványon, ami szerint az általuk készített hasonló (de nem azonos) kódokat lehet használni.

Példa Képzeljük el, hogy léteznek gépek által vezérelt autók (tényleg léteznek). Ezeket különböz autó gyártók gyártják, s t az ket koordináló elektronikát pedig teljesen más cégek gyártják. Az autó gyáraknak és az elektronika gyártóknak meg kell egyezniük egymással, hogy az autókat milyen metódusokkal lehet irányítani, hogy majd ezt használhassák az elektronika gyártók. Ha sikerül megegyezniük valamilyen szabványban, akkor mindenkinek könny dolga van, hisz ha az összes autógyár ezt a szabványt használja, akkor az összes elektronika gyár tudja használni a szabvány metódusokat, így nem kell minden autóra külön szoftvert írnia.

Interface-ek folytatás Az interface-ek ezt a szabványt biztosítják. Az interface-eknek jóformán csak konstansai és metódus deklarálásai lehetnek. Deklarálás csak és nem deníció. Az interface csak azt mondja meg, hogy milyen bemenetei vannak a metódusnak, milyen típusú a visszatérési érteke és mi a metódus neve. Amikor egy osztály implementálja az adott interface-t, akkor kötelez megírnia az interface-ben szerepl metódusokat.

Konkrét példa public interface Movable { public boolean moveforward(double meters, double velocity); public boolean turnleft(double degrees, double angularvelocity);... A... nem a szintaktika része, csak jeleztem, hogy a többi metódust is megírhatnánk. Hasonlóan hozunk létre interface-t mint osztályt, azzal a különbséggel, hogy itt a metodusoknak nincs kapcsos zárojeles blokkja, hanem pontosvessz vel zárjuk a deklarációjukat.

Implementálás Most, hogy már van interface-ünk implementálni kellene egy osztályban. Ezt az implements kulcsszóval tehetjük: public class FutureCar implements Movable { public boolean moveforward(double meters, double velocity) { // TODO return false; public boolean turnleft(double degrees, double angvelocity) { // TODO return false;

Rosszul implementált interface Ha nem deniáljuk egy implementált interface metódusat az osztályban, akkor futni se fut a programunk. Ezzel garantálja, hogy ha valamit egy adott interface-el láttunk el, akkor tud is úgy m ködni, mint ahogy azt az interface megmondja.

Mire lesz jó nekünk Nekünk igaz nem kell gyárakkal összehangolni a kódjaink m ködését, de igy is nagyon hasznosak lesznek az interface-ek. Képzeljük el, hogy a Facebook postok interface-ekkel m ködnek. Milyen kényelmetlen lenne, ha valahogy külön kellene tárolni a képeket és szövegeket, esetleg linkeket amiket postol az ember. Ehelyett tehetjük azt, hogy mindet egy Postable interface-el implementáljuk. Ekkor tárolhatjuk mindet például egy Vector<Postable>-ben. És amikor meg akarjuk jeleníteni a böngész ben csak meghívjuk a Postable interface draw metódusát. A draw máshogy m ködik linkeknél, képeknél, szövegeknél, de ez nem számít. Meg van írva mindegyik osztályban és csak ez a lényeges.

Nagyobb példa Nézzük meg a Facebookos példát. Az interface-ünk neve Postable, az egyetlen metódusa a draw, ami egy Stringet ad vissza és nincs bemenete. Ezt az interface-t implementáljuk 3 különböz osztályban, majd létrehozunk ilyen típusú objektumokat és egy vektorban tároljuk mindet. Majd egyenként meghívjuk a draw függvényeiket.

public interface Postable { String draw(); // Uj file public class FacebookText implements Postable { private String content_; public FacebookText(String content) { content_ = content; public String draw() { return "<div>" + content_ + "</div>";

public class FacebookImage implements Postable { private String location_; public FacebookImage(String location) { location_ = location; public void setlocation(string location) { location_ = location; public String draw() { return "<img src=" + location_ + ">";

public class FacebookLink implements Postable { private String location_; private String label_; public FacebookLink(String location, String label) { location_ = location; label_ = label; public void setlocation(string location) { location_ = location; public String draw() { return "<a href=" + location_ + ">" + label_ + "</a>";

import java.util.vector; public class FacebookMain { public static void main(string[] args) { Vector<Postable> posts = new Vector<Postable>(); posts.add(new FacebookText("Volt egyszer...")); posts.add(new FacebookImage("halacska.jpg")); posts.add(new FacebookLink("google.com","Google")); posts.add(new FacebookText("...egy kiskutya.")); String html = new String(); for (Postable post : posts) { html += post.draw(); System.out.println(html);

Eredmény: <div>volt egyszer egy kiskutya...</div><img src= halacska.jpg><a href=http://google.com>google</a> <div>...elment a vasarba.</div>

Eredmény: <div>volt egyszer egy kiskutya...</div><img src= halacska.jpg><a href=http://google.com>google</a> <div>...elment a vasarba.</div> Amit nem tehetek meg, hogy olyan metódust hívok meg amit nem a megadott interface implementál. Pl: for (Postable post : posts) { post.setlabel("kutya"); Még akkor sem lehet ezt megtenni, ha mind3 osztálynak van setlabel metódusa. Mert mi Postable-ként hivatkozunk rájuk és amíg õket Postable-ként látjuk addig csak olyat tudunk tenni amit biztosan tud Postable is.

Lehet egy osztálynak több interface-e is, és akkor is mindet implementálni kell, ami az interface-ekben van. Pl: public class FacebookText implements Postable, Deletable { private String content_; public FacebookText(String content) { content_ = content; public String draw() { return "<div>" + content_ + "</div>";