Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Neumím objektově myslet v C#.

Ahoj, přecházím z jazyka C na oběktově orientované programování v jazyce C#... Práce s poly, metody atd. to všechno chápu, jak to zapsat, protože synataxe je velmi podobná Céčku. Ale dělá mi obrovské problémy vymyslet jakým způsobem to naprogramovat, aby byl kod co nejúspornější a hlavně přehledný. Příklady, které se mi dostaly pod ruku jsem zvlánul naprogramovat, ale strašně složitě, protože nevím jak ten program poskládat do tříd apod.

Od kamaráda mám třeba následující příklad:

V jazyce C# napište program pro generování jízdních řádů na dané trase. Jízdní řád bude vypočten z následujících informací:
• Seznam stanic na trase,
• doba jízdy v mezistaničním úseku,
• časy odjezdů dopravního prostředku z výchozí stanice

Požadované funkce programu
V minimální podobě bude program umožňovat následující funkce:
• Načtení seznamu stanic
• Načtení odjezdů z výchozí stanice
• Výpočet jízdního řádu
• Tisk JŘ na obrazovku
• Tisk JŘ do textového souboru (uživatelem zadané jméno souboru)
• Uložení dat JŘ do souboru (textového – např. seznam stanic na řádcích, středník, seznam odjezdů z výchozí stanice). Neplést s tiskem do souboru!!!
• Načtení JŘ ze souboru (předpokládejte, že formát dat bude vždy správný)

Jak byste to poskládaly vy? Ja jsem si říkal,že bych pro každou tu funkci vytvořil vlastní třídu, pak vytvořil instance a následně bych volal metody těch konkrétních oběktů... jako je: načtení seznamu stanic, doba jízdy v mezistaničním úseku apod.

Čeština pláče... v nadpisu upraveno slovo napsané původně jako oběktově ::)
Text dotazu upravovat nebudu, to by dalo moc práce. Ale prosím zkus příště myslet víc i na gramatiku. Tvrdé a měkké i/y, chybějící čárky :-( Jasně, nejsme na češtinářském serveru, ale prosím o snahu ;-)(fromM2U)

Předmět Autor Datum
Dokonce neumíš ani česky :-) Ale na to ses neptal, že? Pavel
Pavel 03.02.2007 12:43
Pavel
Co se týká češtiny, s toho sy nic nedělej. Vždyť budeš psát programy a nikdo neuvydí, jestli tam v k…
Mirek Dušín 03.02.2007 12:54
Mirek Dušín
Vždyť budeš psát programy a nikdo neuvydí, jestli tam v kódu napýšeš nacistpole nebo nacystpole. Bě…
Eva_M 03.02.2007 12:57
Eva_M
A nebežný používateľ vie ešte aj názvy tried zistiť.
msx. 03.02.2007 13:24
msx.
Urobiť jeden objekt, ktorý bude mať metódy, ktoré budú mať danú funkciu a hotovo? Je v tom nejaký pr…
msx. 03.02.2007 13:26
msx.
objektove myslenie nie je o jazyku, ale o objektoch(vytvorena instancia triedy). ked vytvaras nejaku…
IgorK 03.02.2007 13:33
IgorK
Vsem se tedy omlouvam, ze nerespektuji shodu prisudku s podmetem... a ted i diakritiku... ale urcite…
stanik 03.02.2007 14:06
stanik
Ale co se jeste tyce toho meho prikladu, tam prave zadne skupiny ani nejsou. Jako jsou jablka a sves…
stanik 03.02.2007 14:13
stanik
Necital som diskusiu ale len kratko: Triedy (class) su sablony pre objekty, a objekty je najlepsie r… poslední
MM.. 03.02.2007 14:52
MM..

Vždyť budeš psát programy a nikdo neuvydí, jestli tam v kódu napýšeš nacistpole nebo nacystpole.

