OOP - veřejné datové složky vs. veřejné přístupové metody – Offtopic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

OOP - veřejné datové složky vs. veřejné přístupové metody – Offtopic – Fórum – Programujte.comOOP - veřejné datové složky vs. veřejné přístupové metody – Offtopic – Fórum – Programujte.com

 

xIxIs
~ Anonymní uživatel
1 příspěvek
29. 7. 2008   #1
-
0
-

Zdravím všechny profíky, mám takový malý lama dotaz.
Chtěl bych se zeptat, proč jsou bezpečnější veřejné přítupové metody privátních datových složek lepší než publicitní datové složky.
Zdá se mi totiž že když vytvořím privátní složku třeba Kolo a pak metody getKolo a setKolo, které mají jen jeden řádek return kolo resp. kolo=param tak nezvýším bezpečnost programu proti záškodnickému programu ani o ň.
Nebo se mýlím?

Nahlásit jako SPAM
IP: 83.208.235.–
29. 7. 2008   #2
-
0
-

Tohle nesouvisi ani tak s bezpecnosti jako spis s principem zapouzdreni (http://cs.wikipedia.org/wiki/Objektově_orientované_programování). Kdyz potom budes chtit neco na vstupu zmenit, tak jen zmenis tu funkci, u primeho pristupu k promenne bys musel menit vsechny vyskyty nebo to nejak slozite resit jinak. Navic treba takovy setter muze mit navratovou hodnotu, coz se muse casto hodit.

A zaregistruj se.

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
bukaj0
Věrný člen
29. 7. 2008   #3
-
0
-

xIxIs
Zdá se mi totiž že když vytvořím privátní složku třeba Kolo a pak metody getKolo a setKolo, které mají jen jeden řádek return kolo resp. kolo=param tak nezvýším bezpečnost programu proti záškodnickému programu ani o ň.
Pokud si se někde dočetl, že je to kvůli bezpečnosti, tak to byly trochu zkreslené informace. Gettery a settery se používají hlavně, protože pokud použiješ veřejné vlastnosti, jsou přístupy k nim pevně zadrátovány do kódu, takže už tam nemůžeš přidat třebas kontrolu nějakého rozsahu.

Lepší bude asi příklad. Řekněme, že máš objekt třídy Osoba. Pokud vlastnost vek bude veřejně přístupná (public), můžeš pak dotyčnému přiřadit věk třebas 99999, což je blbost. Jestliže ale vlastnost uděláš privátní a uděláš k ní getter (metoda getVek()) a setter (setVek(int vek)), můžeš do setVek() přidat kontrolu, aby věk byl třebas v rozmezí 0 – 120, a pokud nebude, můžeš vyhodit výjimku.

Existují i jazyky, které jsou v tomto ohledu „vymakanější“, takže můžeš normálně „přiřazovat“, ale vlastně se volají gettery a settery. Takhle to má myslím C#, Python a možná i některé další.

*EDIT: pozdě :o)

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý