Osztályok és objektumok a c

Végül eljutottunk a legfontosabb téma a bevezető kurzus. Ma fogunk beszélni osztályok és objektumok. Engedje kicsi és nem bonyolult. Ami jó.

Osztály - semmi, mint a szerkezet, és az oldathoz hozzáadunk funkciót. És a tárgy - ez a szerkezet változó.

Ez az anyag könnyebb lesz megérteni, ha ismeri a struktúrákat.
strukturált programozás

Minden példa eddig tárgyalt kapcsolódnak strukturált programozás. Jellegzetességeit egy partíció programkód-blokkok, végrehajt bizonyos feladat. Ebben az esetben a szerkezeti egységek jellemzői és modulok (amely lehet benyújtani külön fájlokba).
Az objektum-orientált programozás (OOP)

Fejlettebb az objektum-orientált programozás (OOP továbbiakban). OOP fogalma jobban alkalmazható a szervezet adatait. OOP teszi programozó életét, ez nem kétséges. A fő jellemzője az integráció az adatok és funkciók.

Kulcsfogalmának OOP objektumok és osztályok. Osztályok - egy olyan struktúra, amelyben a hozzáadott funkció. És tárgyak - a strukturális változók.
osztály definíciója

Az osztály definíciója elé kell helyezni a fő.

Kezdjük egy egyszerű példát:

Ebben a példában, a meghatározása a osztály definíció szinte azonos struktúrákat. Már csak két különbség: a cím helyett a struct kulcsszó érdemes osztályban. A második - az első sorban az osztály definíció nyilvános kettősponttal. Itt fogjuk nézni, hogy a nyilvánosság számára nagyon hamar. Először létrehozunk egy változót azonos típusú katona.

Itt hoztunk létre egy objektum katona osztály a. Nézd, egészen más strukturális változókat. Ebben az esetben a tárgy (osztály változók) lehet használni, valamint a szerkezeti változókat.
Access leírást a köz- és a magánszféra

Alapértelmezésben a struktúrák által használt hozzáférési megadó köz- és magán osztályok. Tekintsük a példát szakképzetlen:

Itt struktúrák közötti és az osztályok egy fontos különbség. Itt van, hogy tényleg meg az előző definíció:

A fordító automatikusan beilleszti a köz- és a magánszféra. Az alapértelmezett struktúra által használt nyilvános alapértelmezett osztály használják magán.
Access megadó nyilvános

Ez az alapértelmezett specifikátor használják szerkezetek. Ahhoz, hogy használni az osztályban kell bejelenteni azt explicit módon.

Nyilvános specifikátor lehetővé változó / tárgyak jönnek létre alapján ez a struktúra / osztály hozzáférést biztosít a területeken.

Ebben az esetben a használata osztályok nem különbözik a struktúrákat.
privát hozzáférést megadó

Mi mindig nyilvánítja hozzáférés előírást világosan: a magán- és állami.

Ha ezt a példát, a fordító hibát generál. Nem tudjuk elérni a lőszer területen kívül az osztályteremben.

Túl az osztályteremben - így bárhol a kapcsos zárójelek az osztály meghatározása (van kivétel, de erről bővebben később). Ha az objektum az osztály megpróbál hozzáférni egy osztály változó (a.ammo), akkor is figyelembe kell venni, hogy „az osztálytermen kívül”.

Access tervezők (és az állami és magán) állnak, mivel úgy tűnik az osztályban addig a pillanatig, amikor találkozik egy másik tervező vagy osztály definíciója befejeződik.

Mi mindegy változók meghatározását a blokk a tervező nyilvánosság? A tény az, hogy amellett, hogy az osztályok a változók tartalmazhat funkciókat.

Függvény egy osztályon belül nevezik módszerek az osztály.
osztály módszerek

Vegyük ezt a példát: Tegyük fel, hogy szeretnénk tanítani katonák járni. Itt van, hogyan fog kinézni, ha a szerkezetek:

Persze jobb, ha mozog a write függvény:

void lépés (int x, int y) <>

És így kell kinéznie a szervezet működését? Mi lehet egyszerűen írni:

De akkor, ha van egy pár katona típusú változók, nem tudjuk használni a lépés funkciót nekik. Ezért kell, hogy adja át egy másik érv - struktúra változó, amelynek mezők megváltoznak. Tehát:

Most nézzük meg, hogyan raboat ezt a szolgáltatást:

A funkció eltelt egy változó katona, de kell lennie, és térjenek vissza a függvény. A funkció vezetjük további 8 bájt (mezők x, y változó katona), valamint a függvény nyolc byte. Természetesen jobb katona át hivatkozunk.

