Documente Academic
Documente Profesional
Documente Cultură
1. Tehnici de programare
Exist mai multe tehnici de programare:
1. Programare procedural
Caracteristici:
o prima modalitate de programare, nc frecvent folosit
o descompunerea programului n proceduri (funcii) care sunt apelate n ordinea
de desfurare a algoritmului
o sunt prevzute posibiliti de transfer a argumentelor ctre funcii i de
returnare a valorilor rezultate
o limbajul Fortran: primul limbaj de programare procedural .
o au urmat Algol60, Algol68, Pascal, iar C este unul din ultimele invenii n
acest domeniu.
2. Programarea modular (structurat)
Caracteristici:
accentul s-a deplasat de la proiectarea procedurilor ctre organizarea datelor, datorit
creterii dimensiunii programelor.
stilul de programare este n continuare procedural
datele i procedurile sunt grupate n module, nu implic ns i o asociere strict ntre
acestea
Modulul: o mulime de proceduri corelate, mpreun cu datele pe care le manevreaz
tehnic de ascundere a datelor (data-hiding): posibilitatea de ascundere a unor
informaii definite ntr-un modul fa de celelalte module.
modularitatea i ascunderea informaiilor sunt caracteristici implicite n programarea
orientat pe obiecte.
3. Programarea orientat pe obiecte
Programarea procedural i structurat presupun descrierea algoritmilor ca o secven de pai
care duc de la datele iniiale la rezultatul cutat. n cazul limbajelor de programare orientate la
o clas concret de probleme apar sisteme de dirijare cu baze de date, modelare etc. De
asemenea apare i necesitatea sporirii siguranei programelor prin interzicerea accesului
neautorizat la date.
n acest context apare programarea orientat pe obiecte ce presupune:
determinarea i descrierea claselor utilizate n program
crearea exemplarelor de obiecte necesare
determinarea interaciunii dintre ele.
Clasa este o extensie a conceptului de tip de date i conine o structur de date, mpreun
cu metodele (functiile) care se aplica acestor date.
Obiectul este o instaniere (o instan) a clasei. n acelasi program se pot folosi mai
multe obiecte aparinnd aceleeai clase sau unor clase diferite. Fiecare obiect se
caracterizeaz prin stare i comportament. Starea obiectului depinde de datele pe care
acesta le conine, in timp ce comportamentul este dat de metodele clasei respective.
n general, comunicarea const n invocarea de metode. Daca obiectul a invoca o metoda
a obiectului b, aceasta poate avea ca efect modificarea strii obiectului b (adic
modificarea unor date coninute n structura de date a lui b) i/sau poate primi o valoare
ntoars de metoda respectiva.
Modelul obiect al unei aplicaii implic patru principii importante:
a. abstractizare;
b. ncapsulare;
c. modularitate;
d. ierarhizare.
Modelul obiect este un concept unificator n tiina calculatoarelor, aplicabil nu numai n
programare, ci i n arhitectura calculatoarelor, n proiectarea interfeelor utilizator, n baze de
date.
a. Abstractizarea se refer la identificarea trsturilor caracteristice eseniale ale unui
obiect, care l deosebesc de toate celelalte feluri de obiecte. Fiecare obiect n sistem
are rolul unui actor abstract, care poate executa aciuni, i poate modifica i
comunica starea i poate comunica cu alte obiecte din sistem fr a dezvlui cum au
fost implementate acele facilitai. Procesele, funciile sau metodele pot fi de asemenea
abstracte.
b. ncapsularea se refer la ascunderea de informaii (data-hiding). Obiectele nu pot
schimba starea intern a altor obiecte n mod direct (ci doar prin metode puse la
dispoziie de obiectul respectiv). Doar metodele proprii ale obiectului pot accesa starea
acestuia.
Astfel se poate face o compartimentare a elementelor unei abstractizri n dou pri:
structura i comportarea. ncapsularea separ comportarea (accesat prin interfa) de
structur, definit prin implementare. Fiecare tip de obiect expune o interfa pentru
celelalte obiecte care specific modul cum acele obiecte pot interaciona cu el.
Dreptunghi
Romb
Ptrat
Clasa dreptunghi este o clas derivat (subclas) a clasei paralelogram, iar clasa
paralelogram este o clas de baz (supraclas) a clasei dreptunghi. Astfel, o ierarhie de
concepte conduce la o ierarhie ntre clasele care implementeaz conceptele ierarhice
respective.
Simplitate. Spre deosebire de C++ care este un limbaj orientat pe obiect mai popular,
Java elimin cteva din trsturile acestuia: posibilitatea motenirii multiple este
exclus, irurile sunt ncapsulate ntr-o structur clas, nu exist pointeri, alocarea i
dealocarea memoriei se face automat, exist un mecanism de eliberare a memoriei
(garbage collection) .
Limbaj distribuit. Java este distribuit pentru c permite utilizarea obiectelor locale i
la distan. El ofer posibilitatea dezvoltrii de aplicaii pentru Internet, capabile s
Limbaj performant. Interpretorul Java este capabil s execute un byte code aproape la
fel de repede ca un cod compilat. Avnd posibilitatea s lucreze cu fire de execuie
multiple, Java justific faptul c este un limbaj performant.
Mediul de dezvoltare Java Developers Kit (JDK) conine pe de o parte o serie de biblioteci de
clase Java necesare scrierii unui program (API) i pe de alta parte un set de utilitare necesare
compilarii, testarii, executiei i documentarii unei aplicaii Java.
5. Implementarea mainii virtuale Java
De regul, arhitectura i setul de instruciuni al calculatorului, pe care se exec ut un
program Java, difer de cele ale mainii virtuale Java. n consecin, codul de octei
generat de compilatorul Java nu poate fi executat nemijlocit de procesorul (procesoarele)
calculatorului pe care acesta se execut.
Dac este realizat software (aa cum se ntampl n majoritatea cazurilor), maina
virtual Java este ea nsi un produs program, care este scris i compilat special pentru
tipul de calculator pe care se instaleaz, deci folosete setul de instruciuni nativ al
acestuia. Acest produs program trebuie s respecte specificaia mainii virtuale Java, dar
realizarea concret depinde de tipul de calculator pe care se instaleaz. Mai mult, pentru
acelai calculator pot fi realizate mai multe maini virtuale Java, care to ate respecta
specificaia, dar difer ntre ele prin modul de realizare.
n principiu, componenta principal a mainii virtuale Java este un interpretor, adic un
program care parcurge instruciunile coninute n codul de octei Java din memoria
mainii virtuale Java i le convertete n instruciuni native, care pot fi executate de
procesorul calculatorului gazd. Aceast conversie necesit un anumit tim p, din care
cauz durata de execuie a unui program interpretat este intotdeauna mai mare dect a
unuia compilat direct n codul nativ. Din aceast cauz, principala deficien care se
semnala la primele implementri ale mainii virtuale Java era c durata de execuie a
programelor era sensibil mai mare dect a celor scrise in limbaje "tradiionale" compilate,
cum ar fi C, C++, Pascal, Fortran etc.
Implementrile moderne ale mainii virtuale Java se caracterizeaz prin mrirea sensibil
a vitezei de executie, care se apropie deja de cea a programelor compilate. Aceasta se
realizeaz, n special, prin introducerea unei compilri "just in time": codul de octei este
compilat, n momentul execuiei, in cod nativ pentru calculatorul gazd i abia apoi este
executat.
Desigur c cea mai eficient reducere a duratei de execuie se produce atunci cnd
maina virtual Java este implementata hardware, astfel nct codul de octeti Java
(bytecode) este cod nativ al acestei maini. n acest caz, durata de execuie a pro gramului
este aceeai cu cea a unui program compilat tradiional.
6. Tipuri de produse software scrise n Java
Limbajul Java este folosit cel mai frecvent pentru a scrie urmatoarele trei tipuri de
programe:
aplicaie - este un produs software care se instaleaz pe un anumit calculator i
funcioneaz direct sub controlul sistemului de operare, avnd acces la toate resursele
calculatorului respectiv. Una din clasele aplicaiei trebuie sa conin metoda principal,
cu care ncepe execuia aplicatiei. Aceast metod se numete main i are forma:
public static void main(String args[]) {
// corpul metodei
}
applet (miniaplicaie) - este un program care se transmite sub form de cod de octei
(bytecode) prin reeaua de calculatoare i este executat n cadrul unui navigator (browser)
de Web, fr a avea acces la fiierele sau sistemul de intrare/ieire al calculatorului pe
care se execut;
servlet - un program care se execut pe un server din reea.
Primul program
1. Scriererea codului surs
class FirstApp
{
public static void main( String args[])
{
System.out.println("Hello world!");
}
}
Definire clas class numeclasa
Funcia principal a unei aplicaii Java propriu-zise:
- public static void main( String args[])
Afiare - System.out.println
Salvarea fiierelor surs
C:\intro\FirstApp.java
Compilarea aplicaiei
javac FirstApp.java
va rezulta: FirstApp.class
Rularea aplicaiei
java FirstApp
Se poate folosi un IDE (mediu integrat de dezvoltare) pentru a realiza toi paii anteriori
(JCreator, Eclipse, NetBeans, etc.)
Noiunea de clas
O clas definete un tip abstract de date.
Definiie clas:
class nume{
lista_elementelor_membru
}
Lista elementelor membru poate conine:
1. declaraii de date;
2. implementri de funcii;
3. prototipuri de funcii abstracte.
Datele declarate printr-o definiie de clas se numesc date membru.
Funciile definite sau pentru care este prezent numai prototipul n definiia clasei, se numesc
funcii membru sau metode.
Att datele ct i metodele pot avea modificatori de acces.
Modificatorii de acces
Modificatorii de acces sunt cuvinte rezervate ce controleaz accesul celorlalte clase la
membrii unei clase. Specificatorii de acces pentru variabilele i metodele unei clase sunt:
public, protected, private i cel implicit (la nivel de pachet).
Specificator
Private
Protected
Public
Implicit
Clasa
X
X
X
X
Subclasa
X*
X
Exemplu:
class Complex {
// date membru
float real;
float imag;
// functii membru publice
public void atribuire(float x, float y) {
real = x; imag=y;
}
public double retreal() {
return real;
}
public void afiscomplex(){
System.out.println(real+++imag+*i);
}
}
Pachet
X
X
Oriunde
Obiecte
Un obiect este o dat de un tip definit printr-o clas. Se spune c obiectul este o instaniere a
clasei respective.
Formatul declaratiei unui obiect:
nume_clas nume_obiect;
Instanierea obiectelor se face folosind operatorul new.
nume_obiect = new nume_clas(..);
Datele membru se aloc distinct la fiecare instaniere a clasei. O excepie o constituie datele
membru care au clasa de memorare static, ea este o parte comun pentru toate instanierile
clasei i exist ntr-un singur exemplar.
Funciile membru sunt ntr-un singur exemplar oricte instanieri ar exista.
Legtura dintre funcii membru i obiectul pentru care se face apelul se realizeaz folosind
operatorul punct.
Exemplu de instanieri pentru clasa complex:
Complex z;
z=new Complex();
Atunci:
z.atribuire(0,0);
z.afiscomplex();
afieaz numrul complex z (n cazul de fa 0+0i).