Search  
Thursday, September 21, 2017 ..:: Articole » Glosar de terminologie OOP ::.. Register  Login
 Articole Minimize

Glosar de terminologie OOP

Autor: Ken Levy.


Notă: Terminologia densă este unul din principalele impedimente pentru dezvoltatorii care doresc să treacă la lumea OOP (Object Oriented Programming). Acest glosar este destinat să uşureze "tranziţia", stabilind relaţia dintre aceşti termeni şi implementarea lor în Visual FoxPro.

Tipul de date abstract (Abstract data type)

Tipul de date abstract este tipul de date definit de programator şi care nu este suportat de limbaj. În limbajele non-OOP, cum ar fi C standard, date de tip abstract pot fi construite din tipuri de date existente şi recunoscute de limbaj (în C, acest lucru se face cu facilităţi oferite de limbaj, cum ar fi typedef sau struct). În limbajele OOP, tipul de date abstract este în general compus din definiţii din program, numite clase, şi pornind de la ele sunt create obiectele în runtime. În Visual FoxPro, acest ultim tip de abstractizare a datelor este suportat prin intermediul comenzii DEFINE CLASS sau vizual prin Class Designer (care este apelată de obicei din Class Designer sau Project Manager). Obiectele runtime sunt referite prin variabile de memorie de tip "O", care au rol de pointeri către obiecte.

Abstractizare (Abstraction)

Abstractizarea oferă beneficiul ignorării detaliilor irelevante a componentelor software şi concentrarea atenţiei asupra aspectelor necesare interfeţei, pentru trimiterea mesajelor, ş.a.m.d. Abstractizarea include şi concepte ca "ascunderea informaţiei" şi "black box routines" - rutinele ascunse. Fiindcă obiectele din lumea reală includ detalii abstracte (ştie cineva cum funcţionează citirea CD-ului într-un CD-player?), obiectele oferă o mai bună reprezentare a lumii reale decât funcţiile.

Clasă de bază (Base class)

Clasa de bază este clasa rădăcină sau clasa din vârful ierarhiei. În lumea Visual FoxPro termenul este folosit mult mai restrictiv şi defineşte clasele implicite din Visual FoxPro, de la care sunt derivate toate celelalte clase. Exemplele includ: Form, Custom, CommandButton.

Clasă (Class)

Clasa este modelul pentru definirea metodelor şi proprietăţilor unui anumit tip de obiect. Clasele sunt definite în design time şi nu sunt executate în runtime. Obiectele sunt create în runtime pe baza claselor modele. Dintr-o singură clasă pot fi create mai multe obiecte în runtime. Clasele se definesc în program cu ajutorul comenzii DEFINE CLASS, sau vizual cu ajutorul lui Class Designer. Obiectele sunt create cu ajutorul funcţiei CREATEOBJECT().

Ierarhia claselor (Class hierarchy)

Ierarhia claselor este un arbore al claselor care reprezintă relaţiile dintr-un set de clase de acelaşi tip. Primul nod din ierarhie este cunoscut sub numele de clasă de bază sau superclass, în timp ce clasele subordonate sunt cunoscute sub numele de subclase. Cu toate că puteţi crea oricâte nivele de subclase, cele mai multe metodologii susţin că o ierarhie de clase bine făcută nu trebuie să depăşească cinci nivele.

Notaţi o discrepanţă importantă în terminologia OOP din Visual FoxPro: în restul limbajelor de programare, clasă de bază înseamnă clasa din vârful ierarhiei; în Visual FoxPro acest termen indică clasele implicite din Visual FoxPro, din care sunt derivate toate clasele definite de utilizator. Dacă citiţi literatură OOP nespecifică lui Visual FoxPro, ţineţi cont că termenul clasă de bază este folosit într-o manieră mult mai puţin restrictivă decât în Visual FoxPro.

Obiecte container (Composite/Container object)

Un obiect container este un obiecte care conţine alte obiecte. Această situaţie apare când cel puţin o instanţiere a unui obiect este de tip obiect (în Visual FoxPro, această situaţie apare şi când un obiect este definit ca fiind container pentru alte obiecte; vedeţi şi Instanţiere). Obiectele container, împreună cu Atribuirea (Delegation) sunt tehnicile tipice pentru a elimina efectele secundare nedorite a multiplei moşteniri (vezi Moştenire).

Atribuire (Delegation)

