Documente Academic
Documente Profesional
Documente Cultură
Programarea orientat obiect n Java Clas. Variabile membre. Crearea obiectelor i!uri !rimitive. Constructori. "etode Controlul e#ecu$iei Vectori. Probleme la utili%area obiectelor Pac&ete. 'eglementarea accesului Variabile. 'e(erin$e Variabile membre statice. "etode statice Domeniu de e#isten$
*biectele au stare o !ersoan este un obiect caracteri%at de nume+ v,rst+ C-P Programatorii c&eam metodele obiectelor !entru a reali%a calcule .i a modi(ica aceast stare !rogramator/ ce v,rst ai0 obiect/ am )) !rogramator/ a%i e %iua ta1 obiect/ atunci mi incremente% v,rsta cu 1
)
3n !rogram JAVA
package hello; import java.util.System; class HelloWorld { String myString; void shout () { myString = new String (Hello world); System.out.println (myString); } public static void main (String ! args) { HelloWorld myHelloWorld = new HelloWorld (); myHello"orld.shout (); }
Clas
5ablon !entru generarea obiectelor Java e un limba6 orientat obiect+ deci orice este o clas
class HelloWorld 7
88 numele clasei
Variabil membr
Descrie starea obiectului
Crearea obiectelor
Human bob @ new Human ()> Crearea obiectelor se (ace cu o!eratorul AnewB *biectul @ instan$ a clasei bob este o re(erin$ la obiect (adres) Se asigneaz obiectul construit variabilei bob
))
De ce nu a trebuit s scriem 00
i!uri !rimitive
3nele lucruri sunt !rea sim!le .i !rea (recvent utili%ate ca s le considerm obiecte/ boolean+ s&ort+ bFte+ int+ long+ double+ (loat+ c&ar
Clase Dra!!er
i!urile !rimitive nu sunt clase derivate din clasa *b6ect Pentru a le trata similar cu obiectele le asociem clase Clasa asociat unui ti! !rimitiv se nume.te clas wrapper
Wrapper class Byte Short Integer Long Float Double Character Boolean
Constructor public Byte(byte value) public Short(short value) public Integer(int value) public Long(long value) public Float(float value) public Double(double value) public Character(char value) public Boolean (boolean value)
Accesor method public byte byteValue () public short shortValue() public int intValue () public long longValue () public float floatValue () public double doubleValue () public char charValue () public boolean booleanValue ()
11
"etode
9ti! returnat: 9numele metodei: ( 9!arametri: ) 7 9cor!ul metodei: ; mF=elloLorld.s&out ()> 88 se (olose.te K.K !entru a accesa metoda
1)
Constructori
Constructorii sunt metode s!eciale nu au ti! returnat se (olosesc !entru a ini$iali%a variabilele membre !rimesc !arametri+ au cor! al metodei+ dar nu au return
12
Cor!ul metodei
String firstname (String (ullname) 7 int s!ace @ (ullname.inde#*( (A A)> String Dord @ (ullname.substring (H+ s!ace)> return Dord> ; oric,$i !arametri declar variabile locale returnea% un singur lucru (void @ nu ntorc nimic)
14
1<
Cutie a
null
Cutie b
null null
Cutie a
Cutie b
b = a;
Cutie a
Cutie b
b.deschide ();
Cutie a
Cutie b
1?
Controlul e#ecu$iei
if (bob.age 9 )1) 7 88 nu e(ectuea% ; else if (bob.&asCard ()) 7 88 ( altceva ; else 7 88 n rest ; if (!redicat) 7 ... ; else if (!redicat)) 7 ... ; else if (!redicat2) 7 ... ; else if (!redicat-) 7 ... ; else 7 ... ;
1C
Predicate
Predicatele se evaluea% (ie la true (ie la false (boolean) 9+ :+ @@+ 9@+ :@+ 1
Oucla (or
for (int i @ H > i 9 2 > i JJ) 7 SFstem.out.!rintln (i)> ; 88 ti!re.te H 1 )
for (9ini$iali%are: > 9!redicat: > 9incrementare: ) 7 se e#ecut de (iecare dat o singur dat *!rirea se (ace n momentul c,nd !redicatul devine (alse.
1G
Oucla D&ile
int i @ H> while (i 9 2) 7 SFstem.out.!rintln (i)> i @ i J 1> ; while (9!redicat:) 7 ... ;
)H
Combinarea !redicatelor
TT este 5I logic UU este SA3 logic
Vectori
Vectorii sunt tot obiecte+ dar s!eciale+ !recum ti!urile !rimitive
String WX !ets @ new String W)X> !etsWHX @ new String (AIlu((FB)> !etsW1X @ AS!otB> 88 .irul e#ist de6a StringWX !ets @ new String WX 7AIlu((FB+ AS!otB;> SFstem.out.!rintln (!ets.lengt&)> 88 a(i.ea% )
))
Primitive int a @ 2 J <> *biecte Integer a @ neD Integer (2)> Integer sum @ a.add (<)> Vectori
)2
)4
PacPages (!ac&ete)
!ac&et Y asamblea% m!reun mai multe clase ((i.iere .6ava) numele !ac&etului Y domeniu Internet ce !re(i#ea% numele ales+ de e#em!lu/ edu.colorado.simulations 8&ome8user8classes ro unitbv vega (i.iere .6ava (i.iere .class
package ro.unitbv.vega;
)<
## $isierul% ,est&utie.java ## de'laratie de import pentru toate 'lasele pa'hetului import ro.unit(v.vega.-; ## sau pentru o singura 'lasa% ## import ro.unit(v.vega.'utie;
)?
!ac&etul 6ava.lang este im!ortat im!licit (de e#em!lu+ aici se a(l declarat obiectul SFstem) ti!uri de acces acces !ublic (clas .i !ac&et) acces !rivate (doar n clas) acces !acPage (!ac&et) Y nu se s!eci(ic nimic nainte de cuv,ntul c&eie class> clasa nu mai este vi%ibil n e#terior+ ci numai claselor din interiorul !ac&etului acces !rotected ((olosit !entru e#tinderea obiectelor Y mo.tenire)
)C
Java &ea!
=ea!Mul este o %on de date unde se stoc&ea% re(erin$ele .i obiectele n tim!ul rulrii num #
Integer/ 2
F
Integer/ 2
null
)G
'e(erin$e null
'e(erin$ele neini$iali%ate sunt H (null+ adic re(erire s!re adresa H) Se (olose.te o!eratorul K@K !entru a asigna un obiect unei re(erin$e null nu este un obiect (nu are metode .i nici variabile membre) 3nele metode !ot modi(ica obiectul 3n singur obiect !oate avea mai multe re(erin$e+ aten$ie la e(ectele colaterale %.intValue () generea% o eroare (mai e#act+ -ullPointerN#ce!tion)
2H
i!uri re(erin$
Cunoscute sub denumirea de *b6ects * instan$ a unui obiect se creea% (olosind new Cuv,ntul c&eie new/ 1.Aloc s!a$iu de memorie !entru obiect ).C&eam constructorul s!eci(icat du! new 2.Zntoarce o re(erin$ la noul obiect creat
21
* variabil membru static este comun !entru toate instan$ele clasei (toate obiectele de acel ti!)
"etode neMstatice
!ublic class Oean 7 !rivate boolean !lanted @ (alse> !ublic void !lantOean () 7 !lanted @ true> ; !ublic static void main (StringWX args) 7 Oean bean @ neD Oean ()> bean.!lantOean ()> // invocat la instan ; ;
2<
"etode statice
!ublic class Oean 7 !rivate boolean !lanted @ (alse> !ublic static void !lantOean (Bean bean) 7 bean.!lanted @ true> ; !ublic static void main (StringWX args) 7 Oean bean @ neD Oean ()> Bean.!lantOean (bean)> // invocat la clas // bean.plantBean (bean !" e permis #ar nerecoman#at$ ; ;
2?
'e(erin$e
'e(erin$ele au un domeniu de e#isten$ (sco!e) Domeniul se de(ine.te cu acoladele 7 .i ; 'e(erin$ele e#ist de la declararea lor .i !,n la terminarea domeniului (acolad nc&is) Variabilele membre !ot (i re(erite n toat clasa Parametrii !ot (i re(eri$i n toat metoda
2C
N#em!lu de domenii
!ublic class Sco!eN#am!le 7 !rivate int globalIield> !ublic int met&od (int !arameter) 7 int localVar1> i( (globalIield : H) 7 int #> ; int localVar)> ; ;
2E
4H