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)
Dokonce neumíš ani česky Ale na to ses neptal, že?
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ódu napýšeš nacistpole nebo nacystpole.
Co se týká návrhu tříd, doporučoval bich ti něco si o tom přečíst. Musíš mýt základy, nestačí jen nehat si poradit konkrétní příklad.
Začni na serveru www.objects.cz, na stránce s publikacemi dole Produkty.html jsou knihy ke ztažení zdarma.
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 To může hodně lidí odradit.
A nebežný používateľ vie ešte aj názvy tried zistiť.
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.
Ale co se jeste tyce toho meho prikladu, tam prave zadne skupiny ani nejsou. Jako jsou jablka a svestky... Ja to asi naflakam do jedne stridy a spoustu statickych metod...
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)...