Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Back to basics – Tehnici de programare

De-a lungul timpului, in dezvoltarea aplicatiilor software s-au propus mai multe modalitati de programare, acestea vizand in primul rand o mai buna organizare a codului. Aceste stiluri de programare au venit ca solutii pentru a rezolva probleme legate de complexitatea software-ului, dezvoltarea rapida sau extinderea acestuia.

Programarea nestructurata

Programarea nestructurata este folosita doar de programatorii incepatori, cei care invata prima oara un limbaj de programare. Acest stil de programare nu presupune o anumita organizare a codului. Consta dintr-un program simplu, ce utilizeaza doar variabile globale. Toate datele si instructiunile se afla in programul principal, intr-un singur fisier, care va genera un singur fisier obiect. Daca programatorul foloseste acest stil in programe de dimensiuni mari, ii va fi foarte greu sa inteleaga codul, sa il refoloseasca, sa il modifice.

Programarea procedurala

Programarea procedurala a fost si continua sa fie un stil de programare foarte raspandit. Se caracterizeaza printr-un program principal care contine apeluri catre alte subprograme cu parametri formali. Orice limbaj care ofera mecanisme de transmitere ale parametrilor suporta acest stil. Organizarea mai buna a codului permite intretinerea separata a procedurilor,  acestea avand o functionalitate bine precizata. De asemenea pot fi testate independent si pot fi reutilizate, iar modificarile aduse acestora nu afecteaza restul programului decat in cazul schimbarii modului de apelare.

Acest tip de limbaj de programare este eficient pentru programe care nu depasesc sute de linii de cod, dar cu cat complexitatea creste, dezvoltarea, modificarea, depanarea acestuia in modul structural devine dificila: transpunerea modelului de programare devine greoaie, programatorii trebuie sa cunoasca in totalitate programul neavand posibilitatea de a-si concentra eforturile pe anumite parti ale sistemului, iar integrarea cu alte sisteme este dificila.

In anii 70/80, limbajele de programare procedurale ca Pascal, C, Fortran erau foarte folosite.

Programarea modulara

Programarea modulara se caracterizeaza prin subgruparea programelor cu functionalitati similare in module, care pot fi dezvoltate si depanate individual. La acest mod de programare s-a ajuns datorita cresterii in dimensiuni a programelor. Procedurile cu sarcini asemanatoare sau corelate pot fi grupate intr-un singur fisier, iar programul impartit in mai multe fisiere. Acestea pot fi compilate individual.

Programarea orientata pe obiect

Programarea orientata pe obiect reprezinta o abordare a dezvoltarii software in care structura software este bazata pe interactiunea dintre obiecte in indeplinirea unui task. Interactiunea consta in transmiterea unor mesaje intre obiecte cu ajutorul unor metode sau actiuni.

Programarea orientata pe obiect aduce multe avantaje:

  • o tranzitie mai intuitiva de la modelul de business la modelul software implementat
  • reutilizarea codului in alte programe
  • integrarea componentelor “third-party” pentru sporirea functionalitatii cu minim efort
  • crearea unor interfete grafice care sa corespunda exigentelor utilizatorilor
  • lucru cu mai multi programatori, acestia avand posibilitatea de a lucra in diferite parti ale sistemului

Principii ale programarii orientate pe obiect

Daca privim in jurul nostru, lumea este construita din obiecte iar noi interactionam cu ele. Masina este un obiect, cu proprietati ca Culoare, Marca si metode ca Accelereaza, Franeaza.

In termeni OOP, un obiect este “o structura” care inglobeaza date cat si actiuni asupra acestor date. De exemplu, daca vreau sa ma deplasez intr-un alt oras, o sa folosesc obiectul masina si o sa ma folosesc de actiuni ale acestuia: Porneste, Accelereaza, Franeaza, Opreste.

Abstractizare – in lumea reala, in interactiunea cu un obiect avem nevoie doar de anumite proprietati ale acestuia. De exemplu, cand “interactionam” cu un obiect masina, va trebui sa stim doar viteza si directia. Pentru acest lucru, avem posibilitatea de a filtra informatiile, de a inlatura informatii care nu ne sunt de folos. In construirea aplicatiilor OOP, este foarte important inglobarea conceptului de abstractizare.

Incapsularea – este un procesul prin care nu se permite accesul la date, ele fiind ascunse. Daca programatorul vrea sa acceseze datele, el va trebui sa interactioneze cu obiectul responsabil pentru respectivele date. Datele si operatiile care se fac asupra datelor sunt cunoscute, ceea ce duce la un proces de depanare simplificat.

Un exemplu din lumea reala ar fi motorul masinii. Daca vrem sa reparam o componenta a motorului, schimbarea trebuie realizata cu ajutorul unui mecanic. Componentele motorului sunt incapsulate pentru soferi, iar modul in care mecanicul repara piesa respectiva nu le este cunoscut.

Incapsularea datelor sporeste siguranta sistemului si integritatea acestuia.

Unitatea fundamentala este clasa, ea va defini forma unui obiect. Clasa specifica atat datele, cat si codul care opereaza asupra lor (membrii clasei), iar un obiect reprezinta o instanta a unei clase.

Polimorfism – reprezinta capacitatea prin care obiecte diferite raspund la acelasi mesaj prin prin implementari diferite.

Un exemplu din lumea reala este volanul masinii. Aceste este acelasi, indiferent de tipul mecanismului de directie utilizat (directie manual, servodirectie, etc). Cand este miscat spre stanga, masina se deplaseaza spre stanga, cand este miscat spre dreapta, masina se deplaseaza spre dreapta, indiferent de mecanismul de directie.

In OOP procesul de polimorfism se realizeaza prin supraincarcare. Se poate implementa diferit, aceeasi metoda a unui obiect, cu acelasi nume. Obiectul isi va da seama ce implementare a metodei sa foloseasca in functie de context.

Polimorfismul ajuta la reducerea complexitatii.

Mostenire – reprezinta procesul prin care un obiect poate dobandi proprietatile altui obiect. In lumea reala, cele mai multe obiecte sunt clasificate conform unor ierarhii. De exemplu, automobilele se clasifica: autoturisme, microbuze, autobuze. Diferenta majora este data de numarul maxim de persoane care pot fi transportate, in rest ele avand caracteristicile de baza pentru functionarea unei masini.

In OOP se foloseste mostenirea pentru a clasifica obiectele in program in functie de caracteristici comune si functionalitate.

Mostenirea face lucrul cu obiectele mai intuitiv si mai simplu. Se pot aduna caracteristicile generale intr-un obiect parinte si se pot mosteni in obiecte copii, care isi pot defini doar caracteresticile unice.

Agregare – are loc atunci cand un obiect consta din compozitia altor obiecte care functioneaza impreuna. De exemplu, motorul masinii este construit din multe alte obiecte. In OOP, agregarea reprezinta o puternica functioniliate ce permite implementarea unui model de business corect si real.

C# este un limbaj orientat pe obiect: Introducere in .Net si C# , Pe scurt despre polimorfism in C#, Programarea orientata pe obiect cu C#, Programare orientata pe obiecte: mostenirea.

Category: Uncategorized

Your email address will not be published. Required fields are marked *

*