Download - Curs_1 Introducere.pdf
-
PROGRAMAREA ORIENTATA PE OBIECTE[ Programarea Calculatoarelor si Limbaje de Programare III ]2012-Suceava
s.l.dr.ing. Remus Catalin [email protected]@yahoo.comapollo.eed.usv.ro/~remus
-
PROGRAMAREA ORIENTATA PE OBIECTEPROGRAMARE SI LIMBAJE DE PROGRAMARE III
BIBLIOGRAFIE
A. CARTI B.Stroustrup, The C++ Programming Language, Addison-Wesley, 1991 B.Stroustrup, The C++ Programming Language, Third Edition by Bjarne Stroustrup, by AT&T. Addison Wesley
Longman, Inc. ISBN 0201889544, 1997 B.Stroustrup, The Design and Evolution of C++, ddison-Wesley, ISBN 0-201-54330-3, August 2008.
B.Stroustrup, C++, Editura Teora, 2000
Ioan Salomie, Tehnici orientate pe obiecte, Ed. Microinformatica Cluj, 1995.
t.Gh. Pentiuc - Structuri de date i algoritmi fundamentali. Curs, Universitatea "tefan cel Mare" Suceava, 1993.
t.Gh. Pentiuc - Structuri de date i algoritmi fundamentali. ndrumar de laborator, Universitatea "tefan cel Mare" Suceava, 1993
B. Referinte WEB
http://www.cplusplus.com/http://www.oopweb.com/CPP/Documents/ThinkingInCpp1/VolumeFrames.htmlhttp://www.oopweb.com/CPP/Documents/ThinkingInCpp2/VolumeFrames.htmlhttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdfhttp://www.open-std.org/jtc1/sc22/wg21/
2012/2013 - Suceava
-
PROGRAMAREA ORIENTATA PE OBIECTEPROGRAMARE SI LIMBAJE DE PROGRAMARE III
Programa analitica CURS
Programarea Orientata pe Obiecte ( 3h ) Fundamentele POO Conceptele ce definesc tehnologiile orientate obiect
Clase. Membrii unei clase ( 12h ) Autoreferina. Tipul de data referina Obiecte standard de interfa (stream-uri) Constructori si destructori Constructorul de copiere Membri statici ai unei clase Tablouri de obiecte Clase cu membri obiecte Pointeri spre membri unei clase Funcii si clase prietene ale unei clase.
Supradefinirea operatorilor ( 6h ) Operatorii unari si binari Operatori speciali ( new, delete, ->, apel de funcie, etc. ) Operatori si constructori de conversie de tip. TDA-uri
2012/2013 - Suceava
-
PROGRAMAREA ORIENTATA PE OBIECTEPROGRAMARE SI LIMBAJE DE PROGRAMARE III
Programa analitica CURS
Conceptele de Motenire si Generalizare ( 6h ) Motenirea simpla Motenirea multipla Clase si funcii virtuale
Polimorfismul ( 4h ) Funcii virtuale Funcii pur virtuale
Mecanismul Template ( 3h ) Funcii parametrizate ( template ) Clase parametrizate ( template ) Mecanismul Template si motenirea
Mecanismul de tratare a excepiilor in C++ ( 2h ) Erori si excepii Tratarea erorilor Excepii in C++. Mecanismul trow, trycatch
2012/2013 - Suceava
-
PROGRAMAREA ORIENTATA PE OBIECTEPROGRAMARE SI LIMBAJE DE PROGRAMARE III
Programa analitica CURS
Elemente specifice limbajului C++ (2h) Spatii de nume (namespace) Conversii de tip (type-casting)
Standard Template Library (STL) (3h) Containere STL Algoritmi STL
Evolutia limbajului: C++0x (1h)
2012/2013 - Suceava
-
PROGRAMAREA ORIENTATA PE OBIECTEPROGRAMARE SI LIMBAJE DE PROGRAMARE III
Programa analitica LABORATOR
Introducere in limbajul C++ (2h) Adaugiri aduse de C++ standardului ANSI C. Utilitarul MAKE (2h) Utilizarea obiectelor cin, cout cat si a operatorului new. (2h) Membri statici ai unei clase (2h) Functii si clase prietene ale unor alte clase (2h) Redefinirea operatorilor ( unari si binari ) (2h) Redefinirea operatorilor speciali (2h) Stream-uri. Iteratori. (2h) Mostenirea simpla. Mostenirea multipla (2h) Polimorfismul (2h) Mecanismul template. (2h) Tratarea exceptiilor (2h)
2012/2013 - Suceava
-
PROGRAMAREA ORIENTATA PE OBIECTEPROGRAMARE SI LIMBAJE DE PROGRAMARE III
Programa analitica PROIECT
n cadrul proiectului se urmrete ca produsele-program realizat de studeni s utilizeze tehnologiile orientate pe obiect studiate. Tema proiectului este la alegerea studentului, doar implementarea fiind condiionata in utilizarea tehnologiei de programare orientata pe obiecte.
Exemple de teme de proiect: Realizarea unei arhitecturi de clase pentru implementarea noiunii de Lista, Stiva sau alte TDA-uri. Aplicaie ce va simula gestiunea intrrilor unei firme folosind fiiere in C++; Aplicaie ce va simula gestiunea unei biblioteci folosind fiiere in C++; Realizarea unei arhitecturi de clase pentru implementarea noiunii de Mulime (reprezentare prin vectori pe
bii). Realizarea arhitecturii de clase pentru TDA-ul Arbore. Arbore binar. Simulator de operaii cu numere complexe; Realizarea arhitecturii de clase pentru TDA-ul Graf. Implementarea unui meniu cu interfaa grafica in C++. Sistemul de clase pentru implementarea unor figuri geometrice cunoscute (avnd reprezentare grafic ).
2012/2013 - Suceava
-
PROGRAMAREA ORIENTATA PE OBIECTEPROGRAMARE SI LIMBAJE DE PROGRAMARE III
OBIECTIVEpentru curs:
Constientizarea de catre studentii a importantei studierii programarii obiect orientate in contextual aplicatiilor moderne; Prezentarea conceptelor i principiilor orientrii pe obiecte din perspectiva limabjului de programare C++; Cursul isi propune familiarizarea studentilor cu notiunile teoretice si practice ale programarii obiectuale utilizate in cadrul
unor sisteme si compilatoare moderne de dezvoltare a aplicatiilor in C++ (Borland C++ 3.1, CodeBlocks, GCC, Visual C++, Borland C++ Builder etc.).
Abordarea se face astfel incat aplicatiile dezvoltate sa poata fi rulate atat pe calculatoare personale (PC) cat si pe echipamente mobile moderne.
In mod special sunt urmarite aspectele legate de optimizarea aplicatiilor din punctul de vedere al memoriei utilizate si a vitezei de calcul.
pentru aplicatii: Aplicatiile vin sa completeze notiunile dobandite la curs si sa creeze deprinderi corecte in dezvoltarea aplicatiilor
obiectuale. Sunt folosite mai multe compilatoare, de la mai vechi, Borland C++ 3.1, la modernele VisualC++, Borland C++Builder, etc. Se va programa pe platforme Windows cat si pe platforme Linux; Temele laboratoarelor impun rezolvarea unor probleme concrete ce necesita fundamentarea cunostintelor acumulate in
timpul cursurilor.
2012/2013 - Suceava
-
CERINTE la DISCIPLINA POO / PCLP III
1. Prezenta la LABORATOR este OBLIGATORIE
2. Prezenta la CURS va fi recompensata cu 1p, la nota obtinuta la EXAMEN
3. Recuperarea laboratoarelor: Oricand in cadrul aceleiasi saptamani 2 absente motivate la final (in ultima
saptamana) cu taxa, in limita a maxim 7 sedinte
4. Notarea la laborator se face pe baza: notelor la cele 2, teste planificate cat si pe baza notarii proiectului (aplicatie in C++ si
documentatie)
5. Examenul consta in 2 probe, date in aceeasizi:
proba practica ( pe calculator in C++) proba teoretica (test cu 9 intrebari)
A. Activitatea la acesta disciplina se va finaliza prin obtinerea celor 6 crediteaferente, atunci cand: examenul a fost promovat cu o nota
>= 5 activitatea la laborator a fost
executata integral proiectul a fost predat si promovat nota la activitatea practica (laborator
+ proiect) este >= 5
B. Neindeplinirea a cel putin uneiconditii va conduce la nepromovare sitrecerea disciplinei ca si CREDIT AMANAT.
C. Activitatea la o disciplina ramasaca si credit amanat se recuprereazaintegral in anul urmator.
-
CERINTE la DISCIPLINA POO / PCLP III
Promovarea activitatii pe parcurseste conditionata de: prezenta 100% la sedintele de
laborator media celor doua teste >= 5
Promovarea activitatii pe parcurseste conditionata de: prezenta 100% media celor doua note >= 5 nota proiect >=5
Media( N.A.P, N.Ex )
N.A.P este >= 5 N.Ex este >= 5
A. Activitatea pe parcursla specializarea AUTOMATICA
B. Activitatea pe parcurs la specializarea CALCULATOARE
C. Nota la disciplina POO / PCLP III
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Agent-oriented Component-based
Flow-based Pipeline
Concatenative Concurrent computing Declarative (contrast: Imperative)
Functional Dataflow
Cell-oriented (spreadsheets)
Reactive Constraint Logic
Constraint logic Abductive logic aInductive logic
Event-driven Service-oriented Time-driven
Expression-oriented Feature-oriented Function-level ( contrast: Value-level) Imperative ( contrast: Declarative)
Procedural Non-structured ( contrast: Structured)
Array (contrast: Scalar) Iterative
2012/2013 - Suceava
Paradigme de programare
Structured ( contrast: Non-structured)
Modular Recursive
Object - oriented Class-based Prototype-based Automata-based By separation of concerns:
Aspect-oriented Subject-oriented Role-oriented
Language-oriented Domain-specific Grammar-oriented
Dialecting Intentional
Metaprogramming Automatic Generic
Template Policy-based
Reflective Attribute-oriented
Nondeterministic
Parallel computing Process-oriented
Programming in the large and programming in the small
Value-level (contrast: Function-level)
http://en.wikipedia.org/wiki/Object-oriented_programming
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
2012/2013 - Suceava
O privire asupra tehnicilor de programare
Programare nestructurata
programul principal lucreaza direct cu
datele globale
Observatii ....
Tehnica folosita, de obicei, in cazul primilor pasi pasi facuti in programare, atunci cand cream primele programe simple.
Metoda consta in insiruirea unei liste de declaratii si instructiuni, ce modifica datele globale pe tot parcursul programului
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
2012/2013 - Suceava
O privire asupra tehnicilor de programare
apelul procedurilor si revenirea in locul
apelului
Programare procedurala
programul principal apeleaza procedurile
si gestioneaza parametri transmisi
cat si valorile returnate
Paradigm n programare, prin care :
un program apeleaz subprograme (functii si proceduri, pentru a rezolva subprobleme)
prin transmiterea corespunzatoare a parametrilor (actuali, aflati n corespondent cu parametriiformali descrisi in subprograme).
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
2012/2013 - Suceava
O privire asupra tehnicilor de programare
Programare structurata
Disciplin n programare prin folosirea unor structuri bine precizate (fr goto).
Orice problem se poate descrie doar prin utilizarea urmtoarelor trei structuri:
secvential, alternativ, repetitiv.
Limbaje specifice acestui stil de programare: limbajul C, limbajul Pascal, etc.
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
2012/2013 - Suceava
O privire asupra tehnicilor de programare
Programare modulara
Probleme in programarea modulara
programul principal apeleaza procedurile in module separate
si gestioneaza datele corespunzatore ca si
parametri
- Crearea si distrugerea explicita a tipurilor de date
- Decuplarea datelor de operatii
Prin proiectare (programare) modular nelegem metoda de proiectare (programare) a unui algoritm pentru rezolvarea unei probleme prin folosirea modulelor.
Modulul este considerat o unitate structural de sine stttoare, fie program, fie subprogram, fie o unitate de program.
Un modul poate conine sau poate fi coninut ntr-alt modul si poate fi format din mai multe submodule.
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
2012/2013 - Suceava
O privire asupra tehnicilor de programare
Programare Orientata pe Obiecte
obiectele programului
interactioneaza intre ele prin
transmiterea de mesaje.
PRINCIPII .....
In cadrul programului sunt definite noi tipuri de date CLASE, clase formate din date si functii.
Programul instantiaza unul sau mai multe OBIECTE din Clasele create.
Obiectele interactoneaza intre ele prin intermediul interfetelor publice puse la dispozitie.
Limbaje de programare specifice acestei tehnici: Simula SmallTalk C++, C++0x Java C#, etc
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Limbajul C++ 1970 - pentru prima dat definit limbajul C (Brian
Kernighan & Dennis Ritchie) 1965 existenta limbajelor orientate pe obiect:
SIMULA (1965) SIMULA 2 (1967) SMALLTALK (1970)
[ Dezavantajul acestor limbaje (n sensul c nu au rmas pe pia ocupnd un procent foarte mare) este faptul c nu au aprut de sine stttoare, adic nu s-au bazat pe limbajele anterioare ]
1980 - BJARNE STROUSTRUP definete sub denumirea de C with classes, limbajul ce a devenit ulterior C++ .;
1983 - acest limbaj intr n lumea academic 1990 se incepe standardizarea prin comitetul
ANSI - X3J16 http://www.open-std.org/jtc1/sc22/wg21/docs/wp/html/oct97/
1996 - este standardizat ANSI C++ 2009 - se initiaza dezvoltarea unui nou standard
C++09 ( initial fiind denumirea C++0x ) -http://www.artima.com/cppsource/cpp0x.html
2012/2013 - Suceava
Istorialimbajului C++
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Avantajul care l-a avut C++ comparativ cu celelalte limbaje existente (urmrind aceeai tehnologie O.O ) a fost faptul c el a fost definit ca un superset al limbajului C.
Ceea ce s-a introdus nou i foarte important fa de vechiul limbaj C a fost noiunea de clas i restul notiunilor ce deriv din aceasta.
Programatorii de C au fost pui n situaia de a sta n faa unui compilator care le permitea s lucreze n vechea lor manier i care accepta noile idei de P.O.O.
Utilizatorii au nceput s foloseasc C++ nainte ca specialitii s aib timpul necesar s-i instruiasc pentru a-l folosi cu randament maxim. (Stroustrup).
Acestui limbaj i se reproeaz multe: este foarte complex i este un limbaj de nivel mediu, ca i limbajul C
de unde rezult c nu corespunde n totalitate principiilor de P.O.O ( care n mod normal trebuiau s fie de nivel nalt).
[ De aceea, recent, a aprut un nou limbaj care ncearc s corecteze aceste neajunsuri reproate C++ - ului, limbajul JAVA ]
2012/2013 - Suceava
Limbajului C++
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Programarea Structurat este definit :
Programarea Orientat pe Obiect definit :
2012/2013 - Suceava
FundamenteleProgramariiOrientate pe Obiecte
STRUCTURI DE DATE
ALGORITMI
PROGRAM
DATE
METODE
OBIECT
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Avantajul gruprii structurilor de date i a metodelor ce opereaz cu aceste date, sub forma unor obiecte, este faptul c obiectele, ce ncearc s simuleze conceptele ntlnite n lumea nconjurtoare, reuesc s grupeze structura conceptului respectiv, ct i funcionalitatea sa.
Luand exemplul conceptului de numr complex, definirea lui n manier orientat obiect const n: Crearea unei clase; Clasa va conine n zona de date
partea real i parte imaginar a numrului,
In zona de interfa definim toate funciile sau operatorii cu care lucreaz acest concept.
Dup definirea acestei clase, n utilizare nu vor fi diferene fa de utilizarea numrului ntreg, de exemplu.
Apare totui o diferen: acest concept de numr ntreg este definit n interiorul limbajului C i este recunoscut, pe cand conceptul de numr complex este definit de noi.
Programarea structural este o etap ce trebuia depit din mai multe motive : reutilizarea programelor era greoaie ; scalabilitatea i extinderea unor module era dificil; tratarea separat a datelor i a algoritmilor ce utilizeaz
aceste date.
2012/2013 - Suceava
FundamenteleProgramariiOrientate pe Obiecte
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
P.O.O. Programare Orientat pe Obiecte O.O.P. Object Oriented Programming
Conceptele introduse de POO: ncapsularea Abstractizarea Motenirea ( Generalizarea si Specializarea ) Polimorfismul
Notiuni utilizate in POO: Clasa - class Obiect - object Instanta - instance Metoda - method Mostenire - inheritance Abstarctizare - abstraction Polimorfism - polymorphism
2012/2013 - Suceava
Conceptele utilizate inTehnologiile Orientate peObiecte
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
2012/2013 - Suceava
Conceptele utilizate inTehnologiile Orientate peObiecte
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Primul concept introdus de P.O.O. l reprezint ncapsularea.
Acesta este realizat prin introducerea noiuniide clas, ce poate grupa mpreun: date (proprietati) i funcii (metode)
2012/2013 - Suceava
Conceptele utilizate inTehnologiile Orientate peObiecte
INCAPSULAREA
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Al doilea concept este abstractizarea.
Obiectul ce nglobeaz o anumit structur (date membre) va fi definit n cadrulprogramului va interaciona doar prin intermediul comportamentului sau, funciilor metodelor de interfa.
2012/2013 - Suceava
Conceptele utilizate inTehnologiile Orientate peObiecte
ABSTRACTIZAREA
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Un alt concept este motenirea. Acest concept ne permite specializarea
anumitor clase, n sensul mbuntirii functionalitatilor , sau n sensul adugirii unor noi metode. 2012/2013 - Suceava
Conceptele utilizate inTehnologiile Orientate peObiecte
MOSTENIREAOdat cu motenirea se definete generalizarea sispecializarea. In fond, reprezint acelai lucru :
In cazul specializrii privim motenirea n evoluia sa dinspre clasa de baz catre cea derivat (specializat), iar generalizarea este fenomenul privit n sens invers.
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
Un al patrulea concept este polimorfismul.
Vorbim despre acest concept atunci cnd o entitate ( un obiect) produce un comportament diferit aflat in situatii diferite.2012/2013 - Suceava
Conceptele utilizate inTehnologiile Orientate peObiecte
POLIMORFISMUL
-
PROGRAMAREA ORIENTATA PE OBIECTE / PCLP III
2012/2013 - Suceava
O privire asupra tehnicilor de programare
Medii de programare (IDE) in C++
Borland CodeGear Embarcadero Borland C++ 3.1 C++ Builder 6 C++ BuilderX Turbo C++ ( freeware ) Embarcadero RAD Studio 2010, RAD Studio
XE1/2/3, etc ....
Microsoft Microsoft Visual Studio 6 Microsoft Visual Studio 2010, 2012 ....
Freeware CodeBlocks C-Free 5 Turbo C++ Eclipse C++ Carbide C++ Qt Creator ....