.[ ČeskéHry.cz ].
Návrh hry
Jdi na stránku Předchozí  1, 2, 3
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
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

PříspěvekZaslal: 22. březen 2008, 08:35:13    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 22. březen 2008, 09:31:42    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 22. březen 2008, 10:09:06    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 22. březen 2008, 10:18:39    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 22. březen 2008, 18:04:14    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 24. březen 2008, 20:40:58    Předmět: Odpovědět s citátem

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. Cool
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3
Strana 3 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna