Rozhraní – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rozhraní – .NET – Fórum – Programujte.comRozhraní – .NET – Fórum – Programujte.com

 

Balaam0
Návštěvník
1. 8. 2009   #1
-
0
-

Zdravím vespolek,

potřeboval (chtěl) bych pomoct. V knize o C# jsem se po dlouhé době dostal k dědičnosti (která je mi zatím docela jasná), ale narazil jsem na pojem rozhraní. Bohužel jsem absolutně nepochopil, k čemu rozhraní slouží. Kniha říká: rozhraní dovoluje oddělit pojmy "co to je" od "jak se to chová." To mě zmátlo úplně. Je tam dále příklad...

Interface IToken
{
string Nazev();
}

class Token : IToken
{
string IToken.Nazev()
{
...
}
}

Jaký to má význam? Proč se nemůžeme na interface vykváknout a do těla Token napsat novou metodu s názvem "Nazev"? Mohl bych poprosit o vysvětlení tohoto termínu a použitelnosti? Popř. aspoň odkaz na nějaké zdroje...

Mnohokrát děkuji za trpělivost a ochotu pomoct.

Nahlásit jako SPAM
IP: 83.208.241.–
The lesbians next door bought me a rolex for my birthday. I think they misunderstood when I said I wanna watch...
Chrasty
~ Redaktor
+4
Posthunter
1. 8. 2009   #2
-
0
-

Uvedu jeden příklad z mnoha, kdy jsou rozhraní užitečná. Předem se omlouvám, jestli je v kódu nějaká chybička, psal jsem to jen tak, jak mě to napadalo.

interface IDopravniProstredek

{
int Rychlost;
void JedDopredu();
}

class Kolo : IDopravniProstredek
{
int Rychlost{get;set;}
void JedDopredu()
{
//nějaká implementace
}
}

class Auto : IDopravniProstredek
{
int Rychlost{get;set;}
void JedDopredu()
{
//nějaká implementace
}
}
A teď si představ, že chceš do jedné kolekce nacpat dopravní prostředky. Díky tomu, že jsou oba odvozené od stejného rozhraní, můžu použít takovýto kód:
var list = new List<IDopravniProstredek>();

list.Add(new Kolo());
list.Add(new Auto());
Kromě toho, a to je možná to nejdůležitější, si můžeš být jistý, že třídy odvozené od jednoho rozhraní mají stejné metody a vlastnosti, když je obsahuje i jejich rozhraní. To možná nevypadá jako pádný důvod, protože jasně, můžu se podívat na zdrojový kód a vidím, kdo má jaké metody, ale tady jde o to, že si tím můžeš být jistý i programově - tvořit na jejich vztazích různě závilosti, předávat rozhraní jako parametr a být si jistý, že vše, co potřebuješ, budou odvozené třídy umět a tak podobně.

Nahlásit jako SPAM
IP: 193.179.196.–
Balaam0
Návštěvník
1. 8. 2009   #3
-
0
-

To Chrasty : Takže abych si to ujasnil, pokud je k nějaké třídě přidáno rozhraní, přesně tím určuji, jaké metody a vlastnosti v ní chci mít, ale různé třídy mohou se stejnými vlastnostmi a metodami pracovat jinak? Mohl bych třeba ve tvém příkladu vynechat implementování rozhraní a výsledek by byl stejný? (Čímž nechci říct, že je to zbytečné, já jen pro ujasnění.) Pokud ano, dokáži si představit využití rozhraní při tvorbě třeba padesáti tříd, které by měly mezi sebou společných třeba pár metod.

Nahlásit jako SPAM
IP: 83.208.241.–
The lesbians next door bought me a rolex for my birthday. I think they misunderstood when I said I wanna watch...
Chrasty
~ Redaktor
+4
Posthunter
1. 8. 2009   #4
-
0
-

Ano, mohl bys odstranit implementaci rozhraní a bylo by to stejné, jen bys pak instanci dané třídy nemohl přidat do té kolekce.

Tím, že k nějaké třídě přidáš rozhraní, tak jí přikazuješ, co všechno musí implementovat.

Nahlásit jako SPAM
IP: 193.179.196.–
Balaam0
Návštěvník
1. 8. 2009   #5
-
0
-

Moc děkuji za vysvětlení, už je mi to jasné.

Nahlásit jako SPAM
IP: 83.208.241.–
The lesbians next door bought me a rolex for my birthday. I think they misunderstood when I said I wanna watch...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Rozhrani — založil alp

C# - rozhrani a vlastnosti — založil jirkab

Grafické rozhraní — založil ninja řízek

Uživatelské rozhraní v C++ — založil LPG1995

Abstraktní metody a rozhrání — založil ViliX64

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý