Organizare (1) Curs Alexandru IOVANOVICI E-mail: [email_address] Tel: 0746-173820 www.bjt.ro/~alex/poo Laborator la fel ;-) Atentie ! Odata la doua sapt. se face curs şi in cealalta saptamana se face laborator (cate 2 ore)
Erorile / defectele de software devin tot mai dese pe cand cele de hardware sunt aproape inexistente;
Tot mai multe proiecte esueaza din epuizarea fondurilor; Financial Times (27/08/2002, p. 12) The National Institute of Standards and Technologies recently reported that software bugs cost American companies approximately $60 billion in 2001 , while Bill Gutterman at CMU's Sustainable Computing Consortium pegs the real costs closer to three or four times that [...]
Reducerea timpului de “adaptare” a sistemelor existente => flexibilitate , reutilizabilitate ;
Programele pot contine reprezentari informatice ale lucrurilor care constituie solutiile problemelor reale;
Filosofie … deci Modalitatea orientata pe obiecte va fi semnificativ mai usoara, mai flexibila si mai eficienta fata de celelalte alternative pe masura ce problemele devin mai mari si mai complexe … daca este aplicata corect.
Cel mai important lucru este sa ne concentram asupra conceptului fara a ne pierde in detalii de limbaj;
Tehnicile de proiectare sunt mult mai importante decat detaliile de implementare … acestea vin de la sine.
Intelegerea algoritmulu i este mai importanta decat invatarea “pe de rost” a implementarii sale in Microbe :)
Invatarea unui nou limbaj nu presupune imvatarea sintaxei ci a unei noi modalitati de a rezolva o cerinta, mai bine. Acesta este un curs de Programare Orientata pe Obiecte care are drept suport limbajul C# si NU un curs de C# .
Trebuie sa aiba sufiecienta documentatie … de dezvoltare Utilizator Programator
Filosofie … deci Modalitatea orientata pe obiecte permite crearea de programe calitative. Pe tot parcursul proiectarii si implementarii (codarii) unui program este necesar a se lua in considerare respectarea acestor metrici.
Modelare şi programare (2) Calculatorul : model fizic bazat pe un model conceptual pentru calcul Model de calcul concret = algoritm ==> program Există mai multe modele generice de calcul => mai multe arhitecturi de calculatoare Există mai mulţi algoritmi pentru o problemă Există distanţă conceptuală între domeniile de aplicaţii şi limbajele de programare
Paradigme de programare (1) Programarea structurată: Programul este descompus in structuri „elementare”, direct implementate in limbaj
Paradigme de programare (2) Programarea procedurală : porţiunile de cod care se repetă sunt separate în subprograme. Fiecare “instructiune” instruieste calculatorul “sa faca ceva” Programul este impartit in functii si, in mod ideal, fiecare functie are un scop si o interfata bine definite.
Programele procedurale (functiile si structurile de date) nu modeleaza lumea reala suficient de bine . Luma reala nu e compusa din functii :)
Datele globale pot fi corupte de functii care nu au nimic de a face cu respectivele date;
La modificarea tipului unor date, toate functiile care lucreaza cu acele date trebuie sa fie modificate;
Creearea de noi tipuri de date poate fi dificila. Este posibila crearea de programe “bune” si folosind programarea procedurala. POO ne ofera unele avantaje care ne permit sa scriem programe mai bine si mai usor .
Caracteristicile orientarii pe obiecte Încapsularea Ascunderea info./implem. Păstrarea stării Identitatea obiectelor Comunicarea prin mesaje Clase Moştenire Polimorfism Genericitate
Denumirea sugerează “ proiect terminat la timp, cu costul prevăzut, cu un număr mic de tipare constructive robuste combinate pentru a obţine structuri complexe ” :)
“ Proiectarea prin contract ”: software-ul este construit pe baza unui contract între clienţi (apelanţi) şi furnizori (rutine), cu obligaţii şi beneficii explicitate prin aserţiuni (precondiţii, postcondiţii şi invarianţi)
Are mecanism pentru tratarea excepţiilor şi parametri formali generici pentru clase
Suport oferit de creator printr-o firmă proprie,dar există şi colaborări cu firmele mari (Microsoft, SUN) pentru a include Eiffel în platformele acestora
Proiectarea : identificarea elementelor principale ale solutiei . Se creeaza modele ale acestora. Are impact mare asupra calitatii produsului => trebuie facuta verificarea modelului . Procesul de proiectare este legat de cel de implementare. In cazul nostru este vorba de proiectarea/programarea orientata pe obiecte ;