Programozási nyelvek Java

Hasonló dokumentumok
Programozási nyelvek Java

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

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

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Programozási nyelvek Java

JAVA PROGRAMOZÁS 3.ELŐADÁS

é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

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?

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

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

Programozási nyelvek Java

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

Objektumorientált programozás C# nyelven

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Programozási nyelvek Java

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

Interfészek. PPT 2007/2008 tavasz.

Programozási nyelvek Java

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

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

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Szoftvertechnológia alapjai Java előadások

Programozási nyelvek Java

OOP #14 (referencia-elv)

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

Elemi Alkalmazások Fejlesztése II.

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Már megismert fogalmak áttekintése

Objektumorientált programozás C# nyelven

Programozási technológia

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Virtuális függvények (late binding)

Öröklés és Polimorfizmus

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

Bevezetés a programozásba Előadás: A const

Java VII. Polimorfizmus a Java nyelvben

Programozási nyelvek II.: JAVA

Java VII. Polimorfizmus a Java nyelvben

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

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

Osztályok. 4. gyakorlat

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

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

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

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

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

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

Bevezetés a programozásba előadás: Öröklődés

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

OOP. Alapelvek Elek Tibor

Programozási technológia

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

A Java és a C++ összehasonlítása

ISA szimulátor objektum-orientált modell (C++)

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

Programozás I. Első ZH segédlet

C++ programozási nyelv

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

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

Programozási nyelvek (ADA)

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

C++ programok fordítása

Interfészek. Programozás II. előadás. Szénási Sándor.

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

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

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Java és web programozás

Segédanyag: Java alkalmazások gyakorlat

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

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

Programozási nyelvek JAVA EA+GY 1. gyakolat


C#, OOP. Osztályok tervezése C#-ban

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

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

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Java II. I A Java programozási nyelv alapelemei

Programozás II gyakorlat. 6. Polimorfizmus

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

Programozás módszertan p.1/46

ELTE SAP Excellence Center Oktatóanyag 1

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

Programfejlesztési Modellek

Concurrency in Swing

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

Java II. I A Java programozási nyelv alapelemei

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Objektum orientált kiterjesztés A+ programozási nyelvhez

C++ programozási nyelv

Átírás:

Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is megvalósíthatja több interfacet is megvalósíthat egy osztály - minél jobban ki tudjam fejezni magam (ősosztály csak egy van interface lehet több) Object többszörös öröklődés multiple inheritance Osztályok közt technikai okok miatt nincs (- 2 egyforma közül melyiket használná?) Java: - Létezik többszörös öröklődés többszörös altípusképzés implements - Létezik többszörös öröklődés: technikai komplikációk Létezik olyan objektum orientált nyelv, amiben van (ilyenkor bonyolultabb nyelvi szabályok) Például: C++

Interface: publikus, absztrakt példányszintű metódusok Absztrakt osztályok: - Ugyan úgy csak típusozásra használhatóak, mint az interfacek - Lehetnek abstract műveleteik, de tartalmazhatnak mezőket és implementációkat is - Öröklés: NINCS többszörös - extends reláció irányított fa marad konkrét osztály abstract osztály interface egyszeres öröklődés egyszeres öröklődés többszörös öröklődés nem lehet abstract művelet lehet abstract művelete lehet abstract művelete lehet konkrét művelete lehet konkrét művelete nem lehet konkrét művelete class C{ int x; void m() ; { x = 1; // nélküle értelmes, vele kell az abstract abstract class Hasab{ double magassag = 1.0; double terfogat(){ return alapterulet() * magassag; abstract double alapterulet(); // Abstract osztály esetén kell abstract // Interface esetén nem kell kiírni class Henger extends Hasab{ double sugar = 1.0; double alapterulet(){ return sugar*sugar*math.pi; class Kocka extends Hasab{ double alapterulet(){ return magassag * magassag;

Object Hasab Henger Kocka Egy abstract osztály bázisa lehet konkrét osztály, és fordítva. Továbbá konkrét osztály bázisa konkrét osztály és abstract osztály bázisa abstract osztály. Csak egyszeres öröklődés! Hasáb: egy paraméteres definíció (itt paraméter az alapterulet() ), a paramétert használhatom. kóddal paraméterezhető osztálydefiníció - formális paraméter: alapterulet() A Henger és a Kocka aktuális paramétert feleltetnek meg a formálisnak. (metódus implementációt) A konkrét alosztály teljessé teszi a definíciót, felparaméterezi kóddal az abstract bázisosztályt. Megjegyzés: Objektum-orientált módja a kóddal való paraméterezésnek. Statikus típus: compiler eldönti, mely programok legálisak Dinamikus típus: run-time eldönti, hogy egy példány szintű metódus melyik implementációját kell végrehajtani class Point{ int x,y; @Override public String tostring(){return x+ ; +y; // régi művelethez új törzs // megjelöljük a felüldefiniált függvényt annotáció, nem kötelező, de ajánlott void move(int dx, int dy){ x+= dx; y += dy; // új művelet Object o = new Point(); o.move(3,7); /* Fordítási hiba!, statikus típus alapján Nem minden jó program helyes */ o.tostring(); /* helyes, Object-ben van ilyen, ezért legális. Run-time a Pointban szereplő fut majd le (dinamikus típus) */

(Point) o // statikus típusa Point lett (Point) pityu // fordítási hiba, nincs kapcsolat a Point és a String között // nem downcast (String nem bázistípusa Point-nak) Típuskényszerítés: (type cast): downcast, általánosabb típusból szeretnénk speciálisabb típust. ((Point) o).move(3,7); // helyes compiler szerint, lefordul ha o = pityu ; ((Point) o).move(3,7); // a compiler szerint helyes, futás közben lesz baj Futási hiba: ClassCastException (a dinamikus típus, new megfelelő) Néha kell: Statikus és dinamikus típus ellenörzésének kombinálása. biztonság (le se fordul) flexibilitás (futásidejű típusok) A statikus típus becslése a dinamikusnak, a dinamikus a pontos, ezért rugalmas a dinamikus típusellenörzés. instanceof if (o instanceof Point) ((Point) o).move(3,7); o!= null & dinamikus_tipus(o) altípusa Ez akkor is jó, ha o egy (pl) ColoredPoint() dinamikus_tipus(o):= o által hivatkozott objektum létrehozásához használt típus. Automatikus upcast: REFERENCIÁK! Példa: Object o = new Point(); változó statikus típusa Object kifejezés statikus típusa Point Ha altípusból megyek a bázisa: Point <: Object

Speciálisabb értéket általánosabb változóba: Primitív típusokon automatikus konverzió byte <: short <: int <: long <: float <: double - értékreferenciája megváltozik (más bitek) Átjárható a primitív típus és a referencia típus közti világ: 8 darab Wrapper(csomagoló) osztályok int x = 5; 5 x 5 Integer y = 5; y objektum rövidítés (syntax sugar szintaktikus cukorka) Integer y = new Integer(5); // Igazság class C{ void m(int x){ void n(integer x){ new C().m(5); new C().n(new Integer(5)) new C().n(5) autoboxing Automatikus konverziók new C().m(new Integer(5)) auto-unboxing ugyanaz