Programare Java
INSTRUCTIUNI SI EXPRESII
Toate activitatile ce se realizeaza intr-un program Java pot fi rezumate la o serie de instructiuni .
O instructiune ( statement ) este o comanda simpla , scrisa intr-un limbaj de programare si care determina o actiune .
Instructiunile sunt actiuni elementare ale unui program Java . Mai jos putem vedem mai multe exemple de instructiuni Java simple :
int varsta=30;
import java.awt.dnd;
System.out.println("Text ");
Jucator.scor=45000;
Unele instructiuni produc o valoare , ca in cazul in care se aduna doua numere . Aceste instructiuni se numesc expresii .
O expresie este o instructiune care are ca rezultat producerea unei valori . Valoarea poate fi pastrata pentru o folosire ulterioara in program , poate fi folosita imediat intr-o alta instructiune sau poate fi ignorata . Valoarea produsa de o instructiune este numita valoare de retur .
Unele expresii produc o valoare de retur numerica , cum ar fi cazul cand se aduna doua numere ; altele produc valori booleene - adevarat sau fals - sau pot produce chiar un obiect Java .
Chiar daca majoritatea programelor Java contin o singura instructiune pe fiecare 151f57b linie aceasta este doar o optiune de formatare , care nu stabileste unde incepe si unde se termina o instructiune ci are scopul principal de a mari lizibilitatea programului .
De fapt , fiecare instructiune Java se termina cu " ; " . Intr-o singura linie se pot introduce astfel mai multe instructiuni fara a determina probleme :
j.culoare="galben"; j.alegere=false;
Instructiunile sunt grupate in Java folosind acoladele . Un grup de instructiuni organizate intre acolade se numeste bloc .
VARIABILE SI TIPURI DE DATE
Variabilele reprezinta un loc unde poate fi pastrata informatia intr-un program aflat in executie . Valoarea poate fi modificata oricand in cadrul programului .
Pentru a crea o variabila trebuie sa ii dati un nume si sa stabiliti ce tip de informatie va stoca . De asemenea , in momentul crearii puteti sa atribuiti variabilei o valoare initiala .
Exista trei tipuri de variabile in Java : variabile de instanta , variabile de clasa si variabile locale .
Variabilele de instanta sunt folosite pentru a defini atributele unui obiect .
Variabilele de clasa definesc atributele unei intregi clase de obiecte si se aplica tuturor instantelor acesteia .
Variabilele locale sunt folosite in interiorul definitiilor metodelor sau al blocurilor de instructiuni din cadrul unei metode . Ele pot fi folosite doar atunci cand metoda sau blocul este executat de interpretorul Java , dupa care isi inceteaza existenta .
Cu toate ca aceste trei tipuri de variabile sunt create asemanator , variabilele de clasa si de instanta sunt folosite intr-un alt mod decat variabilele locale . In continuare vom trata variabilele locale - celelalte doua tipuri vor fi detaliate mai tarziu .
OBS : Spre deosebire de alte limbaje Java nu are variabile globale ( utilizabile in orice parte a unui program ) . Variabilele de clasa si de instanta sunt folosite pentru a comunica informatii despre un obiect sau altul si pot inlocui nevoia de variabile globale .
Inainte de a folosi o variabila in Java trebuie mai intai sa o declaram prin indicarea numelui si a tipului de informatie pe care il va stoca . Formatul declaratiei este prezentat in continuare , specificandu-se intai tipul de informatie si apoi numele :
int maxim;
String numeutilizator;
boolean stareTerminare;
Variabilele locale pot fi declarate in orice loc in interiorul unei metode , la fel ca oricare alta instructiune Java insa trebuie declarate inainte de a fi folosite . In mod normal declararea variabilelor urmeaza imediat dupa instructiunea care defineste metoda .
Public static void main(string argumente[])
Daca vrem sa cream mai multe variabile de acelasi tip le putem declara pe toate in aceeasi instructiune , separate de " , " :
String strada , oras ,
Variabilelor li se poate atribui o valoare atunci cand sunt create prin atribuire :
int codposta=7000;
String nume="Alex";
boolean alegere=true;
int varsta=50 , inaltime=170;
Dupa cum se poate vedea avem si posibilitatea de a atribui valori mai multor variabile de acelasi tip . Variabilelor locale trebuie sa li se atribuie valori inainte de a fi folosite in program , altfel acestea nu se vor compila .
Definitiile variabilelor de instanta si de clasa primesc o valoare initiala in functie de tipul informatiei pe care o stocheaza :
variabilele numerice : 0
caracterele : "\0"
variabilele booleene : false
obiectele : null
Numele variabilelor in Java trebuie sa inceapa cu o litera , cu underscore ( "_" ) sau cu " $ " - ele nu pot incepe cu o cifra . Dupa primul caracter numele variabilelor pot contine orice combinatie de cifre si litere .
Trebuie sa retinem ca Java tine cont de litere mari si mici . Din aceasta cauza un program poate avea doua variabile diferite : una numita X si alta x sau una alb si alta ALB .
In practica s-a impus o "regula" de denumire a variabilelor Java : numele sunt formate din cuvinte sugestive iar in cazul in care sunt necesare mai multe cuvinte primul caracter al numelui este mic iar inceputul fiecarui cuvant este scris cu majuscula , ca in exemplele de mai jos :
Button incarcaFisier;
int codZona;
boolean definesteScorMaxim;
TIPURI DE VARIABILE
Dupa cum am vazut declaratia de variabila contine in afara numelui si tipul informatiei stocate . Acest tip poate fi :
un tip de date de baza
numele unei clase sau interfete
un tablou
In continuare prezentam tipurile de date de baza ale limbajului . Exista opt tipuri de baza pentru stocarea intregilor , numerelor in virgula mobila , caracterelor si valorilor booleene . Aceste tipuri mai sunt cunoscute si ca tipuri primitive deoarece fac parte integranta din limajul Java si nu sunt obiecte , lucru care le face mai eficient de folosit . Aceste tipuri de date au aceeasi dimensiune si caracteristici indiferent de sistemul de operare si de platforma folosita - spre deosebire de alte tipuri de date din alte limbaje de programare .
Pentru stocare intregilor avem patru tipuri de date :
- byte - pe 8 biti - valori intre -128 si 127
- short - pe 16 biti - valori intre -32768 si 32767
- int - pe 32 biti - valori intre -2147483648 si 2147483647
- long - pe 64 biti - valori intre -9223372036854775808 si 9223372036854775807
Toate aceste tipuri sunt cu semn ceea ce inseamna ca pot stoca numere pozitive sau negative . Tipul folosit pentru o variabila depinde de domeniul de valori de care este nevoie .
Un alt tip de numar ce poate fi stocat este cel reprezentat in virgula mobila ; pentru acestea exista tipurile float si double . Numerele in virgula mobila sunt numerele care au o parte zecimala . Tipul float este suficient in majoritatea cazurilor , pastrand numere intre 1,4E-45 si 3,4E38 . Daca totusi este necesar se poate folosi tipul real double ce poate stoca numere intre 4,9E-324 si 1,7E308 .
Tipul char este folosit pentru caracterele individuale , cum ar fi litere , cifre , semne de punctuatie si alte simboluri .
Ultimul dintre cele opt tipuri de baza este boolean . Spre deosebire de alte limbaje valorile pentru variabilele de acest tip nu sunt 1 si 0 ci true si false .
Toate tipurile de variabile prezentate folosesc litere mici si asa trebuie folosite in cadrul programelor . Exista clase care au aceleasi nume cu acestea , dar incep cu litera mare - de exemplu Boolean sau Char . Aceste clase au alt rol in programarea Java astfel incat trebuie folosite diferit de tipurile de baza .
TIPURI DE CLASE
In afara celor opt tipuri de baza o variabila poate fi de tip clasa :
String numeDeFamilie="Popescu";
Culoare par;
Atunci cand o variabila are drept tip o clasa inseamna ca variabila refera un obiect al clasei respective sau al uneia dintre subclasele sale . Referirea la o superclasa ca tip de variabila este folositoare atunci cand variabila poate fi una dintre mai multe subclase diferite .
Declararea unei variabile de tip Object inseamna ca poate stoca orice obiect .
OBS : Java nu are un echivalent al instructiunii typedef din C . Pentru a declara noi tipuri in Java se declara o noua clasa iar variabilele pot folosi aceasta clasa drept tip .
Dupa ce o variabila a fost declarata I se poate da o valoare folosind operatorul de atribuire , " = " :
idCod=8546;
imbracatRapid=false;
COMENTARII
Una dintre metodele cele mai importante de crestere a lizibilitatii unui program este folosirea comentariilor .
Comentariile reprezinta informatii introduse intr-un program doar in ajutorul persoanelor care incearca sa-si dea seama ce anume se intampla in program . Compilatorul Java ignora total comentariile atunci cand pregateste versiunea executabila a fisierului sursa Java .
Exista trei tipuri diferite de comentarii pe care le putem utiliza in programele Java .
Prima modalitate de a introduce comentarii in program este de a il prefixa cu doua simboluri slash " // " . Orice incepe dupa aceste semne si pana la sfarsitul liniei este considerat comentariu :
int oreCredit=3; // defineste orele de credit pentru curs
Daca dorim sa introducem un comentariu care ocupa mai mult de un rand trebuie sa incepem cu combinatia * " si sa incheiem cu combinatia " */ " .
Ultimul tip de comentariu este proiectat pentru a fi interpretabil si de catre calculator . Daca incepem comentariul cu ** " si il incheiem cu " */ " atunci comentariul este interpretat ca reprezentand documentatia originala referitoare la functionarea clasei si a metodelor sale publice .
Acest tip de comentariu poate fi citit de utilitare ca JAVADOC din pachetul JDK . Acest utilitar foloseste aceste comentarii pentru a crea un set de pagini web care documenteaza programul , ierarhia sa de clase si metodele .
LITERALE
Literalele sunt numerele , textul si alte informatii care reprezinta direct o valoare .
Mai explicit , literalele reprezinta un termen apartinand programarii , care inseamna de fapt ca ceea ce tastam este ceea ce vom obtine .
Java are mai multe literale pentru intregi . Numarul 4 de exemplu este un literal pentru tipul int . El poate fi atribuit de asemenea variabilelor byte sau short deoarece el este suficient de "mic" si pentru aceste doua tipuri . Un literal intreg mai mare decat poate stoca o variabila int este considerat automat ca avand tipul long . Putem indica faptul ca un literal este un intreg de tip long prin adaugarea sufixului L ( sau l ) . De exemplu urmatoarea instructiune stocheaza valoarea 4 intr-un intreg de tip long :
long totalPagini=4L;
Pentru a reprezenta o valoare negativa putem folosi literalul impreuna cu semnul minus - " ) .
In Java putem folosi si literali in sistem octal sau hexazecimal . Pentru a folosi un literal intreg in octal trebuie sa il prefixam cu cifra numarul octal 777 trebuie astfel scris ca 0777 . Intregii hexazecimali se folosesc prefixati cu 0x - ca de exemplu 0xFF .
Literalele in virgula mobila folosesc caracterul punct pentru punctul zecimal . Toate literalele in virgula mobila sunt automat considerate de tip double . Pentru a specifica tipul float adaugam F ( sau f ) - ca mai jos :
float valoarePi=3.1415F;
Putem folosi si exponenti in literalele de virgula mobila folosind litera E ( sau e ) urmata de exponent :
double x=12e22;
doube y=19E-70;
Literalele caracter sunt exprimate printr-un singur caracter incadrat de ghilimele simple : 'a' , '#' sau '3' .
Unele caractere literale reprezinta caractere care nu sunt tiparibile sau accesibile pe tastatura . Mai jos vom vedea coduri speciale care pot reprezenta aceste caractere speciale :
\n = new line ( linie noua )
\t = tab
\b = backspace
\r = revenire la capat de rand ( carriage return )
\f = formfeed ( salt la pagina noua )
\\ = semnul \
\' = ghilimele simple
\" = ghilimele duble
\_ = octal
\x_ = hexazecimal
\u_ = caracter unicode ( standard pe 16 biti spre deosebire de ASCII standard care presupune doar 128 de caractere )
In cazul ultimelor trei coduri se va inlocui in practica semnul " cu un numar sau o cifra hexazecimala .
Ultimele literale pe care le putem folosi intr-un program Java sunt sirurile de caractere . Unsir ( string ) in Java este un obiect si nu un tip de date primar . Sirurile nu sunt pastrate in tablouri ( ca in C de exemplu ) . Deaorece sirurile sunt obiecte Java avem si metode care pot fi folosite pentru combinarea si modificarea sirurilor precum si pentru a determina daca doua siruri au aceeasi valoare .
Literalele sir constau dintr-o serie de caractere incadrate intre ghilimele duble :
String autor="Ion Popescu";
String parola="password";
Sirurile pot contine si caractere speciale - prezentate anterior :
String exemplu="Text intre ghilimele \"CITAT\"";
System.out.println("Primul rand \n Al doilea rand");
String titlu="Invatati singuri Java\u2122";
In ultima instructiune , secventa \u2122 produce simbolul " TM " ( pe sistemele configurate sa suporte Unicode ) .
Atunci cand se foloseste un literal sir Java stocheaza valoarea sa ca obiect String . Nu trebuie sa cream explicit un nou obiect - ca in cazul celorlalte obiecte cu care vom lucra - deci este la fel de usor de lucrat cu acest tip ca si cu tipurile primare . Sirurile sunt diferite in ceea ce priveste acest aspect - nici unul dintre tipurile primare nu sunt pastrate ca obiecte atunci cand sunt folosite .
EXPRESII SI OPERATORI .
O expresie reprezinta o instructiune care produce o valoare . Cele mai folosite expresii sunt cele matematice - ca in continuare :
int x=3;
int y=4;
int z=x*y;
Ultima instructiune dintre cele de mai sus este o expresie . Operatorul de multiplicare * este folosit pentru inmultirea dintre x si y iar rezultatul produs de expresie va fi pastrat intr-o variabila z de tip intreg .
Valoarea produsa de o expresie este numita si valoare de retur . Aceasta valoare poate fi atribuita unei variabile si folosita in diferite feluri in programele noastre .
Operatorii reprezinta simboluri speciale folosite in functii matematice , in unele tipuri de instructiuni de atribuire sau in comparatii logice .
OPERATII ARITMETICE
In Java exista cinci operatori folositi pentru operatiile aritmetice de baza :
" Adunare
" Scadere
" Inmultire
" Impartire
"% " Modulo
Fiecare operator de mai sus foloseste cate doi operanzi - cate unul de fiecare parte a operatorului . Operatorul de scadere " poate fi folosit si pentru a nega un singur operator .
Un lucru care merita atentie sporita in ceea ce priveste operatorul de impartire este tipul operanzilor folositi . Daca stocam rezultatul unei impartiri intr-un intreg acesta va fi rotunjit la un numar intreg pentru ca tipul int nu poate lucra cu valori in virgula mobila . De exemplu expresia 21 / 5 are rezultatul 4 daca acesta este stocat intr-un int .
Impartirea modulo % " ) produce ca rezultat restul impartirii . In expresia 21 / 5 rezultatul pe care il vom obtine va fi
In general majoritatea operatiilor aritmetice cu intregi produc un rezultat de tip int indiferent de tipul initial al operanzilor . Daca lucram cu alte tipuri - numere in virgula mobila sau intregi long - trebuie sa ne asiguram ca operanzii au acelasi tip cu cel la care vrem sa ajungem .
Mai jos avem prezentat un exemplu care integreaza folosirea tuturor operatorilor aritmetici :
class Amoeba
}
Comentand pe scurt aceasta aplicatie Java extrem de simpla observam ca in liile 3- 5 se creaza trei variabile ce primesc in acelasi timp si valori initiale ; variabilele x si y sunt declarate de tipul int iar variabila a este declarata numar in virgula mobila float - deoarece tipul predefinit in Java pentru numere in virgula mobila este double trebuie sa adaugam sufixul f la sfarsitul literalului pentru a indica ( si forta ) tipul float .
In cadrul programului apare in mai multe instructiuni sintagma " System.out.println " ; Aceasta metoda este folosita in aplicatii pentru a afisa siruri si in general informatii pe dispozitivul standard de iesire - in cele mai multe cazuri ecranul .
System.out.println() preia un singur argument ( intre paranteze ) : un sir . Pentru a prezenta mai mult de o variabila sau un literal ca argument pentru println() se poate folosi operatorul + , pentru a concatena aceste elemente intr-un singur sir .
ATRIBUIREA UNEI VALORI
Atribuirea este o expresie , ea producand un rezultat . In practica atribuirea poate apare intr-un sir de instructiuni :
x=y=z=10;
Rezultatul acestei instructiuni este initializarea celor trei variabile cu valoarea
Partea din dreapta a unei expresii de atribuire este intotdeauna calculata inainte de a avea loc atribuirea propriu-zisa . Acest lucru face posibila folosirea unei expresii de felul urmator :
int x=5;
x=x+2;
Logic se calculeaza intai x+ rezultatul fiind 7 si apoi aceasta valoare este atribuita variabilei x .
Atribuirea este operatia cea mai des intalnita in programare si in consecinta au aparut mai multi operatori speciali pentru diferite cazuri de atribuire . Mai jos vom vedea operatorii de atribuire speciali precum si echivalentele functionale ale acestora :
X+=Y X=X+Y
X-=Y X=X-Y
X*=Y X=X*Y
X/=Y X=X/Y
Acesti operatori de atribuire sunt echivalenti perfect cu instructiunile pe care le inlocuiesc dar trebuie avuta mare atentie la utilizarea lor ; in cazul folosirii acestor operatori in cadrul unor expresii mai complexe exista cazuri in care acesti operatori nu mai sunt echivalenti . Ca exemplu putem lua situatia urmatoare :
X=20; Y=5;
X=X/Y+5; si
X/=Y+5;
Rezultatele celor doua instructiuni vor fi diferite : in primul caz rezultatul va fi 9 iar in cel de-al doilea 2 .
INCREMENTAREA SI DECREMENTAREA
O alta operatie uzuala in programare este adaugarea sau scaderea unei unitati dintr-o variabila intreaga . Exista operatori speciali pentru aceste expresii - operatori numiti de incrementare si decrementare .
Incrementarea unei variabile inseamna a adauga 1 la valoarea sa iar decrementarea unei variabile inseamna a scadea 1 din valoarea sa .
Operatorul de incrementare este + " iar cel pentru decrementare este " - " . Acesti operatori sunt plasati imediat inainte sau dupa numele unei variabile :
int X=7;
X=X++;
In exemplul de mai sus variabila X este incrementata de la 7 la
In cazul in care operatorii de incrementare sau decrementare sunt plasati inaintea variabilei atunci ei se numesc operatori prefix iar in cazul in care apar dupa variabila se numesc operatori sufix .
Intr-o expresie simpla , de exemplu variabila-- , folosirea unui operator prefix sau sufix nu schimba rezultatul . Atunci cand operatiunile de incrementare sau decrementare fac parte dintr-o expresie mai complexa optiunea intre prefix si sufix devine importanta .
Sa comentam putin exemplul de mai jos :
int x,y,z;
x=42; y=x+ z=++x ;
Aceste doua expresii produc rezultate diferite din cauza diferentelor intre operatorii sufix si prefix . Atunci cand folosim operatori sufix , ca in y=x++ , variabila y primeste valoarea lui x inainte ca aceasta sa creasca cu 1 astfel incat y va fi egal cu 42 ; la folosirea operatorilor prefix , ca in z=++x , variabila x este mai intai incrementata si apoi valoarea sa este atribuita lui y , astfel incat z va avea valoarea 44 .
Ca si incazul operatorilor speciali de atribuire trebuie avuta mare grija in cazul folosirii operatorilor de incrementare si decrementare in cazul unor expresii mai complexe - existand posibilitatea introducerii unei erori destul de greu de depistat in cadrul programului .
OPERATORI PENTRU COMPARATII
Java poseda mai multi operatori folositi pentru a face comparatii intre variabile , intre variabile si literale sau intre alte tipuri de informatie dintr-un program Java .
Acesti operatori sunt folositi in expresii care intorc valori booleene true si false , in functie de valoarea de adevar a comparatiei .
In cele ce urmeaza prezentam operatorii de comparatie uzitati in Java :
Operator Semnificatie Exemplu
== egal x==3
!= diferit x 3
< mai mic decat x<3
> mai mare decat x>3
<= mai mic sau egal cu x<=3
>= mai mare sau egal cu x>=3
In continuare avem un exemplu practic de folosire a unei comparatii :
boolean tanar;
int varsta=41;
tanar=varsta<35;
Expresia varsta<35 produce rezultatul true sau false ( in cazul nostru false ) in functie de valoarea variabilei varsta . In final valoarea variabilei " tanar " va fi astfel false .
OPERATORI LOGICI
Expresiile care produc valori booleene ( cum ar fi comparatiile ) pot fi combinate pentru a forma expresii mai complexe . Acest lucru poate fi realizat folosind operatorii logici . Acesti operatori pot fi folositi pentru combinatii logice AND ( si ) , OR ( sau ) , XOR ( sau exclusiv ) si NOT ( negare ) .
Pentru combinatiile AND se folosesc operatorii logici & si && . Atunci cand doua expresii booleene sunt conectate prin operatorii & sau && expresia combinata returneaza valoarea true doar daca ambele expresii booleene au valoarea true .
Diferenta intre & si && consta in modul in care Java evalueaza expresia combinata . Daca se foloseste & atunci se evalueaza ambele expresii indiferent de valoarea lor . Daca se foloseste && si expresia din stanga operatorului are valoarea de adevar false atunci expresia din dreapta operatorului nu mai este evaluata deoarece rezultatul final va fi oricum false .
Pentru combinatiile OR se folosesc operatorii | sau | Aceasta combinatie de expresii intoarce valoarea true daca cel putin una dintre expresiile booleene este adevarata .
In cazul folosirii operatorului | daca prima expresie booleena are valoarea true atunci a doua nici nu se mai evalueaza , rezultatul final fiind oricum true .
Combinatia XOR foloseste un singur simbol : " ^ " . Acesta are ca rezultat o valoare true numai daca ambele expresii booleene pe care le combina au valori diferite . In cazul in care ambele expresii au valoarea true sau ambele false atunci rezultatul va fi false .
Combinatia NOT foloseste operatorul logic " , urmat de o singura expresie . Acesta schimba valoarea unei expresii booleene in acelasi fel in care simbolul " schimba semnul pozitiv sau negativ al unui numar .
PRECEDENTA OPERATORILOR
Atunci cand intr-o expresie se folosesc mai multi operatori Java are stabilita o anumita ordine in care ii evalueaza . In majoritatea cazurilor aceasta precedenta determina valoarea finala a expresiei .
In general , ordinea operatiilor este urmatoarea :
operatii de incrementare si decrementare
operatii aritmetice
comparatii
operatii logice
expresii de atribuire
Daca doua operatii au aceeasi precedenta , cea aflata mai in stanga expresiei va fi calculata prima .
In tabelul de mai jos avem prezentata precedenta operatorilor :
. [] () |
Parantezele rotunde se folosesc pentru a grupa expresii ; punctul se foloseste pentru a accesa metodele si variabilele din cadrul obiectelor si claselor ; parantezele drepte sunt folosite pentru tablouri . |
++ -- ! instanceof |
Instanceof intoarce valoarea true sau false daca obiectul este sau nu o instanta a clasei numite sau a unei subclase a acesteia |
new (tip) expresie |
Operatorul new este folosit pentru crearea de noi instante ale claselor ; in acest caz se foloseste pentru transformarea unei valori intr-un alt tip |
* / % |
Inmultire , impartire , modulo |
+ - |
Adunare , scadere |
<< >> >>> |
Deplasarea pe biti la stanga si la dreapta |
< > >= <= |
Comparatii |
== != |
Teste de egalitate |
& |
AND |
^ |
XOR |
| |
OR |
&& |
AND optimizat ( logic ) |
|| |
OR optimizat ( logic ) |
?: |
Operatorul conditional |
= += -= *= /= %= |
Atribuiri |
In cazul in care nu suntem siguri de precedenta diferitiolor operatori cea mai buna solutie este folosirea parantezelor pentru a impune precedenta dorita .
ARITMETICA SIRURILOR
Operatorul " este folosit nu doar pentru calcule matematice ci si pentru a concatena siruri .
Operatorul " concateneaza siruri , alte obiecte si variabile pentru a forma un singur sir .
Pentru a adauga ceva la sfarsitul unui sir se poate folosi si operatorul = " , ca in exemplul urmator :
numeleMeu +=" Jr.";
Instructiunea anterioara este bineinteles echivalenta cu :
numeleMeu=numeleMeu + " Jr.";
Curs - 2
PROGRAMARE ORIENTATA OBIECT - Object Oriented Programming ( OOP )
Programarea orientata obiect este un concept remarcabil - chiar daca in realitate nu este foarte "modern el aparand ideatic inca din anii '70 ! Ideea centrala este destul de simpla si clara : organizati programele intr-un mod care sa oglindeasca modul cum sunt organizate obiectele din lumea reala .
In mod normal prezentarea urmatoare ar trebui privita doar ca o recapitulare a principiilor OOP studiate deja in cadrul limbajului C+
Un program este privit in general ca o lista de instructiuni care ii spun calculatorului ce are de facut . Un program este considerat de OOP drept un set de obiecte care lucreaza impreuna cu scopul de a indeplini o sarcina .
Ca exemplu sa luam un model practic extrem de intalnit in aceste zile - construirea unui PC din diferite componente separate ( placa de baa , placa video , procesor , etc. ) . Intern , fiecare dintre aceste componente poate fi extrem de complicata si complexa dar cel ce asambleaza intregul nu are nevoie sa stie exact detaliile de functionare interna a fiecarei componente ci doar cateva date foarte concrete :
se vor potrivi aceste componente la nivel fizic ?
vor putea lucra impreuna din punct de vedere functional aceste componente ?
Odata cunoscute interactiunile dintre componente realizarea sistemului final va fi destul de simpla .
Programarea orientata obiect se muleaza perfect pe exemplul anterior ; programul nostru fiunal se compune din mai multe componente - obiecte care trebuie sa interactioneze cu succes .
Un obiect este un element independent al unui program , care reprezinta un set de caracteristici corelate si este proiectat pentru a realiza anumite sarcini . Obiectele mai sunt numite si instante .
OBIECTE SI CLASE
O clasa este un model ( sablon ) folosit pentru a crea mai multe obiecte cu aceeasi caracteristici .
Clasele inglobeaza toate caracteristicile unui anumit set de obiecte . Atunci cand scriem un program intr-un limbaj OOP nu definim obiecte ci classe de obiecte .
Clasele sunt folosite pentru a crea obiecte cu care vom lucra apoi direct in program .
Cand scriem un program in Java proiectam si construim un set de clase . Atunci cand programul ruleaza din aceste clase sunt create obiecte si apoi acestea sunt folosite . Sarcina programatorului Java este de a crea seturile corecte de clase pentru ca programul sa se comporte corespunzator .
In practica nici macar nu trebuie pornit de la zero cu constructia claselor . Fiecare versiune de Java contine un grup de clase care implementeaza caracteristicile de baza de care au in general nevoie programatorii . Aceste grupe de clase se numesc biblioteci .
O biblioteca de clase este un grup de clase proiectate pentru a fi folosite impreuna cu alte programe . Biblioteca de clase Java standard contine mai multe zeci de clase ( depinzand exact de versiunea limbajului ) .
Biblioteca standard Java se ocupa de mai multe sarcini uzuale , cum ar fi functii matematice , lucru cu text , imagini , sunet interactiune cu utilizatorul si lucru in retea . In multe cazuri bibliotecile Java sunt de ajuns pentru un program de nivel scazut . In acest caz programatorul are ca sarcina doar crearea unei singure clase , folosite pentru a crea obiecte pronind de la clasele Java standard si pentru a administra interactiunile dintre acestea .
Odata cu avansarea in programarea Java se poate crea un set complet nou de clase care sa aiba definite anumite interactiuni intre ele ; acestea pot fi folosite pentru a se alcatui eventual o biblioteca proprie de clase care poate fi reutilizata mai tarziu in alte programe . Aceasta capacitate de reutilizare este unul dintre avantajele majore ale programarii orientate obiect .
|