Programare orientată pe obiecte

Previzualizare curs:

Extras din curs:

Cap. 1

Paradigme de programare şi metode de proiectare a programelor

Noţiunea de paradigmă se bazează pe un cuvânt ce provine din limbile latină şi greacă şi care

reprezintă un exemplu sau un model. Sensul uzual al noţiunii este dat de istoricul Thomas Kuhn în

cartea sa “The Structure of Scientific Revolutions”: o paradigmă este o mulţime de teorii, standarde şi

metode ce reprezintă o modalitate de organizare a cunoştinţelor.

Bazat pe această noţiune, Robert Floyd în articolul intitulat “The Paradigms of Programming”,

defineşte noţiunea de paradigmă de programare ca fiind o metodă de conceptualizare a modului de

execuţie a calculelor într-un calculator, precum şi a modului de structurare şi organizare a taskurilor

reponsabile cu execuţia calculelor. O noţiune des utilizată în locul celei de paradigmă de programare

este cea de stil de programare, deşi semnificaţia sa nu este foarte clar definită.

Despre un limbaj de programare se spune că oferă suport pentru o paradigmă de programare, dacă

acesta pune la dispoziţie facilităţi care îl fac convenabil de a fi utilizat în acest stil.

1.1. Programarea procedurală

Aceasta este una dintre cele mai vechi şi des utilizate paradigme. Ea presupune în mod uzual

parcurgerea următoarelor etape:

a) descompunerea problemei de rezolvat în subprobleme;

b) găsirea, pentru fiecare subproblemă, a unui algoritm optim de rezolvare;

c) implementarea fiecărui algoritm folosind funcţii sau proceduri ale unui anumit limbaj de

programare.

Cel mai vechi limbaj de programare procedural este FORTRAN, însă majoritatea limbajelor de

programare actuale oferă suport pentru această paradigmă. Principalele probleme legate de

programarea procedurală se referă la tipurile de funcţii folosite (funcţii, proceduri, subprograme,

rutine, macrouri etc.), la tipul şi modul de transmitere ale parametrilor funcţiilor şi la modurile de apel

al funcţiilor.

1.2. Încapsularea datelor (modularizarea)

De-a lungul timpului, accentul în programarea procedurală s-a deplasat de la proiectarea funcţiilor la

organizarea datelor. Datele nu mai sunt privite în mod disparat, ci împreună cu funcţiile care le

prelucrează. A fost definită astfel noţiunea de modul ca reprezentând un set de funcţii înrudite,

împreună cu datele pe care le prelucrează.

Se poate astfel împărţi un program în module componente, într-un mod mai clar şi mai eficient decât

împărţirea clasică în funcţii sau proceduri, aici, datele programului fiind încapsulate (ascuse) în

modulele ce le utilizează.

În mod uzual, un modul conţine o parte de interfaţă în care sunt declarate datele şi funcţiile accesibile

din afara modulului, precum şi o parte de implementare, proprie modulului şi inaccesibilă în exterior,

în cadrul căreia sunt definite funcţiile ce manipulează datele din cadrul modulului.

Limbajul C permite programarea modulară, pe când limbajul Pascal sau Modula-2 oferă suport real

pentru un astfel de stil de programare. În limbajul Turbo Pascal noţiunea de modul corespunde celei de

unit, părţile de interfaţă şi implementare corespunzând respectiv secţiunilor interface şi

implementation.

În cazul limbajului C, partea de interfaţă se specifică, în mod uzual, într-un fişier header, care trebuie

inclus în toate celelalte fişiere ale unui program care utilizează funcţiile modulului. Partea de

implementare a modulului este realizată într-un fişier distinct care trebuie inclus în proiectul

programului.

Exemplul 1.1. Definirea şi utilizarea unui modul pentru operaţii cu numere întregi:

- Fisierul sir.h - interfata modulului

- define dim_max 100

void Initializare();

int Suma();

void Sortare();

void AdaugaElement(int);

void Listare();

- Fisierul sir.c - implementarea modulului

- include "sir.h”

static int dim;

static int v[dim_dim];

void Initializare() { dim = 0; }

void AdaugaElement(int k) { v[dim++] = k; }

int Suma() {

- codul pentru calculul sumei elementelor sirului

void Sortare() {

- codul pentru sortarea elementelor sirului

void Listare() {

- codul pentru listarea elementelor sirului

- Fisierul pr.c - utilizarea modulului sir

- include "sir.h”

void main() {

int i, s, k, n = dim_dim;

Initializare();

for(i=0; i<n; i++) {

scanf("%d”, &k);

AdaugaElement(k);

s = Suma();

printf("nSuma = %d”, s);

Sortare();

Listare();

1.3. Abstractizarea datelor

Noţiunea de abstractizare a datelor presupune posibilitatea definirii unor tipuri de date utilizator,

împreună cu un set de operaţii aferente fiecărui tip. Limbajele ce oferă suport pentru încapsularea

datelor permit şi abstractizarea, dar, în general, nu o garantează. De exemplu, în C, fişierele antet

permit declararea împreună atât a tipurilor de date, cât şi a funcţiilor.

Un tip de date abstract (ADT – Abstract Data Type) este definit printr-o mulţime de operaţii ce se pot

efectua asupra elementelor sale (acestă mulţime formează interfaţa tipului de date şi reprezintă

singurul mod de acces la tipul de date respectiv), precum şi printr-o mulţime de axiome şi precondiţii,

proprii tipului de date (care reprezintă modul de descriere a proprietăţilor şi operaţiilor tipului).

Exemplul 1.2. Definirea în limbajul C a unui tip de date reprezentând numerele fracţionare:

- Fisierul fractie.h - interfata tipului fractie

typedef struct {

int p, q; - Numaratorul si numitorul fractiei

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Programare Orientata pe Obiecte
    • Capitolul_1.pdf
    • Capitolul_10.pdf
    • Capitolul_11.pdf
    • Capitolul_12.pdf
    • Capitolul_2.pdf
    • Capitolul_3.pdf
    • Capitolul_4.pdf
    • Capitolul_5.pdf
    • Capitolul_6.pdf
    • Capitolul_7.pdf
    • Capitolul_8.pdf
    • Capitolul_9.pdf
Alte informații:
Tipuri fișiere:
pdf
Nota:
9.5/10 (2 voturi)
Nr fișiere:
12 fisiere
Pagini (total):
174 pagini
Imagini extrase:
175 imagini
Nr cuvinte:
62 520 cuvinte
Nr caractere:
329 951 caractere
Marime:
3.08MB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Calculatoare
Predat:
la facultate
Materie:
Calculatoare
Sus!