NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 4 - Upomínač narozenin - Logická vrstva

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:30.10.2013 19:05

Nevím jak ve WF ale ve WPF pomocí XAML a Binding lze dokonce krásně odchytávat vyjímky a ihned zobrazit uživateli třeba pomocí "červeného borderu" okolo textboxu. Právě například při zadávání dat :)

Odpovědět
30.10.2013 19:05
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:30.10.2013 19:26

Ještě jsem se v tom chvíli vrtal a zjistil jsem, že se mi metoda Pridej scvrkla na

public void Pridej(Osoba osoba) {
    Osoby.Add(osoba);
}

Volá se pak jednoduše

Pridej(new Osoba(jmeno, datumNarozeni.Date));

Říká se tomu Dependency Injection.

Otázkou je, k čemu je vlastně dobrá třída SprávceOsob. Zda by nebylo výhodnější použít samotnou kolekci BindingList<Osoba> a případně ji jen rozšířit dle potřeby.

Odpovědět
30.10.2013 19:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:1.11.2013 16:03

Nevím, proč to tady tak rozmazáváš, už by sis mohl zvyknout na to, že každý neprogramuje tím samým stylem, jako ty a ani nechce. Mně se zdá jako hloupost rozšiřovat složitou kolekci, když ji mohu obalit. Bez vlastností by nefungovala serializace, kdybys dělal v .NETu, tak bys to věděl. Můžeš aplikaci upravit a potom ji sem dát, tak to bude mít alespoň nějakou váhu. Každá změna má totiž za následek nutnost dalších úprav, když to dohromady nesladíš, tak tu nemá smysl střílet nějaké části kódu vytržené z kontextu.

Odpovědět
1.11.2013 16:03
New kid back on the block with a R.I.P
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Kit
Jan Vargovský:1.11.2013 16:44

Kdyby to bylo na tvůj způsob, tak ani nepotřebuje dělat metodu přidej. Jen se odkáže na instanci spravceOsob.O­soby.Add(...)

 
Odpovědět
1.11.2013 16:44
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Kit:1.11.2013 16:51

Spíš jen Osoby.Add(...), protože spravceOsob by neexistoval.

Odpovědět
1.11.2013 16:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Kit
Jan Vargovský:1.11.2013 16:55

Proč by neexistoval ? Existoval by na logické metody, které by ti třídily ty osoby, jako např. osoba s nejbližšími narozeninami atd.

 
Odpovědět
1.11.2013 16:55
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Kit:1.11.2013 17:11

Takové metody patří do třídy Osoba. Kolekce jsou již vybaveny pro použití těchto metod.

Odpovědět
1.11.2013 17:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Kit
Jan Vargovský:1.11.2013 17:55

Jak můžeš mít ve třídě Osoba implementovanou metodu, která ti zjistí nejbližší narozeniny ze seznamu osob ?

Chápu, že v dnešní době LINQ a dalších vymožeností je to 1-2 řádky. Ale do Formu máš rvát jen volání metod a né logiku.

Editováno 1.11.2013 17:56
 
Odpovědět
1.11.2013 17:55
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Kit:1.11.2013 18:05

Jakého Formu? Bavíme se o třídě Osoba. Kam chceš dávat logiku, když ne do objektu?

Odpovědět
1.11.2013 18:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Kit
Jan Vargovský:1.11.2013 18:14

Osoba je jen jedna a pokud vím, řešíme problém kde implementovat validaci + případnou logiku, abys mohl obsluhovat kolekci Osob. Nato většinou vytváříš nějaký controller/ma­nager/..., který spravuje všechny osoby. Jednoduše máš 20 instancí třídy Osoba a vyber mi jednu osobu, která má nejblíže narozeniny.

EDIT: Já jsem jen zvědavý kde bys chtěl narvat ty příslušné metody, které by obsluhovaly ty osoby v nějaké kolekci. Ten názor, že má být validace uvnitř objektu mám také, nemusím pak vymýšlet různé managery a implementovat logiku objektu mimo objekt.

Editováno 1.11.2013 18:18
 
Odpovědět
1.11.2013 18:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 50.