Názory ke článku C# - 2. lekce – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Názory ke článku C# - 2. lekce – Programujte.comNázory ke článku C# - 2. lekce – Programujte.com

 

Názory ke článku C# - 2. lekce

some_one   NOVÝ
24. 6. 2006

Nu, měl bych pár detailů-

- chybí klíčové slovo internal u deklarace třídy

- "Je důležité si pamatovat, že můžeme přetypovávat potomka na předka. Nikdy ne naopak!"
mno, autor to myslel, asi vážně ale ukázka se moc nepovedla..

lze udělat toto:
<pre>
object GetObject() {...} ;

...

MyClass mc = (MyClass)GetObject();

</pre> 
jde jen o to, co je ve skutečnosti tím objektem
typecast je ošemetná věc
platí, že s potomkem jde dělat to samé co s předkem.

a toto:
"Když jsem výše napsal, že v .NET Frameworku můžete dědit pouze jednou, není to pravda doslova, protože, jak jistě víte, všechny třídy jsou odvozeny od třídy object. Když pak vytvoříte potomka nějaké třídy, stane se potomkem předka a třídy object."

- to už se mi vůbec nelíbí, vícenásobná dědičnost opravdu neexistuje, a nová třída pokud je od něčeho explicitně odvozená, zkutečně nedědí od objectu nic - (od koho by pak třeba dědila ToString()??)
ale jde o to, že object stojí na vrcholu hiearchie třdíd, a tudíž každá třída je od něj (větišnou ale nepřímo) odvozena, a "je" objectem.

djanosik   NOVÝ
24. 6. 2006

Kde máš napsané, že dekalrace třídy musí obsahovat modifikátor internal? V C# sice dělám jen asi 3/4 roku, ale tohle slyším fakt poprvé. Informace o tom, že lze přetypovat pouze potomka na předka skutečně mohla být uvedena. Ano máte pravdu - vícenásobná dědičnost neexistuje, ale tady nikdo nepsal, že ano (nesmíš brát všechno doslova). V knize, kterou mám někde doma je zhruba napsáno, že předkem všech tříd je object (právě od něj dědí např. ToString()) - pokud říkáš, že ne, tak prosím předlož důkaz.

eXavera   NOVÝ
24. 6. 2006

Tento kurz není tak rozsáhlý abych mohl uvádět a vysvětlovat všechny modifikátory. Proto jsem uvedl ty nejčastější ( já osobně jsem  <b>internal </b>  ještě nepoužil. Pro zájemce samozřejmě doporučuji psanou literaturu, kde naleznou podrobný výklad ke všem oblastem.

Uznávám že příklad pro přetypování není ideální. Odstranil jsem tedy ten sporný výrok.
Vícenásobná dědičnost neexistuje. To je pravda. Stejně jako to, že předkem všech tříd v .NET Frameworku je třída object.
Viz.  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemobjectclasstopic.asp
Cituji:
 <i>Languages typically do not require a class to declare inheritance from Object because the inheritance is implicit.

Because all classes in the .NET Framework are derived from Object, every method defined in the Object class is available in all objects in the system. </i>
Každá třída je <b>implicitně odvozená od třídy object</b>. 

some_one   NOVÝ
24. 6. 2006

- nemusí obsahovat internal (ale když se vypisují jako možnosti public, private, protected, tak internal je další z těchto možností)

- nepsal, ale jedna věta popírala větu předtím - to o tom dědění od objectu. - a ano, předkem všech tříd je objekt (často ale dost vzdáleným předkem, a metody se nedědí přímo od objectu, ale od přímého předka. (v důsledku toho to může jít až k objectu), pokud bude mít rodič definovaný ToString(), tak se použije právě tato definice, a ne definice ToString() od objectu.

djanosik   NOVÝ
26. 6. 2006

To, že ti chybí popis modifikátoru internal v článku jsi mohl napsat - napsal jsi, že chybí v deklaraci třídy a to je trochu rozdíl.

K tomu objectu se nebudu vyjadřovat - tam je to celkem jasné.

Su Shi   NOVÝ
3. 11. 2007

Chodím s Tebou na cviko a od začátku mi bylo jasné, že asi rád programuješ. Ale že bys dokázal napsat takovýto článek, to jsem nečekal :)
V hodně seriálech napsaných na webu je to nepřehledné, protože autoři dávají málo příkladů a když už nějaký dají, tak ho nevysvětlí podrobně, protože to nepovažují za důležité.
Tobě se ale povedlo napsat dobře pochopitelný a jasný článek, takže díky a jen tak dál ;)

