curs11_2014 lbj poop
DESCRIPTION
POOTRANSCRIPT
-
METODE SI TEHNICIAVANSATE IN
PROGRAMAREAOBIECTUALA
Note de curs, 2014-2015Diana Stefanescu, [email protected]
-
CURS 1 - CUPRINS
1. NOTIUNI INTRODUCTIVE1. Limbaje de programare2. Programare procedurala/obiectuala
2. Limbajele C++/Java Studiucomparativ
1. NOTIUNI INTRODUCTIVE1. Limbaje de programare2. Programare procedurala/obiectuala
2. Limbajele C++/Java Studiucomparativ
-
CAPITOLUL 1
1. NOTIUNIINTRODUCTIVE
-
1.1. LIMBAJE DEPROGRAMARE
-
Limbaje. Limbaje de programare(LP)
Naturale Artificiale
De descriere a unui algoritm Ex: Shema logica, pseudocoul
Limbajele de programare
Primitive (sintaxa (reprezentarea simbolica)+ semantica (semnificatia))
Naturale Artificiale
De descriere a unui algoritm Ex: Shema logica, pseudocoul
Limbajele de programare
Primitive (sintaxa (reprezentarea simbolica)+ semantica (semnificatia))
-
LP. Istoric si evolutie
Limbaje din generatia nti: Limbajele masin (cod masin): date si instruciuni exprimate
sub o form binara, specific doar mainii pe care se executprogramul.
Limbaje din generatia a doua: Limbajele de asamblare: mnemonice pentru instructiuni (LD,
ADD) si nume descriptive (identificatori) ptr operanzi -> asamblor(compilatorul unui limbaj de asamblare)
Limbaje din generaia trei, patru, cinci: limbajele de nivel nalt: apropialte de limbajul natural, riguros
formalizate (C, Java, Pascal, COBOL, etc.)
Limbaje din generatia nti: Limbajele masin (cod masin): date si instruciuni exprimate
sub o form binara, specific doar mainii pe care se executprogramul.
Limbaje din generatia a doua: Limbajele de asamblare: mnemonice pentru instructiuni (LD,
ADD) si nume descriptive (identificatori) ptr operanzi -> asamblor(compilatorul unui limbaj de asamblare)
Limbaje din generaia trei, patru, cinci: limbajele de nivel nalt: apropialte de limbajul natural, riguros
formalizate (C, Java, Pascal, COBOL, etc.)
-
Traducerea (translatarea)limbajelor
Compilatoare Interpretoare Traducere in doua faze
Compilatoare Interpretoare Traducere in doua faze
-
Clasificari ale limbajelor deprogramare
I dupa apropierea de limbajul masina Limbaje de nivel coborat (limbaj masina,
limbaj asamblare) Limbaje de nivel inalt
I dupa apropierea de limbajul masina Limbaje de nivel coborat (limbaj masina,
limbaj asamblare) Limbaje de nivel inalt
-
Clasificari ale limbajelor deprogramare
II dupa modul de evocare aprelucrarilor in program Limbaje imperative (C, C++, C#, Fortran,
Java) Limbaje functionale (LISP, ML, SCHEME,
Haskell)
II dupa modul de evocare aprelucrarilor in program Limbaje imperative (C, C++, C#, Fortran,
Java) Limbaje functionale (LISP, ML, SCHEME,
Haskell)
-
Clasificari ale limbajelor
III dupa modul de rezolvare a uneiprobleme Rezolvarea orientata pe algoritm (pe
aciune): limbaje structurate (FORTRAN, C,ALGOL, PASCAL)
Rezolvarea orientata pe date: limbajedeclarative (Haskell, ML, Prolog)
Rezolvarea orientat obiect: limbaje POO(C++, Java, Smalltalk)
III dupa modul de rezolvare a uneiprobleme Rezolvarea orientata pe algoritm (pe
aciune): limbaje structurate (FORTRAN, C,ALGOL, PASCAL)
Rezolvarea orientata pe date: limbajedeclarative (Haskell, ML, Prolog)
Rezolvarea orientat obiect: limbaje POO(C++, Java, Smalltalk)
-
Clasificari ale limbajelor (LP-PP1)
IV prin prisma paradigmelor Paradigm:
Modelul sau arhetipul unui proces sausistem
Colecii de caracteristici de evaluare sicriterii de abstractizare
IV prin prisma paradigmelor Paradigm:
Modelul sau arhetipul unui proces sausistem
Colecii de caracteristici de evaluare sicriterii de abstractizare
-
Clasificari ale limbajelor (LP-PP2)
IV prin prisma paradigmelor Paradigma programrii procedurale si
structurate Paradigma programrii modulare Paradigma programrii obiectuale Paradigma programrii funcionale si logice Programarea concurent si distribuit Alte paradigme
IV prin prisma paradigmelor Paradigma programrii procedurale si
structurate Paradigma programrii modulare Paradigma programrii obiectuale Paradigma programrii funcionale si logice Programarea concurent si distribuit Alte paradigme
-
Clasificari ale limbajelor (LP-PP3)
IV prin prisma paradigmelor Programarea procedurala si
structurata: Utilizatorul descrie pas cu pas algoritmul de
rezolvare Unitatea de baz: procedura sau funcia Algol60, Pascal, C, PL/1, Ada
IV prin prisma paradigmelor Programarea procedurala si
structurata: Utilizatorul descrie pas cu pas algoritmul de
rezolvare Unitatea de baz: procedura sau funcia Algol60, Pascal, C, PL/1, Ada
-
Clasificari ale limbajelor (LP-PP4)
IV prin prisma paradigmelor Programarea modulara:
Programul se descompune n module Modulele sunt independente, atomice Principul de baz: ncapsularea Modulul are 2 componente:
Interfaa Implementarea
Modula si Ada
IV prin prisma paradigmelor Programarea modulara:
Programul se descompune n module Modulele sunt independente, atomice Principul de baz: ncapsularea Modulul are 2 componente:
Interfaa Implementarea
Modula si Ada
-
Clasificari ale limbajelor (LP-PP5)
IV prin prisma paradigmelor Programarea obiectuala:
Obiect: entitate care conine informaie sicomportament
Orice entitate din lumea real poate fi consideratobiect
Programul: ansamblu de obiecte n interaciune Principii de baz:
ncapsulare (obiectele au structur si stare) Comunicare prin mesaje Reutilizarea codului (compoziie si eneralizare/specializare) Polimorfism (nume - nelesuri diferite)
Smalltalk, C++, Java
IV prin prisma paradigmelor Programarea obiectuala:
Obiect: entitate care conine informaie sicomportament
Orice entitate din lumea real poate fi consideratobiect
Programul: ansamblu de obiecte n interaciune Principii de baz:
ncapsulare (obiectele au structur si stare) Comunicare prin mesaje Reutilizarea codului (compoziie si eneralizare/specializare) Polimorfism (nume - nelesuri diferite)
Smalltalk, C++, Java
-
Clasificari ale limbajelor (LP-PP6)
IV prin prisma paradigmelor Programarea functionala:
Programul este un ansamblu de funcii Apeluri recursive Funciile sunt folosite la descrierea datelor si
codului Nu au instruciuni de atribuire Fundament matematic: expresiile lambda Lisp, ML
IV prin prisma paradigmelor Programarea functionala:
Programul este un ansamblu de funcii Apeluri recursive Funciile sunt folosite la descrierea datelor si
codului Nu au instruciuni de atribuire Fundament matematic: expresiile lambda Lisp, ML
-
Clasificari ale limbajelor (LP-PP7)
IV prin prisma paradigmelor Programarea logica:
Program: fapte si reguli Limbaje declarative Se indic modul cum trebuie s arate soluia
problemei Fundament matematic: sistemele logice formale:
Logica predicatelor de ordinul 1 Logici modale, temporale sau monotonice
Constituie baza motoarelor de inferen n sistemeexpert
Prolog
IV prin prisma paradigmelor Programarea logica:
Program: fapte si reguli Limbaje declarative Se indic modul cum trebuie s arate soluia
problemei Fundament matematic: sistemele logice formale:
Logica predicatelor de ordinul 1 Logici modale, temporale sau monotonice
Constituie baza motoarelor de inferen n sistemeexpert
Prolog
-
Clasificari ale limbajelor (LP-PP8)
IV prin prisma paradigmelor Programare la nivelul bazelor de date: SQL, dBase,
FoxPro Programarea vizual (RAD - Rapid Application
Development): Magic Limbaje bazate pe marcatori pentru structurarea
informaiei: HTML, XML Programarea bazat pe ageni
Limbaje specifice: Telescript, Agents, AgentTcl Platforme multi-agent (bazate pe tehnologie obiectual): FIPA-
OS, Jade, IBM Aglets
IV prin prisma paradigmelor Programare la nivelul bazelor de date: SQL, dBase,
FoxPro Programarea vizual (RAD - Rapid Application
Development): Magic Limbaje bazate pe marcatori pentru structurarea
informaiei: HTML, XML Programarea bazat pe ageni
Limbaje specifice: Telescript, Agents, AgentTcl Platforme multi-agent (bazate pe tehnologie obiectual): FIPA-
OS, Jade, IBM Aglets
-
Clasificari ale limbajelor
V dupa modul de translatare si executie Limbaje compilate (C, C++, C#, PASCAL) Limbaje interpretate (AWK, Perl, Python, Ruby,
BASIC, TCL, LISP, PROLOG, SCHEME) OBS: Limbaje interpretate
+ : simplitate, portabilitate- : viteza de execuie redus
Limbaje compilate+ : execuia extrem de rapid- : lipsa portabilitii
V dupa modul de translatare si executie Limbaje compilate (C, C++, C#, PASCAL) Limbaje interpretate (AWK, Perl, Python, Ruby,
BASIC, TCL, LISP, PROLOG, SCHEME) OBS: Limbaje interpretate
+ : simplitate, portabilitate- : viteza de execuie redus
Limbaje compilate+ : execuia extrem de rapid- : lipsa portabilitii
-
1.2. PROGRAMAREPROCEDURALA/OBIECTUALA
-
Programarea procedurala/obiectuala
Paradigme de rezolvare a problemelor: Rezolvarea orientat pe algoritm ->
(programare structurata, procedurala): (FORTRAN, C, ALGOL, PASCAL)
Rezolvarea orientat pe date (programarelogica/functionala): Haskell, ML, Prolog
Rezolvarea orientat pe obiecte (POO): C++, Java, Smalltalk
NOTIUNI INTRODUCTIVE 21
Paradigme de rezolvare a problemelor: Rezolvarea orientat pe algoritm ->
(programare structurata, procedurala): (FORTRAN, C, ALGOL, PASCAL)
Rezolvarea orientat pe date (programarelogica/functionala): Haskell, ML, Prolog
Rezolvarea orientat pe obiecte (POO): C++, Java, Smalltalk
-
Programarea procedurala(structurata)
Principii; th de structura (C. Bohm i G. Jacobini) Metode de proiectare orientate pe algoritm:
metoda de proiectare top-down (descompunereafunctionala a problemei P)
metoda programrii structurate metoda rafinrii succesive
NOTIUNI INTRODUCTIVE 22
Principii; th de structura (C. Bohm i G. Jacobini) Metode de proiectare orientate pe algoritm:
metoda de proiectare top-down (descompunereafunctionala a problemei P)
metoda programrii structurate metoda rafinrii succesive
-
Dezvoltarea software-ului inabordarea structurata
Dezavantaje: Reutilizarea aproape nula. Complexitatea ridicata a aplicatiilor. Software-ul nu poate evolua atat timp cat
modificarile partiale pot avea efecte neasteptate. Remediul: MODULARIZARE Caracteristici:
Proiectare top-down urmata de programarebottom-up.Descompunere top-down condusa de criteriifunctionaleArhitectura reflecta functiile sistemului software
NOTIUNI INTRODUCTIVE 23
Dezavantaje: Reutilizarea aproape nula. Complexitatea ridicata a aplicatiilor. Software-ul nu poate evolua atat timp cat
modificarile partiale pot avea efecte neasteptate. Remediul: MODULARIZARE Caracteristici:
Proiectare top-down urmata de programarebottom-up.Descompunere top-down condusa de criteriifunctionaleArhitectura reflecta functiile sistemului software
-
Abordarea structurata - DezavantajeRezultate satisfacatoare doar daca functiile:
Corect identificateNu se schimba in timp
Structura software-ului este indusa prinfunctii. Evolutia functiilor poate determinaimportante modificari structurale.Modificari si completari ulterioare dificile modularizare limitata.
NOTIUNI INTRODUCTIVE 24
Rezultate satisfacatoare doar daca functiile:Corect identificateNu se schimba in timp
Structura software-ului este indusa prinfunctii. Evolutia functiilor poate determinaimportante modificari structurale.Modificari si completari ulterioare dificile modularizare limitata.
-
Programarea orientata pe obiecte(POO)
Ideea unificrii datelor cu modalitile de prelucrare aacestora; manevreaz entiti reprezentate sub formde obiecte obiect = date + cod de tratare a acestor date
Ofer posibilitati de: Modelare a obiectelor, a proprietilor i a relaiilor dintre ele Descompunere a unei probleme n componentele sale (soft
mai mentenabil, adaptabil, reciclabil)
NOTIUNI INTRODUCTIVE 25
Ideea unificrii datelor cu modalitile de prelucrare aacestora; manevreaz entiti reprezentate sub formde obiecte obiect = date + cod de tratare a acestor date
Ofer posibilitati de: Modelare a obiectelor, a proprietilor i a relaiilor dintre ele Descompunere a unei probleme n componentele sale (soft
mai mentenabil, adaptabil, reciclabil)
-
Dezvoltarea software-ului Abordareaorientata pe obiecte
Paradigma se muta de la cea centrata pe functii la ceacentrata pe obiecte.Structura e indusa prin jucatori (care constituie maimult partea statica a sistemului) mai degraba decatprin functii (partea dinamica, evolutiva a sistemului).Nu inlocuieste abordarea structurata; construita lainceputul acesteia.Modularizare prin decuplarea sistemului in obiecteindependente.Unitatea de modularizare clasa.
NOTIUNI INTRODUCTIVE 26
Paradigma se muta de la cea centrata pe functii la ceacentrata pe obiecte.Structura e indusa prin jucatori (care constituie maimult partea statica a sistemului) mai degraba decatprin functii (partea dinamica, evolutiva a sistemului).Nu inlocuieste abordarea structurata; construita lainceputul acesteia.Modularizare prin decuplarea sistemului in obiecteindependente.Unitatea de modularizare clasa.
-
Avantajele abordarii OOModele mult mai apropiate de lumea reala.Mentenanta mai usoara (structura inerentdecuplata).Reutilizare, deci:
Dezvoltare rapidaPrograme de calitate superioara
NOTIUNI INTRODUCTIVE 27
Modele mult mai apropiate de lumea reala.Mentenanta mai usoara (structura inerentdecuplata).Reutilizare, deci:
Dezvoltare rapidaPrograme de calitate superioara
-
POO (2) Facilitile POO (conf. Pascou):
abstractizarea datelor motenirea ncapsularea (ascunderea) informaiei legarea dinamic (trzie), polimorfism
NOTIUNI INTRODUCTIVE 28
Facilitile POO (conf. Pascou): abstractizarea datelor motenirea ncapsularea (ascunderea) informaiei legarea dinamic (trzie), polimorfism
-
Definirea termenilor Abstractizare Incapsulare Ascunderea informatiei Cuplare Coeziune
Abstractizare Incapsulare Ascunderea informatiei Cuplare Coeziune
-
Definirea termenilor Abstractizare
Extragerea trasaturilor esentiale despre o entitate saugrup de entitati si ignorarea detaliilor neesentiale(Edward Berard)
Procesul de identificare a modelelor comune care auvariatiuni sistematice; o abstractiune reprezinta unmodel comun si asigura un mijloc de a specificavariatiunea care trebuie folosita (Richard Gabriel) 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.
Abstractizare Extragerea trasaturilor esentiale despre o entitate sau
grup de entitati si ignorarea detaliilor neesentiale(Edward Berard)
Procesul de identificare a modelelor comune care auvariatiuni sistematice; o abstractiune reprezinta unmodel comun si asigura un mijloc de a specificavariatiunea care trebuie folosita (Richard Gabriel) 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
Inchiderea tuturor partilor unei abstractiuni in interiorulunui container
Ascunderea informatiilor Ascunderea partilor unei abstractiuni
Cuplarea Puterea interactiunilor dintre obiectele din sistem
Coeziunea Gradul in care task-urile efectuate de un singur modul
sunt legate din punct de vedere functional
Incapsulare Inchiderea tuturor partilor unei abstractiuni in interiorul
unui container Ascunderea informatiilor
Ascunderea partilor unei abstractiuni Cuplarea
Puterea interactiunilor dintre obiectele din sistem Coeziunea
Gradul in care task-urile efectuate de un singur modulsunt legate din punct de vedere functional
-
CONCEPTE DE BAZA ALE POO
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla
4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
32
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla
4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
-
ABSTRACTIZAREA DATELOR Obiectele - componente software care
modeleaz fenomene din lumea real Obiectele care reprezint aceeai idee sau
concept sunt de acelai tip i pot fi grupaten clase (concrete sau abstracte).
Clasele implementeaz tipuri de dateClas = Date + Operaii.
Exemplu: tipul matrice, int.
Obiectele - componente software caremodeleaz fenomene din lumea real
Obiectele care reprezint aceeai idee sauconcept sunt de acelai tip i pot fi grupaten clase (concrete sau abstracte).
Clasele implementeaz tipuri de dateClas = Date + Operaii.
Exemplu: tipul matrice, int.
-
Abstractizarea datelor (cont) Clasa
Tipul unui obiect, sablon al obiectului Caracteristici: numele clasei, atribute, funcii i relaii
cu alte clase Obiect, instanta
are proprietatile definite in clasa pentru o clasa - mai multe instante Obiectul
stare (se refer la elementele de date coninute n obiect i lavalorile asociate acestora (datele membre)).
comportament (determinat de care aciunile pe care obiectulpoate s le execute (metodele)
Clasa Tipul unui obiect, sablon al obiectului Caracteristici: numele clasei, atribute, funcii i relaii
cu alte clase Obiect, instanta
are proprietatile definite in clasa pentru o clasa - mai multe instante Obiectul
stare (se refer la elementele de date coninute n obiect i lavalorile asociate acestora (datele membre)).
comportament (determinat de care aciunile pe care obiectulpoate s le execute (metodele)
-
Abstractizarea datelor (cont) Atribute
atribute ale instantei (date membre, C++) atribute ale clasei (date membre statice, C++)
Metode (functii membre) Crearea si distrugerea obiectelor:
static sau dinamic constructori, destructori (destructori-doar in
C++)
Atribute atribute ale instantei (date membre, C++) atribute ale clasei (date membre statice, C++)
Metode (functii membre) Crearea si distrugerea obiectelor:
static sau dinamic constructori, destructori (destructori-doar in
C++)
-
CONCEPTE DE BAZA ALE POO
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla (doar in C++, simulare prin
interfete - Java)4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
36
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla (doar in C++, simulare prin
interfete - Java)4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
-
MOSTENIREA Caracteristic POO Permite refolosirea codului Permite extinderea funcionalitii claselor
existente Permite crearea unei ierarhii de clase i
trecerea de la clasele generale la celeparticulare
Caracteristic POO Permite refolosirea codului Permite extinderea funcionalitii claselor
existente Permite crearea unei ierarhii de clase i
trecerea de la clasele generale la celeparticulare
-
Relatia clasa de baza-cls. derivata A - clasa de baz (este o generalizare); conine
informaiile comune (disponibile prin motenire isubclaselor acesteia).
B - clasa derivat (particularizare, o specializarea clasei A); extinde funcionalitatea clasei debaz i conine informaiile specifice.
TERMINOLOGIE: clasa de baza, clasa derivata clasa, subclasa superclasa, clasa clasa parinte, clasa copil
A - clasa de baz (este o generalizare); conineinformaiile comune (disponibile prin motenire isubclaselor acesteia).
B - clasa derivat (particularizare, o specializarea clasei A); extinde funcionalitatea clasei debaz i conine informaiile specifice.
TERMINOLOGIE: clasa de baza, clasa derivata clasa, subclasa superclasa, clasa clasa parinte, clasa copil
-
Tipuri de mostenire (1) Mostenirea simpla (unica):
Fiecare clas are doar o superclas Structura arbore
Mostenirea multipla: O clas are mai multe superclase Structura retea
Modaliti de specializare a uneiclase de baz: introducerea de extra-atribute i extra-
metode n clasa derivat (particularedoar clasei derivate)
redefinirea membrilor n clase derivate(polimorfism)
Mostenirea simpla (unica): Fiecare clas are doar o superclas Structura arbore
Mostenirea multipla: O clas are mai multe superclase Structura retea
Modaliti de specializare a uneiclase de baz: introducerea de extra-atribute i extra-
metode n clasa derivat (particularedoar clasei derivate)
redefinirea membrilor n clase derivate(polimorfism)
-
Tipuri de mostenire (2)
Mostenirea multipla probleme posibile: ambiguitate (pentru acelai atribut se motenesc
valori diferite) Remediu: strategii de rezolvare a conflictului (printele
cel mai apropiat, cel mai deprtat, etc.)
motenire repetat (o clas ajunge smoteneasc de la aceeai clas, pe drumuridiferite n reea) Remediu C++:
clasa E poate avea dou copii ale lui A, una pentru fiecaredrum;
clasa E are o singur copie, iar A este clas virtual de bazi pentru C i pentru B
Mostenirea multipla probleme posibile: ambiguitate (pentru acelai atribut se motenesc
valori diferite) Remediu: strategii de rezolvare a conflictului (printele
cel mai apropiat, cel mai deprtat, etc.)
motenire repetat (o clas ajunge smoteneasc de la aceeai clas, pe drumuridiferite n reea) Remediu C++:
clasa E poate avea dou copii ale lui A, una pentru fiecaredrum;
clasa E are o singur copie, iar A este clas virtual de bazi pentru C i pentru B
-
CONCEPTE DE BAZA ALE POO
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla
4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
41
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla
4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
-
INCAPSULAREA (ASCUNDEREA)INFORMATIILOR
Reflect faptul c atributele instan i metodeleunui obiect l definesc doar pe acesta: spunem cmetodele i atributele unui obiect sunt private,ncapsulate n obiect.
Interfaa cu obiectul relev foarte puin din ceea cese petrece n interiorul lui.
Obiectul deine controlul asupra atributelor instan,care nu pot fi alterate de ctre alte obiecte. Excepie: atributele de clas (nu sunt ncapsulate, fiind
partajate ntre toate instanele clasei) -> tehnica deplasare a valorilor n datele membre private aleobiectului, reprezint un mecanism de ascundere adatelor.
Reflect faptul c atributele instan i metodeleunui obiect l definesc doar pe acesta: spunem cmetodele i atributele unui obiect sunt private,ncapsulate n obiect.
Interfaa cu obiectul relev foarte puin din ceea cese petrece n interiorul lui.
Obiectul deine controlul asupra atributelor instan,care nu pot fi alterate de ctre alte obiecte. Excepie: atributele de clas (nu sunt ncapsulate, fiind
partajate ntre toate instanele clasei) -> tehnica deplasare a valorilor n datele membre private aleobiectului, reprezint un mecanism de ascundere adatelor.
-
Niveluri de acces (C++) C++: ncapsularea - prin
controlul accesului nivel de acces
private protected public (friend)
Mostenire: private protected public
Clasa Aprotected
private
public C++: ncapsularea - princontrolul accesului
nivel de acces private protected public (friend)
Mostenire: private protected public
Clasa Bclas derivat
Figura 1.4. Accesul la membrii unei clase
-
CONCEPTE DE BAZA ALE POO
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla
4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
44
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla
4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
-
LEGAREA DINAMICA (TARZIE,late binding)
Obiectele unei clase printe trebuie cunoscute n momentul compilrii.Efectul combinat al motenirii poate determina ca o anumit metod sfie specializat diferit (prin redefinire), pentru subclase diferite.
Polimorfismul = comportamente diferite ale unei metode n raport cutipul unui obiect. Suprascrierea (overriding) unei metode in mod dinamicgenereaza polimorfismul.
Selectarea unei metode redefinite poate fi realizat n faza de compilare(legarea iniial, early binding), sau n momentul execuiei (legaretrzie).
n limbajul C++, legarea dinamic se poate realiza prin implementareade: funcii virtuale (pot fi redefinite polimorfic); funcii virtuale pure (doar declarate, nu definite).
In C++ polimorfismul necesita: mostenire pointeri functii virtuale
Obiectele unei clase printe trebuie cunoscute n momentul compilrii.Efectul combinat al motenirii poate determina ca o anumit metod sfie specializat diferit (prin redefinire), pentru subclase diferite.
Polimorfismul = comportamente diferite ale unei metode n raport cutipul unui obiect. Suprascrierea (overriding) unei metode in mod dinamicgenereaza polimorfismul.
Selectarea unei metode redefinite poate fi realizat n faza de compilare(legarea iniial, early binding), sau n momentul execuiei (legaretrzie).
n limbajul C++, legarea dinamic se poate realiza prin implementareade: funcii virtuale (pot fi redefinite polimorfic); funcii virtuale pure (doar declarate, nu definite).
In C++ polimorfismul necesita: mostenire pointeri functii virtuale
-
CONCEPTE DE BAZA ALE POO
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla
4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
46
1. Introducere2. Abstractizarea datelor3. Mostenirea
1. Mostenirea simpla2. Mostenirea multipla
4. Incapsularea (ascunderea) informatiei5. Legarea dinamica (tarzie)6. Alte aspecte
-
ALTE ASPECTE Comunicarea intre obiecte
mesaje-trimiterea de mesaje (invocarea metodelor)intre obiecte: unobiect poate stimula un altul s activeze (declaneze) o metod,trimindu-i un mesaj
C++: funciile membre (metodele) - accesate n mod similaroricarei funcii, cu deosebirea c este necesar specificareaobiectului cruia i corespunde metoda.
Pseudovariabile - difer de variabilele normale prin faptul cnu li se pot atribui valori n mod direct, de ctreprogramator. this (pointer ctre obiectul curent) c++ pointer catre clasa parinte a obiectului curent
Metaclase = clase de clase C++ - nu include explicit metaclasele, dar suport variabilele clas
sub forma datelor statice: o funcie membru static a unei clase, sefolosete o singur copie, partajat de ctre toate instanele clasei; oasemenea funcie nu este asociat unei anumite instane.
Comunicarea intre obiecte mesaje-trimiterea de mesaje (invocarea metodelor)intre obiecte: un
obiect poate stimula un altul s activeze (declaneze) o metod,trimindu-i un mesaj
C++: funciile membre (metodele) - accesate n mod similaroricarei funcii, cu deosebirea c este necesar specificareaobiectului cruia i corespunde metoda.
Pseudovariabile - difer de variabilele normale prin faptul cnu li se pot atribui valori n mod direct, de ctreprogramator. this (pointer ctre obiectul curent) c++ pointer catre clasa parinte a obiectului curent
Metaclase = clase de clase C++ - nu include explicit metaclasele, dar suport variabilele clas
sub forma datelor statice: o funcie membru static a unei clase, sefolosete o singur copie, partajat de ctre toate instanele clasei; oasemenea funcie nu este asociat unei anumite instane.
-
Alte aspecte (2)
Persistenta - timpul de via al unui obiect Supraincarcarea (overloading) operatorilor
-
GRESELI FRECVENTEEURISTICI
Toate datele trebuie ascunse in interiorul clasei! Datele publice afecteaza:
decompozitia inteligibilitatea continuitatea protectia cuplarea
Mentineti datele si operatiile inrudite in acelasi loc! Evitati clasele cu multe metode de accesare definite in
intefetele publice O clasa trebuie sa reprezinte o singura abstractiune
Toate datele trebuie ascunse in interiorul clasei! Datele publice afecteaza:
decompozitia inteligibilitatea continuitatea protectia cuplarea
Mentineti datele si operatiile inrudite in acelasi loc! Evitati clasele cu multe metode de accesare definite in
intefetele publice O clasa trebuie sa reprezinte o singura abstractiune
-
NOTIUNI INTRODUCTIVE 50
-
CAPITOLUL 1
2. C++/JavaSTUDIU COMPARATIV
-
1.2. C++/Java STUDIUCOMPARATIV
-
C++ Java Procedural/obiectual:
Permite progr. proced.,functionala, OO,mataprogramare (template)
Compatibilitate cu C Compilat WOCA - Write once
compile anywhere
Pur obiectual (completorientat pe obiecte)
- Compilat + Interpretat WORA / WORE - Write
once run anywhere /everywhere
Procedural/obiectual: Permite progr. proced.,
functionala, OO,mataprogramare (template)
Compatibilitate cu C Compilat WOCA - Write once
compile anywhere
Pur obiectual (completorientat pe obiecte)
- Compilat + Interpretat WORA / WORE - Write
once run anywhere /everywhere
-
C++ - limbaj compilat
CompilareaPS PO
Programobiect
relocabil
Editare delegaturi
PEProgram informatexecutabil
Incarcare
Executie
DATE
Programobiect
relocabil
Program informatexecutabil REZULTATE
-
Java compilat/interpretat (1)
Reprezentare intermediara: bytecod; Masinavirtuala Java
Java sourcecode Java
bytecode
Javacompiler
pentru JVM
Reprezentare intermediara: bytecod; Masinavirtuala Java
Machinecode
Bytecodeinterpreter
Bytecodecompiler
Javacompiler
-
Java compilat/interpretat (2)
Masina virtuala Java (Java Virtual Machine,JVM): calculator abstract (Gosling, 1992), cu un set
de instructiuni ptr procesor, set de registri,mod de organizare a memoriei
componenta a tehnologiei Java asigura posibilitatea transmiterii intre
calculatoare a programelor codificate binar,chiar daca aceste calculatoare sunt de tipuridiferite
Utilizarea JVM NOTIUNI INTRODUCTIVE 56
Masina virtuala Java (Java Virtual Machine,JVM): calculator abstract (Gosling, 1992), cu un set
de instructiuni ptr procesor, set de registri,mod de organizare a memoriei
componenta a tehnologiei Java asigura posibilitatea transmiterii intre
calculatoare a programelor codificate binar,chiar daca aceste calculatoare sunt de tipuridiferite
Utilizarea JVM
-
C++ Java Executie (10-20) Executie
+Optimizare (3-4)
Executie +JIT (JustInTime)
compiler +JIT (JustInTime)
compiler
NOTIUNI INTRODUCTIVE 57
Executie (10-20) Executie
+Optimizare (3-4)
Executie +JIT (JustInTime)
compiler +JIT (JustInTime)
compiler
-
OBS. C++ (ex .NET)
-
OBS. C++ (ex .NET) (2)
Aplicatii C++: ISO/ANSI C++ Aplicatii C++:
Consola Windows (tratarea evenimentelor)
Aplicatii C++: native (MFC Microsoft Foundation Classes) CLR (Common Language Run-Time) =
C++/CLI (Common Language Runtime)
NOTIUNI INTRODUCTIVE 59
Aplicatii C++: ISO/ANSI C++ Aplicatii C++:
Consola Windows (tratarea evenimentelor)
Aplicatii C++: native (MFC Microsoft Foundation Classes) CLR (Common Language Run-Time) =
C++/CLI (Common Language Runtime)
-
OBS. C++ (ex .NET) (3)
CLR (Common Language Run-Time) = C++/CLI(Common Language Runtime) CLR mediu standardizat de executie a unor programe (Visual
Basic, C#, C++) CLI specificatii pentru o masina virtuala Limbajul intermediar utilizat - Microsoft Intermediate Language
(MSIL). Codul in MSIL mapat in cod masina prin JIT compiler CLI defineste o multime de tipuri de date Common Type
System (CTS)
NOTIUNI INTRODUCTIVE 60
CLR (Common Language Run-Time) = C++/CLI(Common Language Runtime) CLR mediu standardizat de executie a unor programe (Visual
Basic, C#, C++) CLI specificatii pentru o masina virtuala Limbajul intermediar utilizat - Microsoft Intermediate Language
(MSIL). Codul in MSIL mapat in cod masina prin JIT compiler CLI defineste o multime de tipuri de date Common Type
System (CTS)
-
Programe in C++/Java C++-colectie de
functii Java
class FirstApp{
public static void main(String args[]){System.out.println("Hello world!");}
}
Java
class FirstApp{
public static void main(String args[]){System.out.println("Hello world!");}
}
-
Programe (2) C++- Aplicatii Portabilitate limitata Compil: optiuni
Java aplicatii, care pot fi executate pe orice
calculator, legat sau nu la o retea, si auacces la toate resursele calculatoruluirespectiv, la fel ca programele scrise inorice alt limbaj;
miniaplicatii (sau appleturi, de laengl. applet), care se pot transmiteprin reteaua de calculatoare si pot fiexecutate numai in cadrul unuinavigator de Web (engl. browser);ruleaza client
JSP, ruleaza pe server Portabilitate totala, independenta totala
fata de platforma (tipul tipulcalculatorului si al sistemului de operarefolosit)
Java aplicatii, care pot fi executate pe orice
calculator, legat sau nu la o retea, si auacces la toate resursele calculatoruluirespectiv, la fel ca programele scrise inorice alt limbaj;
miniaplicatii (sau appleturi, de laengl. applet), care se pot transmiteprin reteaua de calculatoare si pot fiexecutate numai in cadrul unuinavigator de Web (engl. browser);ruleaza client
JSP, ruleaza pe server Portabilitate totala, independenta totala
fata de platforma (tipul tipulcalculatorului si al sistemului de operarefolosit)
-
ELEMENTE DE LIMBAJC++/Java
Vocabular Unitati lexicale:
Cuvinte cheie (cu cateva exceptii aceleasi) Identificatori
NOTIUNI INTRODUCTIVE 63
Vocabular Unitati lexicale:
Cuvinte cheie (cu cateva exceptii aceleasi) Identificatori
-
ELEMENTE DE LIMBAJ (2)
Comentarii: // - pe o singura linie /*..
*/ - pe mai multe linii /** ------------------------- */ - Java- generarea automata a
comentariilor (javadoc)
Mecanism de generare automata adocumentatiei inline: C++ - (Doxygen, soft suplimenntar) Java (Javadoc, standard documentation)
NOTIUNI INTRODUCTIVE 64
Comentarii: // - pe o singura linie /*..
*/ - pe mai multe linii /** ------------------------- */ - Java- generarea automata a
comentariilor (javadoc)
Mecanism de generare automata adocumentatiei inline: C++ - (Doxygen, soft suplimenntar) Java (Javadoc, standard documentation)
-
TIPURI DE DATE C++/Java
Java: preia de la C si C++ aproape toate tipurile
aritmetice (short, int, long, float, double) si tipul void mai putine tipuri de date primitive decat C/C++; Java impune o aceeasi lungime si reprezentare a
tipurilor numerice pentru toate implementrilelimbajului (tipurile de date sunt definite pentru masinaabstracta virtuala).
fara unsigned!
NOTIUNI INTRODUCTIVE 65
Java: preia de la C si C++ aproape toate tipurile
aritmetice (short, int, long, float, double) si tipul void mai putine tipuri de date primitive decat C/C++; Java impune o aceeasi lungime si reprezentare a
tipurilor numerice pentru toate implementrilelimbajului (tipurile de date sunt definite pentru masinaabstracta virtuala).
fara unsigned!
-
TIPURI DE DATE (2)
Java: tipul de date boolean (pentru date logice) si - deci - nu
mai permite confuzia intre valorile logice si celenumerice: EX: gresit n Java, corect n C/C++. return x ? 1:0 ;
// corect este: return x !=0 ? 1:0 ; cu x de tip int if ( ! n) { ... }
// corect este: if (n==0) { ... } do { nf=nf *n--;} while (n) ;
// corect este: do { nf=nf*n--;} while ( n>0);
NOTIUNI INTRODUCTIVE 66
Java: tipul de date boolean (pentru date logice) si - deci - nu
mai permite confuzia intre valorile logice si celenumerice: EX: gresit n Java, corect n C/C++. return x ? 1:0 ;
// corect este: return x !=0 ? 1:0 ; cu x de tip int if ( ! n) { ... }
// corect este: if (n==0) { ... } do { nf=nf *n--;} while (n) ;
// corect este: do { nf=nf*n--;} while ( n>0);
-
TIPURI DE DATE (3)
Java: control strict al tipurilor, atat la
atribuirea de valori unor variabile, cat sila transmiterea de parametri catrefunctii;
nu permite folosirea in calcule a unorvariabile care nu au primit valoare;
NOTIUNI INTRODUCTIVE 67
Java: control strict al tipurilor, atat la
atribuirea de valori unor variabile, cat sila transmiterea de parametri catrefunctii;
nu permite folosirea in calcule a unorvariabile care nu au primit valoare;
-
TIPURI DE DATE (4)
C++:
NOTIUNI INTRODUCTIVE 68
-
TIPURI DE DATE (5)
Java:
NOTIUNI INTRODUCTIVE 69
-
TIPURI DE DATE (6)
Java: Tipurile primitive: aritmetice
ntregi: byte (1 octet), short(2), int (4), long (8) reale: float (4), double (8)
caracter: char (2) logic: boolean (true i false) Tipul referin:
Vectorii, clasele i interfeele Valoarea unei variabile de acest tip este, spre deosebire de tipurile
primitive, o referin (adres de memorie) ctre valoarea saumulimea de valori reprezentat de variabila respectiv.
Nu exist: pointer, struct i union.
NOTIUNI INTRODUCTIVE 70
Java: Tipurile primitive: aritmetice
ntregi: byte (1 octet), short(2), int (4), long (8) reale: float (4), double (8)
caracter: char (2) logic: boolean (true i false) Tipul referin:
Vectorii, clasele i interfeele Valoarea unei variabile de acest tip este, spre deosebire de tipurile
primitive, o referin (adres de memorie) ctre valoarea saumulimea de valori reprezentat de variabila respectiv.
Nu exist: pointer, struct i union.
-
TIPURI DE DATE (7)
Java: control strict al tipurilor:
la atribuirea de valori unor variabile: Automat: conversiile depromovare de la un tip numeric inferior la un tip aritmetic superior(byte, short, int, long, float, double), care nu implic o trunchiere
int n=3; float f; double d;d=f=n; // corect f=3.0, d=3.0n=f; // gresit sintacticf=d; // gresit sintactic
transmiterea de parametri catre functii;double r = Math.sqrt(2); // promovare de la int la double ptr. 2
O alt conversie automat, de promovare se face pentru rezultatul uneifunctii, dac tipul expresiei din instructiunea return difer de tipul declarat alfunctiei.
static float rest (float a, float b) {int r = (int)a % (int) b;return r;}
NOTIUNI INTRODUCTIVE 71
Java: control strict al tipurilor:
la atribuirea de valori unor variabile: Automat: conversiile depromovare de la un tip numeric inferior la un tip aritmetic superior(byte, short, int, long, float, double), care nu implic o trunchiere
int n=3; float f; double d;d=f=n; // corect f=3.0, d=3.0n=f; // gresit sintacticf=d; // gresit sintactic
transmiterea de parametri catre functii;double r = Math.sqrt(2); // promovare de la int la double ptr. 2
O alt conversie automat, de promovare se face pentru rezultatul uneifunctii, dac tipul expresiei din instructiunea return difer de tipul declarat alfunctiei.
static float rest (float a, float b) {int r = (int)a % (int) b;return r;}
-
TIPURI DE DATE (8)
Java: Conversia de la un tip numeric superior la un tip aritmetic
inferior trebuie cerut explicit prin folosirea operatoruluicast de fortare a tipului si nu se face automat ca n C.
int n=3; float f; double d;f= (float)d; // cu pierdere de precizien=(int)f; // cu trunchiere
int r = (int) Math.sqrt(4); // conversie necesara de la double la int// functie de rotunjire din clasa Math
public static int round (float a) {return (int)floor(a + 0.5f); // "floor" are rezultat double}
NOTIUNI INTRODUCTIVE 72
Java: Conversia de la un tip numeric superior la un tip aritmetic
inferior trebuie cerut explicit prin folosirea operatoruluicast de fortare a tipului si nu se face automat ca n C.
int n=3; float f; double d;f= (float)d; // cu pierdere de precizien=(int)f; // cu trunchiere
int r = (int) Math.sqrt(4); // conversie necesara de la double la int// functie de rotunjire din clasa Math
public static int round (float a) {return (int)floor(a + 0.5f); // "floor" are rezultat double}
-
TIPURI DE DATE (9)
Java: Nu se aplica modificatorul const! static, final
public static final double PI = 3.14159265358979323846;
Operatori: >>> (deplas. la dreapta fara semn) + - concatenare siruri Nu exista sizeof (nu e nevoie!)! Nu operator de referentiere (&), deferentiere (*),
NU pointeri!NOTIUNI INTRODUCTIVE 73
Java: Nu se aplica modificatorul const! static, final
public static final double PI = 3.14159265358979323846;
Operatori: >>> (deplas. la dreapta fara semn) + - concatenare siruri Nu exista sizeof (nu e nevoie!)! Nu operator de referentiere (&), deferentiere (*),
NU pointeri!
-
PROGRAMATOR/PROIECTANTPOO IDEAL
Capabil de gandire abstracta Poate trata bine incertitudinile Comunica rezonabil
-
Codificarea caracterelor C/C++ Cod ASCII
1 octet Fara semn Cu semn
Referire cod octal: \11 (pentru \t)
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
C/C++ Cod ASCII
1 octet Fara semn Cu semn
Referire cod octal: \11 (pentru \t)
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 structurilorde control (instructiuni)
C/C++ Java Nu exist goto numeEticheta: definete o
etichet. Pot fi definite etichete folosite
astfel: break numeEticheata continue numeEticheta
ex1
Java Nu exist goto numeEticheta: definete o
etichet. Pot fi definite etichete folosite
astfel: break numeEticheata continue numeEticheta
ex1
-
EX1. Etichete in Javai=0;eticheta:while (i < 10) {
System.out.println("i="+i);j=0;while (j < 10) {
j++;if (j==5) continue eticheta;//sau: if (j==5) break eticheta;System.out.println("j="+j);
}i++;
}
i=0;eticheta:while (i < 10) {
System.out.println("i="+i);j=0;while (j < 10) {
j++;if (j==5) continue eticheta;//sau: if (j==5) break eticheta;System.out.println("j="+j);
}i++;
}
-
La nivel de limbaj C/C++ Semantica valorii:
Obiectele sunt valori Semantica referintei:
Pointeri Referinte
Op. selectie membru: ob.membru (.)
->
Java Semantica referintei
refOb.membru
C/C++ Semantica valorii:
Obiectele sunt valori Semantica referintei:
Pointeri Referinte
Op. selectie membru: ob.membru (.)
->
Java Semantica referintei
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
La nivelul unui pachet(Pachet = Colecie declase i interfee)
C/C++ La nivel de constanta,
var., functie Bibl. standard: std
Java In interiorul unei definitii
de tip: Clasa Interfata
La nivelul unui pachet(Pachet = Colecie declase i interfee)
-
Pachete standard (J2SDK)
java.lang - clasele de baz ale limbajului Java java.io - intrri/ieiri, lucrul cu fiiere java.util - clase i interfee utile java.applet - dezvoltarea de appleturi java.awt - interfaa grafic cu utilizatorul java.awt.event - tratare evenimente java.beans - scrierea de componente reutilizabile
java.lang - clasele de baz ale limbajului Java java.io - intrri/ieiri, lucrul cu fiiere java.util - clase i interfee utile java.applet - dezvoltarea de appleturi java.awt - interfaa grafic cu utilizatorul java.awt.event - tratare evenimente java.beans - scrierea de componente reutilizabile
-
Pachete standard (J2SDK) java.net - programare de reea java.sql - lucrul cu baze de date java.rmi - execuie la distan java.security - mecanisme de securitate java.math - operaii matematice cu nr mari java.text - lucrul cu texte, date i nr indep. de
limb java.lang.reflect - introspecie javax.swing - interfaa grafic cu utilizatorul, mult
mbogit fa de AWT.
java.net - programare de reea java.sql - lucrul cu baze de date java.rmi - execuie la distan java.security - mecanisme de securitate java.math - operaii matematice cu nr mari java.text - lucrul cu texte, date i nr indep. de
limb java.lang.reflect - introspecie javax.swing - interfaa grafic cu utilizatorul, mult
mbogit fa de AWT.
-
FUNCTII C++ - functia-unitate de modularizare Java clasa unitate de modularizare
Functie=metoda main incepe executia programului Java:
main inclusa, ca metoda statica, intr-o clasa argument vector de siruri
C++ - functia-unitate de modularizare Java clasa unitate de modularizare
Functie=metoda main incepe executia programului Java:
main inclusa, ca metoda statica, intr-o clasa argument vector de siruri
-
FUNCTII C++/Java C++
Declaratii de functii (specificarea prototipului) Definitii de functii (antet+corp)!
Java Nu conteaza ordinea n care sunt scrise functiile
(metodele) unei clase: o functie poate fi apelatanainte de a fi definita si nici nu este necesardeclararea functiilor utilizate (nu se folosescprototipuri de functii).
Orice functie apartine unei clase. Nu se pot defini functii n afara claselor.
C++ Declaratii de functii (specificarea prototipului) Definitii de functii (antet+corp)!
Java Nu conteaza ordinea n care sunt scrise functiile
(metodele) unei clase: o functie poate fi apelatanainte de a fi definita si nici nu este necesardeclararea functiilor utilizate (nu se folosescprototipuri de functii).
Orice functie apartine unei clase. Nu se pot defini functii n afara claselor.
-
FUNCTII C++
Functii cu parametri impliciti (NU si-n Java!) int cmmdc(int a=0, int b=0);
Transmiterea parametrilor; Returneaza: Valoare Pointer (NU si-n Java!) Referinta
Java Transmiterea parametrilor; Returneaza:
Tipuri primitive si referinte transmise intotdeauna prin valoare C++/Java
Transmiterea argumentelor in linia de comanda (la lansarea inexecutie) siruri de caractere
Functii cu nr. variabil de parametri
C++ Functii cu parametri impliciti (NU si-n Java!)
int cmmdc(int a=0, int b=0); Transmiterea parametrilor; Returneaza:
Valoare Pointer (NU si-n Java!) Referinta
Java Transmiterea parametrilor; Returneaza:
Tipuri primitive si referinte transmise intotdeauna prin valoare C++/Java
Transmiterea argumentelor in linia de comanda (la lansarea inexecutie) siruri de caractere
Functii cu nr. variabil de parametri
-
FUNCTII C++/Java Supraincarcarea functiilor (overloading)
C++ - supraincarcarea operatorilor Java: +, += gata supraincarcati ptr Sring
Suprascrierea (supradefinirea, overriding)functiilor
Supraincarcarea functiilor (overloading) C++ - supraincarcarea operatorilor Java: +, += gata supraincarcati ptr Sring
Suprascrierea (supradefinirea, overriding)functiilor
-
GENERICITATE C++: clase si functii templates:
Generare de copii separate ale clasei/functieiptr. fiecare tip de parametru la compilare
Template-urile pot fi specilizate
Java: clase si functii generice O singura versiune a clasei/functiei pentru
toate tipurile de parametri Cls/functiile generice NU pot fi specializate
C++: clase si functii templates: Generare de copii separate ale clasei/functiei
ptr. fiecare tip de parametru la compilare Template-urile pot fi specilizate
Java: clase si functii generice O singura versiune a clasei/functiei pentru
toate tipurile de parametri Cls/functiile generice NU pot fi specializate