Kezdőoldal » Számítástechnika » Programozás » C++ ban mi értelme van a...

C++ ban mi értelme van a classoknak?

Figyelt kérdés
Nemrég kezdtem el programozni. A "Tanuljuk meg a C++ programozási nyelvet 24 óra alatt" című könyvből tanulok. Eljutottam a classok azaz osztályokhoz és nem értem, mi értelme van? Ugyanezt el lehet érni külön változókkal / függvényekkel class nélkül. Lehet nagyon nagy hülyeséget mondok, ha igen pls okítsatok ki, és írjatok példát, hogy mire jó ténylegesen egy class. Válaszaitokat előre is köszönöm...
2012. márc. 20. 18:23
 1/4 anonim ***** válasza:

Szerintem kezd újból az egész könyvet mert butaságokat írsz.

a class kulcsszóval hozol létre osztályokat például:


/*Itt létrehozol egy osztályt a CAT nevűt és az,hogy mire képes ez az osztály azt megtudod abból,hogy milyen tagfüggvényeket,tagváltozókat tartalmaz.

class CAT

{

public:

void SetAge(int age);

/*tartalmaz egy függvényt ami beállítja a macska életkorát ez a SetAge függvény.*/


int GetAge()const; /*tartalmaz egy GetAge függvényt ami vissza adja az itsAge változót(visszaadja a macska életkorát).*/

private:

int itsAge; /*ebben a tagváltozóban tárolod a macska életkorát*/

};


/*Most meg írod a definíciójukat az osztályban levő tagfüggvényeknek(metódusoknak). */


//Ez a függvény állítsa át az életkorát a macskádnak.

void CAT::SetAge(int x)

{itsAge = x;}


int CAT::GetAge()const

{return itsAge;} //Ez adja vissza az életkorát


//main kezdődik

int main()

{

/*class kulcsszóval létrehoztad a macskáid típusát az az a CAT típust(pl olyat mint az in,short ezek is típusok csak előre beépítettek)

változó esetében:

int x;

Objektumok esetében:

CAT Bolyhos;

CAT a típusa Bolyhos pedig a neve. */


CAT Bolyhos;

cout <<"Bolyhos macskám most "<< Bolyhos.GetAge() <<" éves \n"; //Itt ki írattuk az életkorát.

//De most át állítjuk:

Bolyhos.SetAge(2);

cout <<"Bolyhos macskám most "<< Bolyhos.GetAge() <<" éves \n";


return 0;

}


/*Ez az Objektum orientált programozási stílus ha így írod a programjaid OO-ba akkor gyorsabban futnak és átláthatóbb,újra felhasználható az egész.

/*


Kezd elölről azt a részt!

2012. márc. 20. 19:32
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:
Ezt értem, de ez úgyis működne, hogyha a függvények nem lennének a "CAT" nevű osztályban, nem?
2012. márc. 20. 19:38
 3/4 iostream ***** válasza:
92%

Az elsőn látszik, hogy fogalma nincs ezekről a dolgokról. Csak okosít.


Igen, igazad van kérdező, a classok tökéletesen helyettesíthetők, gyakorlatilag minden C++ program lefordítható C-re. Ami miatt mégis classokat használunk az az olvashatóság, karbantarthatóság, egyszerűség. Sokkal könnyebb úgy együtt kezelni ezeket az adatokat, ha a fordító elintézi helyettünk a részleteket. Gyakorlatilag absztrakciós szinteket húzunk az egyszerű függvényvégrehajtás fölé, amit a konkrét gépi kód csinál. Ilyen a template is, meg lehet csinálni anélkül is sokmindent, de sokkal elegánsabb, és az elegáns általában jobb programozásban.

Illetve van, amit nem lehet megcsinálni ilyen-olyan eszközök nélkül, ott van például híres példaként a sort() vs qsort(). A C++-ban lévő sort() egy template, és általában gyorsabb, mint a C-s qsort(), pedig valószínűleg mindkettő programozói ismerték a quicksort ideális implementációját. A classoknál is vannak érdekes dolgok, például az exception safe dolgok, a RAII (keress rá, egyik legjobb dolog amit a C++ tud nyújtani), amiket ha nem is lehetetlen, de nehézkes sima C-ben elérni.

2012. márc. 20. 20:07
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:
így már értem, köszi a helpet, megy a zöld kéz ;)
2012. márc. 20. 21:52

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!