C# Abstakrní metody & rozhraní – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# Abstakrní metody & rozhraní – .NET – Fórum – Programujte.comC# Abstakrní metody & rozhraní – .NET – Fórum – Programujte.com

 

Petrroll0
Stálý člen
5. 4. 2010   #1
-
0
-

Zdar, učím se podle knihy Microsoft Visual C# 2008 Krok za krokem.
Narazil jsem na abstraktní metody a rozhraní a pravděpodobně mi uniká jejich smysl. V podstatě jenom rezervují místo pro metody/hodnotové typy definované v abstraktní třídě/rozhraní po kterém dědí daná třída. Také zajišťují že v dané třídě metody/hodnotové typy budou muset být. Ale k čemu to je pokud tuto aplikaci nebude nikdo rozšiřovat? Nebo to je právě jediný smysl?

A ještě, když vytvořím rodičovskou(0) třídu obsahující virtual metodu(bla), v potomkovy(01) jí override-nu a zapečetím(bla), tak když udělám potomka(02) od prvního potomka (01) tak již (bla v 02) nepůjde znova override-nu? Jinak by to šlo?

PS: Omlouvám se za stupidní dotazy.
PS2: Děkuji za odpověď.

OFF: V mozzile když přidám nové téma tak se nepřidá a přesměruje mě to na jedno podtéma o šachovnici. V IE zas nefunguje "editovat" příspěvek to mě hodilo na "zaslat nový příspěvek"

Nahlásit jako SPAM
IP: 92.62.224.–
liborb
~ Redaktor
+18
Guru
6. 4. 2010   #2
-
0
-

Abstraktní třída se používá opravdu v případě, že potřebuješ společné rozhraní/vlastnosti. Instanci takové třídy nelze vytvořit nebo-li další vlastnost, kterou to sebou nese, je ta, že nutíš "uživatele" této třídy vytvořit - zdědit vlastní a v ní všechno naimplementovat.

Představ si, že děláš aplikaci, kde se pracuje s auty. Vytvoříš si abstraktní třídu auto, která bude definovat společné rozhraní všem autům. Následně budeš dělat dceřiné třídy, kde budeš jednotlivé odlišnosti implementovat pro každý typ auta zvlášť. Když pak budeš pracovat s jakýmkoliv autem, tak máš společné rozhraní a můžeš naplno využívat polymorfismus. Neboli se abstraktní třída využije i v rámci jedné aplikace.

Když zapečetíš metodu, tak v (další) dceřiné třídě ji nelze přetížit. Kdyby nebyla zapečetěná, tak by to samozřejmě šlo.

Nahlásit jako SPAM
IP: 85.207.166.–
Petrroll0
Stálý člen
6. 4. 2010   #3
-
0
-

Abstraktní třídy už chápu, ty mají smysl, když je budu dál deďit s tím že se přímo jejich instance nebude vytvářet. Spíš nechápu smysl rozhraní. Tam vidím jediný důvod v tom že "nutí" programátora danou metodu implementovat. Vždyď pokud dobře vím nemohou nést žádný kód. Další a jediný význam mě napadá v další přehlednosti kodu, jinak nic.
Pokud mi něco uniká, budu rád když mi poradíte.

Nahlásit jako SPAM
IP: 92.62.224.–
6. 4. 2010   #4
-
0
-

To Petrroll : Myslím, že jsi řekl jejich nejpodstatnější výhodu, důvod jejich existence. V své podstatě umožňují komunikovat s třídami, o kterých ty třeba vůbec nic nevíš (cizí třídy např. v případě plug-inů), apod. Užitečných využití se najde hromada.

Nahlásit jako SPAM
IP: 195.113.118.–
Dušan Janošík | web: djanosik.cz, @djanosik
velurex0
Stálý člen
6. 4. 2010   #5
-
0
-

Hlavní finta rozhraní je ta, že ho mohou implementovat třídy, které spolu logicky vůbec nesouvisí, tj. nemají společného předka (s výjimkou "prapředka" System.Object). Pěkný příklad je třeba cyklus foreach - ten prochází po jednotlivých položkách cokoliv, co implementuje rozhraní IEnumerable a je mu úplně ukradený jestli se jedná o pole, List nebo tvojí vlastní třídu implementující zmíněné rozhraní. Navíc rozhraní můžeš implementovat nekonečně, dědit jen z jediného předka.
Podstatné je, že teorii se pochopil a až praxí získáš cit proto, kdy použít dědění a kdy implementování interface.

Nahlásit jako SPAM
IP: 213.191.119.–
Petrroll0
Stálý člen
6. 4. 2010   #6
-
0
-

Ok, díky moc všem. Pravděpodobně se někdy zas ozvu, jednoduše jsem trochu natvrdlejší.

Nahlásit jako SPAM
IP: 92.62.224.–
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, 47 hostů

 

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