Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:

Slides:



Advertisements
Hasonló előadás
© Kozsik Tamás Különböző nyelvekhez igazítás Internationalization - i18n.
Advertisements

Osztály leszármaztatás
II. Grafikus felhasználói interfész
AZ OOP ALAPJAI.
© Kozsik Tamás Appletek A Java nyelv elsődleges számú reklámja HTML oldalak aktívvá tevéséhez Kisalkalmazás WEB-böngésző által futtatott Java.
Programozás III KOLLEKCIÓK 2..
A Java programozási nyelv
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
Öröklődés 2..
RMI = Remote Method Invocation
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
© Kozsik Tamás JavaBeans Nagyon divatos technológia Nem tévesztendő össze az Enterprise Java Beans technológiával Programozási konvenciók gyűjteménye.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Öröklődés Polimorfizmus Csomagok Absztrakt osztályok, interfészek
Fájlkezelés, IO Kivételkezelés Belső osztályok
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Fejlett Programozási Technikák 2.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
Java programozási nyelv 5. rész – Osztályok III.
C# tagfüggvények.
C# tagfüggvények.
Csomagok.
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Kivételkezelés.
III. Java környezet 9. A Java nyelvről 10. Java programfejlesztés, JDK.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
A PHP 5 újdonságai Az OOP terén. Miről lesz szó? Osztályok kezelése – Új direktívák – Konstruktor – Destruktor Interfészek Kivételkezelés.
Programozási technológia
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Scala KOVÁCS VINCENT. Gyűjtemények – Collections  Scala több féle gyűjteménnyel rendelkezik:  Listák (Lists)  Halmazok (Sets)  Maps  Tuple  A gyűjtemények.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Számítógépes Grafika 4. gyakorlat Programtervező informatikus (esti)‏ 2011/2012 őszi félév.
Java programozási nyelv Filekezelés
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Java programozási nyelv Adatbekérés konzolról
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Egyenesvonalú (lineáris) adatszerkezetek
Programozás III KIVÉTEL – CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban.
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 5. gyakorlat.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
Fejlett Webes Technológiák II. Bilicki Vilmos
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Hálózatkezelés Java-ban
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Unit tesztelés Swift-ben
Előadás másolata:

Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:

getClass()‏ final („végleges”)‏ segítségével lekérhetjük az objektum osztályát, ősosztályát void PrintClassName(Object obj) { System.out.println("The Object's class is " + obj.getClass().getName()); } Object createNewInstanceOf(Object obj) { return obj.getClass().newInstance(); }

Egymásba ágyazott osztályok I. class TartalmazoOsztaly{... class BeagyazottOsztaly {... } } a beágyazott osztály hozzáfér a tartalmazó osztály minden tagjához (private-hez is) ‏ gyakran használják eseménykezelésre a beágyazott osztály lehet: teljes anonymous – metódusban definiáljuk

Egymásba ágyazott osztályok II. anonymous public class kezelo implements ActionListener { … } hourField.addActionListener(new kezelo()); helyette: hourField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { Integer.parseInt(e.getActionCommand); } )‏

