Teoria Modulo 1

Embed Size (px)

Citation preview

  • 7/25/2019 Teoria Modulo 1

    1/200

    Master CERTIFICADO EXPERTO JAVA - JAVAEE - STRUTS - XML

    Desarrollo de AplicacionesJSE

  • 7/25/2019 Teoria Modulo 1

    2/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    5

    Master Certificado Experto

    Master CERTIFICADO EXPERTO

    JAVA

    - JAVAEE - STRUTS - XML

    SPRING - AJAX

    Desarrollo de Aplicaciones JSE

    J%.

  • 7/25/2019 Teoria Modulo 1

    3/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A

    Master Certificado Experto

    INDICE

    MRSM"D IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A?I MR:TUSV""MWR L XLNL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII @

    XTD Y XSZ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >

    DSM"MURD[ XLNL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?7

    \LT]L\D "U^^D":UT IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?7

    "LTL":DT_[:M"L[ SD XLNL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??

    5I4 "^L[D[ ` U]XD:U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?5

    SD"^LTL"MUR SD "^L[D[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?5

    SD"^LTL"MUR SD JTUJMDSLSD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?A

    SD"^LTL"MUR SD 8D:USU[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?,

    SD"^LTL"MUR SD "UR[:TV":UTD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?a

    "TDL"MWR SD U]XD:U[ ` LS8MRM[:TL"MWR SD 8D8UTML IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?+

    L""D[U L 8MD8]TU[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?6

    DR"LJ[V^L"MUR IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?6

    AI4 MSDR:MBM"LSUTD[* JL^L]TL[ "^LND ` :MJU[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 55

    TD\^L[ JLTL RU8]TLT VR MSDR:MBM"LSUT IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 55

    JL^L]TL[ "^LND IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 55

    :MJU[ JTM8M:MNU[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5A

    ,I4 UJDTLSUTD[ ` "UR:TU^ SD B^VXU IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5a

    UJDTLSUTD[ 8L:D8b:M"U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5a

    UJDTLSUTD[ MR"TD8DR:U ` SD"TD8DR:U IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5a

    UJDTLSUTD[ ]M: L ]M: IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5a

    UJDTLSUTD[ SD SD[J^LcL8MDR:U IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5+

    UJDTLSUTD[ ^W\M"U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5@

    UJDTLSUTD[ TD^L"MURL^D[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5@

    "URSM"MURL^ MB 4D^[D IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5@

    [dM:"e4"L[D IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 56

    ]V"^D BUT IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A7

    ]V"^D BUT 4 DL"e IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A?

    ]V"^D deM^D IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A?]V"^D SU4deM^D IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A5

  • 7/25/2019 Teoria Modulo 1

    4/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,

    Master Certificado Experto

    [DR:DR"ML[ ]TDLZ ` "UR:MRVD IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A5

    aI4 LTTL`[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A,

    VRL SM8DR[MWR IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A,

    NLTML[ SM8DR[MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII A>

    +I4 "^L[D[ LNLRcLSL[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ,,

    eDTDR"ML IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ,,

    [U]TDD["TM:VTL SD 8f:USU[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ,+

    [U]TD"LT\L SD 8f:USU[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ,>

    [U]TD"LT\L SD "UR[:TV":UTD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII a7

    ^L "^L[D U]XD": IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII a5

    "^L[D[ L][:TL":L[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII a6

    MR:DTBL"D[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +5

    JU^M8UTBM[8U IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +@

    "^L[D[ DRNU^NDR:D[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII @A

    LV:U]UgMR\IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII @,

    TD"VT[U[ D[:b:M"U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII @a

    JL^L]TL "^LND BMRL^ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII @>

    :MJU[ DRV8DTLSU[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 6?

    "UR[V^:L LJM IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 6,@I4 Dg"DJ"MURD[ ` L[DT"MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 6@

    "LJ:VTLT Dg"DJ"MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 6@

    8LRDXU SD Dg"DJ"MURD[ 8h^:MJ^D[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >7

    LJM Dg"DJ:MUR IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >7

    JTUJL\LT Dg"DJ"MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >?

    Dg"DJ"MURD[ JDT[URL^McLSL[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >5

    \D[:MWR SD L[DT"MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >A]VDRL[ JTb":M"L[ "UR L[DT"MURD[IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >,

    eL]M^M:LT ` SD[eL]M^M:LT L[DT"MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >,

    6I4 "U^D""MURD[ ` \DRDTM"U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >+

    LJM "U^^D":MUR[IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >+

    JTMR"MJL^D[ "U^D""MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >@

    [D: IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >6

    ^M[: IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >6

    8LJ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII >>

  • 7/25/2019 Teoria Modulo 1

    5/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a

    Master Certificado Experto

    UTSDRLT "U^D""MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?77

    MR:DTBL"D "U8JLTL]^D IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?77

    MR:DTBL"D "U8JLTL:UT IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?75

    \DRfTM"U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?7,

    >I4 8D"LRM[8U[ SD DR:TLSL # [L^MSL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?7>

    DR:TLSL SD LT\V8DR:U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?7>

    JTUJMDSLSD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?7>

    BVRSL8DR:U[ SD DR:TLSL ` [L^MSL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ???

    B^VXU[ SD ]`:D[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ???

    B^VXU[ SD "LTL":DTD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??5

    "^L[D[ M8JUT:LR:D[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??A

    JTU"D[LT [:TDL8[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??a

    XDTLTiVML SD "^L[D[ MRJV:[:TDL8 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??@

    XDTLTiVML SD "^L[D[ UV:JV:[:TDL8 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??@

    XDTLTiVML SD "^L[D[ TDLSDT IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??@

    XDTLTiVML SD "^L[D[ dTM:DT IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??6

    [DTML^McL"MWR IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ??6

    DR:TLSL ` [L^MSL SD "UR[U^L IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?57

    DR:TLSL ` [L^MSL SD LT"eMNU[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?5A"MDTTD SD TD"VT[U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?5+

    ?7I4 MR:DTBL"D \TbBM"L "UR [dMR\ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?5>

    iVD D[ [dMR\ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?5>

    "UR:DRDSUTD[ [dMR\ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?A7

    LS8MRM[:TLSUTD[ SD SM[DjU IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?Aa

    "U8JURDR:D[ [dMR\ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?,a

    "TDLT MR:DTBL"D[ \TLBM"L[ SD V[VLTMU IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?,@DNDR:U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?a7

    "TDL"MWR SD 8DRh[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?a@

    ??I4 eM^U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?+?

    BUT8L[ SD "TDLT VR eM^U IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?+?

    LTTLR"LT VR eM^U IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?+5

    "M"^U SD NMSL SD VR eM^U IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?+A

    J^LRMBM"LT eM^U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?+,

    [MR"TURMcL"MWR IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?+a

  • 7/25/2019 Teoria Modulo 1

    6/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +

    Master Certificado Experto

    M:DTL"MWR DR:TD eM^U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?+@

    ?5I4 "URDgMURD[ DR TDS "UR [U"ZD:[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?@A

    "TDLT [U"ZD:[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?@A

    [DTNMSUT ` "^MDR:D IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?@A

    ?AI4 "URDgMWR "UR ]L[D[ SD SL:U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?@@

    LJM XS]" IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?@@

    :MJU[ SD "UR:TU^LSUTD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?@@

    L]TMT ` "DTTLT "URDgMURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?67

    "TDLT "UR[V^:L[ "UR [i^ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?6?

    JTU"D[LT SL:U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?6,

    8LRDXU SD :TLR[L""MURD[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?6a

    8D:LSL:U[ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?6a

    ?,I4 RUNDSLSD[ XLNL 6 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?66

    DCG%(K9.)(K -$E02$ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?66

    [&%($EK IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ?6>

    T(

    M)&(%A

  • 7/25/2019 Teoria Modulo 1

    7/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    @

    Master Certificado Experto

    1. INTRODUCCIN A JAVA

    El lenguaje de programacin Java es un lenguaje orientado a objetoslo que quieredecir que todos los recursos que creamos y administramos los vamos a considerar

    como objetos. Una factura ser un objeto, un cliente ser un objeto, una conexin auna base de datos tambin ser considerada como un objeto.

    Otra caracterstica importante de Java es que es un lenguaje independiente de laplataforma. En otros lenguajes de programacin, por ejemplo C, el hecho de crearuna aplicacin consta de una serie de pasos:

    1. Se crea el cdigo fuente de la aplicacin2. Se compila para un determinado Sistema Operativo (Plataforma) para

    conseguir el archivo binario (0,1)3. Se linka el cdigo para ese S.O. para obtener el archivo ejecutable (.exe)

    El resultado es que si necesitamos que nuestra aplicacin est disponible para variasplataformas hay que generar un archivo ejecutable para cada una de ellas.

    Grfico 1. El cdigo fuente se compila para cada plataforma

  • 7/25/2019 Teoria Modulo 1

    8/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    6

    Master Certificado Experto

    Grfico 2. Se efecta el linkado para cada plataforma

    Grfico 3. El ejecutable se distribuye a cada plataforma

    Como decamos, Java es un lenguaje independiente a la plataforma esto implica unareduccin considerable de trabajo a la hora de crear una aplicacin.

    1. Se crea el cdigo fuente de la aplicacin (archivos .java)2. Se compila para obtener archivos bytecode (.class)3. No se necesita obtener un ejecutable, ya que los archivos bytecode los

    interpretara la maquina virtual de java (JVM Java Virtual Machine)

    El archivo bytecode obtenido se puede ejecutar en cualquier plataforma, para ello tansolo es necesario tener instalada la maquina virtual de Java adecuada al S.O.instalado.

  • 7/25/2019 Teoria Modulo 1

    9/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    >

    Master Certificado Experto

    Grfico 4. El cdigo fuente se compila independiente de la plataforma

    Grfico 5. El archivo Bytecode puede ser interpretado por distintas plataformas

    JRE Y JDK

    Necesitamos tener una maquina virtual de Java (JVM) para poder ejecutar nuestrasaplicaciones, esta se puede descargar dependiendo del perfil del usuario:

    JRE (Java Runtime Environment); Sera necesario nicamente para ejecutaruna aplicacin. Esta sera la versin que se deben descargar los clientes,

    usuarios finales de nuestra aplicacin. Incluye nicamente la JVM y unconjunto de libreras para poder ejecutar.

    JDK (Java Development Kit); Estos son los recursos que necesitamos losdesarrolladores ya que incluye lo siguiente:

    o JREo Compilador de javao Documentacin del API (todas las libreras de Java)o Otras utilidades por ejemplo para generar archivos .jar, crear

    documentacin, efectuar un debug.o Tambin incluye ejemplos de programas.

  • 7/25/2019 Teoria Modulo 1

    10/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ?7

    Master Certificado Experto

    EDICIONES JAVA

    El lenguaje Java se distribuye en tres ediciones:

    JSE (Java Standard Edition); Es la edicin ms bsica de Java pero nomenos importante. Recoge los fundamentos bsicos del lenguaje pero solo nospermite desarrollar aplicaciones locales, aplicaciones escritorio y applets(aplicaciones que se ejecutan en el navegador del cliente).

    JEE (Java Enterprise Edition); Esta edicin es la ms completa de todas.Gracias a ella podremos desarrollar aplicaciones empresariales tales comoaplicaciones web, aplicaciones eCommerce, aplicaciones eBusiness, ...etc.

    JME (Java Micro Edition); Con esta edicin podremos desarrollar aplicacionespara micro dispositivos tales como telfonos mviles, PDAs, sistemas denavegacin, ...etc.

    Grfico 6. Ediciones Java

    GARBAGE COLLECTOR

    Cada vez que creamos un objeto este reside en la memoria de nuestro equipo. Enotros lenguajes es necesario destruir dichos objetos cuando ya no son necesarios.

    Java incorpora una ventaja a travs de un hilo conocido como Garbage Collector, lopodramos traducir como el recolector de basura.

  • 7/25/2019 Teoria Modulo 1

    11/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ??

    Master Certificado Experto

    Dicho proceso se lanza de vez en cuando de una forma similar a la funcin de salvarde un editor de texto. Este proceso recorre la memoria localizando aquellos objetosque ya no son necesarios porque no se van a utilizar ms y los elimina.

    El modo como selecciona dichos objetos lo estudiaremos en captulos siguientes.

    CARACTERSTICAS DE JAVA

    Resumimos las caractersticas principales del lenguaje de programacin Java:

    Orientado a objetos; como se mencionaba al inicio del captulo, en Java todose considera como un objeto. La OO facilita la reutilizacin de cdigo como sever ms adelante.

    Distribuido; Java permite desarrollar aplicaciones distribuidas, esto significaque parte de la aplicacin puede alojarse en un servidor de Madrid y otra partepuede residir en otro servidor de Barcelona por ejemplo.

    Simple; Aunque os parezca mentira en este momento, Java es un lenguajemuy simple de programar. Adems, contamos con muchas libreras yadesarrolladas, listas para utilizarse y lo ms importante una buenadocumentacin de uso.

    Multihilo; El lenguaje Java funciona mediante hilos no a travs de procesoscomo otros lenguajes. Esto hace que sea ms rpida y ms segura suejecucin.

    Seguro; En el curso iremos viendo las diversas formas de implementarseguridad en aplicaciones Java.

    Independiente de la plataforma; como ya comentamos anteriormente.

    RECUERDA QUE...

    Java es un lenguaje multiplataforma, por lo cual solo debes instalar el jdkadecuado a tu sistema operativo.

    El lenguaje Java se distribuye en tres ediciones: JSE, JEE, JME. No debes preocuparte por eliminar los objetos creados, el Garbage

    Collector se encarga de esta tarea.

  • 7/25/2019 Teoria Modulo 1

    12/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ?5

    Master Certificado Experto

    2.- CLASES Y OBJETOS

    Un objetoes un recurso dinmico que se crea y se almacena en memoria durante untiempo determinado. A los objetos tambin se les conoce con el nombre de instancias

    de clase porque realmente esto es lo que son, una copia de la clase con unos valoresdeterminados.

    Una clase la podramos definir como la plantilla a partir de la cual se va a generar elobjeto.

    Como ejemplo, podramos definir una clase Cliente donde declararamos todas laspropiedades y mtodos comunes a todos los clientes. Pues bien, un objeto o instanciade tipo cliente sera un cliente personalizado con su propio Nif, su nombre, sudireccin, ...etc.

    La clase es el archivo .java para definir un cliente y los objetos son los recursosdinmicos que se generan en la memoria.

    DECLARACION DE CLASES

    Para declarar una clase nos debemos ajustar a la sintaxis de Java. Dicha sintaxis nosindica que el archivo en el cual declaramos la clase se debe seguir este orden.

    1. Declaracin del paquete; Un paquete cumple una funcin similar a unacarpeta en Windows. El paquete nos sirve para organizar nuestros recursos yadems poder implementar niveles de acceso como veremos ms adelante.

    2. Importaciones; En una clase podremos utilizar otras clases ya creadas. Estaspueden ser del propio API o tambin clases desarrolladas por terceraspersonas. Para poder acceder a otras clases es necesario importarlaspreviamente.

    3. Declaracin de la clase; Aqu se definirn los recursos de la clase.

  • 7/25/2019 Teoria Modulo 1

    13/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ?A

    Master Certificado Experto

    Grfico 7. Ejemplo declaracin de clase

    Como vemos en el ejemplo, una clase puede tener los siguientes recursos:

    Propiedades; Las propiedades o tambin llamadas atributos o campos recogen las

    caractersticas de la clase. Segn nuestro ejemplo un cliente se representa por su nif,nombre y direccin.

    Constructores; Los constructores son un tipo de mtodo especifico que se invocarcada vez que vayamos a crear un objeto o instancia de tipo Cliente.

    Mtodos; Son las acciones que podremos llevar a cabo sobre un cliente. En estecaso, mostrar sus datos.

    A lo largo del captulo aprenderemos a crear y gestionar estos recursos.

    DECLARACION DE PROPIEDADES

    Una propiedad se entiende como una variable global a la cual se puede acceder desdecualquier otro recurso dentro de la misma clase y dependiendo del modo de acceso,tambin se podr acceder a ella desde otras clases.

    La sintaxis para declarar una propiedad es la siguiente:

    acceso tipo nombreVariable;

  • 7/25/2019 Teoria Modulo 1

    14/200

  • 7/25/2019 Teoria Modulo 1

    15/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ?a

    Master Certificado Experto

    acceso tipoDevuelto nombreMetodo(){

    }

    Ejemplos:

    public int sumar(int num1, int num2){

    return n1 + n2;

    }

    public String getNombre(){

    return nombre;

    }

    Como observamos en los ejemplos, cuando un mtodo devuelve un dato incluimos laclausula return. Esta instruccin lo que hace es devolver un dato a la sentencia queha invocado al mtodo.

    En el ejemplo del mtodo sumar, se han incluido dos argumentos en el mtodo. Los

    argumentos son los valores que recibe el mtodo para procesarlos. Los argumentosno son obligatorios, es decir, hay mtodos que declaran argumentos y mtodos queno. En este ltimo caso los parntesis siguen siendo obligatorios.

    Tambin destacamos que todo el cuerpo del mtodo (lgica de negocio) va encerradoentre llaves.

    DECLARACION DE CONSTRUCTORES

    Un constructor lo hemos definido como una especie de mtodo que se invoca a la horade crear un objeto.

    La sintaxis para definir un constructor es diferente a la del mtodo ya que nunca puededevolver un dato y tampoco se declara como tipo void.

    acceso nombreClase(){

    }

  • 7/25/2019 Teoria Modulo 1

    16/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ?+

    Master Certificado Experto

    El constructor debe tener obligatoriamente el mismo nombre que la clase. Tambinpuede ser que reciba argumentos o no. Estos no son obligatorios al igual que losmtodos.

    Ejemplos:

    public Cliente(){

    }

    public Cliente(String nif, String nombre, String direccion){

    // Asignamos los valores recibidos a las propiedades del objeto

    this.nif = nif;

    this.nombre = nombre;

    this.direccion = direccin;

    }

    CREACIN DE OBJETOS Y ADMINISTRACIN DE MEMORIA

    A la hora de crear un objeto utilizamos la palabra new seguida del constructor.

    Ejemplo: new Cliente();

    Por definicin, en Java, los objetos son annimos, que significa realmente esto?

    Cuando creamos una variable siempre le asignamos un nombre de esta formapodemos acceder a dicha variable a travs de dicho nombre. Pues bien, cuandocreamos un objeto como hemos hecho en el ejemplo anterior, no asignamos unnombre al objeto por lo cual lo nico que se sabe es la direccin de memoria donde ha

    sido generado.

    De esta forma no podremos acceder a dicho objeto. Para solucionar este problemavamos a crear una variable del tipo de la clase que vamos a instanciar yalmacenaremos en ella la direccin de memoria del objeto para que nos sirva dereferencia.

    Ejemplo: Cliente c = new Cliente();

    De esta forma ahora podremos acceder al objeto a travs de la variable c.

  • 7/25/2019 Teoria Modulo 1

    17/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ?@

    Master Certificado Experto

    La memoria se divide en 2 partes:

    Stack(Pila); donde se almacenan las variables

    Heap(Montn); donde se almacenan los objetos

    Si creamos dos objetos de tipo Cliente:

    Este es el aspecto que presentara la memoria:

    C1

    C2

    #1234

    #5678

    Stack Heap

    Como vemos cada variable apunta a su propio objeto, esto permite tener variosobjetos del mismo tipo en memoria.

    Para acceder al objeto simplemente pondremos el nombre de la variable c1 o c2. Siqueremos acceder a un recurso determinado del objeto utilizaremos el operadormiembro (.).

    Ejemplo:

    El mbito del objeto queda comprometido al mbito de la variable. Cuando la variablepierde su mbito por ejemplo se haba declarado dentro de un mtodo y la ejecucindel mtodo ha finalizado. La siguiente vez que se ejecute el Garbage Collector

    eliminar dicha variable de memoria y de esta forma el objeto perder su referencia

    #1234

    #5678

    nifnombre

    direccionmostrarDatos()

    nifnombredireccionmostrarDatos()

  • 7/25/2019 Teoria Modulo 1

    18/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ?6

    Master Certificado Experto

    por lo cual no se podr volver a referenciar. El Garbage Collector tambin elimina elobjeto por esta razn.

    Todo el cdigo fuente de este ejemplo os lo podis descargar de la plataforma en elenlace: Ejemplo clientes.rar

    ACCESO A MIEMBROS

    Para declarar el acceso a un miembro de la clase podemos utilizar los siguientesmodos:

    Modo de

    Acceso

    Desde la

    misma clase

    Desde el

    mismo paquete

    Subclase Resto de

    paquetespublic SI SI SI SIprotected SI SI SI NOdefault SI SI NO NOprivate SI NO NO NO

    Como podemos observar estn organizados de mayor a menor acceso. Expliquemoscada uno de ellos:

    public; un recurso definido como public se considera pblico por lo cual

    permite el acceso desde cualquier otro recurso ya sea declarado en la mismaclase, en otra clase del mismo paquete, desde una subclase (herencia que sever posteriormente) o incluso desde otras clases declaradas en otrospaquetes.

    protected; un recurso definido como protected se considera protegido. Estemodo permite el acceso desde cualquier otro recurso ya sea declarado en lamisma clase, en otra clase del mismo paquete, desde una subclase. En esteltimo caso es lo mismo si la subclase se encuentra en el mismo paquete o enotro.

    default; significa no establecer un modo de acceso. De esta forma solo se

    podr invocar el recurso desde la misma clase o desde otra clase declarada enel mismo paquete.

    private; un recurso privado solo permite el acceso desde la misma clase dondeha sido declarado.

    ENCAPSULACION

    Una clase encapsulada es una clase que declara todas sus propiedades como

    privadas y solo se puede acceder a ella a travs de los mtodos get() y set().

  • 7/25/2019 Teoria Modulo 1

    19/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ?>

    Master Certificado Experto

    Toda propiedad privada va a tener asociados dos mtodos pblicos (get y set) a travsde los cuales vamos a poder modificar el valor de la propiedad (set) o recuperar suvalor (get).

    Veamos un ejemplo de una clase no encapsulada:

    Grfico 8. Clase no encapsulada

    Grfico 9. Crear un objeto con datos errneos

    Al generar una instancia de una clase no encapsulada, como las propiedades sonpublicas puedo acceder directamente a ellas y establecer cualquier valor mientras quesea un numero entero.

    El resultado al mostrar la fecha ser: 78/0/-12

    Para evitar la introduccin de datos errneos optamos por encapsular la clase, de estaforma tengo que acceder a las propiedades a travs del mtodo setXXX() en el cual

  • 7/25/2019 Teoria Modulo 1

    20/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    57

    Master Certificado Experto

    puedo incorporar la lgica de negocio necesaria para poder controlar si el valorintroducido es correcto.

    Grfico 10. Fragmento de una clase encapsulada

    Si ahora intentamos introducir los valores anteriores el cdigo no lo permitir.

    Grfico 11. Fragmento de acceso a la clase encapsulada

    El resultado tras la ejecucin de este ejemplo ser: 0/0/0

    Todo el cdigo fuente de este ejemplo os lo podis descargar de la plataforma en elenlace: EjemploEncapsulacion.rar

  • 7/25/2019 Teoria Modulo 1

    21/200

  • 7/25/2019 Teoria Modulo 1

    22/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    55

    Master Certificado Experto

    3.- IDENTIFICADORES, PALABRAS CLAVE Y TIPOS

    REGLAS PARA NOMBRAR UN IDENTIFICADOR

    Consideramos un identificador al nombre de una clase, propiedad o mtodo.

    Las reglas a seguir para nombrar un identificador son las siguientes:

    Debe comenzar por una letra (mayscula o minscula), guin bajo (_) osmbolo de dlar ($).

    Son case sensitive por lo que se diferencias las letras maysculas yminsculas. Se consideran 2 variables diferentes: nombre y Nombre.

    No existe una longitud mxima.

    Ejemplos:

    identifieruserNameuser_name

    _sys_var1$change

    PALABRAS CLAVE

    Como todos los lenguajes de programacin, Java define una serie de palabras claveque son reservadas para uso interno. No podremos utilizar ninguna palabra de estalista como identificador.

    Grfico 12. Palabras clave

  • 7/25/2019 Teoria Modulo 1

    23/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    5A

    Master Certificado Experto

    TIPOS PRIMITIVOS

    Java define ocho tipos de datos primitivos. Los cuales se dividen a su vez en 4categoras:

    Enteros: byte, short, int y long

    Decimales: float y double

    Lgico: boolean

    Textual: char

    Enteros: byte, short, int y long

    Los enteros primitivos pueden utilizar 3 formatos: decimal, octal y hexadecimal.

    2 La representacin decimal del numero 2.

    077 Si el numero comienza por 0 indica un formato octal

    0xBAAC Si el numero comienza por 0x indica un formato hexadecimal

    El entero por defecto es el tipo int. Lo que quiere decir que cualquier numero entero serepresentar en 32 bits por defecto.

    Los valores enteros de tipo long deben ir con el sufijo L o l.

    Los diferentes tipos enteros representan los siguientes rangos:

    Longitud Nombre Rango8 bits byte 27a 27 -116 bits short 215a 215 -132 bits int 231a 231-164 bits long 263a 263 -1

    Decimales: float y double

    Los decimales primitivos pueden utilizar 2 formatos: simple y exponencial.

    3.14 Un valor simple decimal (un double)

    6.02E23 Un numero decimal expresado con formato exponencial.

    Los valores de tipo float deben ir con el sufijo F o f.

    El decimal por defecto es el tipo double.

    Los diferentes tipos decimales representan los siguientes rangos:

    Longitud Nombre Rango

    32 bits float 2 a 2 -164 bits double 2 a 2 -1

  • 7/25/2019 Teoria Modulo 1

    24/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    5,

    Master Certificado Experto

    Otra de las novedades introducidas en Java 7 es el uso de la barra baja para separarnmeros literales y que sea ms fcil leerlos. Por ejemplo, si hasta ahora un milln se

    escriba as:

    1000000

    ahora lo escribiremos de esta forma:

    1_000_000

    Tambin se introducen los literales binarios, con lo que ya no hay que convertirlos ahexadecimales y nos ahorramos un trabajo.

    Lgico: boolean

    Admite solo 2 literales true o false.

    Textual: char

    Se representa mediante 16 bits. El literal debe ir entre comillas simples (''). Tambinadmite las siguientes notaciones:

    'a' La letra a '\t' Un tabulador

    '\u????' Un carcter Unicode, ????, se reemplaza por 4 dgitos hexadecimales

    Por ejemplo, \u03A6 es la letra griega phi [!].

    RECUERDA QUE...

    Al igual que todos los lenguajes de programacin, Java reserva una seriede palabras para su uso interno. Estas no se pueden utilizar comoidentificadores.

    Java define ocho tipos primitivos: byte, short, int, long, float, double, chary boolean.

  • 7/25/2019 Teoria Modulo 1

    25/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    5a

    Master Certificado Experto

    4.- OPERADORES Y CONTROL DE FLUJO

    OPERADORES MATEMTICOS

    Operador Operacin Ejemplo Comentario+ Suma sum = num1 + num2;- Resta diff = num1 num2;* Multiplicacin prod = num1 * num2;/ Divisin quot = num1 / num2; La divisin devuelve un valor

    entero% Mdulo mod = num1 % num2; El mdulo devuelve el resto de

    la divisin.

    OPERADORES INCREMENTO Y DECREMENTO

    Operador Operacin Ejemplo Comentario++ Pre-incremento

    (++variable)

    Post-incremento(variable++)

    int i = 6;int j = ++i;i vale 7, j vale 7

    int i = 6;int j = i++;i vale 7, j vale 6

    La variable i se incrementa antesde asignar su valor a j.

    Primero se asigna el valor de i a jy despus se incrementa i.

    -- Pre-decremento(--variable)

    Post-decremento(variable--)

    int i = 6;int j = --i;i vale 5, j vale 5

    int i = 6;int j = i--;i vale 5, j vale 6

    La variable i se decrementa antesde asignar su valor a j.

    Primero se asigna el valor de i a jy despus se decrementa i.

    OPERADORES BIT A BIT

    Operador Operacin Ejemplo Comentario

    ~ Complemento Invierte valores, los 1 losconvierte a 0 yviceversa.

    ^ Xor Devuelve 0 si encuentrala combinacin 0 y 0 1y 1. El resto devuelve 1.

  • 7/25/2019 Teoria Modulo 1

    26/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    5+

    Master Certificado Experto

    & And Devuelve 1 si encuentrala combinacin 1 y 1. Encaso contrario devuelve0.

    | OR Devuelve 1 si encuentraalgn 1 en lacombinacin. Si no loencuentra devuelve 0.

    OPERADORES DE DESPLAZAMIENTO

    Operador Operacin Comentario>> Desplazamientoderecha consigno

    Desplaza a la derecha tantos bits se especifiquen. Si elnumero es positivo se rellenaran los bits a 0. Si esnegativo se rellenarn a 1.

    >>> Desplazamientoderecha sinsigno

    Desplaza a la derecha tantos bits se especifiquen sintener en cuenta el signo. Los bits se rellenarn a 0.

  • 7/25/2019 Teoria Modulo 1

    27/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    5@

    Master Certificado Experto

    OPERADORES LGICOS

    Operador Operacin Ejemplo Comentario

    ll LRS

    int i = 2;

    int j = 8;((i < 1) && (j > 6))

    Devuelve true si ambas condiciones se

    evalan como ciertas.El resultado del ejemplo sera false.

    mm UT int i = 2;int j = 8;((i < 1) || (j > 10))

    Devuelve true si alguna de lascondiciones o ambas se evalan comociertas.El resultado del ejemplo sera false.

    n RU: int i = 2;(!(i < 3))

    Devuelve lo contrario de como seevale la condicin.El resultado del ejemplo sera false.

    OPERADORES RELACIONALES

    Operador Operacin Ejemplo Comentariooo Igual a int i=1;

    (i == 1)El resultado es true.

    no Diferente de int i=2;(i != 1)

    El resultado es true.

    p Menor que int i=0;(i < 1)

    El resultado es true.

    po Menor o igual que int i=1;(i 1)

    El resultado es true.

    qo Mayor o igual que int i=1;(i >= 1)

    El resultado es true.

    CONDICIONAL IF -ELSE

    Una estructura condicional nos permite ejecutar un bloque de cdigo u otro en funcindel resultado de una condicin.

    Sintaxis: if(condicin){

    // bloque de cdigo

    }

    En este caso el bloque de cdigo se ejecutar nicamente si se cumple la condicin,

    dicho de otro modo, si la condicin se evala como true.

  • 7/25/2019 Teoria Modulo 1

    28/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    56

    Master Certificado Experto

    Podemos completar este condicin ofreciendo una alternativa.

    Sintaxis: if(condicin){

    // bloque de cdigo 1

    }else{

    //bloque de cdigo 2

    }

    En este otro caso, si la condicin se evala como true se ejecutar el bloque de cdigo1, si la condicin se evala como false entonces se ejecutar el bloque de cdigo 2.

    Tambin podemos anidar condiciones.

    Sintaxis: if(condicin 1){

    // bloque de cdigo 1

    }else if (condicin 2){

    //bloque de cdigo 2

    }else{

    // bloque de cdigo 3

    }

    El bloque de cdigo 1 se ejecutar si se cumple la condicin 1. El bloque de cdigo 2se ejecutar si no se cumple la condicin 1 y si se cumple la condicin 2. Por ltimo elbloque de cdigo 3 se ejecutar si no se cumplen ninguna de las condicionesanteriores.

    SWITCH-CASE

    Esta estructura permite ejecutar un bloque de cdigo dependiendo del valor devueltopor una expresin.

  • 7/25/2019 Teoria Modulo 1

    29/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    5>

    Master Certificado Experto

    Sintaxis: switch (expresin){

    case valor1:

    // bloque de cdigo 1

    [break;]

    case valor2:

    // bloque de cdigo 2

    [break;]

    default:

    // bloque de cdigo 3

    }

    Si la expresin devuelve el valor1 se ejecutar el bloque de cdigo 1. Si devuelve elvalor2, se ejecutar el bloque de cdigo 2 y si devuelve otro valor que no sea ni valor1,ni valor 2 entonces se ejecutar el bloque de cdigo 3.

    Las sentencias break son optativas. Si se pone esta sentencia se produce una rupturalo que quiere decir que se ejecutar nicamente el bloque de cdigo asociado a cadacaso. Si no utilizamos break, entonces se ejecutarn todos los bloques de cdigo

    desde el caso que se cumpla hasta el final. Por ejemplo, si la expresin devuelve elvalor2 y no hemos puesto break, se ejecutar el bloque de cdigo 2 y el bloque decdigo 3.

    La expresin debe ser de uno de los siguientes tipos: byte, short, int, char oenumerado.

    !"#$%&! (% !(%"(%)$*! !+$"),

    Hasta ahora, las sentencias Switch usaban o bien tipos primitivos o bien tiposenumerados. Con Java 7 se pueden usar tambin strings, que antes tendran que ir enuna serie de if-else como estos:

    private void processTrade(Trade t){

    String status = t.getStatus( );

    if(status.equalsIgnoreCase(NEW)){

    newTrade(t);

    }else if(status.equalsIgnoreCase(EXECUTE)){

  • 7/25/2019 Teoria Modulo 1

    30/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A7

    Master Certificado Experto

    executeTrade(t);

    }else if(status.equalsIgnoreCase(PENDING)){

    pendingTrade(t);

    }}

    Comparadlo ahora como queda al poder usar una sentencia Switch:

    public void processTrade(Trade t){

    String status = t.getStatus( );

    switch (status){

    case NEW : newTrade(t);

    break;

    case EXECUTE : executeTrade(t);

    break;

    case PENDING : pendingTrade(t);

    break;

    }}

    BUCLE FOR

    Un bucle es un conjunto de instrucciones que se ejecutan varias veces dependiendo

    de una condicin.

    El bucle for se considera un bucle determinado porque sabemos de antemano elnmero de veces que se va a ejecutar.

    Sintaxis: for(inicio variable contador; condicin; modificacin){

    // cuerpo del bucle

    }

    Los trminos utilizados los detallamos a continuacin:

  • 7/25/2019 Teoria Modulo 1

    31/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A?

    Master Certificado Experto

    inicio variable contador; para poder controlar el nmero de veces que se va aejecutar el bucle utilizamos una variable. Esta variable puede estar declaradaanteriormente o podemos declararla en el bucle. Con iniciar nos referimos a darun valor inicial a la variable.

    condicin; el bucle se ejecutar mientras se cumpla la condicin.

    modificacin; cada vez que se ejecute el bucle procedemos a modificar lavariable contador. Lo ms comn suele ser incrementar o decrementar suvalor.

    cuerpo del bucle; se denomina de esta forma al conjunto de instruccin quese ejecutan de forma repetitiva.

    BUCLE FOR - EACH

    A partir de Java 5 surge una mejora en el bucle for denominada for-each. Este buclenos permite recorrer una coleccin de datos sin necesidad de tener una variablecontador y condicin.

    Sintaxis: for(tipo variable : coleccion){

    // cuerpo de bucle

    }

    Se define una variable del mismo tipo que los elementos de la coleccin. Si estacontiene nmeros enteros se declarar una variable de tipo int, por ejemplo.

    El funcionamiento, sera el siguiente, se recorre la coleccin comenzando por el primerelemento y terminando por el ltimo. Cada elemento se asigna a la variable declaraday se ejecuta el cuerpo del bucle. Se pasa al siguiente elemento, el cual se almacenade nuevo en la variable y se procesa de nuevo el cuerpo del bucle. Estas operacionesse repiten hasta el ltimo elemento de la coleccin.

    BUCLE WHILE

    El bucle while se considera un bucle indeterminado puesto que depende de unacondicin el nmero de veces que se va a ejecutar.

    Sintaxis: while(condicin){

    // cuerpo del bucle

    }

  • 7/25/2019 Teoria Modulo 1

    32/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A5

    Master Certificado Experto

    Si la condicin se evala por primera vez como false no se ejecutar ninguna vez elcuerpo del bucle.

    BUCLE DO-WHILE

    Es una variante del anterior. Tambin se considera un bucle indeterminado.

    Sintaxis: do {

    // cuerpo del bucle

    } while (condicin);

    La diferencia con el bucle anterior es que esta vez la condicin se evala al final, por locual si esta devuelve un resultado false, se habr ejecutado el cuerpo del bucle unavez.

    SENTENCIAS BREAK Y CONTINUE

    Son instrucciones que permiten una alteracin en la ejecucin de un bucle.

    BREAK .-

    Permite finalizar, dar por terminado, totalmente la ejecucin del bucle.

    Sintaxis: do {

    // sentencias 1

    if (condicion 1)

    break;

    // sentencias 2

    } while (condicin 2);

  • 7/25/2019 Teoria Modulo 1

    33/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    AA

    Master Certificado Experto

    Si se cumple la condicin 1 el bucle do-while habr finalizado y continuaremos con lasiguiente lnea de cdigo.

    CONTINUE .-

    Permite comenzar una nueva iteracin sin terminar la actual.

    Sintaxis: do {

    // sentencias 1

    if (condicion 1)

    continue;

    // sentencias 2

    } while (condicin 2);

    Si se cumple la condicin 1 el bucle comenzar una nueva iteracin sin terminar laactual, sin ejecutar las sentencias 2.

    RECUERDA QUE...

    Java presenta las estructuras if-else y switch-case como condiciones Para generar bucles tenemos las estructuras: for, for-each, while y do-

    while

    Podemos romper o avanzar la ejecucin de un bucle con lasinstrucciones: break y continue.

  • 7/25/2019 Teoria Modulo 1

    34/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A,

    Master Certificado Experto

    5.- ARRAYS

    Un array es una estructura de datos que permite almacenar varios elementos. Cadauno de los elementos se almacena en una posicin del array y para acceder a dicho

    elemento lo hacemos a travs de un ndice.

    Los arrays tienen una serie de caractersticas:

    Se debe definir el tamao del array al inicio. El tamao se refiere al nmero deelementos mximo que puede almacenar.

    Todos los elementos han de ser del mismo tipo de datos.

    Son estructuras estticas, lo que quiere decir que una vez que hemos fijado eltamao del array este no se puede redimensionar.

    Podemos definir arrays de una o varias dimensiones.

    UNA DIMENSIN

    DECLARAR UN ARRAY

    En Java los arrays se tratan como objetos por lo cual necesitan de una variable dereferencia para almacenar la direccin de memoria donde son creados.

    Declarar un array significa crear una variable de tipo array. Lo que diferencia de ladeclaracin de una variable normal a una variable de tipo array es el uso de corchetes([ ]). Veremos ms adelante que los corchetes tambin definen la dimensin del array,un grupo de corchetes ser un array de una dimensin, dos grupos de corchetesdefinen un array de dos dimensiones y as sucesivamente.

    Un array puede almacenar cualquier tipo de datos desde tipos primitivos como tipos declase o sea objetos.

    Veamos como declarar arrays de ambos tipos:

    Grfico 13. Ejemplos de declaracin de arrays

    Los corchetes se pueden posicionar antes o despus de la variable y aunque en

    principio parece que es lo mismo no lo es. Vemos la diferencia con un ejemplo:

  • 7/25/2019 Teoria Modulo 1

    35/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    Aa

    Master Certificado Experto

    Grfico 14 . Ejemplo de posicin de los corchetes

    En el primer ejemplo declaramos como variables de tipo array num1 y num2. En estecaso tiene exactamente el mismo significado poner los corchetes antes o despus dela variable.

    En el segundo ejemplo declaramos diferente tipo de variables en funcin de la posicin

    de los corchetes.

    Si ponemos los corchetes despus de la variable n1 indicamos que es unarray, sin embargo n2 es una variable de tipo int (no es un array).

    Si ponemos los corchetes delante de las variables n3 y n4 estamos declarandolas dos variables como arrays.

    En este punto, si intentamos acceder a la variable del array nos devolver unNullPointerException ya que como toda variable de tipo objeto almacena un valor

    nullsi no apunta a ningn objeto creado.

    CREAR EL ARRAY

    Una vez declarado el array el siguiente paso es crear el array. En Java es obligatoriodar un tamao al array, esto es, indicar el nmero de elementos mximo que puedecontener.

    Grfico 15. Ejemplo de creacin de arrays

    El array numeros puede contener hasta 5 nmeros mientras que el array alumnospuede contener un mximo de 3 objetos de tipo Alumno.

    ALMACENAR ELEMENTOS EN UN ARRAY

  • 7/25/2019 Teoria Modulo 1

    36/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A+

    Master Certificado Experto

    Grfico 16. Almacenar elementos en un array

    Para poder almacenar elementos en un array es necesario hacer referencia a su

    ndice. El ndice de un array siempre comienza en 0 y termina en longitud-1. En elarray de nmeros enteros con longitud 5, el ndice comienza en 0 y termina en 4. En elarray de alumnos con longitud 3, el ndice comienza en 0 y termina en 2.

    GESTION DE MEMORIA

    Vamos a representar en memoria los dos arrays creados con sus elementos.

    Grfico 17. Representacin en memoria de los arrays nmeros y alumnos

  • 7/25/2019 Teoria Modulo 1

    37/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A@

    Master Certificado Experto

    Como vemos en los arrays de tipo primitivo se almacena directamente el valor, sinembargo en los arrays de tipo clase se almacenan las direcciones de memoria de losobjetos almacenados.

    DECLARAR, CREAR Y ALMACENAR ELEMENTOS

    Hay una forma ms rpida de declarar, crear y almacenar elementos en el array enuna sola lnea de cdigo.

    En el siguiente ejemplo se declara la variable de tipo array nums y se crea el array conlos 8 nmeros entre llaves. En este caso el array tiene una longitud de 8 elementos ysabemos que no se podr redimensionar.

    Grfico 18. Forma rpida de manejar arrays

    ACCEDER A UN ELEMENTO

    Para acceder a un elemento del array es necesario indicar su ndice.

    Grfico 19. Acceso a los elementos del array

    En el primer ejemplo accedemos al elemento con ndice 3 en el array de numeros, elvalor recuperado ser el numero 40.

    En el segundo ejemplo accedemos al objeto referenciado por el elemento con ndice 1del array de alumnos. Una vez que obtenemos la referencia del objeto podremos

    recuperar su nombre, el cual ser Marcos.

    RECORRER UN ARRAY

    Muchas veces no nos interesa tan solo acceder a un elemento concreto del array sinoms bien queremos recorrer todo el array accediendo a todos sus elementos. Puesbien, la forma ms optima de llevar este proceso a cabo es con cualquiera de los dos

    formatos del bucle for.

  • 7/25/2019 Teoria Modulo 1

    38/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A6

    Master Certificado Experto

    bucle for

    La propiedad length de los arrays nos devuelve la longitud del mismo, o sea elnmero de elementos que tiene. Aprovechamos esta propiedad para establecer lacondicin del bucle.

    Grfico 20. Recorremos el array de nmeros con el bucle for

    La variable contador i nos sirve de ndice, por lo cual la inicializamos a 0 que es el

    primer ndice del array. La condicin del bucle indica mientras que i sea menor que lalongitud del array, hay que tener en cuenta que i nunca puede tomar el valor de lalongitud. Recordamos que si un array tiene 5 elementos, su longitud es 5 y el ndiceempieza en 0 y termina en 4.

    Si por error dejamos que i tom el valor 5 esto producir una excepcin de tipoArrayIndexOutOfBoundsException para indicar que estamos accediendo fuera delndice del array.

    bucle for-each

    El bucle for-each es ms cmodo de utilizar ya que no es preciso indicar el ndice delos elementos.

    Grfico 21. Recorremos el array de alumnos con el bucle for-each

    COPIAR ARRAYS

    La clase Systemaporta un mtodo arraycopy que permite copiar un array en otro.Veamos la sintaxis:

    Grfico 22. Sintaxis del mtodo arraycopy

  • 7/25/2019 Teoria Modulo 1

    39/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    A>

    Master Certificado Experto

    A continuacin detallamos cada uno de sus parmetros:

    src; El array origen, del cual vamos a copiar los datos.

    srcPos; posicin desde la cual empezamos a copiar en el array de origen

    dest; El array destino, en el cual vamos a pegar los datos.

    destPos; posicin desde la cual empezamos a pegar en el array de destino length; el nmero de elementos que sern copiados.

    Vamos a ver un ejemplo en el cual copiamos 3 elementos del array nums comenzandoen el ndice 2 y los pegamos en el array nmeros a partir de la posicin con ndice 1.

    Grfico 23. Ejemplo del mtodo arraycopy

    El array numeros obtenido ser el siguiente:

    Grfico 24. Resultado del array numeros

    Todo el cdigo de estos ejemplos lo encontrareis en Arrays una dimensin

    VARIAS DIMENSIONES

    DECLARAR UNA MATRIZ

    Los arrays de varias dimensiones solemos conocerlos con el nombre de matrices.Para declarar matrices utilizamos tantos grupos de corchetes como dimensiones

    queremos en el array.

    En el siguiente ejemplo declaramos dos matrices de dos dimensiones.

    Grfico 25. Declaracin de matrices

  • 7/25/2019 Teoria Modulo 1

    40/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,7

    Master Certificado Experto

    CREAR UNA MATRIZ

    Matrices cuadradas

    Una matriz cuadrada es aquella que contiene el mismo nmero de columnas paratodas las filas.

    En el siguiente ejemplo creamos la matriz nmeros con 3 filas y 2 columnas y tambincreamos la matriz alumnos con 2 filas y 2 columnas.

    Grfico 26. Creacin de matrices cuadradas

    Matrices no cuadradas

    Una matriz no cuadrada es aquella que cada fila tiene un determinado nmero decolumnas.

    En el siguiente ejemplo creamos una matriz no cuadrada con 2 filas, la primera deellas contendr 3 columnas y la segunda contendr 2 columnas.

    Grfico 27. Creacin de matriz no cuadrada

    Siempre debemos especificar el nmero de filas para luego definir el numero decolumnas de cada fila aparte.

    Lo que no podemos hacer es definir el numero de columnas, o sea, definirlo al revs.

    ALMACENAR ELEMENTOS EN UNA MATRIZ

    Para almacenar elementos necesitamos acceder a sus ndices fila y columna.

  • 7/25/2019 Teoria Modulo 1

    41/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,?

    Master Certificado Experto

    Grfico 28. Almacenar elementos en una matriz

    GESTION DE MEMORIA

    Grfico 29. Representacin en memoria de las matrices nmeros y nums

    DECLARAR, CREAR Y ALMACENAR ELEMENTOS

    De la misma forma que en los arrays de una dimensin podamos unificar todas estas

    tareas en una sola instruccin tambin lo podemos hacer con las matrices. Veamoscomo:

    Grfico 30. Forma rpida de manejar matrices

  • 7/25/2019 Teoria Modulo 1

    42/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,5

    Master Certificado Experto

    En el primer ejemplo creamos una matriz cuadrada de 2 filas y 2 columnas. En elsegundo ejemplo hemos creado un matriz no cuadrada de 3 filas: la primer fila tiene 3elementos, la segunda fila tiene 5 elementos y la tercera fila tiene 2 elementos.

    ACCEDER A UN ELEMENTO

    Para acceder a un elemento de una matriz es necesario especificar la fila y columnadel elemento.

    Grfico 31. Acceder al elemento situado en la segunda fila y primera columna

    Segn nuestro ejemplo devolver el valor 3.

    RECORRER UNA MATRIZ

    bucle for

    Necesitamos de dos bucles anidados. El primero de ellos es el encargado de recorrer

    el array de las filas con el ndice i mientras que el segundo es quien recorre el array delas columnas. Este cdigo es vlido para recorrer matrices cuadradas y no cuadradas.

    Grfico 32. Recorrer una matriz con el bucle for

    Grfico 33. Resultado obtenido

  • 7/25/2019 Teoria Modulo 1

    43/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,A

    Master Certificado Experto

    bucle for-each

    Grfico 34. Recorrer una matriz con el bucle for-each

    Con el bucle for-each nuevamente necesitamos de dos bucles anidados. El primeronos devuelve los arrays de las columnas que recorremos en el bucle interno. Elresultado que obtenemos es el que vemos a continuacin.

    Grfico 35. Resultado obtenido

    Todo el cdigo de estos ejemplos lo encontrareis en Arrays varias dimensiones

    RECUERDA QUE...

    Un array se considera un objeto. Java solo reconoce los arrays de una dimensin, para manejar arrays de

    varias dimensiones se trabaja como un array de arrays.

    Podemos crear matrices cuadradas o no.

  • 7/25/2019 Teoria Modulo 1

    44/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,,

    Master Certificado Experto

    6.- CLASES AVANZADAS

    HERENCIA

    Una de las caractersticas de la programacin orientada a objetos es la herencia. Eltermino herencia es conocido por todos, quien no ha odo hablar de una herencia en lafamilia. Nosotros no vamos a heredar dinero ni propiedades pero si vamos a aprendera heredar recursos de otras clases.

    Observemos el diseo de las siguientes clases:

    Grfico 36. Diagramas de clase Empleado y Gerente

    La implementacin en cdigo sera la siguiente:

    Grfico 37. Implementacin de la clase Empleado

    Grfico 38. Implementacin de la clase Gerente

    Este ejemplo ilustra la duplicacin de datos entre las clases Gerente y Empleado.Asimismo, podra haber una serie de mtodos igualmente aplicables a estas dos

  • 7/25/2019 Teoria Modulo 1

    45/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,a

    Master Certificado Experto

    clases. Por tanto, necesitamos una forma de crear una clase nueva a partir de unaclase existente, lo que recibe el nombre de creacin de subclases.

    En los lenguajes orientados a objetos, se proporcionan mecanismos especiales quepermiten definir una clase sobre la base de una clase definida con anterioridad. En el

    siguiente grfico puede verse un diagrama UML donde la clase Gerente es unasubclase de Empleado.

    Grfico 39. Diagramas de clase Empleado y Gerente a travs de Herencia

    Como se puede apreciar en el grfico, en UML utilizamos una flecha continua pararepresentar la herencia.

    La clase Empleado se conoce como superclase, clase base o tambin como clasemadre, mientras que la clase Gerente recibe el nombre de subclase, clase derivada oclase hija.

    La implementacin de la clase Gerente utilizando herencia sera la siguiente:

    Grfico 40. Implementacin de la clase Gerente a travs de herencia

    Aunque slo vemos la propiedad departamento declarado en la clase Gerente, deforma implcita tenemos todos los miembros heredados de la clase Empleado, nosreferimos a las propiedades nombre, salario y fecha de nacimiento, as como almtodo getDetails().

    En el lenguaje Java una clase solo puede heredar de otra, nunca de varias a la vez.Esta restriccin se denomina herencia sencilla o herencia simple.

  • 7/25/2019 Teoria Modulo 1

    46/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,+

    Master Certificado Experto

    Veamos un ejemplo ms ampliado de herencia.

    La clase Empleado contiene tres atributos (nombre, salario y fechaNacimiento), ascomo un mtodo (getDetails). La clase Gerente hereda todos estos miembros y aadeun atributo ms, departamento, adems de usar el mtodo getDetails. La clase

    Director hereda todos los miembros de Empleado y Gerente, pero adems agrega elatributo vehiculoEmpresa y un nuevo mtodo, aumentarComision.

    Asimismo, las clases Ingeniero y Secretario heredan los miembros de la claseEmpleado y podran tener otros miembros especficos (no se muestran).

    Grfico 41. Ejemplo rbol de herencia

    SOBREESCRITURA DE MTODOS

    Adems de poder agregar atributos para generar clases nuevas a partir de una claseexistente, es posible modificar el comportamiento de la clase original.

    Si se define un mtodo en una subclase de tal forma que su nombre, el tipo de retornoy la lista de argumentos son idnticos a los de la superclase (la clase de nivel

    superior), se dice que el nuevo mtodo sobrescribe al antiguo.

  • 7/25/2019 Teoria Modulo 1

    47/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,@

    Master Certificado Experto

    Observe estos ejemplos de mtodos en las clases Empleado y Gerente:

    Grfico 42. Mtodo getDetails en la clase Empleado y Gerente

    La clase Gerente contiene un mtodo getDetails por definicin, porque lo hereda de laclase Empleado. Pero el mtodo original ha sido sustituido, sobrescrito, por la versinde la clase subordinada.

    Recuerde que, para que un mtodo pueda sustituir al de una clase de nivel superior,su nombre y el orden de sus argumentos deben ser idnticos a los del mtodo de lasuperclase. Asimismo, el mtodo sustitutivo no puede ser menos accesible que elmtodo al que sustituye.

    Analice este fragmento de cdigo incorrecto:

    Grfico 43. Sobre escritura incorrecta de un mtodo

  • 7/25/2019 Teoria Modulo 1

    48/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ,6

    Master Certificado Experto

    REGLAS SOBREESCRITURA DE MTODOS

    Si no cumplimos las reglas expuestas a continuacin nos encontraremos con un errorde compilacin:

    El tipo de dato devuelto en el mtodo sobreescrito debe ser el mismo o unasubclase del tipo de dato devuelto en el mtodo de la superclase.

    La lista de argumentos recibidos en el mtodo sobreescrito debe ser la misma,nos referimos al mismo nmero, orden aunque pueden tener nombresdiferentes.

    No se puede hacer el mtodo sobreescrito menos accesible.

    Si el mtodo original no tiene clausula throws no se la podemos poder. Lo queindica que si el mtodo original no lanza excepciones, el sobreescrito tampoco.

    Sin embargo, si el mtodo original tiene clausula throws, el mtodosobreescrito debe lanzar las mismas excepciones o una subclase de ella.Tambin podemos quitar la clausula throws en el mtodo sobreescrito.

    LLAMADA A METODOS SOBREESCRITOS

    Un mtodo de una subclase puede llamar a un mtodo de una superclase utilizando lapalabra clave super.

    La palabra super se refiere a la superclase de la clase en la que se ha utilizado estaclave. Se usa para hacer referencia a las variables miembro o a los mtodos de lasuperclase. Se consigue utilizando la palabra clave super de la forma siguiente:

    Grfico 44. Invocar a un mtodo sobreescrito

  • 7/25/2019 Teoria Modulo 1

    49/200

  • 7/25/2019 Teoria Modulo 1

    50/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a7

    Master Certificado Experto

    Los constructores no se heredan por lo que no se pueden sobreescribir, pero sque puede haber sobrecarga.

    SOBRECARGA DE CONSTRUCTORES

    Cuando se instancia un objeto, el programa puede ser capaz de suministrar variosconstructores basndose en los datos del objeto que se est creando.

    Por ejemplo, un sistema de nminas podra ser capaz de crear un objeto Empleado siconoce todos los datos bsicos sobre la persona: nombre, salario base y fecha denacimiento. Puede que, en alguna ocasin, el sistema no conozca el salario base o lafecha de nacimiento.

    El siguiente ejemplo contiene cuatro constructores sobrecargados para la claseEmpleado.

    El primer constructor inicializa todas las variables de instancia.

    En el segundo, no se incluye la fecha de nacimiento. La referencia this se utiliza comoforma de envo de llamada a otro constructor (siempre dentro de la misma clase), eneste caso, el primer constructor.

    Por su parte, el tercer constructor llama al primer constructor pasando la constante declase SALARIO_BASE.

    El cuarto constructor llama al segundo constructor pasando SALARIO_BASE, que, asu vez, llama al primer constructor pasando null en lugar de la fecha de nacimiento.

  • 7/25/2019 Teoria Modulo 1

    51/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a?

    Master Certificado Experto

    Grfico 46. Ejemplo sobrecarga de constructores

    La palabra clave this en un constructor debe ser la primera lnea de cdigo delconstructor. Puede haber ms cdigo de inicializacin despus de la llamada this, perono antes.

    Aunque las subclases heredan todos los mtodos y variables de sus superclases, noheredan sus constructores.

    Las clases slo pueden obtener un constructor de dos maneras: Debe escribirlo elprogramador o, si ste no lo escribe, debe usar el constructor predeterminado.

    LLAMADA A UN CONSTRUCTOR DE LA SUPERCLASE

    Al igual que los mtodos, los constructores pueden llamar a los constructores noprivados de la superclase inmediatamente anterior.

    A menudo se define un constructor con determinados argumentos y se quiere usaresos mismos argumentos para controlar la construccin de la parte superior de unobjeto. Puede llamar a un determinado constructor de una superclase como parte de lainicializacin de una subclase utilizando la palabra clave super en la primera lnea delconstructor de la subclase. Para controlar la llamada de ese constructor concreto, es

    preciso suministrar los argumentos adecuados a super(). Cuando no hay ningunallamada a super con argumentos, se llama implcitamente al constructor de la

  • 7/25/2019 Teoria Modulo 1

    52/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a5

    Master Certificado Experto

    superclase que tenga cero argumentos. En ese caso, si no hay ningn constructor denivel superior que tenga cero argumentos, se produce un error de compilacin.

    La llamada a super() puede adoptar cualquier cantidad de argumentos adecuadospara los distintos constructores disponibles en la clase superior, pero debe ser la

    primera sentencia del constructor.

    Si recordamos que la clase Empleado tiene el conjunto de constructores definidos enel grfico 46, entonces se definiran los siguientes constructores en Gerente.

    Grfico 47. Invocar constructores de la superclase

    El ltimo constructor no es vlido porque el compilador introduce una llamada implcitaa la clase super() y en la clase Empleado no se ha suministrado ningn constructor sinargumentos.

    Si se utilizan, es preciso colocar super o this en la primera lnea del constructor. Siescribe un constructor que no contiene ninguna llamada a super(...) ni a this(...), elcompilador introduce una llamada al constructor de la superclase de forma automticay sin argumentos.

    Otros constructores pueden llamar tambin a super(...) o this(...), con lo que se haceuna llamada a una cadena de constructores. Lo que ocurre al final es que elconstructor de la clase de nivel superior (o quizs varios de ellos) se ejecuta antes queningn otro constructor subordinado de la cadena.

    LA CLASE OBJECT

    La clase Object es la raz de todas las clases en el lenguaje Java. Si se declara unaclase sin clusula extends, el compilador agrega automticamente el cdigo extends

    Object a la declaracin, por ejemplo:

  • 7/25/2019 Teoria Modulo 1

    53/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    aA

    Master Certificado Experto

    Grfico 48. Declaracin de clase heredando de Object

    Esto permite sobrescribir varios mtodos heredados de la clase Object. A continuacinse describen dos mtodos importantes de Object.

    EL METODO EQUALS

    El operador == realiza una comparacin para determinar la equivalencia de dostrminos. Es decir, para dos valores de referencia x e y dados, x==y devuelve true si, yslo si, x e y se refieren al mismo objeto.

    La clase Object del paquete java.lang contiene el mtodo public boolean equals(Objectobj), que compara dos objetos para comprobar su igualdad. Si no se sobrescribe, elmtodo equals() de un objeto devuelve true nicamente si las dos referencias

    comparadas se refieren al mismo objeto. No obstante, la intencin de equals() escomparar el contenido de dos objetos siempre que es posible. sta es la razn por laque se sobrescribe con frecuencia. Por ejemplo, el mtodo equals() en la clase Stringdevuelve true nicamente si el argumento no es null y es un objeto String querepresenta la misma secuencia de caracteres que el objeto String con el que se hallamado al mtodo.

    En conclusin, el operador == compara si dos variables contienen la misma referenciamientras que con el mtodo equals podemos comparar las propiedades del objetopara verificar si son iguales o no.

    Se debera sobrescribir el mtodo hashCode cada vez que sobrescriba equals. Unaimplementacin sencilla podra usar un XOR de bits en los cdigos hash de loselementos cuya equivalencia se quiera comprobar.

    En el siguiente ejemplo, la clase MyDate sobrescribe el mtodo equals que comparalos atributos de ao, mes y da.

    Tambin sobrescribimos el mtodo hashCode implementa un XOR de bits de losatributos de fecha. Esto hace que el cdigo hash de los objetos iguales de MyDatetenga el mismo valor y ofrece la posibilidad de que fechas diferentes devuelvanvalores diferentes.

  • 7/25/2019 Teoria Modulo 1

    54/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a,

    Master Certificado Experto

    Grfico 49. Ejemplo sobreescritura del mtodo equals y hashCode

    El programa siguiente compara dos objetos MyDate que no son idnticos pero soniguales en cuanto a la comparacin de ao-mes-da.

  • 7/25/2019 Teoria Modulo 1

    55/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    aa

    Master Certificado Experto

    Grfico 50. Ejemplo comparacin de fechas

    En la primera comparacin con el operador == se compara si los dos objetos tienen lamisma referencia.

    En la segunda comparacin con el mtodo equals, se compara si los dos objetos soniguales, si tienen el mismo da, mes y ao.

    Despus asignamos el objeto date1 a date2 y procedemos a una nueva comparacinde las referencias de los objetos.

    La ejecucin de este programa de comparacin genera la salida siguiente:

    Grfico 51. Resultados de la comparacin de fechas

  • 7/25/2019 Teoria Modulo 1

    56/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a+

    Master Certificado Experto

    Todo el cdigo de este ejemplo, lo encontrareis en EjemploEquals

    EL METODO TOSTRING

    El mtodo toString convierte un objeto en una representacin de cadena o String. Elcompilador hace referencia a l cuando se produce una conversin automtica decadenas. Por ejemplo, la llamada System.out.println():

    Grfico 52. Impresin de objetos

    La clase Object define un mtodo toString que devuelve el nombre de la clase y sudireccin de referencia (normalmente de escasa utilidad).

    Muchas clases sobrescriben toString para proporcionar informacin de mayor utilidad.

    En el siguiente ejemplo creamos la clase Fecha sin sobreescribir el mtodo toString.

    Grfico 53. Clase sin sobreescritura mtodo toString

  • 7/25/2019 Teoria Modulo 1

    57/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a@

    Master Certificado Experto

    En la clase principal, creamos una instancia de Fecha e imprimimos el objeto creado.

    Grfico 54. Clase Principal donde creamos e imprimimos los objetos

    Al ejecutar la clase vemos como se imprime el objeto fecha. Es una representacin

    que no nos aporta ninguna informacin de utilidad, slo se muestra el paquete, elnombre de la clase y el cdigo del objeto.

    Grfico 55. Resultados tras la impresin de los objetos

    A continuacin creamos la clase FechaConToString donde sobrescribimos el mtodo

    toString para obtener una representacin textual del objeto.

    Grfico 56. Clase con sobreescritura del mtodo toString

  • 7/25/2019 Teoria Modulo 1

    58/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a6

    Master Certificado Experto

    Al generar la instancia de esta ltima clase e imprimirlo, vemos que esta vez muestrala representacin textual del objeto, aportndonos una mayor informacin.

    Todo el cdigo de este ejemplo lo encontraris en EjemploToString

    CLASES ABSTRACTAS

    Hemos visto como crear una subclase extendiendo de otra clase utilizando herencia.Tambin hemos visto como podemos sobreescribir un mtodo que hemos heredado.

    Muchas veces nos vamos a encontrar con el siguiente caso: Creamos la superclasecon un mtodo que ya sabemos de antemano que se debe sobreescribir en lasubclase porque su implementacin debe variar. Entonces, qu sentido tieneimplementar el mtodo?

    El lenguaje Java permite disear las clases de modo que los mtodos declarados enlas superclases no proporcionen ninguna implementacin. Este tipo de mtodos sedenominan mtodos abstractos. La implementacin del mtodo viene proporcionadapor las subclases. Una clase que tenga uno o varios mtodos abstractos se denominaclase abstracta.

    Veamos el siguiente ejemplo.

    Hemos creado una clase Figura donde hemos declarado dos mtodos: El mtodomostrarPosicin est implementado. Este mtodo lo heredarn todas las subclases y

    su implementacin no cambiar ya que todas las figuras tienen una posicin en elespacio representada por los puntos x e y.

    El mtodo calcularArea es un mtodo abstracto y por supuesto no est implementado.Observemos que los mtodos abstractos terminan en punto y coma (;), si un mtodotiene llave de apertura y cierre ya est implementado aunque no tenga cdigo en suinterior.

    El motivo por el cual el mtodo calcularArea es abstracto es porque sabemos que lassubclases han de sobreescribir este mtodo ya que la forma de calcular el rea decada figura es diferente.

    Tambin observamos que la clase est declarada como abstracta, esto nos los indicael compilador. Si una clase tiene uno o ms mtodos abstractos, se debe declararcomo abstracta. En caso contrario genera un error de compilacin.

  • 7/25/2019 Teoria Modulo 1

    59/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    a>

    Master Certificado Experto

    Grfico 57. Ejemplo de clase abstracta

    A continuacin vamos a ver las subclases creadas. Como el mtodo heredadocalcularArea es abstracto por definicin las subclases tambin lo son hasta que seimplemente dicho mtodo.

    No estamos obligados a implementarlo, pero si no lo hacemos debemos declarar lassubclases como abstractas. Qu problema tendremos entonces? Pues que una claseabstracta realmente es una clase inacabada por lo cual no se puede instanciar.

  • 7/25/2019 Teoria Modulo 1

    60/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +7

    Master Certificado Experto

    Grfico 58. Implementacin del mtodo abstracto en la clase Rectngulo

    En la clase Rectangulo implementamos el mtodo calcularArea con el algoritmo

    adecuado para calcular el rea de los rectngulos.

    A continuacin vemos la implementacin del mismo mtodo en la clase Circulo.

    Grfico 59. Implementacin del mtodo abstracto en la clase Circulo

  • 7/25/2019 Teoria Modulo 1

    61/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +?

    Master Certificado Experto

    Desde la clase principal creamos tres instancias:

    La primera de ellas, es una instancia de la clase Figura que genera un error decompilacin puesto que dicha clase es abstracta y no se puede instanciar.

    Creamos una instancia de la clase Rectangulo donde pasamos los siguientesargumentos al constructor: puntos x e y, base y altura del rectngulo.

    Tambin se crea una instancia de la clase Circulo con los siguientes datos: puntos x ey adems del radio del circulo.

    Grfico 60. Clase principal donde generamos las instancias

    Todo el cdigo de este ejemplo lo encontrareis en EjemploClaseAbstracta

    UML utiliza letras en cursiva para indicar elementos abstractos en los diagramas de

    clases. Tambin se pueden marcar las clases abstractas con el indicador {abstract} enla seccin de nombre.

  • 7/25/2019 Teoria Modulo 1

    62/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +5

    Master Certificado Experto

    Grfico 61. Diagrama UML clases abstractas

    INTERFACES

    Hemos visto que en Java solo es posible la herencia simple, el hecho de que unaclase tan slo puede heredar de otra clase, nunca de varias.

    La forma de simular una herencia mltiple la tenemos en el uso de interfaces.

    Una interface es una clase abstracta llevada al extremo. Una clase abstracta puedecontener mtodos implementados y mtodos abstractos, as como propiedades yconstructores. Pues bien, en una interface todos los mtodos declarados sonabstractos, nunca puede haber mtodos implementados.

    Todos los mtodos declarados en una interfaz son pblicos (public) y abstractos(abstract), con independencia de que mencionemos estos modificadores en el cdigoo no. Igualmente, todos los atributos son public, static y final. En otras palabras, slose pueden declarar atributos constantes.

    Al igual que los nombres de clases abstractas, los nombres de interfaz se utilizancomo tipos de variables de referencia.

    Imagine un grupo de objetos que comparten la misma habilidad: pueden volar. Puedeconstruir una interfaz pblica llamada ObjetoVolador que admite tres operaciones:despegar, aterrizar y volar.

  • 7/25/2019 Teoria Modulo 1

    63/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +A

    Master Certificado Experto

    Grfico 62. Diagrama UML con interface

    Como podemos observar en el diagrama UML, las interfaces se marcan con elindicador en la seccin de nombre.

    Por otro lado, utilizamos una flecha discontinua para indicar la clase que implementauna interface.

    A continuacin vemos el cdigo fuente de la interface y la clase.

    El cdigo de este ejemplo lo encontrareis en EjemploInterfaces

    Grfico 63. Cdigo interface ObjetoVolador

  • 7/25/2019 Teoria Modulo 1

    64/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +,

    Master Certificado Experto

    Grfico 64. Implementacin de la interface ObjetoVolador en la clase Avion

    Puede haber muchas clases que implementen la interfaz ObjetoVolador. Un Avion, unave o Superman pueden volar.

    Grfico 65. Varias clases implementan la misma interface

  • 7/25/2019 Teoria Modulo 1

    65/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +a

    Master Certificado Experto

    HERENCIA MULTIPLE

    Suena como una herencia mltiple, pero no lo es. El peligro de la herencia mltiple esque una clase podra heredar dos implementaciones diferentes del mismo mtodo.Esto no es posible con las interfaces, porque una declaracin de mtodo de una

    interfaz no proporciona ninguna implementacin.

    El secreto para similar la herencia mltiple es porque una clase slo puede heredar deuna sola clase pero puede implementar varias interfaces.

    A continuacin mostramos un diagrama UML donde se puede apreciar una herenciamltiple.

    Grfico 66. Diagrama UML con herencia mltiple

    Veamos una implementacin de herencia mltiple, segn el diagrama la clase Avehereda de la clase Animal y a su vez implementa la interface ObjetoVolador.

    Grfico 67. Implementacin de la clase Animal

  • 7/25/2019 Teoria Modulo 1

    66/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    ++

    Master Certificado Experto

    Grfico 68. Implementacin de la clase Ave simulando herencia mltiple

    La clusula extends debe especificarse antes que la clusula implements. La claseAve puede suministrar sus propios mtodos (hacerNido y ponerHuevos), as comosobrescribir los mtodos de la clase Animal (comer).

    MULTIPLES INTERFACES

    Una clase puede implementar varias interfaces. El Hidroavion no slo puede volar,

    sino tambin navegar. La clase Hidroavion ampla la clase Avion, con lo que heredaesa implementacin de la interfaz ObjetoVolador. La clase Hidroavin tambinimplementa la interfaz Nautico.

  • 7/25/2019 Teoria Modulo 1

    67/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +@

    Master Certificado Experto

    Grfico 69. Diagrama UML con varias interfaces

    USOS DE LAS INTERFACES

    Las interfaces se utilizan para:

    Declarar mtodos que sern implementados por una o varias clases.

    Dar a conocer la interfaz de programacin de un objeto sin revelar el verdaderocuerpo de la clase (esto puede ser til al distribuir un paquete de clases a otrosdesarrolladores).

    Identificar las similitudes entre clases no relacionadas sin tener que establecerninguna relacin entre ellas.

    Simular la herencia mltiple declarando una clase que implemente variasinterfaces.

    POLIMORFISMO

    Segn el siguiente diagrama de clases. La clase Gerente hereda de la clase Empleadoy la clase Director hereda de la clase Gerente. Tambin podemos decir que la claseDirector hereda indirectamente de Empleado.

  • 7/25/2019 Teoria Modulo 1

    68/200

    "# "$%&$'()$* +, -./$- 0$1. 2(%(/3$ 4 56756 8$2%92:(-;? @?A ?A @? 4 B$C= >? @?A ?A @5 4 DE$9-= '%FG.$&%9FEH'%FG.$&%9FEI/.E

    +6

    Master Certificado Experto

    Grfico 70. Diagrama de clases para aplicar polimorfismo