Běžný uživatel sice možná neuvidí pravopisné chyby v kódu, ale uvidí je přímo v programu, který spustí. A nebude se jim líbit, že ten SW na ně bude mluvit s chybami 3-[ To může hodně lidí odradit.

Urobiť jeden objekt, ktorý bude mať metódy, ktoré budú mať danú funkciu a hotovo? Je v tom nejaký problém? Veď je to vlastne ako C, akurát, že niektoré veci sú jednoduchšie, nakoľko je možnosť, riešiť to objektovo (dĺžka poľa a podobne).

objektove myslenie nie je o jazyku, ale o objektoch(vytvorena instancia triedy). ked vytvaras nejaku triedu, musis si premysliet, ktore vlastnosti su prenu splocne a tak ju aj vytvarat. napr. mozes vytvorit triedu ovocie a dalsie triedy jablka a hrusky, ktore z nej budu dedit. napr. musis si rozmysliet, ake vlastnosti ma ovocie spolocne, aby si to zbytocne nezanasal do tried jablka a hrusky a nenastavala duplicita. mna teraz nic nenapada, len ze spolocna metoda by bolo "zjest". ]:) potom rozmyslaj co je spolocne len pre jablka a takto postupujes dalej. neskorsie mozno zistis, ze budes potrebovat metodu, ktoru napr. jablka a hrusky musia mat definovanu ale samotna trieda ovocie ju definovanu nema a ani nepotrebuje a to zaistis tak, ze je v triede ovocie zadeklarujes ako virtual. postupom casu zacnes pouzivat take specialitky, ze potrebujes aby nejaky objekt bol v pamati iba raz a nato sluzia singletony. ako uz spominal Mirek Dusin(mimochodom vynikajuci programator), treba si o tom nieco precitat a hlavne pri navrhu tried sa nenahlit a radsej si trochu popremyslat, aby si ju nenavrhol zle. postupom casu to uz pojde samo a uplne lahko. ;-)

Vsem se tedy omlouvam, ze nerespektuji shodu prisudku s podmetem... a ted i diakritiku... ale urcite tam spoustu dalsich chyb... Myslim nad programovanim a ne nad Cestinou. A vsem, kteri mi alespon trochu poradili, tem moc dekuji.

Necital som diskusiu ale len kratko:
Triedy (class) su sablony pre objekty, a objekty je najlepsie robit tak, aby popisovali nejaky objekt z reality (samozrejme nie je to nutne, ale program je potom logickejsi), alebo nejaky celok, a v tej triede definujes nejake vlastnosti (premenne) objektu a nejake metody (operacie) ktore s tym objektom sa daju robit. Napr. trieda pre objekty typu "autobus", ak robis nejaky zoznam autobusov, tak ako vlastnosti autobusu v nej moze byt definovana napr. farba autobusu alebo cislo linky na ktoru je prave ten autobus nasadeny apod., a metody podla toho co to je za program, co potrebujes s autobusom v tom programe robit, ak potrebujes zmenit cislo linky tak si urobis metodu ZmenCisloLinky(int linka) apod., tu fciu si daefinujes v triede autobus.

Zdrojaky programu su potom "logickejsie" ptz. informacie o autobuse a aj vsetko co sa da s nim robit su uzavrete v triede autobus, a ine data su zas v inych triedach tam kam patria.
Vyhoda je aj ta ze ak vytvoris novy objekt autobus, tak ma ten objekt hned aj svoje vlastne vlastnosti, oddelene od ostatnych objektov autobus ktore si uz v programe vytvoril.

Skus si dat vyhladat (google) nieco o objektovych modeloch, objektove modelovanie, co ja viem ci je o tom nejaky rozumny pokec na internete.
Su aj knihy (neviem zhlavy nazvy, nazvy budu typu myslime objektovo apod), daju sa kupit v predajniach s PC literaturou, alebo urcite existuju aj v knizniciach (technicke kniznice hlavne mam na mysli)...

Zpět do poradny Odpovědět na původní otázku Nahoru