Diskuze: Nekonečné zanořování ?
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 33 zpráv z 33.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
dost dobrý
To vypadá, že někdo nazval proměnnou stejně jako třídu. Tzn. v Site je
proměnná Component Component a v Component zase odkaz na rodiče Site.
Je to třída poskytující .NET. Aspoň jsem to tak našel . Nemáš s ní zkušenosti ?
Nevím, jestli jde zjistit délka a aktuální čas přehrávání. Celkem by se
mi to hodilo
...ale jinak fakt
nevím co má být tohle
Tak to nevím :-/ Aktuální čas můžeš pomocí timeru, délku možná přes Stream, ale třída SoundPlayer je hodně omezená. Možná by bylo lepší podívat se po nějakých alternativách.
Ještě si můžeš zkusit prostudovat tohle: http://www.drdobbs.com/…or/222500141?…
No koukal jsem an natáhnutí knihoven z Windows Media Playeru, ovšem tam
toho je zase moc
Vyjádřil by se k tomu "zanoření" někdo ještě ze zbehlejších ? David Hartinger , Kit
,.... Michael Olšavský má nejspíše pravdu, ale chtěl bych vědet jestli jste
se setkali už s něčím podobným
Prostě stránka má odkaz na komponentu a komponenta odkaz na stránku Stejně můžeš udělat třeba
pes.Pan.Pes.Pan a do nekonečna. Třídy by vypadaly takhle:
public class Pes
{
public Pan Pan {get; set;}
}
public class Pan
{
public Pes Pes {get; set;}
}
public void Main()
{
Pes pes = new Pes();
Pan pan = new Pan();
pes.Pan = pan;
pan.Pes = pes;
pes.Pan.Pes.Pan.Pes.Pan...
}
Ok K čemu je tohle dobrý
? Předpokládám že to je špatný návrh ?
Pán se dostane na svého psa a pes na svého pána, na tom není nic
špatného. Můžu se do nekonečna ptát kdo je pán psa a toho pána kdo je
jeho pes atd
V C# je možné pojmenovat objekt stejně jako třídu ?
Jojo. Dokonce to samo poté "zjistí" co chceš použít, ikdyž si tím zamezíš některé možnosti. Jako například statiku.
Také jsem nad tím přemýšlel, nevím Musel bych to zkusit, jestli by
se to zkompilovalo. Každopádně když bych chtěl Property jako třídu,
nějak se to řešit musí. Dělal jsem teď dlouho v PHPčku, takže jsem z
toho zas zdegenerovaný
To mi stejně nedává smysl, nebo spíše se mi moc nelíbí to použití.
Ale využití to má, to je fakt
Teď jsem to zkoušel v Javě a tam to jde taky, ale připadá mi to jako
strašná prasárna V C++
nemůžu vytvořit ani proměnnou která se jmenuje stejně jako nějaká
existující třída.
No samozřejmě to není k tomu, abys to psal do kolečka, to je jen
vedlejší efekt, protože ty objekty na sebe navzájem odkazují
Tak tady to není proměnná, ale metoda V Javě by tab bylo getPan() a
setPan() v C# je Pan s velkým P, který interně funguje jako metoda.
Pan je tady reference na objekt typu Pan ne? Proměnná, metoda, funkce, pole, to je fuk, v C++ se nic nemůže jmenovat jako nějaký datový typ, k tomu aby se předešlo kolizím slouží namespace.
Pan je tady tzv. vlastnost, interně se vygenerují 2 metody, setter a getter. Nevím jaká omezení mají C# a Java, ale asi toho dost poznají z kontextu a tady by to nemělo vadit.
S C# nedělám, ale v OOP je vázání objektů do kruhu normální, podobně jako u síťových databází. Teprve u hierarchických databází to bylo znemožněno, ale v OOP to zůstalo.
V Javě je zvyklostí třídy pojmenovávat PascalCase. Objekty, metody, proměnné a formální parametry camelCase. Ke kolizím mezi názvy tříd a názvy jejich instancí tedy nedochází.
Obecně nedoporučuji používat stejné názvy tříd a jejich instancí. Ani v běžném životě se pes obvykle nejmenuje Pes a už vůbec se člověk nejmenuje Člověk, ale třeba Franta.
Proto si myslím, že je to prasárna a přijde mi zvláštní že zrovna jazyky jako C# a Java, které dost dbají na bezpečnost, to umožňují.
Java to IMHO neumožňuje. V ní se shoduje název konstruktoru s názvem třídy a to je OK. Nezkoušel jsem to, ale instance se musí jmenovat jinak než třída.
Já zkoušel:
public class Car {...}
...
Car Car = new Car();
A fungovalo to.
Jenže zvyklostí v Javě je, že názvy instancí jsou malými a názvy tříd velkými. Takže se to neplete.
Jak už jsem psal: Nevidím důvod, proč pojmenovávat třídu a instanci stejně. Svědčí to spíš o nepochopení OOP.
Proč? Pán má prostě psa. Udělám si Pan josef. A pak si udělám Pes
azor. josef.Pes = azor; Co jsem na OOP nepochopil?
Také se divím, že v Javě je možné tohle:
Integer Integer;
Float Float;
String String;
ale určitě bych nikomu nedoporučoval, aby to někde použil. Je to totiž logický nesmysl.
Ale ty to máš dobře. Tvůj pes se nejmenuje pes, ale azor. Tvůj pán se nejmenuje pan, ale josef. Mně vadí, když někdo tlačítko pojmenuje tlačítko, které vytvoří jako instanci třídy tlačítko.
To mi také vadí, ale ve třídě Pan se ten pes jmenuje opravdu Pes
Ale když už, neměl by to být spíš pes než Pes?
Jak jsme říkal, proměnná Pes v sobě v C# skrývá 2 metody pro
nastavení a čtení hodnoty. C# tomu říká vlastnost, je to něco mezi
proměnnou a metodou, proto je to velkým, aby se to odlišilo
Spíš bych řekl, že vlastnost je dvojice metod, které se vně objektu chovají jako jedna proměnná.
No nevím, třeba vlastnost Orientation typu Orientation mi přijde logičtější než jakákoliv jiná možnost...
Zobrazeno 33 zpráv z 33.