Documente Academic
Documente Profesional
Documente Cultură
AVANSATE IN
PROGRAMAREA
OBIECTUALA
Note de curs, 2014-2015
Diana Stefanescu, Diana.Stefanescu@ugal.ro
CURS 1 - CUPRINS
1.
NOTIUNI INTRODUCTIVE
1.
2.
2.
Limbaje de programare
Programare procedurala/obiectuala
CAPITOLUL 1
1. NOTIUNI
INTRODUCTIVE
1.1. LIMBAJE DE
PROGRAMARE
Naturale
Artificiale
Limbajele de programare
Traducerea (translatarea)
limbajelor
Compilatoare
Interpretoare
Traducere in doua faze
Interfaa
Implementarea
Modula si Ada
FIPA-
OBS:
Limbaje interpretate
+ : simplitate, portabilitate
- : viteza de execuie redus
Limbaje compilate
+ : execuia extrem de rapid
- : lipsa portabilitii
1.2. PROGRAMARE
PROCEDURALA/OBIECTUALA
Programarea procedurala/obiectuala
21
Programarea procedurala
(structurata)
NOTIUNI INTRODUCTIVE
22
Dezvoltarea software-ului in
abordarea structurata
Dezavantaje:
Remediul: MODULARIZARE
Caracteristici:
Proiectare top-down urmata de programare
bottom-up.
Descompunere top-down condusa de criterii
functionale
Arhitectura reflecta functiile sistemului software
NOTIUNI INTRODUCTIVE
23
NOTIUNI INTRODUCTIVE
24
NOTIUNI INTRODUCTIVE
25
26
Avantajele abordarii OO
Modele mult mai apropiate de lumea reala.
Mentenanta mai usoara (structura inerent
decuplata).
Reutilizare, deci:
Dezvoltare rapida
Programe de calitate superioara
NOTIUNI INTRODUCTIVE
27
POO (2)
abstractizarea datelor
motenirea
ncapsularea (ascunderea) informaiei
legarea dinamic (trzie), polimorfism
NOTIUNI INTRODUCTIVE
28
Definirea termenilor
Abstractizare
Incapsulare
Ascunderea informatiei
Cuplare
Coeziune
Definirea termenilor
Abstractizare
Exemplu:
Model: coada de prioritati
Detalii esentiale: lungimea; obiectele prezente in coada
operatiile (adaugare, stergere, gasire a unui obiect)
Variatiuni: implementare de tip lista inlantuita sau vector;
stiva, coada.
Definirea termenilor
Incapsulare
Ascunderea informatiilor
Cuplarea
Coeziunea
1.
2.
3.
1.
2.
4.
5.
6.
Mostenirea simpla
Mostenirea multipla
ABSTRACTIZAREA DATELOR
Clasa
Obiect, instanta
Atribute
1.
2.
3.
1.
2.
4.
5.
6.
Mostenirea simpla
Mostenirea multipla (doar in C++, simulare prin
interfete - Java)
MOSTENIREA
Caracteristic POO
Permite refolosirea codului
Permite extinderea funcionalitii claselor
existente
Permite crearea unei ierarhii de clase i
trecerea de la clasele generale la cele
particulare
Mostenirea multipla:
Remediu C++:
clasa E poate avea dou copii ale lui A, una pentru fiecare
drum;
clasa E are o singur copie, iar A este clas virtual de baz
i pentru C i pentru B
1.
2.
3.
1.
2.
4.
5.
6.
Mostenirea simpla
Mostenirea multipla
INCAPSULAREA (ASCUNDEREA)
INFORMATIILOR
protected
Clasa A
private
private
protected
public
(friend)
Mostenire:
public
private
protected
public
clas derivat
Clasa B
1.
2.
3.
1.
2.
4.
5.
6.
Mostenirea simpla
Mostenirea multipla
mostenire
pointeri
functii virtuale
1.
2.
3.
1.
2.
4.
5.
6.
Mostenirea simpla
Mostenirea multipla
ALTE ASPECTE
GRESELI FRECVENTE
EURISTICI
decompozitia
inteligibilitatea
continuitatea
protectia
cuplarea
NOTIUNI INTRODUCTIVE
50
CAPITOLUL 1
2. C++/Java
STUDIU COMPARATIV
C++
Procedural/obiectual:
Java
Compatibilitate cu C
Compilat
WOCA - Write once
compile anywhere
PS
Compilarea
Incarcare
DATE
PO
PE
Executie
Program
obiect
relocabil
Program in
format
executabil
REZULTATE
Java
compiler
Java
bytecode
Bytecode
interpreter
pentru JVM
Bytecode
compiler
Machine
code
Utilizarea JVM
NOTIUNI INTRODUCTIVE
56
C++
Executie (10-20)
Executie
+Optimizare (3-4)
Java
Executie
+JIT (JustInTime)
compiler
+JIT (JustInTime)
compiler
NOTIUNI INTRODUCTIVE
57
Consola
Windows (tratarea evenimentelor)
Aplicatii C++:
59
NOTIUNI INTRODUCTIVE
60
Programe in C++/Java
C++-colectie de
functii
Java
class FirstApp
{
public static void main(String args[])
{
System.out.println("Hello world!");
}
}
Programe (2)
C++-
Aplicatii
Portabilitate limitata
Compil: optiuni
Java
ELEMENTE DE LIMBAJ
C++/Java
Vocabular
Unitati lexicale:
NOTIUNI INTRODUCTIVE
63
Comentarii:
// - pe o singura linie
/*..
*/ - pe mai multe linii
/** ------------------------ */ - Java- generarea automata a
comentariilor (javadoc)
64
Java:
65
Java:
if ( ! n) { ... }
66
Java:
control strict al tipurilor, atat la
atribuirea de valori unor variabile, cat si
la transmiterea de parametri catre
functii;
nu permite folosirea in calcule a unor
variabile care nu au primit valoare;
NOTIUNI INTRODUCTIVE
67
C++:
NOTIUNI INTRODUCTIVE
68
Java:
NOTIUNI INTRODUCTIVE
69
Java:
Tipurile primitive:
aritmetice
70
Java:
71
Java:
72
Java:
Operatori:
PROGRAMATOR/PROIECTANT
POO IDEAL
Codificarea caracterelor
C/C++
Cod ASCII
1 octet
Fara semn
Cu semn
Java
Unicode (2 octeti)
65536 semne
Structurat in blocuri
Basic, Latin, Greek, Arabic,
Gothic, Currency,
Mathematical, Arrows, Musical,
referire prin cod hexa:
\ uxxxx
\u03B1 -\u03C9: -
http://www.unicode.org
Implementarea structurilor
de control (instructiuni)
C/C++
Java
Nu exist goto
numeEticheta: definete o
etichet.
ex1
break numeEticheata
continue numeEticheta
La nivel de limbaj
C/C++
Semantica valorii:
Java
Semantica referintei
Semantica referintei:
ob.membru (.)
->
refOb.membru
SPATIUL NUMELOR
(namespace)
C/C++
La nivel de constanta,
var., functie
Bibl. standard: std
Java
In interiorul unei definitii
de tip:
Clasa
Interfata
FUNCTII
Functie=metoda
main incepe executia programului
Java:
FUNCTII C++/Java
C++
Java
FUNCTII
C++
Java
Valoare
Pointer (NU si-n Java!)
Referinta
C++/Java
FUNCTII C++/Java
GENERICITATE