Interface Design

595 views
557 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
595
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Interface Design

  1. 1. Interface terve zés Perényi Zsigmond, Pronaxis Kft. ( z sigmond.perenyi @pronaxis.com ) OOD tanfolyam (2003. július 1.) Objektum-orientált alapfogalmak
  2. 2. Objektumok kommunikációja <ul><li>Az objektumok ü zenetek kel (message/request) kommunikálnak: </li></ul><ul><li>a célobjektumnak küldünk egy üzenetet </li></ul><ul><li>ennek hatására az objektumnak meghívódik egy metódusa </li></ul>request A z objektum metódusának meghívásával történik . P l : l ist.sort (); caller s ort () method List sort()
  3. 3. Objektumok kommunikációja 2. <ul><li>Milyen üzeneteket küldhetünk egy objektumnak? </li></ul><ul><li>Amilyen oper ációkat az objektum interfésze lehetővé tesz számunkra </li></ul>List sort() request caller s ort () m ethod body operation signature (definition /declaration) … .. … .. … .. specifikáció implementáció o szt ály <<realize>> List sort() interface
  4. 4. Interface <ul><li>Operációk egy halmaza </li></ul><ul><li>Az egyetlen módja, hogy egy objektummal kommunikáljunk </li></ul><ul><li>Semmit nem mond az implementációról </li></ul>Collection add ( o:Object) remove ( o:Object) size(): int interface Sortable sort( ) interface
  5. 5. Interface öröklés <ul><li>A z objektum által elfogadott üzenetek halmazának kibővítése </li></ul>Ordered Collection List get(i :int ) : Object set (i:int, o:Object) add(i:int, o:Object) remove(i:int) interface Collection add ( o:Object) remove ( o:Object) size(): int interface Sortable sort( ) interface Set interface
  6. 6. Interface implementációja List get(i :int ) : Object set (i:int, o:Object) add(i:int, o:Object) remove(i:int) interface <<realize>> ArrayList get(i :int ) : Object set (i:int, o:Object) add(i:int, o:Object) remove(i:int) LinkedList get(i :int ) : Object set (i:int, o:Object) add(i:int, o:Object) remove(i:int) <<realize>> o szt ály o szt ály A … .. … .. L … .. … .. különböző implementációk
  7. 7. Típus <ul><li>típus = elnevezett interface ≠ osztály </li></ul><ul><li>Az adott interface által definiált összes üzenetet elfogadja. </li></ul><ul><li>egy objektumnak több típusa is lehet </li></ul><ul><li>nagyon különböző objektumoknak is lehet ugyanaz a típusuk </li></ul>Osztály osztály öröklés : az adatok és a metódus implementációk is öröklődnek -> code/impl. megosztás/reuse az interfészek által definiált operációk implementációi + adatreprezentáció
  8. 8. Polimorfizmus A különböző objektumok, melyek azonos interface-szel rendelkeznek, másként implementálhatják az interface által definiált metódusokat. Vagyis egy adott üzenet által kiváltott metódusnak több alakja lehet: polimorfizmus . request -> (futás idejű összekötés: dynamic binding) -> method Azonos interface-szel rendelkező (= azonos típusú) objektumok felcserélhetők. “ Program to an interface!&quot; A kód írásakor csak annyit követelünk meg, hogy egy adott objektum valósítsa meg az adott interface-t, vagyis képes legyen elfogadni a neki szánt üzeneteket. Így a kód írásakor tulajdonképpen olyan metódusokat hívunk, amelyek lehet, hogy nem is léteznek (virtuális metódusok)... Amikor egy objektumnak üzenetetet küldünk, az, hogy pontosan melyik metódus hívódik meg, mind az üzenettől, mind a célobjektumtól függ.
  9. 9. Programozás a gyakorlatban tervezési konstrukciók -> nyelvi eszközök -> programozói eszközök M inden osztály (implicit módon) egyben egy interface is, amely az osztály által definiált összes metódust tartalmazza! osztály öröklés ↔ interface öröklés - Class + Interface abstract class Java + Class + pure virtual class C++ Többszörös öröklés Megvalósítása Többszörös öröklés Megvalósítása Class Interface
  10. 10. Újrafelhasználás (reuse) Delegáció : eg y objektum a kapott üzenetet továbbíthatja (delegálhatja) egy másik objektumnak, majd az eredményt úgy adhatja vissza a hívónak, mintha ő végezte volna el a kívánt feladatot. Kompozíció Öröklés <ul><li>a prog.nyelvek nem támogatják </li></ul><ul><li>nehezebb az implementációt módosítani ( mindig delegálni kell ) </li></ul><ul><li>az indirekció csökkenti a hatékonyságot </li></ul>dinamikus: az objektum akár futás időben is kicserélhető Black-box reuse Kevesebb osztályt, több példányt eredményez <ul><li>statikus: </li></ul><ul><li>az implementáció nem cserélhető futás közben </li></ul><ul><li>az implementáció akaratlanul is öröklődik </li></ul><ul><li>a prog.nyelvek támogatják </li></ul><ul><li>könnyebb az implementációt módosítani (overriding) </li></ul>White-box reuse Több osztályt eredményez Hátrányok Előnyök
  11. 11. Paraméterezhető (sablon, template) osztályok Az újrafelhasználás egy formája . <ul><li>Előnye: gyors </li></ul><ul><li>Hátránya: </li></ul><ul><li>statikus: futási időben nem cserélhető </li></ul><ul><li>nem minden OO prog.nyelv támogatja </li></ul><ul><li>nem szigorúan OO </li></ul>Az UML támogatja: List T:class <ul><li>Létrehozása Together-ben: </li></ul><ul><li>Jobb klikk az osztályon </li></ul><ul><li>Choose Pattern... </li></ul><ul><li>Default template </li></ul>
  12. 12. Fordítási idejű ↔ futási idejű struktúrák asszociáció -> aggregáció -> kompozíció

×