Gyakorlati alapok III.

Az interfész (interface)

 

Bevezetés

Kapcsolódó fejezetek

 

Bevezetés

 

Az objektumorientált programozás talán legfontosabb jellegzetessége az osztályok közti szabályozott, de mégis hatékony kommunikáció. Amint azt tapasztalhatjuk, az osztályok a külvilág felé alapjában véve zártak (encapsulation). Ennek több oka van, az egyik, hogy védik saját, belső adataikat, műveleteiket (metódusaikat).

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Ennek megértése viszonylag könnyű, ha belátjuk annak abszurditását, ha személyes dolgaink felügyeletét, ügyintézését vadidegenekre bízzuk.

 

A zártság tehát egyfelől biztonsági szempont, ám másfelől része egy magasabb szintű logikai struktúra kialakításának is, hiszen a zártság fenntartásával különböző tulajdonságú osztályok hozhatók létre. Tulajdonképpen (többek között) ez az elvi szempont érvényesül az API-osztályhierarchia, tágabb értelemben bármilyen, valamilyen logikai szempont szerint rendezett osztályszerkezet kialakításában.

 

Ha logikusan követjük a gondolatmenetet, akkor a fentiekből az következik, hogy a kialakított osztályhierarchiánk tökéletesen különböző osztályokból fog állni és ezeket ilyen-olyan logikai szempontok szerint továbbrendezett csomagokba (package) fogjuk sorolni. Ez így alapvetően már működőképes egységet alkot, mert ugyan szabályozott körülmények között, de az osztályok elérhetik egymás adatait, műveleteit.

 

(Mindeközben azonban ne felejtsük el, hogy az osztályok bár alapvetően különböző funkcionalitásúak, ám egyúttal sok azonos elemet is tartalmaznak, például az öröklődés miatt.)

 

Létezhet azonban egy további, speciális, már osztályok feletti kapcsolódási szempont, ez pedig az interfész (interface). Az interfész használatával lehetőségünk nyílik arra, hogy:

Az interfész eredeti jelentése jól tükrözi ezt a szándékot, hiszen (kapcsolódási) felületet jelent. De vajon mit értünk az osztályok "különböző és közös tulajdonságai" alatt?

 

Az osztályok adatokból és a rajtuk elvégzendő műveletekből állnak, mindegyikük 1-1 jól meghatározott feladat végrehajtására összeválogatva. Az osztályhierarchia mindenkor kiválóan tükrözi ezt a logikai csoportosítási szempontot.

 

Ha 2 osztály funkcionalitásában, működésében azonos (azaz közös tulajdonságúak), akkor a kapott bemeneti adatokból azonos kimeneti adatokat fognak produkálni. Ez azonban csak elméleti megközelítés, mert az osztályhierarchián belül nem sok értelme van az efféle kódredundanciának.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Ehelyett benne annál több, funkcionalitásában, működésében különböző (azaz különböző tulajdonságú) osztályt fogunk találni, amelyek között egyfajta hídként az interfész lehetőségét használhatjuk fel, ha 2 különböző osztály között közös tulajdonságokat akarunk kialakítani.

 

Kapcsolódó fejezetek