esemény feldolgozás végrehajtás c - szoftverek

Event (esemény) nevezzük egy kimenő hívás. Ez a kifejezés valószínűleg ismerős, akik dolgozni nyelvek, mint a Delphi, Visual Basic, stb Amikor egy esemény bekövetkezik, van egy hívás az ő rakodók. Mivel az objektum kezdeti események nem tudni semmit a rakodók, az esemény az úgynevezett kimenő hívás. Ha munkát azon az elven „egy tárgy egy pár.” Fontos megjegyezni, hogy az esemény (esemény) és az üzenet (message) különböző fogalmak. Az üzenet az úgynevezett közvetlen kihívást jelent, amely átment a tárgy kifogást. Azaz, van egy üzenet kezelő.

Események használnak igen széles körben. Ilyenek például a különböző könyvtárak, amelyek megfelelnek a grafikus felhasználói felület a felhasználó. De eseményeket, ha helyesen használják lehet igazán hasznos dolog Sajnos, történelmileg, hogy a C ++ nincs esemény. Ezért, ha szükséges, a fejlesztők végre őket a könyvtárban. Itt, itt van a megvalósítása egy ilyen könyvtár. Két osztály küldötte és Rendezvényközpont.

Osztály Küldött (küldötte)

Küldött osztály kiterjeszti a koncepció egy függvény pointer. Ezzel osztály, akkor át egy hivatkozás a módszer az objektum-küldöttet. További küldöttet objektum lehet továbbítani a kliens kódot, amely közvetetten okozhat a módszert. Ebben az esetben a kód, amely kezeli a résztvevő nem tudja, milyen módszer mögött. megbízottja előnye, hogy dinamikusan adja át a mutatót a módszereket, és ezáltal megváltoztatja a viselkedését a program újrafordítás nélkül kliens kódot. Egy program, amely egy küldöttet, hogy továbbra is boldogan tudatlanok a manipulációs technikák és a tulajdonosok.

Alkalmazási példák az osztály küldötte

Az eredményeket a program a következők:

Nézzük a programot részletesen. Kezdetben mi is a header file osztály Küldött:

A meghatalmazott elküldi a hívást a függvény, amelyre utal. Ha a résztvevő tartalmaz NULL, akkor a hívás ignorriruetsya. Következő Mi változik a függvény által mutatott a küldött:

Annak igazolására, a hatását a kapott újra a hívást. Tehát van egy függvényhívás Test :: SayGoodBye ().

Ez a példa nagyon egyszerű, de mégis azt mutatja, a képességek birtokában a küldöttek és a fő előnye.

Példa №2: Egy kis adatbázis

De a legfontosabb funkciója az osztályban, és esetleg az egész program a funkció ProcessStaff (küldötte ). Ezzel a módszerrel lehetőség van az egyes dolgozók a gyűjtemény _staff, hívja a módszer, hogy a mögött a küldöttet. Továbbá a fő fő funkciói a program többször ilyen hívásokat.

Osztály könyvelő a következő funkciókat biztosítja. Ez lehetővé teszi, hogy nyilvántartást vezetnek a munka a módszer AddEmployeToAccount (EMPLOYE *). Amikor ezen eljárás _count dolgozók a számláló 1, és a teljes fizetés _totalWage adunk fizetést az alkalmazottak, amelyek segítségével számítják ki EMPLOYE :: CalculateWage () módszer. GetTotalWage () metódus visszaadja az összeget, hogy fizetnek minden munkavállaló bérét. GetAverageWage () kiszámítja az átlagos fizetés a vállalkozás.

Végül eljött az ideje, hogy írjon a fő funkciója a program. Ennek megvalósítását az alábbiakban

A program kimenete látható az alábbi ábrán

Mi meg fogja érteni, hogy mi történik a programban. Először is meg kell jegyezni, az új osztály, amely ellátja többnyire kiegészítő funkciók. Ez az osztály az úgynevezett EmployeTester. Ez a két módszer. Az első közülük - PrintInfo (EMPLOYE *) kiírja tájékoztatás a munkavállaló, ami neki átadott paraméterként. A második módszer AddEmployes (EnterpriseDB *) csak kitölti a adatbázis a néhány alkalmazottal.

És most beszéljünk a főbb jellemzői a program. Ez az a hely, a legfontosabb események használatával kapcsolatos küldöttek. Először is, a program létrehoz egy adatbázist, egy könyvelő és egy objektum EmployeTester:

Ezután az adatbázis adatokat vittek be a három alkalmazott:

A telepítés után díjat szolga jön EmployeTester objektumot. Ő információkat jelenít meg minden egyes feladat:

És most itt az ideje, könyvelő, hogy kiszámítja az összes dolgozók és meghatározzák a teljes fizetését és az átlagkereset a vállalatnál. Az eredmények megjelennek a képernyőn:

Nézzük összefoglalni. A küldöttek kényelmes alkalmazni a következő esetekben:
  • Meg kell hívni csak egy módja
  • A hívó nem kell tudni az objektum, amely birtokolja a módszer
  • Egy osztály több megvalósításai ugyanazt a módszert

Class Event (Esemény)

Az esemény ebben az esetben - ez a módja az osztályban, hogy tájékoztassa az ügyfelek (osztályok, használja az osztály), ami történt vele valami érdekes. Talán a legismertebb módja, hogy használja események - egy grafikus felhasználói felület (GUI). Jellemzően osztályok, amelyek képviselik a kontroll (kontroll) grafikus felületet olyan események váltják ki, amikor a felhasználó csinál valamit egy kontroll (például gombnyomás). De az események lehet használni nem csak a GUI. Események obespechiayut igazán hasznos módon tárgyak jelzik a változás az állapotát. És ez a változás fontos lehet az ügyfelek számára az objektum. Események - ezek fontos építőkövei létrehozására osztályok újra lehet használni a sok program. Események használjuk közvetlenül a küldöttek. Fontos megjegyezni, hogy a tárgyak - a résztvevők inkapsultruyut (elrejtés) módszer az osztály, és ez lehet nevezni névtelenül. Event - oly módon, hogy hívja a módszerek más tárgyak, ha egy esemény történt. Azaz, az objektum-oldali kitolja a mutató egy módszer a küldött (az előzőekben látható), és halad a küldött, hogy az esemény. Amikor egy eseményt kiváltó hivatkozni megbízottja, és így az eljárás, amely adta neki.

Példa a Event osztály

A program kimenete látható az alábbi ábrán.

Beszéljétek kódot. Ebben a programban, három osztály van szó. Először is, úgy a Color osztály. amely leírja a színt. Ebben vannak a következő összetevőkből áll:
  • Piros, zöld és kék komponenseit színes (RGB)
  • megjelenítési karakterlánc. prednaznvchennaya színeket megjeleníteni a képernyőn

A kényelem az osztállyal foglalkozó nyilvánítják több statikus állandók - fehér, fekete, piros, zöld, kék. Használja Color osztály az alábbiak szerint:

ToString () függvény a szín értéket egy string.

A következő nevű osztály View. Tartalmaz egy változó határozza meg a színt. Az osztály biztosítja módszereket, hogy / az értéket a szín - rendre GetColor / SetColor. Szintén az osztályban kilátást nyújtó ColorChanged esemény. amely akkor aktiválódik, ha egy program módosítja a szín érték, vagyis okoz SetColor módszer.

NewView - származik osztály View. Feladata, hogy egy funkció hozzáadása ColorChanged esemény. amelyik ősének. Ez történik a kivitelező NewView:

Mint látható, annak érdekében, hogy közvetítse a funkcióját először létre kell hozni egy eseményt az ő átalakító vvide megbízottja, majd „add” a küldött az eseményre + = operátor.

„Observer” események (EventListener) valójában is jön, mint az osztály NewView. Megkapja a mutatót a nézet, és hozzáteszi, hogy az esemény ColorChanged módszere EventListener :: reagálnak ():

Módszer EventListener :: szereljük le () lekapcsolja az esemény az ő módszerét reagálnak:

Detach eljárás is előfordul, mint a kapcsolat csak operátor - =.

Tekintsük a fő jellemzője a program. Először is, a program létrehoz egy EventListener objektumokat és NewView és megjeleníti a kezdeti színértékét objektum NewView:

Meg kell jegyezni, hogy ezen a ponton, hogy az esemény ColorChanged két módszer kapcsolódik - az NewView :: OnColorChanged () és a EventListener :: reagálni (). Ennek ellenőrzéséhez megváltoztatja a színét a SetColor. Ennek eredményeként a fenti két funkció kerül meghívásra. További célunk EventListener készült leválasztása a módszert az eseményt. Emlékezzünk SetColor módszer azt látjuk, hogy csak az egyik módja reagál az eseményre - NewView :: OnColorChange ():

Friss hozzászólások

Ha szeretné használni a kiküldött és Event osztályok projektek, kösse őket Delegate.h fájlok Event.h, EventBase.h és EventBase.cpp.

Kapcsolódó cikkek