Absztrakt osztály – példa abstract class Cat { String abstractClassName = "Cat"; //abstract classes can have variables String getAbstractClassName() { return abstractClassName; } abstract String getClassName(); //this must be implemented } class Himalayan extends Cat{ String className = "Himalayan"; public Himalayan() {} String getClassName() //must have this method { return className; } public static void main(String[] args) { //Cat percy = new Cat(); //can not instantiate an abstract class Himalayan cappuccino = new Himalayan(); System.out.println(cappuccino.getAbstractClassName()); //output is: Cat System.out.println(cappuccino.getClassName()); //output is: Himalayan } }

Interfészek az interfész egy protokollt definiál mely bárhol megvalósítható segítségével tulajdonképpen megvalósítható a többszörös öröklődés az interfész metódusokat definiál, de nem implementálja őket; definiálhat változókat is különbség az absztrakt osztály és az interfész között: egy interfész nem implementálhat metódusokat egy osztály több interfészt megvalósíthat az interfész nem tagja az osztályhierarchiának

Interfész definiálása az interfész örökölhet (extends – őse a szuper interfész) ‏ a metódusok törzs nélküliek csak static, final módosítók használhatóak minden public public interface StockWatcher extends PStockWatcher{ final String sunTicker = "SUNW"; final String oracleTicker = "ORCL"; final String ciscoTicker = "CSCO"; void valueChanged(String tickerSymbol, double newValue); }

Interfész megvalósítása minden az interfészben deklarált metódust meg kell valóstani az interfészt nem szabad módosítani! az extends az implements előtt szerepel public class StockApplet extends Applet implements StockWatcher {... public void valueChanged(String tickerSymbol, double newValue) ‏ { if (tickerSymbol.equals(sunTicker)) {... } else if (tickerSymbol.equals(oracleTicker)) {... } else if (tickerSymbol.equals(ciscoTicker)) {... } } }

Csomagok Minden osztály egy csomaghoz tartozik Beépített és saját (felhasználói) csomagok Deklaráció: kód első sora package xy.gw; Hierarchikus, könyvtárstruktúrának követnie kell Ha nem adjuk meg: default package import (kb. mint C++ include)‏

Csomagkezelés az osztálykezelés egyszerűbbé tétele feloldja az elnevezési problémákat az összefüggő osztályokat csomagokba lehet foglalni a csomagon kívül csak a public tagok, osztályok hozzáférhetőek elnevezésre a cégek a cég URL címének inverze használható: com.company.package package graphics; public class Circle extends Graphic implements Draggable {... }

Csomagok használata Hivatkozhatunk a tagra a teljes névvel A csomag tagot importáljuk Az egész csomagot importáljuk

Csomagok – példa src/world/HelloWorld.java package world; public class HelloWorld { … } src/world/moon/HelloMoon.java package world.moon; public class HelloMoon { … } world.HelloWorld myWorld = new world.HelloWorld(); import world.*; import world.moon.HelloMoon; import java.util.*; HelloMoon myMoon = new HelloMoon(); S tring holeName = myMoon.getHoleName();

Standard java csomagok java.lang (nyelvi elemek – nem kell importálni!!))‏ wrapper osztályok (Integer, Byte,...)‏ Math (Math.PI, Math.sin(1), statikus!!) Object (ősosztály, clone, equals, toString, finalize)‏ System (in, out, err, setIn, setOut, setErr, gc, exit, arrayCopy, currentTimeMillis)‏ Thread (párhuzamos programozás)‏ java.io (IO műveletek, file, nyomtatás, stream-ek használatával)‏ java.net (hálózati kommunikáció, socket, datagramm, URL)‏ java.applet (Appletek)‏ java.util (időzítő, adatszerkezetek (hash, vektor), dátum, StringTokenizer,...)‏ java.util.regex, java.util.logging,... java.awt (grafikus felület, eseménykezelés)‏ javax.swing (újabb grafikus könyvtár...)‏ java.sql (SQL, adatbázis kapcsolat)‏

Upcasting az új osztály a meglévő osztály egy típusa (ősosztálya)‏ minden üzenetet melyet az ősosztálynak küldhetünk elküldhető a gyermek osztálynak is a Java erősen típusos nyelv azonban a gyermek referencia ős referenciává alakítása működik (upcasting)! mindig biztonságos (egy specifikusabb megvalósításból megyek egy általánosabbra) ezért nem kell semmilyen módon jeleznünk a fordító számára class Instrument { public void play() {} static void tune(Instrument i) { //... i.play(); } // Guitar objects are instruments // because they have the same interface: public class Guitar extends Instrument { public static void main(String[] args) { Guitar g = new Guitar(); Instrument.tune(g); // Upcasting }

Kései kötés (late binding)‏ Shape s = new Circle(); s.draw(); Minden metódus így működik Kivétel final, static (ezzel gyorsíthatjuk a programot, a fordító hatékonyabb kódot generál, a private metódusok is finalként működnek)‏ A private metódus nem felülírható !!! public class PrivateOverride { private void f() { System.out.println("private f()"); } public static void main(String[] args) { PrivateOverride po = new Derived(); po.f(); } class Derived extends PrivateOverride { public void f() { System.out.println("public f()"); }

Downcasting Az upcasting biztonságos downcasting-nál meg kell vizsgálni a referenciát RTTI (run time type identification)‏ ClassCastException

RTTI Class objektum – minden általunk használt osztályhoz static Class Class.forName(name, …)‏ Class.newInstance()‏ public final Class Object.getClass()‏ instanceof Amikor egy objektumot létrehozunk a JVM megnézi, hogy az adott Class objektum be van-e már töltve, ha nincs akkor betölti (nem töltődik be minden a program elindításakor)‏

public static void main(String[] args)‏ Kötelező formátum java osztálynév ”elso parameter” Tesztelésre minden osztályba használható

JAR fájlok kezelése jar cf jar-file input-file(s) – becsomagolás jar tf jar-file – tartalom megtekintése jar xf jar-file [archived-file(s)] – kicsomagolás java -jar jar-file – futtatás jar uf jar-file input-file(s) – frissítés jarsigner jar-file alias – aláírás jarsigner -verify jar-file - ellenőrzés

public paint(Babu b) { b....(); if (b instanceof Lovas) { Lovas l = (Lovas)b; l....(); } else … }