Publicité

Curs1-POO-Loga

Network admin / Teacher à bjt.ro & loga.ro
21 Dec 2009
Publicité

Contenu connexe

Publicité

Curs1-POO-Loga

  1. Programarea orientată pe obiecte Curs 1
  2. 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)
  3. Eu si cursul ...
  4. la sfarsitul cursului (lucrare scrisa)
  5. pe activitate/ parcurs Notele vor fi folosite ca si note pe parcurs la informatica la clasele din care faceti parte (veti avea doua note in plus)
  6. Portia de Dilbert
  7. K. Arnold, J. Gosling, D. Holmes: “ The Java Programming Language ”, 4th edition, Addison Wesley, 2005
  8. C. Marinescu, P. Mihancea: <cartea_de_lab>
  9. Diverse altele, recomandate pe parcurs;
  10. Google -;)
  11. Clase şi obiecte
  12. Moştenire şi polimorfism
  13. Interfeţe
  14. Clase şi interfeţe încuibate
  15. Excepţii şi aserţiuni
  16. Pachete
  17. Operaţii de intrare/ieşire
  18. Colecţii
  19. Programare concurentă în Java
  20. Interfeţe grafice (GUI)
  21. Paradigme de programare
  22. Caracteristicile orientării pe obiecte
  23. Elemente ale UML
  24. Ciclul de viaţă al software-ului
  25. Maşini virtuale, cod virtual
  26. Limbaje orientate pe obiecte
  27. Prezentarea modului in care aceasta tehnica poate fi folosita pentru dezvoltarea de programe bune ; GOOD
  28. Timpii de dezvoltare ai software-ului cresc, la fel si timpii de intretinere;
  29. Erorile / defectele de software devin tot mai dese pe cand cele de hardware sunt aproape inexistente;
  30. 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 [...]
  31. Reducerea timpului de “adaptare” a sistemelor existente => flexibilitate , reutilizabilitate ;
  32. Cresterea fiabilitatii sistemului;
  33. Dezvoltarea programelor implica crearea de modele ale situatiilor din lumea reala si scrierea programelor pe baza acelor modele;
  34. Programele reprezinta o modalitate de implementare a modelului ;
  35. Programele pot contine reprezentari informatice ale lucrurilor care constituie solutiile problemelor reale;
  36. 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.
  37. Cunosterea reguluilor gramaticale nu este suficienta pentru a scrie programe bune;
  38. Cel mai important lucru este sa ne concentram asupra conceptului fara a ne pierde in detalii de limbaj;
  39. Tehnicile de proiectare sunt mult mai importante decat detaliile de implementare … acestea vin de la sine.
  40. Intelegerea algoritmulu i este mai importanta decat invatarea “pe de rost” a implementarii sale in Microbe :)
  41. 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# .
  42. util si utilizabil;
  43. Un program trebuie sa indeplineasca cerintele de timp;
  44. Un program nu trebuie sa iroseasca resursele sistemului
  45. (fizice si logice);
  46. Trebuie sa fie fiabil;
  47. Trebuie sa poata fi actualizat;
  48. Programul trebuie sa poata si actualizat in concordanta
  49. cu cerintele;
  50. Localizarea erorilor;
  51. Modulelele programului trebuie sa fie reutilizabile;
  52. Proiectul trebuie sa fie finalizat inainte de deadline :)
  53. Trebuie sa aiba sufiecienta documentatie … de dezvoltare Utilizator Programator
  54. 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.
  55. Modele: conceptuale (abstracte) sau fizice
  56. Modelul nu se confundă cu realitatea
  57. 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
  58. Paradigme de programare (1) Programarea structurată: Programul este descompus in structuri „elementare”, direct implementate in limbaj
  59. 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.
  60. Programele procedurale (functiile si structurile de date) nu modeleaza lumea reala suficient de bine . Luma reala nu e compusa din functii :)
  61. Datele globale pot fi corupte de functii care nu au nimic de a face cu respectivele date;
  62. La modificarea tipului unor date, toate functiile care lucreaza cu acele date trebuie sa fie modificate;
  63. 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 .
  64. Caracteristicile orientarii pe obiecte Încapsularea Ascunderea info./implem. Păstrarea stării Identitatea obiectelor Comunicarea prin mesaje Clase Moştenire Polimorfism Genericitate
  65. Referinţa poate fi înscrisă în mai multe locaţii;
  66. Colectarea reziduurilor (când un obiect nu mai are referinţa în nici o locaţie)
  67. Clase si obiecte
  68. Cel mai “pur” limbaj OO
  69. Slab tipizat
  70. Doar 5 cuvinte cheie şi un număr redus de operatori (permite supraîncărcarea operatorilor)
  71. Moştenire simplă
  72. Colectarea reziduurilor
  73. Toate operaţiile claselor sunt publice, toate variabilele sunt private
  74. Are ierarhie predefinită de clase
  75. Foloseşte maşină virtuală
  76. A introdus un mediu integrat de dezvoltare (IDE)
  77. A fost standardizat în 1998
  78. Nu este “agreat” de marile firme de software, cu excepţia IBM
  79. Permite moştenire multiplă cu precizarea funcţiilor care pot fi înlocuite în subclase
  80. Obiectele se pot crea fie prin declararea unor variabile, fie prin
  81. constructori
  82. Nu are colectare a reziduurilor, clasele au destructori
  83. Operatorii pot fi supraîncărcaţi
  84. Controlul accesului: private, protected, public
  85. Nu are o ierarhie de clase standard
  86. Concepte mai recente: spaţii de nume, tipare pentru genericitate
  87. Are bibliotecă standard de tipare (STL)
  88. Este un limbaj complex, nu este pur obiectual
  89. Compilatoarele generează cod executabil, foarte eficient la execuţie
  90. Toate firmele mari de software oferă suport pentru C++
  91. 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 ” :)
  92. Permite moştenire multiplă
  93. “ 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)
  94. Are mecanism pentru tratarea excepţiilor şi parametri formali generici pentru clase
  95. 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
  96. Mai puternic tipizat decât C++;
  97. Nu există cod în afara claselor, clasa defineşte un tip
  98. Tipurile numerice şi boolean nu sunt considerate clase (există însă clase înfăşurătoare)
  99. Are moştenire simplă de implementare, conţine interfeţe pentru moştenire multiplă de proiectare
  100. Nu are pointeri !!
  101. Obiectele se creează numai prin apelarea explicită a unui constructor
  102. Are ierarhie predefinită (clasa Object);
  103. Include facilităţi de programare concurentă
  104. Compilatorul produce cod virtual (WORA)
  105. “Platforma Java”: J2SE, J2EE, J2ME
  106. Nu are (încă!) standard recunoscut oficial
  107. .NET permite integrarea limbajelor de programare , astfel ca programe scrise în diverse limbaje să poată colabora fără dificultăţi
  108. Are multe elemente comune cu Java : clase cu moştenire simplă, interfeţe, programare concurentă
  109. Are colectare automată a reziduurilor , dar permite şi definirea de destructori, neapelabili direct
  110. Are şi caracteristici comune cu C++: supraîncărcarea operatorilor, pointeri
  111. Suport de dezvoltare oferit de Microsoft, dar există şi variante gratuite
  112. 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 ;
  113. Implementarea/Codarea : modelul solutiei este transpus in limbaj de programare;
  114. Documentarea : fiecare faza trebuie documentata corect si detaliat;
  115. Testarea : Componentele si produsul final trebuie testate pentru verificarea corectitudinii de functionare (!!!);
  116. Ciclul de viata al software-ului (2) Problema/Cerinta Analiza/Planificare Proiectare/Modelare Implementare Testare Documentatie Produs
  117. Requirements changing
  118. Intrebari ???
Publicité