
Python - zapouzdření (soukromé, veřejné)
Dobrý den,
řeším KSI a v ní je jedna tato úloha, na kterou prostě nedokážu přijít. Řeším ji už 3. den (každý den mám 20 pokusů na odpovědi) a prostě jsem naprosto v koncích. Nerozumím tomu a nemám už moc čas, abych to dál teď studoval. Prosím Vás, mohli byste mi poradit, co z toho je správně a posléze mě víc odkázat na stránky, kde se to naučím? Popř. abyste mi to vysvětlili, jak to rozpoznám od sebe? Vážně to nedokážu pochopit, mně více sedí funkcionální programování, ne OOP.
Úloha je v obrázku.
Vážně Vás prosím o pomoc. Předem všem děkuji za jejich vřelé rady.
Jako veřejné bych dal poslední dva. Použitím ostatních by se to mohlo dostat do nekonzistentního stavu.
Zkusil jsem to odevzdat a nepřijalo to odpověď. :/ Ale děkuji za pokus. :)
Ještě "get_" metody by mohlo být veřejné. Jenže "mohly", ještě nemusí znamenat, že by i měly být veřejné. To zadání je dost nejednoznačné.
Právě, to mě na tom štve.
Když to vezmeme vylučovací metodou:
- metody "add_" a "remove_" by se měly volat vždy v párech a ve správném pořadí, takže není bezpečné je volat zvenčí
- metoda "start_trip" by nám měla to správné pořadí zajistit, takže ta bude veřejná
- metody "get_" můžou ale i nemusí být veřejné, ale jejich použití by mělo být bezpečné, takže je může dát veřejné
- seznam "on_road" je dostupný pomocí metody "get_animals_on_road", takže bych ho dal jako soukromý
- seznam "zoos" je sporný a navíc podle mě by v téhle třídě vůbec neměl být. Každopádně někde musíme znát jednotlivá zoo, aby bylo mezi nimi možné přesouvat. Pokud ten seznam není nikde jinde, měl by být veřejný.
Jako soukromé jsem dal tedy:
- add_on_road
- add_to_zoo
- on_road
- remove_from_road
- remove_from_zoo
a pak:
- add_on_road
- add_to_zoo
- on_road
- remove_from_road
- remove_from_zoo
- zoos
a nevzalo mi to ani jedno. Koneckonců jsme už překročil limit, takže můžu zas zkusit odpovědět až zítra.
Get je snad vždy veřejný, ne? Pak by to postrádalo smysl.
Mám třídu čtverec, která ma atributy velikost a barva.
K čemu by pak bylo privátní volání get_barva.
To jde o to, čemu všemu říkáš "get". Pokud myslíš "get" z dvojice "get_neco", "set_neco", tak máš pravdu. Ale slovem "get" může klidně začínat i privátní metoda.