Atribuirea apare atunci când un obiect primeşte un mesaj şi îl pasează altui obiect. Atribuirea este utilă în folosirea "lanţului de responsabilităţi" - când un obiect procesează mesajele pe care le înţelege şi le pasează altui obiect pe cele pe care nu le înţelege. De fapt, el atribuie responsabilităţile sale altui obiect. Limbajele non-OOP au şi ele atribuire, implementată prin UDF (funcţii definite de utilizator) care pasează parametrii altor UDF. Nu este neapărat necesar ca interfaţa către dezvoltator să aibă cunoştinţă de aceste detalii interne.

Încapsulare (Encapsulation)

Încapsularea este conceptul de metode (proceduri sau funcţii) şi proprietăţi împachetate împreună. Rezultatul acestei împachetări este un obiect. Obiectele au metode şi proprietăţi. Metodele determină comportamentul obiectului şi proprietăţile sunt atributele obiectului.

Moştenire (Inheritance)

Moştenirea apare o clasă este derivată dintr-o clasă existentă; metodele şi proprietăţile ei pot fi folosite în noua clasă. O subclasă foloseşte toate metodele şi proprietăţile din superclasele de deasupra ei în ierarhie. Moştenirea poate fi întreruptă pentru metode şi proprietăţi când se crează o subclasă. Această tehnică este cunoscută sub denumirea de Specializare (Specialization).

În general, termenul "moştenire" desemnează moştenirea simplă. În unele limbaje, cum ar fi C++, este suportată şi moştenirea multiplă. Îm moştenirea multiplă, o clasă poate fi derivată din mai multe superclase. Ea este în general generatoare de probleme: în afară de conflictele date de uniunea metodelor şi proprietăţilor similare provenite din superclase diferite, moştenirea multiplă este considerată de mulţi programatori ca fiind o proiectare necorespunzătoare a ierarhiei claselor, deoarece combinarea obiectelor container şi a atribuirii sunt superioare moştenirii multiple. Moştenirea multiplă nu este implementată în Visual FoxPro.

Instanţiere (Instance)

Instaţierea este un termen care descrie apariţia în runtime a unui obiect aparţinând unei anumite clase. Clasele sunt definite în design time, iar instanţierile obiectelor sunt create în runtime, pornind de la clasele definite (în Visual FoxPro instanţierea se face cu ajutorul comenzii CREATEOBJECT()). Un obiect membru al unui container este şi el o instanţiere (obiectele pot fi adăugate într-un container cu ajutorul clauzei ADD OBJECT a comenzii DEFINE CLASS, iar în runtime cu ajutorul metodei AddObject() a obiectului container).

Mesaj (Message)

Un mesaj este o instrucţiune trimisă de un obiect (expeditor) către alt obiect (destinatar) pentru a executa una din metodele destinatarului. Un mesaj este compus din trei părţi: numele obiectului destinatar, numele metodei şi parametrii necesari metodei. Mesajele pot fi bi-direcţionale, atunci când metoda destinatarului întoarce o valoare către expeditor. Exemplu:

*!* Trimiterea unui mesaj către un obiect
oOptiuni.AplicaActualizari(This)

*!* Trimiterea unui mesaj si recepţionarea unui răspuns
lActualizariOk=oOptiuni.AplicaActualizari(This)

În primul din exemple, oOptiuni este o referinţă către un obiect, AplicaActualizari este o metodă a lui oOptiuni, şi This este mesajul trimis lui oOptiuni (în acest caz, este o referinţă către obiectul expeditor al mesajului). În al doilea exemplu, lActualizariOk primeşte o valoare logică (.T. dacă AplicaActualizari a reuşit să aplice corect actualizările şi .F. în caz contrar).

Obiect (Object)

Un obiect este o colecţie software de metode (funcţii) şi date (variabile de memorie). Metodele acţionează de obicei asupra datelor asociate. Un obiect este în general o instanţiere a unei clase.

Clasă părinte (Parent class)

Documentaţia Visual FoxPro foloseşte termenul Clasă părinte pentru a desemna acelaşi termen pe care documentaţia OOP îl numeşte Superclasă. Vedeţi definiţia acestui termen.

Polimorfism (Polymorphism)

Polimorfismul este abilitatea de a trimite acelaşi mesaj către obiecte diferite, fiecare din ele executând mesajul comun. Polimorfismul permite creare unei interfeţe comune pentru trimiterea mesajelor. De exemplu, trimiterea mesajului "Draw" pentru un obiect chenar şi un obiect cerc este polimorfism, din moment ce ambele obiecte au câte o metodă Draw proprie. Metodele Draw implementate în cele două obiecte pot fi similare sau complet diferite. Polimorfismul este suportat în Visual FoxPro prin permiterea implementării de metode cu acelaşi nume în clase diferite.

Superclasă (Superclass)

Superclasa este clasa părinte a uneia sau a mai multor subclase.


    

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement