Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
MD

Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 22. březen 2008, 08:35:13 Předmět: |
|
|
Sosarian napsal: |
2Quiark: no pokud je zapouzdreni jen nástroj pro jednoho programátora kterej nesmí jít podle tvých slov sám proti sobe tak to rovnou muzu pouzivat vsechny funkce public a pristupovat k nim prez svoje funkce ne? |
Ne. Nemuzes. Ne ze by to neslo, ale je hodne obtizne si sam sobe (a nejen sobe, obvykle se programuje v tymu!) stanovit nejaka ucinna pravidla a donutit se (vsechny) je dodrzovat. Tohle je o nekolik radu tezsi, nez se vyvarovat nekolika prasarnam o kterych uz se tu psalo ... _________________ - play with objects - www.krkal.org - |
|
Návrat nahoru |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 22. březen 2008, 09:31:42 Předmět: |
|
|
Sosarian: Nechápu co máš na mysli. To zapouzdření je samozřejmě nástroj pro všechny programátory, kteří na daném projektu pracují. Hlavní účel private položek je v tom, že mám přesnou* kontrolu nad tím, jakým způsobem se s ní manipuluje. Takže ještě jednou, private položky jsou nástroj jak ulehčit programátorovi jeho práci tím, že zabrání přímé manipulaci s některými proměnnými a umožní s nimi manipulovat jen přes přesně definované rozhraní.
* Předpokládám, že žádný programátor (ani ty) se nebude snažit různými hacky ty private položky modifikovat jinak než pomocí get/set metod. Jako vedoucí týmu to můžu výslovně zakázat, nicméně žádný slušně vychovaný programátor se o to ani nesnaží.
Ke druhé části dotazu:
Jasně, návrh hry/enginu není lehká záležitost. Co se týče čerpání informací, máš asi následující možnosti:
Jak pojmenovat třídu v C++? Microsoft dřív používal prefix C, tedy třeba CWindow. Teď se spíš obvykle třídám žádný prefix nedává a obvykle se používají velká písmena -- Player. Ale v tomhle máš samozřejmě volnost, vyber si nějakou konvenci, která ti vyhovuje. _________________ Mám strach |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 22. březen 2008, 10:09:06 Předmět: |
|
|
Quiark napsal: |
* Předpokládám, že žádný programátor (ani ty) se nebude snažit různými hacky ty private položky modifikovat jinak než pomocí get/set metod. Jako vedoucí týmu to můžu výslovně zakázat, nicméně žádný slušně vychovaný programátor se o to ani nesnaží. |
ja mam pocit ze cela diskuze je o tom ze Sosarian vi jak to hackovat a tudiz vi ze nelze zabranit tomu aby to nekdo hacknul a tak si mysli ze nema smysl nejaky gettery a settery resit.
proste resi proc tomu nejde zamezit a ze tudiz kdyz tomu nejde zamezit nema smysl to resit. |
|
Návrat nahoru |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 22. březen 2008, 10:18:39 Předmět: |
|
|
V tom případě nezbývá než připomenout, že se nepohybujeme v oblasti kryptografie a zabezpečení milionů peněz, kde se spousta lidí o nějaký ten únik informací snaží, ale pohybujeme se v oblasti programování her, kde se žádný rozumný člověk nebude snažit jít proti mechanismu zapouzdření, jehož primárním cílem není bezpečnost, ale usnadnění programování.
Prostě ano, jde to obejít, ale je to blbej nápad. Do pily taky můžeš strčit ruce. _________________ Mám strach |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 22. březen 2008, 18:04:14 Předmět: |
|
|
Sosarian:
1) Takhle krásně skryješ privátní proměnné:
kód: |
// V headeru:
class Window
{
public:
Window();
virtual ~Window();
// tady si dej, co potřebuješ
private:
struct Private;
Private *private;
};
// V cpp:
struct Window::Private
{
// Tady si dej členské proměnné
};
Window::Window()
{
private = new Private();
}
Window::~Window()
{
delete private;
}
|
2) Nezapomínej, že největší výhoda OOP jazyků je polymorfismus a je to také jistý druh zapouzdření!!! _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Al
Založen: 23. 10. 2007 Příspěvky: 196
|
Zaslal: 24. březen 2008, 20:40:58 Předmět: |
|
|
Osobně taky myslím, že kdo tvrdí, že objektové programování je možné i v jazyce C, nějak úplně minul (nepochopil) základní přínos těch "private" atp.
A přidám ještě jednu stručnou a jasnou poučku: Viditelnost není nástrojem bezpečnosti.
Pokud si někdo plete viditelnost (private/public) a bezpečnost (security), opět to je klasické nepochopení OOP. Taky jsem kdysi měl tento problém.  |
|
Návrat nahoru |
|
 |
|