Látod, milyen egyszerű! Az osztályok minden sokkal egyszerűbb:

Bent a funkció már definiált függvény mozog. Figyeljük meg, hogy nem kell átadni tárgyakat az osztály - a módszer ő tudja, mi kifogást ez okozott. dx és dy - értékek ami megváltoztatja a osztályú területeken.

Osztály módszerek kerülnek alkalmazásra majdnem olyan jól, mint a szokásos funkciókat. Ebben az esetben az eljárás tudja, mi kifogást általa okozott, és meg fogja változtatni a területén a kívánt objektumot.
elrejtése adatok

Most mindegy mi kell érteni, hogy miért van egy saját hozzáférési adja meg.

Mi nem férnek hozzá az x, y. De van belőlük egy osztályban. mozog a módszernek is az azokhoz való hozzáférést, mivel ez a módszer osztály katona.

Most, a változás az x és y csak mozog a segítségével a módszer. x és y rejtett. És ez nagyon igaz. Ahhoz, hogy megértsük, miért van ez a helyes, mi nem hamarosan - csak akkor, amikor elkezdünk dolgozni a nagy osztályok.
Az osztály konstruktor

Most, hogy a projektek adatait biztonságosan elrejtve a tervező saját, próbálja elindítani őket:

katona a =;

De akkor a fordítóprogram ad hibát, hogy azt mondják: Hát ez akkor minden megpróbál hozzáférni rejtett adatokat?

Mit kell tenni? Kiderült, hogy mi való a változók keresztül etip mozog, és hogyan kell beállítani ezeket a változókat kezdeti érték?

Ha megpróbálod a következő módszert:

Aztán persze a fordító hibát generál majd, mivel az osztály definíciója nem memóriát.

Tehát minden osztályban van egy speciális funkciója, hogy az úgynevezett amikor egy objektum jön létre az osztályban. Ez a funkció az úgynevezett osztály konstruktora. Ha nem kifejezetten létre kivitelező, a fordító felhívja az alapértelmezett konstruktor.

Designer - ez egy közös vonás, de nincs visszatérési értéke. tervező neve megegyezik a neve az osztály. A tervező kell elhelyezni a nyilvános részén.

A kivitelező kerül meghívásra, ha egy osztály tárgyak:

katona a, b;

Itt mind a tárgyak és b nevezzük kivitelező.

Van is egy formája a felvétel:

Úgy tűnt, arra utalnak, hogy a függvény neve (kivitelező), hogy hozzon létre a és b.

By the way! Konstruktőri hívják nemcsak egyéni adattípusok, hanem a szabvány. Például, a meghatározó változó típusát megfelelő kivitelező nevezzük char. Ebben az esetben a kivitelező memóriát változó - egy bájt.
List kivitelező inicializáló

Meghatározása az osztály konstruktor katona teljesen korrekt. De általában a kivitelező szervezet nem inicializálja osztály változókat. Ehelyett initsitsalizatsii listákat használnak inicializálni az osztály változók. Itt látható az osztály konstruktora meghatározása katona listáját inicializálása:

inicializálás lista követően rögzített zárójelben cím tervező és kettősponttal elválasztva. A listában osztály változók vesszővel elválasztva, és ez az érték zárójelbe, amelyek inicializálni kell változókat.
túlterhelt függvények

Mielőtt tovább beszélni osztályok, tudnunk kell, hogy mi a túlterhelt függvények.

Tegyük fel, hogy szükségünk van két azonos funkciók működnek a különböző adattípusok. Egy funkció vezetünk egy érv az int típusú, és egy másik - a fajta úszó. Ebben az esetben ugyanazt a nevet lehet használni a két funkciót. Az ilyen függvények túlterhelt:

Tartsuk szem előtt, hogy van, sőt, a két funkció definiált, de ugyanazzal a névvel. A tény az, hogy a fordító akik nem csak egy név, hanem a számát és típusát, az érvelések funkciót. Ebben az esetben a visszatérési típus nem veszik figyelembe, amikor próbálják meghatározni a következő funkciókat, a fordító hibát generál:

Most tekintsük a használata túlterhelt funkciók a gyakorlatban:
Mivel a tervezők - ez semmi, függvényében, illetve akkor lehet túlterhelt. Ebből a célból az osztály definíciója kell határozni két konstruktőrök:

Cím a második tervező kiderült elég hosszú, de ezt ellensúlyozza megjelent a képességek:

katona s1;
katona s1 (3,4,10);

Amikor létrehoz az első változó kivitelező az úgynevezett paraméterek nélkül. A második esetben - a tervező érveket. Látod, milyen egyszerű ez már lehetséges, hogy inicializálja új változók. Ebben az esetben használjuk az inicializálás lista, csak helyettesíti a zárójelben nem állandó értékek és az értékeket a paraméterek át a kivitelező.
Azonosítása módszerek kívül az osztály

Osztályon belül blokk nyilvános bejelentjük a támadási módszert. Meghatározása az eljárás az osztályon kívül, de a módszer továbbra is használhatja a rejtett dannami kategóriájában. Annak érdekében, hogy egyértelmű, hogy ez a funkció egy osztály módszer működését a globális képfelbontást. Először is, írja a nevét, az osztály, a globális műveletek aláírására engedélyt, majd - a módszer neve is. Minden egyéb tekintetben a függvény definíciója egybeesik azzal a ténnyel, hogy már láttuk.

Itt van, hogyan fog kinézni a katona osztály, ha benyújtja a lépés eljárás az osztályon kívül:

Az eljárásokat úgy hajtjuk kívül az osztály definíció létrehozása nagy osztályok.
Statikus osztály adatai

Minden tárgy, ez az osztály létrehozza a saját változókat. De van egy lehetőség az összes tárgyat létrehozni egy változót. Ebben, például tárolhatja a számot a már meglévő objektumok ebben az osztályban.

Counter változó deklarálva a kulcsszó statikus. Szintén kívül az osztály, akkor inicializálni ezt a változót. Abban az inicializálás, mi is az osztályban a működését a globális engedély.

A kivitelező, akkor növeljük a változó eggyel.

Most minden alkalommal a program létrehoz egy katona típusú objektum számláló változó értékét megnöveljük.
gyakorlatok:

Legújabb a fórumon

lalala1006 → Tanfolyamok tanár (Minecraft, Scratch, Unity 3D GameMaker)
Mi csupán a gyermekek programozási létrehozása révén játékok több mint két éve. Ezalatt az idő alatt fogunk építeni.

Edvard007 → Mi van, ha Insorg blokkolt
Kedves fórumozók! Ha nehézségei hozzáférést a web res.

ganny → 3000 rubelt bónusz. Nyerőgépek Vuulkan
3000 rubel regisztrációs bónusz a szerencsejáték-klub vulkán. A bónusz csak az itt megadott. Wulka.

ganny → Volcano kaszinó pénz igazi?
És itt vannak a legjobb online kaszinó ajánljuk azoknak, akik tiszteletben tartják a kaszinó engedéllyel. Érdekes projektek, többnyelvű.

IndieCurator → előmozdítása a Steam játékok
Tisztelt Uram! Minden magára valamit is adó fejlesztő \ kiadó, hogy kiadja a játék tudja, hogy hirdetések nélkül.

proxyan → Service PROXYAN.net - vesz egy megbízható szerver proxy, gyors HTTP / zokni
Szolgáltatás PROXYAN.net - Professzionális biztonsági megoldás a hálózat serv.

Vendégek → NextCastle Party - fesztivál indie és retro játékok
nagyon követhető, alacsony környezeti hatás, rendkívül tartós, lehet beszerezni egy nagy. Vendégek → Háztartási csapat bejelenti a játék egy szokatlan név «RIP»
Cirkónia fényesen süt a trópusi Flamingo, óceán élet és Trópusi Sunset varázsa, diff. Vendégek → Heavy erősítést érintett körzetben Taktikai
Tutti i MODELLI sono stati rinnovati nello stile e, a quanto mester kronométer, sono assolutamente. Vendégek → Háztartási csapat bejelenti a játék egy szokatlan név «RIP»
Scopra la nuova Collezione costituita da Orologi donna. Vendégek Blitz3d → legújabb verziójának letöltése ingyen, prog
Normál program spam játékokat, de először meg kell nézni 300000 oktató. Vendégek → Kézi hogyan lehet létrehozni egy MMORPG
Ahogy MMORPG játékos 15 éves tapasztalattal, teljes mértékben egyetértek, hogy lényegében az egész online. Vendégek → végrehajtása egyszerűen csatlakoztatható és kettős kapcsolt listák - 2
Odamentem ezt websitewebsite és azt hiszem, van egy csomó csodálatos információkat, mentett az én b. Vendégek → pusztítás kiegészítésében Call of Duty: Ghosts
A stratégiai játék, nagyszerű. realmer összecsapása

Barátaink