Interfészek. PPT 2007/2008 tavasz.

Hasonló dokumentumok
Már megismert fogalmak áttekintése

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

é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

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

Programozás módszertan p.1/46

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

Osztály öröklődés. Öröklődés és polimorfizmus. Programozás II. előadás. Szénási Sándor.

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

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

Programozási nyelvek Java

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

Objektumorientált programozás C# nyelven

Programozási nyelvek Java

C++ programozási nyelv

Objektumorientált programozás C# nyelven

Programozási alapismeretek 4.

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

OOP és UML Áttekintés

OOP #14 (referencia-elv)

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.

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?

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

OOP. Alapelvek Elek Tibor

Osztályok. 4. gyakorlat

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

Programozás III. - NGB_IN001_3

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 I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila

JAVA PROGRAMOZÁS 3.ELŐADÁS

III. OOP (objektumok, osztályok)

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álytervezés és implementációs ajánlások

Öröklés és Polimorfizmus

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

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

C++ programozási nyelv

58. Osztály, objektum fogalma, implementációs lehetőségek(shagreen) 59. Egységbezárás (elvi háttere, gyakorlati megvalósítás) (Shagreen)

ELTE SAP Excellence Center Oktatóanyag 1

1. Bevezetés A C++ nem objektumorientált újdonságai 3

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

Adatstruktúrák, algoritmusok, objektumok

Objektum orientált programozás Bevezetés

Java felhasználói felület

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Bevezetés, a C++ osztályok. Pere László

S0-02 Típusmodellek (Programozás elmélet)

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

Web-technológia PHP-vel

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

Objektumorientált programozás Java-ban

Java VII. Polimorfizmus a Java nyelvben

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Java VII. Polimorfizmus a Java nyelvben

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?

Objektumorientált szoftverfejlesztés alapjai

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

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

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

Objektumelvű programozás

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

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

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

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

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Objektumorientált paradigma és a programfejlesztés

Programozási nyelvek Java

Programozási nyelvek Java

C++ programozási nyelv

Programozás C és C++ -ban

Magas szintű adatmodellek Egyed/kapcsolat modell I.

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance

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

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

Enterprise JavaBeans 1.4 platform (EJB 2.0)

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

Globális operátor overloading

C++ programozási nyelv Konstruktorok-destruktorok

Junior Java Képzés. Tematika

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

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

Programozás II. 2. Dr. Iványi Péter

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 technológia

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

A TANTÁRGY ADATLAPJA

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

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

Adatbázisrendszerek. adatbázisokban. Objektumorientált és objektum-relációs adatbázisok április 24.

RESIDENT EVIL CODENAME: NIK

Objektumorientált paradigma

Átírás:

Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1

Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2

Már megismert fogalmak áttekintése Objektumorientált program felépítése Osztály, objektum Érték típus, referencia típus Öröklődés egyszeres öröklődés többszörös öröklődés Korai kötés, késői kötés Absztrakt osztály Polimorfizmus (többalakúság) módszer polimorfizmus objektum polimorfizmus Polimorfizmus a gyakorlatban pl. vizuális felület komponensei Az (egyszeres) öröklődés korlátai 3

Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 4

Interfész fogalma Az interfészek olyan üres osztályok, amelyek nem tartalmaznak megvalósítást Interfészek néhány tipikus alkalmazása osztályok felruházása valamilyen műveletekkel (nevet rendel metódus szignatúrák egy csoportjához) többszörös öröklődés egyszerűsített megvalósítása UML jelölések <<interface>> IComperable +equals( ) +more( ) +less( ) IComperable Number +equals( ) +more( ) +less( ) interfész definíció interfész megvalósítás 5

Interfész felépítése Interfész tipikusan tartalmazhat metódus szignatúrát szignatúra: metódus neve + visszatérési értéke + paraméterek (interfész metódus mindig virtuális és absztrakt) statikus mezőt mivel ezek nem igényelnek objektum példányt konstans mezőt szintén nem igényelnek objektum példányt tulajdonságot amennyiben a nyelv támogatja Interfész nem tartalmazhat konkrét metódus, tulajdonság implementációt példányszintű mezőt példányosításhoz kapcsolódó konstruktort/destruktort Különböző módosítók (láthatóság stb.) az osztályokhoz hasonló módon használhatók, bár nyelvtől függően eltérések is lehetnek 6

