View
238
Download
0
Category
Preview:
Citation preview
7/25/2019 Tipuri de date in Java.pdf
1/40
1
Structuri de Date n JAVA (II)
Programarea orientat obiect n JavaClas. Variabile membre. Crearea obiectelor
i!uri !rimitive. Constructori. "etodeControlul e#ecu$ieiVectori. Probleme la utili%area obiectelorPac&ete. 'eglementarea accesuluiVariabile. 'eerin$eVariabile membre statice. "etode staticeDomeniu de e#isten$
7/25/2019 Tipuri de date in Java.pdf
2/40
Programarea *rientat *biect
*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 modiica aceaststare
!rogramator/ ce v,rst ai0 obiect/ am !rogramator/ a%i e %iua ta obiect/ atunci mi incremente% v,rsta cu 1
7/25/2019 Tipuri de date in Java.pdf
3/40
2
3n !rogram JAVA
packagehello;
importjava.util.System;
classHelloWorld{
StringmyString;
voidshout() {
myString = newString(Hello world);
System.out.println (myString);}
publicstaticvoidmain(String! args) {
HelloWorldmyHelloWorld= newHelloWorld();
myHello"orld.shout ();}
}
7/25/2019 Tipuri de date in Java.pdf
4/404
Clas
5ablon !entru generarea obiectelorJava e un limba6 orientat obiect+ deci orice este oclas
classHelloWorld7 88 numele clasei
... 9deini$ii de metode i variabile membre: ...
;
7/25/2019 Tipuri de date in Java.pdf
5/40
;
9ti!ul clasei: 9numele variabilei:>
7/25/2019 Tipuri de date in Java.pdf
6/40?
Crearea obiectelor
Humanbob@ newHuman()>
Crearea obiectelor se ace cu o!eratorul newB*biectul @ instan$ a claseibobeste o reerin$ la obiect (adres)
Se asigneazobiectul construit variabilei bob
9ti!: 9nume variabil: @ 9obiect nou:>
7/25/2019 Tipuri de date in Java.pdf
7/40
De ce nu a trebuit s scriem
bob.age @ ne int ()> 00
7/25/2019 Tipuri de date in Java.pdf
8/40
E
i!uri !rimitive
-u oriceeste un obiect3nele lucruri sunt !rea sim!le i !rea recventutili%ate ca s le considerm obiecte/
boolean+ s&ort+ bFte+ int+ long+ double+ loat+c&ar
7/25/2019 Tipuri de date in Java.pdf
9/40
G
Clase ra!!er
i!urile !rimitive nu sunt clase derivate din clasa *b6ectPentru a le trata similar cu obiectele le asociem claseClasa asociat unui ti! !rimitiv se numete clas wrapper
Constructor Accesor method
Byte public Byte(byte value) public byte byteValue ()
Short public Short(short value) public short shortValue()
Integer public Integer(int value) public int intValue ()
Long public Long(long value) public long longValue ()Float public Float(float value) public float floatValue ()
Double public Double(double value) public double doubleValue ()
Character public Character(char value) public char charValue ()
Boolean public Boolean (boolean value) public boolean booleanValue ()
Wrapperclass
7/25/2019 Tipuri de date in Java.pdf
10/40
1H
olosirea claselor ra!!er
inti @ 4>int6>
Integer e#am!le @ newInteger (i)> 88 e#am!le co!ia%a valoarea 46 @ e#am!le.intValue ()> 88 6 este acum 4
Integer a @ >Integer b @ 1>Integer c @ a b> 88 este o absurditate>
88 KK nu se !oate olosiint r @ a.intValue () b.intValue ()>Integer d @ newInteger (r)> 88 varianta corect
7/25/2019 Tipuri de date in Java.pdf
11/40
11
Variabila membr myString
packagehello;
importjava.util.System;
classHelloWorld{
StringmyString;
voidshout() {
myString = newString(Hello world);
System.out.println (myString);}
publicstaticvoidmain(String! args) {
HelloWorldmyHelloWorld= newHelloWorld();
myHello"orld.shout ();}
}
7/25/2019 Tipuri de date in Java.pdf
12/40
1
"etode
Procesea% starea obiectului
9ti! returnat: 9numele metodei: ( 9!arametri: ) 79cor!ul metodei:
;
mF=elloLorld.s&out ()>88 se olosete K.K !entru a accesa metoda
7/25/2019 Tipuri de date in Java.pdf
13/40
12
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
7/25/2019 Tipuri de date in Java.pdf
14/40
14
Cor!ul metodei
Stringfirstname(Stringullname) 7ints!ace @ ullname.inde#* ( )>
Stringord @ ullname.substring (H+ s!ace)>returnord>
;
oric,$i !arametrideclar variabile localereturnea% un singur lucru (void @ nu ntorc nimic)
7/25/2019 Tipuri de date in Java.pdf
15/40
1 88 variabila c are valoarea null...
c @ newCutie()> 88 deMabia aici sMa creat obiectul
oate variabilele declarate au im!licit valoarea H'eerin$ele se ini$iali%ea% tot cu H (null)Dac olosim o reerin$ neMcreeat nc se vaarunca o e#ce!$ie NullPointerException
7/25/2019 Tipuri de date in Java.pdf
16/40
1?
Cutie a;Cutie b;
a = new Cutie ();a.deschide ();
b = a;
b.deschide ();
nullCutie a Cutie b null
Cutie a Cutie b null
Cutie a Cutie b
Cutie a Cutie b
7/25/2019 Tipuri de date in Java.pdf
17/40
1
Controlul e#ecu$iei
if(bob.age 9 1) 7 if(!redicat) 788 nu eectuea% ...
; elseif(bob.&asCard ()) 7 ; elseif(!redicat) 788 altceva ...; else7 ; elseif(!redicat2) 7
88 n rest ...
; ; else if(!redicat-) 7...
; else7 ... ;
7/25/2019 Tipuri de date in Java.pdf
18/40
1E
Predicate
Predicatele se evaluea% ie la trueie la false(boolean)
9+ :+ @@+ 9@+ :@+
bo#.isNm!tF ()
bo#.numberOoos () @@ H(bo#.numberOoo () : 1)bo#.numberOoos () @ "AQR-3"ON'RO**S
7/25/2019 Tipuri de date in Java.pdf
19/40
1G
Oucla or
for(inti @ H > i 9 2 > i ) 7SFstem.out.!rintln (i)> 88 ti!rete H 1
;
for(9ini$iali%are: > 9!redicat: > 9incrementare: ) 7se e#ecut de iecare dat
o singur dat*!rirea se ace n momentul c,nd !redicatul devinealse.
7/25/2019 Tipuri de date in Java.pdf
20/40
H
Oucla &ile
inti @ H>while(i 9 2) 7
SFstem.out.!rintln (i)>i @ i 1>;
while(9!redicat:) 7...;
7/25/2019 Tipuri de date in Java.pdf
21/40
1
Combinarea !redicatelor
TT este 5I logicUU este SA3 logic
a. bob.age :@ 1 TT bob.&asCard ()
b. someone.name.euals(OobB)c. (true UU alse) TT true
7/25/2019 Tipuri de date in Java.pdf
22/40
Vectori
Vectorii sunt tot obiecte+ dar s!eciale+ !recumti!urile !rimitive
StringWX !ets @ newStringWX>!etsWHX @ newString(luFB)>!etsW1X @ S!otB> 88 irul e#ist de6a
StringWX !ets @ newStringWX 7luFB+ S!otB;>SFstem.out.!rintln (!ets.lengt&)> 88 aiea%
7/25/2019 Tipuri de date in Java.pdf
23/40
2
C,te ti!uri avem 0
Primitive int a @ 2
*biecte Integer a @ ne Integer (2)> Integer sum @ a.add ( Vectori
7/25/2019 Tipuri de date in Java.pdf
24/40
4
*biectele !ot cau%a !robleme
!etsW2X :: !rogramul se o!rete+ se arunce#ce!$ia ArraF*ut*Oounds
StringWX str>str.lengt& :: o!rire+ arunc -ullPointerN#ce!tion
Integer a @ ne Integer (2)> 88 a !rimete 2a.add ( 88 a rm,ne 2a @ a.add ( 88 a !rimete E
7/25/2019 Tipuri de date in Java.pdf
25/40
!ublic void !lantOean () 7
!lanted @ true>;
!ublic static void main (StringWX args) 7Oean bean @ ne Oean ()>
bean.!lantOean ()> // invocat la instan;
;
7/25/2019 Tipuri de date in Java.pdf
36/40
2?
"etode statice
!ublic class Oean 7!rivate boolean !lanted @ alse>!ublic staticvoid !lantOean (Bean bean) 7
bean.!lanted @ true>;
!ublic static void main (StringWX args) 7Oean bean @ ne Oean ()>
Bean.!lantOean (bean)> // invocat la clas// bean.plantBean (bean!" e permis #ar nerecoman#at$;
;
7/25/2019 Tipuri de date in Java.pdf
37/40
2
'eerin$e
oate obiectele trimise ca !arametri ctre ometod sunt trimise ca reerin$e
'eerin$ele au un domeniu de e#isten$ (sco!e)Domeniul se deinete cu acoladele 7 i ;'eerin$ele e#ist de la declararea lor i !,n la
terminarea domeniului (acolad nc&is)Variabilele membre !ot i reerite n toat clasaParametrii !ot i reeri$i n toat metoda
7/25/2019 Tipuri de date in Java.pdf
38/40
2E
N#em!lu de domenii
!ublic class Sco!eN#am!le 7!rivate int globalield>
!ublic int met&od (int !arameter) 7int localVar1>i (globalield : H) 7
int #>;int localVar>
;;
7/25/2019 Tipuri de date in Java.pdf
39/40
2G
3n alt e#em!lu de domenii
!ublic class Sco!eN#am!le 7!rivate int globalield>
!ublic int met&od (int !arameter) 7int globalield> // posibil% #ar se pier#e vizibilitatea$int localVar>i (this.globalield : H) 7// accesarea variabilei membre
int #>
;int localVar> // #eclaraie ilegal& acelai #omeni'$;
;
7/25/2019 Tipuri de date in Java.pdf
40/40
4H
Preci%ia loating !oint
SFstem.out.!rintln (1.HH M .4)>88 H.?1HHHHHHHHHHHHHHHH1
SFstem.out.!rintln (1.HH Y G [ .1H)>88 H.HGGGGGGGGGGGGGGGGG
Recommended