honza   NOVÝ
23. 4. 2008

Chlapi, je to super že takle píšete návody pro začátečníky, ale je to příliš stručný. Sice psát slohy je zbytečný, ale trochu to rozvést. Public - je k ní přístup všude. Co si pod tím má začátečník představit ? Super kniha, kterou obdivuji je Velká kniha PHP a MYSQL. Tam ten chlap vysvětluje OOP uplně suprově - nehledě na jiný progr. jazyk.

Toť vše

W8eR_CZech   NOVÝ
5. 8. 2008

Ahoj, mohl by mi někdo popsat trochu více abstraktní třídy. Nechápu totiž jejich využití. Díky
W8eR_CZech

spl!te   NOVÝ
12. 8. 2008

Reagoval na komentář od uživatele W8eR_CZech :

Představ si že máš bandu koček a psů. A ty chceš naházet do jednoho pytle :))

Ten pytel bude třeba kolekce typu List - a kočky a psi budou naše třídy.

Víš že kočky i psi mají některé společné vlastnosti - mají čtyři nohy, ocas, umí běhat a tak dále... Ale jsou v něčem i rozdílní - psi neumí lézt po stromech, kočky zase štěkat na zloděje, kočky nežerou nic jiného než paštiku a psi sežerou co můžou.

Takže si uděláš jednu abstraktní třídu "zvíře" - kde si definuješ ty společné znaky...



public abstract class Zvire{
public int pocetNohou = 4;
public bool ocas = true;
public string jmeno;
public int spokojenost = 50;
public void utikej(Misto misto){
misto.dobehloSemZvire(this);
}
public abstract bool nazerSe(Zradlo zradlo);
}


A dále si od téhle třídy odvodíme kočičí a psí třídu.


public class Kocka : Zvire{
public Kocka(string jmeno){
this.jmeno = jmeno;
}
public void vylezNaStrom(Strom strom){
strom.pridejKockuNaStrome(this.jmeno);
}
public override bool nazerSe(Zradlo zradlo){
if(zradlo.GetTyp().Equeals("pastika"){
this.spokojenost++;
return true;
} else {
return false;
}
}
}

public class Pes : Zvire{
public Pes(string jmeno, bool ocas){
this.jmeno = jmeno;
this.ocas = ocas;
}
public void stekejNaZlodeje(Zlodej zlodej){
zlodej.vylekan = true;
}
public void stekejNaZlodeje(Postak postak){
postak.stezujSiNaMestskemUrade();
}
public override bool nazerSe(Zradlo zradlo){
this.spokojenost += 10;
return true;
}
}


Tak máme dvě zvířata která mají některé věci společné, ale další odlišná... A teď je konečně naházíme do toho pytle :) Protože jsou Kočka i Pes potomky třídy Zvire, můžeme k oboum přistupovat jako ke zvířeti...



List<Zvire> pytel = new List<Zvire>();

pytel.Add(new Pes("Žeryk", true));
pytel.Add(new Pes("Bruno", false));
pytel.Add(new Kocka("Micinka"));
pytel.Add(new Kocka("Alien"));


A jsou tam :)

Teď je můžeš všechny nakrmit:


Zradlo zradlo = new Zradlo("Granule z Tesca");
foreach(Zvire zvire in pytel){
zvire.nazerSe(zradlo);
}


