Kezdőoldal » Számítástechnika » Programozás » Miért mondja a 24 órás könyv,...

Miért mondja a 24 órás könyv, hogy tagváltozókat privátként érdemes létrehozni?

Figyelt kérdés

C++

Javában is érdemes? Ott is:

WTF MIÉRT?!?!?!

Nem bírok rájönni...


2012. dec. 13. 05:57
 1/6 Srapnel ***** válasza:

Ennek az az oka, hogy egy metódust override-olhatsz, de egy attribútumot nem.


Pl. ha van egy ilyen osztályod:

Személy(szül-hely, szül-idő, életkor)


Akkor csinálhatsz egy osztályt úgy, hogy az első kettő van attribútumként tárolva, a harmadik meg számolva, de akár olyat is, hogy mindhármat tárolod. Minden esetben úgyis egy getXXX metódus adja az értéket, ezért mindegy, hogy az az attribútumértéket olvassa ki, vagy számolt értéket ad vissza. Ezt attribútumokkal nem tudnád megtenni.


Ez nem nyelvfüggő, ez az OOP egyik konvenciója.

2012. dec. 13. 07:36
Hasznos számodra ez a válasz?
 2/6 Srapnel ***** válasza:

Ja és az előzőek folyománya az, hogy az attribútumokat privátként deklarálod.


Nézheted úgy is a dolgot, mint hogy a tagváltozók az osztály saját magánügye, ő csak egy adott felületet biztosít a rendszer többi része számára. Ha azok akarnak valamit az előbbitől, akkor szépen hívnak metódusokat és nem közvetlenül állítgatnak attribútumértéket. Gondold el, lehet hogy az attribútumok értékei között fenn kell tartanod valami szabályszerűséget és akkor valaki kívülről átállít valamit, így tönkretéve mindent.

2012. dec. 13. 07:39
Hasznos számodra ez a válasz?
 3/6 iostream ***** válasza:

1. Az OOP ezt mondja, az enkapszuláció miatt. Egységbe zárás. Az osztály implementációja az ő magánügye, a felületét meg függvények alkotják, amik a neki küldhető üzeneteket jelképezik. Ez azért ilyen faramuci, mert a C++ és a Java is ilyen nem intuitíven implementálta az ojjektumorientáltságot.

2. Szemléletesebben, ha nem private az adattag, akkor mindenki aki az osztályt használja, függ az osztály implementációjától, tehát ha az megváltozik, akkor mindenkit módosítani kell. Ha függvényen keresztül érsz el egy értéket, akkor észrevétlenül ki lehet cserélni az alatta lévő megvalósítást, sokkal szabályozottabb a hozzáférés.

2012. dec. 13. 09:49
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

Elvből. Mert az objektum-orientált programozás alapszemlélete az, hogy minden egy objektum, aminek kívülről nem szabad, hogy beleláss a belsejébe.

Gyakorlati haszna is van, okozhat nehezen felismerhető hibákat, ha csak úgy beleturkálsz egy objektumba.


Persze ez csak elv, lehet attól még egy program hibátlan és tökéletes, ha a "szentíráést" nem tartod be. Csak mások le fognak nézni miatta.

2012. dec. 13. 10:09
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:
Kicsit gyakorlatiasabban. Ha nem private, akkor kívülről eléred, ha private és adsz neki set, illetve get metódusokat, akkor set-nél tehetsz feltételt, hogy milyen értékeket adhat meg a változónak, nehogy rossz értéket kapjon.
2012. dec. 13. 13:14
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
Nehogy véletlenül felülírja valaki a társaid közül, vagy akár te néhány hónap múlva, amikor a program egy teljesen más részét írod. Nehezen felderíthető hibákat lehet így okozni.
2012. dec. 14. 18:43
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!