tipuri de date in java.pdf

Upload: ana-sacui

Post on 01-Mar-2018

242 views

Category:

Documents


0 download

TRANSCRIPT

  • 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