A tímto jsme nakrmili celé osazenstvo pytle... A přitom se každý v pytli zachoval podle své nátury - kočky žrádlo z Tesca odmítly, kdežto psi ho sežrali rádi...


Je to extrémně triviální příklad využití abstraktních tříd, opravdu jenom pro pochopení wtf... Hlavní síla abstrakcí je jinde... Kupříkladu, máš deset tříd (řekněme pro každou ze záložek v nějaké apliakci) o deseti metodách. Jenomže co když je z těch deseti metod 9 stejných? Buď je můžeš šoupnout do nějaké další třídy a přistupovat k nim tam (ale to není vždy použitelné) a nebo si elegantně napíšeš jednu třídu abstraktní o devíti metodách a deset od ní odvozených jen s tou jedinou rozdílnou metodou.

Fachmann   NOVÝ
8. 9. 2008

Toto je radny priklad! To by pochopila i moje babicka :DDD

jirka   NOVÝ
20. 2. 2009

Reagoval na komentář od uživatele spl!te :
moc pekny, uplne me dostal ten konstruktor jestli ma zvire ocas:-D

vp   NOVÝ
10. 10. 2009

Reagoval na komentář od uživatele spl!te :
opravdu promakany priklad z praxe!

lajo   NOVÝ
14. 3. 2010

Celkom pouzitelny priklad :-)

Bent   NOVÝ
15. 2. 2011

Penis enhancement pills, Santa claus levitra jokes, Dangers of acetildenafil.
http://secrent.info/?Bialis_impotence_drug_eli_lilly_co/Dangers_of_acetildenafil - Tomorrow guressu g.png http://secrent.info/?Bialis_impotence_drug_eli_lilly_co/2009_acetildenafil_followup_november_post_acetildenafil - Buy locally sildenafil http://secrent.info/?Bialis_impotence_drug_eli_lilly_co/Levitra_message_boards - Buy locally sildenafil http://secrent.info/?Bialis_impotence_drug_eli_lilly_co/Dangers_of_acetildenafil - Tadalafil chemistry http://secrent.info/?Bialis_impotence_drug_eli_lilly_co/Buy_locally_sildenafil - Tadalafil chemistry

Shu   NOVÝ
16. 2. 2011

Ambiente consejeria de medio, Direito do ambiente, Antiasthma medication.
<a href= http://brinemy.info/?Cough_kennel_medication/Cough_kennel_medication >Depression lexapro severe</a> <a href= http://brinemy.info/?Cough_kennel_medication/Depression_food_from_great >Manic depression disorder in spanish</a> <a href= http://brinemy.info/?Cough_kennel_medication/Buy_sleep_aid_dreampharmaceuticals >Online zolpidem</a>

NaiL   NOVÝ
25. 2. 2011

Hoodia orlando, Yellow capped hoodia, Is hoodia bad for you.
http://alberpu.info/?Contraindications_of_phentermine/Contraindications_of_phentermine - alberpu.info http://alberpu.info/?Contraindications_of_phentermine/Meridia_where_to_buy - Phentermine litigation http://alberpu.info/?Contraindications_of_phentermine/Is_all_animal_cuts_ephedra_free - Hoodia diet capsules

April   NOVÝ
27. 2. 2011

No prescription phentermine safe pharmacy, Diet fuel ephedra, Weight lose meridia.
<a href= http://estamfr.co.cc/?Smart_burn_with_hoodia_reviews/Crohns_phentermine >South dakota ephedra attorney</a> <a href= http://estamfr.co.cc/?Smart_burn_with_hoodia_reviews/Cost_low_phentermine >Crohns phentermine</a> <a href= http://estamfr.co.cc/?Smart_burn_with_hoodia_reviews/Frederick_maryland_phentermine >Phentermine causes canker sores</a> <a href= http://estamfr.co.cc/?Smart_burn_with_hoodia_reviews/Crohns_phentermine >Cost low phentermine</a>

Přidej svůj názor

×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:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



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