Interfész megvalósítása (támogatása) Interfészek önmagukban nem példányosíthatók, csak az őket megvalósító osztályokon keresztül érhetők el a műveleteik Az interfész megvalósításának lépései osztály definícióban a megvalósítandó interfészek felsorolása az interfész(ek)ben definiált metódusok implementálása Egy osztály egyszerre tetszőleges számú interfészt valósíthat meg, ezzel a polimorfizmus szempontjából a többszörös örökléshez hasonló eredményt érhetünk el Egy osztálynak kötelező implementálnia az általa megvalósított interfészek által definiált metódusokat (ellenkező eset fordítási hibát eredményez) Kivéve az absztrakt osztályokat, ahol nem szükséges minden metódust megvalósítani 7

Implicit/explicit interfész megvalósítás A többszörös öröklésnél felmerülő problémák közül néhány felmerül a több hasonló interfészt megvalósító osztályok esetén is Több interfész is tartalmazhat ugyanolyan szignatúrájú metódusokat, ennek kezelése érdekében kétféle interfész megvalósítást használhatunk Implicit megvalósítás az osztály metódusának a szignatúrája megegyezik az interfész(ek)ben megadott szignatúrával bármelyik interfésszel hivatkozunk az osztályra, mindig ugyanaz a metódus fut le Explicit megvalósítás: az osztályban a metódus neve mellett megadjuk az általa megvalósított interfész nevét is attól függően, hogy melyik interfésszel hivatkozunk az osztályra, mindig a megfelelő metódus fut le célszerű ezt a megvalósítást használni 8

Interfész típusú referencia Az interfészek tulajdonképpen típusok, ezért lehetséges ilyen típusú változók deklarációjára is Egy T típusú osztályra az alábbi típusú referenciákkal hivatkozhatunk (más típus fordítási hibát eredményez): T típusú referenciával T valamelyik őstípusának referenciájával T osztály által megvalósított valamelyik interfész típusának referenciájával (egyéb: konverziók, casting stb.) Az interfész típusú referenciák az osztály típusú referenciákhoz hasonló módon működnek Ez nem keverendő össze azzal, hogy az interfész típusból nem lehet példányt létrehozni! 9

Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 10

Interfész hierarchia Az osztályokhoz hasonlóan az interfészek között is fel lehet építeni egy öröklődési hierarchiát (öröklődés helyett itt gyakran a kiterjesztés szót használjuk) Az osztályok és az interfészek hierarchiája egymástól független, interfész őse nem lehet osztály és osztály őse sem lehet interfész (az osztályok közti öröklést és az interfész megvalósítását tekintsük különbözőnek) Az osztályokhoz hasonlóan az interfészek is általában mind egy legmagasabb szintűősből származnak Az osztályokhoz hasonlóan a polimorfizmus előnyeit az interfészek között is alkalmazhatjuk (minden interfész használható bármelyik őse helyén) 11

Osztály hierarchia Amennyiben egy osztály megvalósít egy interfészt, akkor a leszármazottjai is mind megvalósítják. Ennek direkt jelölésére általában nincs szükség A megvalósító metódusokat a leszármazottak öröklik, így értelemszerűen nincs szükség további követelmények teljesítésére Egy T típusú osztályra tehát az alábbi típusú referenciákkal hivatkozhatunk: T típusú referenciával T valamelyik őstípusának referenciájával T osztály által megvalósított valamelyik interfész típusának referenciájával T osztály bármelyik őse által megvalósított interfész típusának referenciájával T osztály által megvalósított interfész bármelyik őstípusának referenciájával (egyéb: konverziók, casting stb.) 12

Néhány további gondolat Jelölő interfészek (marker interface) nincsenek metódusaik az osztályhoz rendelve futás közben lekérdezhetők, ezzel a futtató környezet (vagy reflexión keresztül az egyéb programok) számára nyújt információt ha van helyette más nyelvi elem, célszerű elkerülni a használatát Segítő osztályok (helper class) egy összetett interfész esetén gyakran csak néhány metódus megvalósítására lenne szükség, azonban mindig kötelező mindet implementálni kényelmi szempontból az interfészekhez gyakran készítenek egyszerű, az interfészt üres (vagy alapértelmezett kóddal) megvalósító ún. segítő osztályokat Nem célszerű interfészt új metódusokkal bővíteni, mivel így az ezt implementáló osztályok fordíthatatlanná válnak 13

Javasolt/felhasznált irodalom BMF NIK AAO, OOP, VEP előadások J. Richter: CLR via C# 2nd edition Microsoft press, 2006 14