programarea orientată spre obiecte - studopediya
În secțiunea 5.1, am spus că paradigma de programare orientat-obiect presupune crearea de unități de software active - obiecte care constau în proceduri care descriu modul în care obiectul ar trebui să răspundă la stimuli diferite. Atunci când o abordare orientată spre obiect obiectele cerute sunt definite prin decizia de sarcini, care apoi sunt descrise ca o unitate de sine stătătoare. La rândul său, limbajele de programare orientate-obiect oferă mijloacele de exprimare a unei astfel de idei. În această secțiune, vom explora unele dintre aceste instrumente și modul în care acestea sunt prezentate în cele trei limbi orientate obiect cele mai bine cunoscute: C ++, Java și C #.
Luați în considerare procesul de dezvoltare a unui joc pe calculator, în care jucătorul trebuie să apere pământul de la care se încadrează meteoriti, împușcându cu lasere puternice. Fiecare laser are un magazin intern de energie care este consumată în timpul arderii. În cazul în care alimentarea cu energie este epuizată, laserul devine inutil. Toată lumea ar trebui să fie în măsură să direcționeze fasciculul laser de la țintă la dreapta, la stânga și trage.
Conform paradigmei orientate-obiect, fiecare cu laser în joc este implementat ca un obiect care conține informații despre rezervele de energie rămase și procedurile pentru ghidarea fasciculului pe țintă și trage. Deoarece proprietățile acestor obiecte (lasere) sunt aceleași, ele pot fi create folosind același șablon. În programarea orientată pe obiecte, un astfel de model se numește o clasă (clasa). În C ++, Java și C # clasa este descrisă utilizând următoarea declarație:
în cazul în care CLASS_NAME - numele prin care să se refere la clasa în program. proprietăți ale clasei sunt descrise in paranteze.
Descrierea datelor
va fi în fiecare
Obiectul acestui tip de
---------1 --------- Metodele care descriu
ca obiecte de acest tip
Trebuie să îndeplinească turnteft nule () pentru diferite posturi
> Fig. 5.22. Structura de clasă, care descrie o armă cu laser într-un joc pe calculator
De exemplu, clasa Laserclass descrie lasere în jocul nostru de calculator, este prezentat în Fig. 5.22. (O descriere mai detaliată a acestei clase este prevăzută mai târziu în Fig. 5.24). Orice obiect creat de acest model, va include
Principiile programării orientate pe obiecte sunt folosite pentru a crea sisteme software de rețea largă. Pentru astfel de sisteme, infrastructura la nivel de rețea dezvoltată prin care obiecte pot comunica prin rețea. Una dintre tehnologiile pentru construirea de aplicații distribuite numite CORBA (Common Object Cerere Broker Architecture - o cerere de tratare a obiectului de arhitectură generalizată). Este un sistem de instrucțiuni pentru transfer de mesaje între obiecte. O altă tehnologie numita RMI (Remote Metoda Invocation - metoda remote invocare). Această tehnologie a fost dezvoltat de Sun Microsystems și este susținută de mediul de programare Java (pentru mai multe detalii cu limbajul Java, vom introduce mai târziu în acest capitol.) Dezvoltatorii de software care utilizează mediul de programare Java, considerând că tehnologia RMI este foarte util pentru crearea de obiecte care vor interacționa cu alte Java-obiecte. Tehnologia CORBA este frecvent utilizat pentru a crea obiecte în alte limbaje de programare.
După ce a descris LaserClass de clasă, putem declara trei tipuri de variabile Laserclass cu operatorul
LaserClass Laserl. Laser2. Laser3;
Rețineți că aceeași construcție este folosit pentru a descrie trei numere întregi x, y și z:
Ambele aceste declarații sunt făcute dintr-un nume de tip și o listă de variabile declarate. Diferența constă în faptul că elementul atribuit variabilei x, este creată în conformitate cu un model predeterminat al unui număr întreg (un tip de date predeterminate), în timp ce elementul atribuit Laserl variabilă, generată în conformitate cu un model definit ca o clasă în program.
În C ++, ca urmare a declarației de mai sus va crea trei obiecte de tip LaserClass și atribuite variabilelor Laserl, Laser2 și Laser3. Cu toate acestea, în Java și C # va crea pur și simplu o variabilă care poate fi atribuită o valoare. Pentru a crea un obiect de tip LaserCl fund și atribuiți-l la o Laserl variabilă, în aceste limbi trebuie să utilizați operatorul
LaserClass Laserl = new LaserClassO;
Această afirmație nu numai că descrie tipul de variabilă Laserclass, dar, de asemenea, creează un nou obiect utilizând șablonul Laserclass, și o atribuie supra
nu descrie numai tipul variabilei x, dar, de asemenea, stabilește o nouă variabilă la 3.
Indiferent dacă, cu un fel de limbaj lucrăm pentru a crea un obiect și să le atribuiți nume Laserl, Laser2 și Laser3, putem continua programul nostru apelând metodele corespunzătoare ale acestor obiecte. De exemplu, pentru a executa o metoda obiect Laserl de foc, trebuie să utilizați operatorul
Și pentru a-și îndeplini obiectul Laser2 metoda turnLeft, utilizați operatorul
Înainte de a continua, să ne uităm la raportul dintre conceptele de clase și obiecte. O clasă este un șablon pe care sunt create obiecte: O clasă poate fi folosit pentru a crea un număr mare de obiecte. Adesea menționată ca o instanță a unui obiect (de exemplu). Prin urmare, în numele noastre de jocuri pe calculator Laserl, Laser2 și Laser3 LaserClass folosit pentru a desemna instanțe ale clasei.
După crearea unui obiect trebuie să cereți unele dintre caracteristicile sale. De exemplu, în calculatorul nostru de lasere de joc pot avea diferite capacitate inițială. Prin urmare, în RemainingPower variabila instanță diferite obiecte trebuie să se atribuie o valoare inițială diferită. Inițializa variabile sunt funcții speciale, care sunt numite constructori (constructor). Când creați un obiect de clasă în care sunt numite în mod automat. Constructorul este definit în definiția de clasă, iar numele său se potrivește cu numele clasei căreia îi aparține.
O descriere mai detaliată a clasei LaserClass prezentate în Fig. 5.23. Rețineți că constructorul este definit ca o metodă cu numele LaserClass. Această metodă atribuie exemplu valoarea variabilei RemainingPower care este trecut la ea ca parametru. Astfel, atunci când se creează un obiect de clasă, această metodă este executat, iar RemainingPower variabile i se atribuie valoarea.
Parametrii reale utilizate de proiectant, este de obicei definit ca o listă de parametri în situația creației obiect. Astfel, pentru a crea un obiect LaserClass două tipuri: unul cu numele Laserl și producția inițială de 50 și un altul cu numele Laser2 și capacitatea inițială de 100, programator C ++ scrie:
LaserClass Laserl (50). Laser2 (100);
Java- și C # -programmisty în acest scop, se va utiliza operatori
LaserClass Laserl - noi LaserClass (50): LaserClass Laser2 = new LaserClass (100);