Rozhraní

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Řádka 1: Řádka 1:
−
Objektově orientované jazyky poskytují pro realizaci tříd, kromě dědičnosti, dalši prostředek - rozhrani. Rozhrani definuje soubor metod, bez jejich implementace (Podobně jako kompletně virtuální třída, analogie je v rozepsané kuchařce, kdy víme co to bude za jídlo a z čeho budeme vařit, ale postup neznáme) Třida, která implementuje toto rozhrani (tj. implementuje - definuje - všechny jeho metody) je po té v polymorfovatelná do ukazatele definovaného tímto rozhraním, což znamená, ze klient ví, že tato třída má implementované všechny metody, které potřebuje (a které jsou definované v rozhraní)
+
Objektově orientované jazyky poskytují pro realizaci tříd, kromě dědičnosti, dalši prostředek - rozhraní. Rozhraní definuje soubor metod bez jejich implementace (podobně jako kompletně virtuální třída). Analogie je v rozepsané kuchařce, kdy víme co to bude za jídlo a z čeho budeme vařit, ale postup neznáme. Třída, která implementuje toto rozhrani (tj. implementuje - definuje - všechny jeho metody), je po té v polymorfovatelná do ukazatele definovaného tímto rozhraním, což znamená, ze klient ví, že tato třída má implementované všechny metody, které potřebuje (a které jsou definované v rozhraní).
  
−
Deklarace rozhrani je podobna deklaraci třidy
+
// trochu divoký vysvětlení
 +
 
 +
Deklarace rozhraní je podobná deklaraci třídy
  
 
  interface jmeno {
 
  interface jmeno {
Řádka 7: Řádka 9:
 
  }
 
  }
  
−
V Javě se implementace rozhraní zapiše pomoci kličoveho slova implements,
+
V Javě se implementace rozhraní zapiše pomoci kličoveho slova implements
 +
 
 +
Trida implements Rozhrani {
 +
  ...
 +
}
 +
 
 
V jiných jazycích (C++, C#, ...) používáme dvojtečku, přičemž první třída za dvojtečkou je obvykle dědění, ostatní jsou implementace rozhraní (i když v C++ je to jedno, tam můžeme implementovat i dědit od více tříd). Implementovat můžeme i několik rozhraní (například implements Cloneable, Runnable)
 
V jiných jazycích (C++, C#, ...) používáme dvojtečku, přičemž první třída za dvojtečkou je obvykle dědění, ostatní jsou implementace rozhraní (i když v C++ je to jedno, tam můžeme implementovat i dědit od více tříd). Implementovat můžeme i několik rozhraní (například implements Cloneable, Runnable)
  
 
Může se stát, že 2 rozhraní mají stejné metody k implementaci. Implementovat je tedy možné  
 
Může se stát, že 2 rozhraní mají stejné metody k implementaci. Implementovat je tedy možné  
 
* '''Implicitně''' - Implementujeme metodu první nalezené metody s tímto jménem ve všech rozhraních, nebo selže, záleží na jazyku
 
* '''Implicitně''' - Implementujeme metodu první nalezené metody s tímto jménem ve všech rozhraních, nebo selže, záleží na jazyku
−
* '''Explicitně''' - Implementujeme metodu tak, že řekneme kterou metodu kterého rozhraní implementujeme (např public this.type Cloneable.Clone() { // tělo };)
+
* '''Explicitně''' - Implementujeme metodu tak, že řekneme kterou metodu kterého rozhraní implementujeme např:
 +
public this.type Cloneable.Clone() {
 +
  // tělo  
 +
}
  
 
Nejsilnější zbraní rozhraní je, že odděluje kód od definic (vhodné např. pro pluginové systémy) a je sdružuje třídy do jedné skupiny funkčnosti.
 
Nejsilnější zbraní rozhraní je, že odděluje kód od definic (vhodné např. pro pluginové systémy) a je sdružuje třídy do jedné skupiny funkčnosti.

Verze z 11. 8. 2011, 12:28

Objektově orientované jazyky poskytují pro realizaci tříd, kromě dědičnosti, dalši prostředek - rozhraní. Rozhraní definuje soubor metod bez jejich implementace (podobně jako kompletně virtuální třída). Analogie je v rozepsané kuchařce, kdy víme co to bude za jídlo a z čeho budeme vařit, ale postup neznáme. Třída, která implementuje toto rozhrani (tj. implementuje - definuje - všechny jeho metody), je po té v polymorfovatelná do ukazatele definovaného tímto rozhraním, což znamená, ze klient ví, že tato třída má implementované všechny metody, které potřebuje (a které jsou definované v rozhraní).

// trochu divoký vysvětlení

Deklarace rozhraní je podobná deklaraci třídy

interface jmeno {
  // hlavicky metod, všechny samozřejmě virtuální a abstraktní
}

V Javě se implementace rozhraní zapiše pomoci kličoveho slova implements

Trida implements Rozhrani {
  ...
}

V jiných jazycích (C++, C#, ...) používáme dvojtečku, přičemž první třída za dvojtečkou je obvykle dědění, ostatní jsou implementace rozhraní (i když v C++ je to jedno, tam můžeme implementovat i dědit od více tříd). Implementovat můžeme i několik rozhraní (například implements Cloneable, Runnable)

Může se stát, že 2 rozhraní mají stejné metody k implementaci. Implementovat je tedy možné

public this.type Cloneable.Clone() {
  // tělo 
}

Nejsilnější zbraní rozhraní je, že odděluje kód od definic (vhodné např. pro pluginové systémy) a je sdružuje třídy do jedné skupiny funkčnosti.

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje