[python] otázka ohladom mojho štýlu písania v OOP

Petr Přikryl prikryl na atlas.cz
Středa Leden 16 09:22:40 CET 2013


Roman Beno:
> To znamená, že pri písaní modulov sa na to OOP nehodí?

Začnu jinak. Neprogramujeme proto, abychom napsali modul,
abychom napsali třídu, abychom napsali funkci, abychom 
definovali datovou strukturu. Programujeme proto, abychom
formálně vyjádřili řešení problému tak, aby ho mohl řešit stroj.
Základem je tedy snaha o "řešení problému".

V reálném světě si úkoly a systémy rozkládáme na více menších
úkolů či podsystémů. Vytváříme si v hlavě abstraktní model
situace, kterou chceme řešit. Programovací jazyk je tak vhodný
pro řešení daného problému, jak dobře dokáže svými prostředky
vyjádřit tento abstraktní model.

Na něco se hodí funkce, na něco se hodí objekty (a třídy), 
na něco se hodí moduly.

OO návrh a jazyky pro OOP jsou vhodné tehdy, když o řešeném
celku uvažujeme jako o větším systému tvořeném z menších
spolupracujících podsystémů.

Modul se chová podobně, jako instance třídy s charakterem
singletonu. Pokud potřebuji singleton, pak je použití modulu
jednodušší, než vytváření třídy a složité zajišťování toho, že se
vytvoří (a bude sdílet) jediná instance této třídy. To ale neříká
nic o tom, jak složitou funkčnost modul implementuje. Modul
poskytuje jednoduché rozhraní v podobě zveřejněných funkcí
a případně zveřejněných proměnných. Nezveřejněná funkčnost
může být implementována jakkoliv -- podle toho, co je z hlediska
řešeného problému nejvýhodnější.

P.


>
>2013/1/15 Petr Přikryl
>> > Od: "Roman Beno" 
>> ...
>> Obecně, práce s instancemi tříd je výhodná jen v situaci, kdy
>> instance udržuje nějaký vnitřní stav, tj. kdy má smysl uvažovat
>> o metodách jen v situaci, kdy by to bez toho vnitřního stavu
>> komplikovalo rozhraní volané funkčnosti.
>>
>> >if __name__="__main__":
>> >    # čo robit s instaciou(ami) po spustení z termu..
>> >    ....
>>
>> Z obecného pohledu v této části nelze mluvit o instancích
>> tříd protože žádné nemusí existovat. Python není čistě objektově
>> orientovaný a umožňuje (podobně jako C++) přirozenější
>> přístup k výstavbě programu.


Další informace o konferenci Python