Public vs funkce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Public vs funkce – C / C++ – Fórum – Programujte.comPublic vs funkce – C / C++ – Fórum – Programujte.com

 

LPG19950
Newbie
30. 1. 2011   #1
-
0
-

Chtěl bych se zeptat jak mám deklarovat proměnné u tříd. Mám knížku naučte se C++ a tam říkají že by měli být veškteré proměnné ve třídě private a deklarovat by se měli pomoci public funkcí. Ale mě se to zdá jako zbytečné prodlužování kodu. Poradite mi prosim co mám používat? Jestli je lepší



class neco
{public: int a;
}
int main()
{
neco kniha;
kniha.a=10;
return 0;
}

nebo radsi


class neco
{public: ziskaniveku();
private: int vek;
}
void neco::ziskaniveku(int a)
{
int vek=a;
}

int main()
{
neco kniha;
kniha.ziskaniveku(3);
return 0;
}


Která metoda je lepší a popřípadě proč? Mám používat radši třídy enbo struktury?

Nahlásit jako SPAM
IP: 88.102.44.–
pakr93
~ Anonymní uživatel
19 příspěvků
30. 1. 2011   #2
-
0
-

Zdravim, to co se nyni ucite je objektove orientovane programovani, ktere je zalozene mimojine na tzv. zapouzdreni ... u vas 2. priklad ( ten, ktery doporucuji ve vasi ucebnici ) ... Samozrejme muzete promennym prirazovat hodnoty prvnim zpusobem. To by ale nebyl objektovy pristup... Tim, ze "umistite" promenne do privatni casti funkce, zamezite ostatnim tridam pristupovat k nim... To je vlastne jeden z ucelu OOP ...

Nahlásit jako SPAM
IP: 81.201.60.–
pakr93
~ Anonymní uživatel
19 příspěvků
30. 1. 2011   #3
-
0
-

* EDIT : * do privatni casti tridy ... :smile16:

Nahlásit jako SPAM
IP: 81.201.60.–
yaqwsx+9
Posthunter
30. 1. 2011   #4
-
0
-

V podstatě je to jedno; záleží na vkusu, zkušenostech a rozsáhlosti projektu (respetktive chod programu to neovliní, ovlivní to pouze jeho vývoj). "Správně" by se všechny proměnné pro třídu měly nastavovat a získávat pomocí funkcí. Je pro to řada důvodů:
[seznam]autor třídy má 100% jistotu, že ve třídě nebudou neplatná data[/seznam]
[seznam]pokud dojde k nějaké změně v implementaci třídy, může její rozhraní zůstat a tím pádem není ani nutné upravovat zbytek programu[/seznam]
[seznam]Toto souvisí s předchozím - pokud nastane potřeba při změně nějaké proměnné provést nějakou činnost, není nutné měnit program, pouze se upraví implementace třídy[/seznam]
Samozřejmě to má za následek určité zdržení při vývoji a "zabordelenost" kódu. Proto se často u velice malých projektů nechává volný přístup k proměnným třídy. Avšak pokud se učíš programovat, je dobré si vytvořit návyk na tvorbu getterů a setterů.

Nahlásit jako SPAM
IP: 85.160.114.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
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, 68 hostů

Podobná vlákna

Public: vector — založil Figa

Public vs. private — založil inferno-girl

Public vs private metóda — založil Plui

Public void PredstavSe() — založil Montezo

Moderátoři diskuze

 

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