08 - programacion basada en objetos

Upload: viridiana-sanchez

Post on 12-Jul-2015

59 views

Category:

Documents


0 download

TRANSCRIPT

  • 5/11/2018 08 - Programacion Basada en Objetos

    1/28

    P r o g r a m a c i 6 nb a s a d aen o bjeto s

    C o m p re n de r e l c on c ep to d e e nc ap s ul am i en to y o c ul ta m ie n to d ed a t o s .

    C o m pr en de r I us n oc io ne s d e I n a b s tr ac cio n d e d at o s y l o s t ip o sd e d a to s a b st ra ct os ( A D T s) . C r e ar ADT s e n J av a ( cl us es ), C re ar y u t i li z a r o b j e t o s. C o nt r o lu r e l a c ce so a I us v ar ia bl e s d e l n sta nc ia y l o s m e t od o s , C o m pr en de r c l u so d e I n r ef er en ci a this. U t il iz n r l as v a ri ab le s y m c to d os d e l as c la se s. A p re ci a r e l v al o r d e la o ri e nt a ci o n a o bj e to s.M i s o b j et iv o s, t od a s s ub l i m esd e b e I ' ! ! c o ns eg u ir lo s a t ie m p a.W . S . G i l b e r tt E l ' i S l e 1 1 1 1 m un do e n e l q u e s e p ue de n ocultar l a s v i rt u de s ?W i ll ia m S h a k e s p e a reSil l ' s e r v i d o r e s [ li lb / ic o s l e s it ve n b ie n .A d l a i S t e v e n s o nP e ro q u r !. p ar a s e rv ir a n u es tr o f in e s p ri va d os ,i ,S e o / v id a e / e n ga iu : a n u es tr os a m ig o s?C h a r l es C h u r c h i llE s to pO I ' e ll c im a d e t o do : q ue til p ro pi o s er se a v e r d u d e r o .W i ll ia m S h a k e s p e a r eN o lel i l /as a m i g o s ' fi le n o . le a n i g u a l c s a ti.C o n f u c i o

  • 5/11/2018 08 - Programacion Basada en Objetos

    2/28

    3 0 2 P ro q ro rn o ct on bosada en obletos

    8 .1 2 .Var ja~IEisd e inslanciafinal8.13 .C reaci6 ri de paquetes i ,; . ,, -8.14 A ~ c e so b i os paquet ;~8 . 1 5 ReU ti li z ac iondE is o f f w a r e < - . . . . . . - . - .

    -8.16 Abst raccion de . d a t o s y ' encap su l6m i e li to . . . ,.'8 .1 7 (E je mP lo pra Cfic o.b ..,. . Acerca d e 1 0 . l a s c l o sespara lc e le levador

    E n e st e c a pi tu lo i nv e st ig a re m os a c er ca d e l a o ri en ta c i6 n a o b je to s e n J av a . A l gu no s l ec to re s p od ri an p re g un ta r,/ , pOI ' q ue a pl uz um o s e st e t er na h as ta a ho ru ? E xi st en v ar iu s r nz on es . E n p ri me r l ug nr , l os o bj et os q ue c re nr em o se n e st e c ap it ul o e st un p ar ci al m e nt e c om p ue st os d e p ie za s d e p ro gr am nc io n e st ru ct ur ad u. P ar a e xp li ca r l a o r ga -n iz a ci on d e l os o b je to s, n ec e si ta b um o s e st ab lc c er u n a b as e e n l a p ro gr am u ci on e st ru ct ur ad a c o n I us e st ru ct ur asd e c o nt ro l. T a m bi en q u er ia m os e st ud ia r l os r ne to do s d c ta ll nd am e m e, a n te s d e i nt ro d uc ir l a D ri en ta ci on a o b jc -t os . P ar u lt im o , q ue rf um o s q ue u st cd s e f ar ni li ar iz um c an l os a rr cg lo s, q ue s on o bj et os d e J av a.E n n u es tr as d is cu si on e s s ob re l os p ro gr ar na s o ri en ta d os a o b jc to s e n c up tt ul os a n te ri or es , p re se nt am o s m u -c ho s c on ce pt os b as ic os ( po r e je m pl o, " pe ns ar e n o bj et os ") y t er ml nc lo gi a ( co m o, " ha bl ar d e o bj ct os '') q ue s er el ac io na n c on l a p r og ra m uc ir m o ri en ta da a o bj et os ( POO) e n J av a. T am b ie n h ab la mo s s ob re n ue st ra m et od o-l og ia p ar a d e su rr ol lu r p ro g ra m us : n n al iz a mo s p ro b le m as t fp ic o s q u e r eq u en an l a c re ac io n d e a p pl et 0 ap licucio-ne s y d et er mi na m os c ua le s c lu se s d e l a A P I d e J av a e ra n n ec es ar ia s p ar a i mp le m en te r c ad a p ro gr am a , L ue gos e lc c c io n am os l a s v a ri a bl e s y l os m e to do s u pr op iu do s p ar a c ad a p ro gr am a, y e sp ec if ic ar no s l a m an er a e n q ueu n o bj et o d e n ue st ra c 1a se d eb er ia c ol ab or ar c on l os o bj et os d e l as c 1a sc s d e l a A P I d e J av a, p ar a l og ra r l os D b -j et iv os d el p ro g ra m a e n g e ne ra l.

    A h or a r ep as ur cm o s b re ve me nt c a lg un os c on ce pt os y t cr mi no lo gf a c la ve d e l a o ri en ta ci on a o bj et os . E st at ec n ol og ia u ti li za c lu se s p ar a e n c a p s u l a r ( es d e ci r, c ll vo lv cr ) d a to s ( at ri bu to s) y m e to d o, ( co m po rt am i cn to s) .P ar e jc mp lo , e l e st cr eo d e u n a ut o e nc ap su la t od os l os a tr ib ut os y e o mp o rt m ni en to s q u e I e p e rm i tc n a l c o nd u c-t or d cl a ut o s el cc ci on ar u na e st ac i6 n d e r ad io , 0 r c pr o du c ir c i nt a s 0 C D s. L a s c Ol np ui ii as q u e f ab ri ca n a u to s n of ab ri ca n l os e st er eo s, s in o q u e l os c o mp ra n y s im p le m en te l os c on ec ta n e n e l t ub le ro d e c ud a a Ul a. L os c om p o-n em e s d el r ad io e st ri n e nc ap su la do s e n s u c uj u.

    E 1 e nc ap su la m ic nt o p em li te a l os o bj et os o eu lt ar s u i mp le m cn ta ci on d e. ot ro s o bj et os ; a e sl c p ri nc ip ia ~ c Iec on oc e c om o ( lc l I i t l lmiento de I I I i 1 lt im ll adon . A un qu e lo s o bj eto s p ue de n c om un ic arse e ntre si, u tra ve s d e

    c a p n u l o 8 Proqrcmeclon basada en ob le tos 303

    i n l e i f a c e . l ' b ie n d ef in id as ( de l a m is ma f or ma q ue l a i nt er fa z d e u n c on du ct or p ar a u n a ut o i nc lu ye u n v ol an te ,p ed a l d e l n ce le ru d or , p ed a l d el f re na y p al an ca d e v e lo ci da de s) , n o e s u i n c o ns ci en te s d e c om o s e i m pl em e nt ano tr os o b je to s ( de I II m i sm a forma q ue e l c on du ct or n o c on oc e c om o e su n i mp le m en ta do s l os m e ca ni sr no s d elv o lu n tc , m o to r. f re n a y t ra na rn is io u ). P a r 1 0 g en er al , l os d et al lc s d e i rn pl em e nt ac io n s e o cn lt an d en tr o d e l oslI l ismos o bj et os , E vi dc nt er ne nt e e s p os ib lc c on du ci r u n a ut o e n f or ma c fe ct iv a s in c on oc er l os d et ul le s s ab re e lf u nc iOi l lu n ie n to d e l o s m o t or e s, t r an s m is i on c s y s is te m as d e e sc a pe . D e m a ne ra s im i la r, e s p o si bl e s el ec ci on a ru n a eS t r \c i ( \n d e r ud lo e n un e st er eo d e a ut o sin n ec es id ad d e s ab e r c o mo f un ci on u el rad io . M U s a de la nt e v e re -1Il0S pOl'q ue e l o c ul ta m ie nt o d e In i nf or ma ci on e s t an i mp re sc in di bl e p ar a la b ue n a i ng e ni er fu d e s of tw a re .

    E ll l os leJlgl l l l j rs de p r og l 'l l1 1 lC l c i on pO l ' proced imientos ( co m o C ), In p ro gr am a ci on t ie nd e a s er or ientada,J le i a c c i o n . S in e m ba rg o, l a p ro gr nm a ci on e n J av a es t i or ienuula a o b j e t o s , E n l os l en g uu je s d e p ro g ra m ac io np o r p r oc ed im i cn to s, I n u n id a d d e p ro gr nm a ci on e s l aj im c ir ll l ( en J av a l as f un ci on cs s e l la rn a n /1u! lodos). E n J a-v a, ln u ni da d d e p ro gr am a ci 6n e s l a clase. L os o bj et os e ve m ua lm e nt c s e ins tancian ( es d ec ir , s e c re an ) a p ar ti rd e e s ta s c l as e s, y l o s a t r ib u to s y cornpor tarn ientos e s u i n e nc ap su lu do s d en tr o d e l os " lf mi te s" d e l as c la sc s, e nf or m a d e c a mp o s y r n c t o d o s ,

    Lo s p r og r am a d o re s , 0 1 c r ea r p r og r at n as p a r p r oc e dh n le n ro s , s e c o n ce n nu n e n In e s cr it ur a d e f u nc io n e s, Ag ru -p a n n cc io nc s q u e r e ul iz u n c ie rt a t ar ea e n un a f u n c i o n y l ue g o a gr up u n v ar ia s f un ci on es p ar u f o rm a l ' u n p r o g r u m a .E v id en tc m en te l os d a to s s on i m po rt an ie s e n lo s p r o g r a m a s pa r p r oc e dl m ie n to s . p e ro e x is te n p r in c ip a lm e n te paraup oy a r l a s n c ci on e s q u e r c al iz a n la s f u n c i o n e s , Lo s verbos en un d o c um e n to d e r e qu e ri m ie n to s d e l s i s tema q u e d es -cr iben l o s r c q u e r i r n ie n t o s p ar a u na n ue va a p li cu c io n , a y u da n it un p ro g ra m ad o r, q u e c re a p ro g ra m as po r p r o c e d i -m i e nt os , a detenninar cl c o n j u n t c de f u n c i o n e s qu e t r n b a j u r a n entre sf para i m p l c r n e n t a r e l s is t em a .

    E n c o n tr a s te . l o s p r og r am a d o re s e n J uv a s e c on c en tr an en 1 < 1 r e a c i o n d e su s p r op io s t ip o s d e r e fe r en d a ,m e jo r c o no c id os c o mo clases . C ad a c la se c on ti en e c om o s us miembr o s a u n c on ju nt o d e c am p os ( vu ri ab lc s) ym e to do s q u e r nn ni pu lu n a e so s c a m po s. ( En o tr os l en g ua je s d e p ro gr um u cl on , a l os c am po s d e u na c la se s e l esc o no c c c o mo m i em b ro s d e d a to s. I) Lo s susumtivos cn lIll d o cu m en to d e r eq ue ri m ie nt os .d e l s is te m a n y ud u n a lp l' og ra m ad or e n J av a a d c te rm i nu r lIll c on ju nto in ic ia l d e c la se s c an Iu s q ue s e v a a e rn pe za r e l p ro ce so d e d is en o , L o s p ro gr am a do re s u ti li zn n e sa s c la sc s p a ra i ns ta nc ia r o b jc to s q ue t ru b aj en e n c o nj un to p am i m pl er ne n -t a r e l s i st em a.

    E n e st e c a pi tu lo e x pl ic a re m os c o m o c re u r y u t i li z a r c l a s es y o bj ct os , u n t em a c o no c id o c om o p r o g f ' lI /1llcicillb u s a d a ell a bj el O s ( P H O J . E n l os c ap ft ul os 9 y 1 0 p r es cn ta re rn o s l u h e r e n c i a y e] p o / i / 1 l ( } / f i s / l l o , respectivarnen-t e; t ec no lo gn s c la ve q ue p er mi te n l a p r og ra m ac io n o ri cn ta da a o bj ct os , A u nq ue n o h ab la re m os s ob re l u h e re n-c ia d et ai la dn me nt e s in o h as ta e l c ap it ul o 9 , e st a f or ma p ar te d e v ar in a d ec la ra ci on es d e c la sc s e n e st e c ap it ul o,y s c h u u ti li zu do e n v a ri es c je m pl os u nt cr io rm c nt e. P OI 'e je rn pl o, t od as l as c la se s d e u pp le t d e fi ni da s h as tn e st cp un to h er ed ar on d e I n c l as e JApplet.

    [ 'S ; Z ilmpl eme ll fa ci 6ndel ll 'l t ip p de da ta a b st ra c to con una c lo se ,L as c lu se s e n J av a Ia ci li tu n l a c r ea ci on d e AD T 's i ti po s d e d u to s a b st ra c to s }, l os c ua le s o cu lt an s u i m pl em e n-t ac io n a l os c li en te s (0 u su a ri es d e l a c la sc ). U n p ro b le m a e n l os l en g ua je s d e p ro gr am a ci on p OI 'p ro c ed ir ni en -t os e s q ue e l c od lg o c li en te a r ne nu do d ep en de d e l os d et al le s d e i mp le m en tu ci on d e l os d at os u ti li zu do s e n e lc od ig o, E st u d e pe n dc n ci a t al v e z r eq ui em d e r ee sc ri bi r e l c 6d ig o c li en te , s i l a i m p lc rn e nt uc io u d e l os d a to s c a m-b ia . L o s AD T s e li m in an e st e p ro b le m a a l p ro po rc io n ar in ter faces ( co n ju n to s d e r ne to d os o fr ec id os p o r l as c lu -s es ) i nd ep en di en te s d e l a i m pl em e nt uc ic n a s us c li en te s, E s p os ib le p ar a e l c r ea do r d e u na c la se c am b ia l' 1 :1 rn -p le m en ta ci on i nt er na d e e sa c la sc s in a fe ct ar a l os c Ii en te s d e e sa d as c.. O bs erva cion d e ing enieria d e s oftw are 8 .1i r l I l Es i ll l P tJ / 'IU l l/ ees a i b i t ' pmg r am< ls que s e a l l comp l ' tms ible. l 'Y i ti ci le s d emU l I /c n e r, E I c ambi a es la r egia , el l I ' e z d ee.Ie i ' l a c x c ep c i6n . La s p r og r a ll la d o r es debe l l l I l 1t ic i p a r l ju e . l 'l I cM i go . l 'I ! ra I / l od ij l cl l li o . C omo vc r emos , l a s c l a s es /a

    e i l i / a n l a c a p a c i dl l d d e l Iwdij icacirJn d e 10.1 p lVgraml lS.

    1 . A l g U ll as v e ee s u r il i, ., ul lO S t W l O lo g fa i nf o rm a l q u e se n c o n oc id u P U l 'Ul o s p r og r nm a d o rc s e n a lr o s t en g ll aj es . c o m o " m ic m b l' O sd e d at os ", e ll v ez d e t ll ie rm i no to g ia e sp ee m e" d e J U vt , c o m o " ca m p os ", P ar u o b t en e r u o l is tn d o d e I n t C l'O l in o ll 1g fu esped t i .e a d e J ~v u c on ~ ul l e I n l i !:p""iJic(/Ciol l de l l e ll gu a je J a v a , l u c U l Il p u e de d es ca rg u rs e d el s it io W e b java.sun.aom/dacalbooks/ j19Ii.ndex. html.

  • 5/11/2018 08 - Programacion Basada en Objetos

    3/28

    304 P rog ram ac lo n b a sa da en o bje to s C a pf tu lo 8

    rdl~~Iailf il1ffi~1ii1'iL'fjltitf; ii.1E I s ig uic nte e je m pl o c on si st e d e d os c la sc s: T ie m po l ( li gu ra 8 . l) y P ru eb aT ie mp ol ( f ig uru 8.2) . L a c la seT i em p o l (dec la rada en e [ a r ch i v o T ie mp ol. ja va ) s e u t il iz a p a ra c re a r o b je t os q u e r ep re s cn t cn [ a h o ra , L ac la se P ru eb aT ie mp ol (d ec lu ra da e n u n u rc hiv o se pa ra do .Ilu ma do P ru eb aT ie mp ol. ja va ) e s u na c la sede apl icac ion, e n [a c ua l el me todo main crea u n o b je t o d e In c la se T i em p o l e in vo ca a s us m e to d o s. E s tn sc l a s e s deben d ec la ra rs e e n a rc hi ve s s ep aru do s, y a q ue u m ba s s on c la se s p ub li c. D e h ec he , c ad a d ec la ra ci 6nd e c la s e qu e c omi e nc e ca n l a p a la b r a c lav e p ub lic d eb e guardar se en u n a rc hiv e q ue te ng a e xu cta me ntc e lm i sm o n om b re q u e l a c l as e , y qu e t er m in e c a n [a e x te ns io n. ja va e n s u n o rn b re d e a rc h iv e . [Nota : L o s r e su l -t ad o s d e e st e p ro g ra m a a p ar ec en e n l a I ig u ra 8 .2 .J,- ,, ' E rro r c om un d e p rogra ma cion 8 .1l!e cl ur ar n ui s d e u n a c la se p u b l i c el l e l m i sm o a rc hi vo e s 1 1 1 1 er ro r d e s i nt a x is .

    1 II Fig. 8.1: Tiempol. java2 II Declaraci6n de la clase Tiempol que nantiene la hera en tormat.o de 24 horas ,3 import java.text.DecimalFonnat;4567891 01112131415161 7 II establecer un nuevo valor de tiempout.i Lizando hor a univer sal r rea lizar1 8 . II comprobac:: iones de vaUdez err los datos; establecer valore:; invoilidos en1 9202 1222324252 6272829303132333435363 7383940

    cerapublic void establecerHora ( int h. int m, int 8 )(

    ( ( h >= 0 && h c 24 ) ? h : 0 );= ( ( m )0= 0 && m < 60 ) ? m : 0 );= ( ( s >= 0 && s -c 60 ) ? s : 0 );

    II convertir a String en fonnato de hora universalpublic String aStringUniversal()(

    DecimalFormat dosDigitos = new DecimalFormat( "00" );return dosDigitos.ormat(

    dosDigitos. format () + ":" +

    " : " + dosDigitos. format (

    I! conver ti a String en tormat;o de hora estandarpublic String aStringEstandar()(

    DecimalFormat dosDigitoB new DecimalFormat( "00" ) ireturn ( % 12 ) + II: 1/ ,10

    F ig u r a 8.1 Im ple me nio clo n d el t lp o d e d ato s o bs to cto T ie mp ol c om o u no c lo se . (P or te 1 d e 2,)

    );

    cop nu lo 8 Proqrornoclon b as ad a e n o bl eto s 305

    41 dosDigitos.format( ' 1 i i ~ h i f ~ 9 ) + ":" + dOSDigit'os.format( . i e A ! M i K C l . ~ ) +42 12 ? ./ AW ' : . , P H " ) i4 34 445 1/ fin de la cl a se Tiempol

    8.1 Im p le m en ta cl 6n d el t ip o d e d oto s a bs tra cto T ie m ~o l c om o u na c la se . (P or te 2 de 2.)

    E n la l lnea 5 d e la f lg u ra 8 . [ c o rn ic n za [a d e cl ar ac io n d e la c la se Tiempo l . E n e st a d ec lu ra ci on s e i n d i -ca qu e T i em p o l e xtie nd e a (med i an t e ext end s ) la c lasc Object ( d el p u q ue te ja v a . lang). L o s p ro -gram ad o r e s en J av a ut i l izan [a herencia p a r a c re ar c lu s es a p a rt ir d e c lu s es e x is te n te s , D e h e ch e , t od a s [a sc l a s c s en J av a ( excepto Ob jec t ) e xt ie tu le n a ( he re da n d e) u na c la sc c xi st en te , E n la l fn e u 5 , l a p a la b rn c l av eex t end s s e gu i da po r cl n or nb re d e l a c lase O bj e ct in dic a q u e [ a c lusc T i em p o l h e re d a l os a tr ib u to s y c om -p or ta m ie nt os e xis te nt cs d e la c lu se O bj e ct . S i la d ec la ra cio n d e u na c la se n o c sp ec ifi ca e xt en ds y elH om b r e d e u na c l a s e a [ a d e re ch a d e l n u ev o n o mb rc d e l a c l as e, e st a nu ev a c la se e xt ie nd e i m pl fc it am e nt e a l ac la se O bj e ct. D e h ec he , c ad a c la se d e J a v a c o n ti e n e lo s 1 1 m e t o do s d e cl ar ad o s en l a c l as e O b j e c t. N o csn cce s a r i o c om p re nd er l a h er en ci a p ar a a pr en d cr [ as c on ce pt os y p ro g ra m as e n e st e c ap it ul o. E x pl or ar em o s l ah e r en c i a y l a c l as e O bj e ct d et all ad am c nte e n e l c a pi tu lo 9 .

    E I cuerpo d e I n d e c la r u ci o n d e la c l us e e s u i d e l im i t ad o po r l a s l la v e s i z qu i e rd a y d ercch a ( { Y } ) en Ius li -ne a s 5 y 45. Cuu l qu i e r i n fo r m ac io n q u e c o l oquemos e n e l c ue rp o s e d i ce q u e es t a e n ca p su l ad a ( es d e ci r, e n vu e l-ta ) e n [ a c la sc , P or e j em p l o, l a c lase T i em p o l c o ut ie n e t re s v a lo r c s enteros: h or a, m in ute y se gu nd o. lo sc u al es r ep r es en t an l a h e ra en f or ma te d e h o t u u n i v e r s a l ( Iormuto de r elo j d e 24 h o m s ) . Ant e r i o rmen t e no s r e f e-r im e s a l a s v a r ia b l e s d e cl ar ad a s e n l a d e cl ar u ci on d e u na c l as e , p e ro no dentro d e [a dec la ruc ion de un metod a ,c o m o c a m p os . A un cam po q ue no se dec la ra c o m o s ta t ic s e l c c o n oc e c om o v ar i a ht e d e i n s t a n c i a ; c a dai n s ta n c ia ( o b je t o ) de l a c la s e con t i en e S U p ro p ia c o pi a s ep u rn d u d e l a s v a ri a bl e s d e i n s ta n c ia d e [a c la s e, ( Hn -b l a r emos sab re lo s c am po s s ta t ic en I n s e c ci o n 8 .[ 1. )

    L a s p a l ab r a s c l av e public y private so n m o d / f i m d o r e s deacceso, L a s v a r ia b l es 0 m e to d o s d e cl ar a-do g c o m o p u bl ic p u ed e n u t il iz a rs e e n c u al qu ie r p a rt e d e l p r og r ama e n q ue h ay a u na re fe re nc ia a u n o bje tod e l a c la s e, L a s v a r ia b l e s 0 me t o d o d e c la r u do s c on e l mod i f i c a do r de acceso p r i v a t e p u ed e n s er u ti li za d ass o l a m e n t e po r lo s m e to do s d e [ a c l as e en lu qu e e s u i n dec la rados.

    , B ue na p ra ctice d e p rog ra ma cion 8 .1~ S e d e b e u n t e p o n e r 1 1 1 1 m o d i j i c a d o r de a c c es o a c lI o lq u ie r dec la l ' l l do l l d e WI c a m p o 0 m e lo d o. C o m o r el ila e m p ir i

    ca , 1 0 . 1 ' c a m p " . \ ' d e b en d e c ta r a r se c o m o p r iv a te y los m u od o. c om o p ub l. i a .

    La s I r es v a r ia b l e s d e i n st an c ia e n tc ra s hera, minu to y s eg undo se d ec la ra n ( lin cas 6 a 8) can e l r n a -d if ic ad o r d e a cc e so p r i v a teo 10 c ua l i n di c a q u e estas v a r i ab l e s d e i n s ta n c ia so n a c c cs i b le s s o l am e n t e p a r a lo sme t odos de [ a c la se ; e st o se c onoc e c om o ocultamiento d e l o s d a to s . C u a n d o u n p ro g ra m a c re a ( in s ta n ci a) unob j e to de In c lase Tiempo l , d i c ha s v a r i ab l e s s e e nc ap su la n e n e l o bj et o y pu ed cn u t il i za r se s 6 10 med ian t e m e-t odos de l a c l as e de cs e ob j e to ( c o r m i n m e n t e a tra ve s d e lo s me todos pub lic d e l a c la se ) . P or 10 g en e r a l , [a sc a m p os s e d e cl a ra n c o m o p r iv a te y l os m e to do s c om o p ub lic . E s p os ib lc te ne r m e t od os p ri va te y ea rn -p os p u bli c. c om o v er em o s m a s u d el an te . L os r ne to do s p riv ate s e c o no ce n c om o m e t od o s u t il it u ri o s a m i-t o d os a y u d a nt e s. y a q u e p u ed en s er l la rn a do s s ol o p or o tr os m e to do s d e e sa c la se , y s e u ti li za n p ar a d ar s op or -t e a l a o p er ac io n d e e so s m e to do s. E [ u so d e c am p os p ub l i e s p o co c om u n, a de m as d e s er u na pr t ic t ica dep r o g ra m a c io n p e l ig r o sa .~ Bu enQ p ra ctice de p rogram acion 8 .2rn Pr e j er hn o s e n l is t a r p ri me ro l os campos p r iv a t e d e 1 1 1 1 1 c la s p ar a q ue . a m ed id a q ue ustcd l e a e l cod igo . p u c -

    d a v cr l o s 110mb re s y t ip o s d e la s v ar if l bl d" u n te d e q l l l ' s eW I u ti ll ,a e lo s e n l os I nl l to d os d e l a c lo se .O b se rv ac io n d e I ng en ie ri a d e s of tw a re 8 .2,H ag a q ue e l m ie mb ro d e ulla c la s e s e a p r iv a ta si 110 Im y ra ,o l l p am q ue s e i u tl ic e f u er a d e l a elec i l l r ac iu l l d e 1 0

    ~ c / a s e .

  • 5/11/2018 08 - Programacion Basada en Objetos

    4/28

    30 6 P rog ram ac l6n b asad a e n ob le to s Capnu lo aA r ne nu do Iu s c la se s i nc lu ye n m e to do s d e a cc es o q ue p uc de n l ee r 0 d cv ol ve r d at os . O tr o u sa c or m in p ar a

    l os m e to do s d e a CCOSD e s p ro bu r s i u na c on di ci on e s v er du de ra 0 f al sn : d ic h os r ne to d os s e H a m a n c o m d n m e nn ,m e t o d os p r e di ca d o . U n e j emp lo de un me tod a p re d ic a do s er fu e l m e t od a e s ta V a ci o para un a c l a s e c o t ue :n e d o r a : u n a c l as e c ap uz d e a lm a ce nn r r nu ch os o bj et os , c om o u n a l is ta e nl uz ad n, u na p il a 0 u n a c o l a . (Dc sc r i h i ,r er no s d et al la da m en te a Iu s e s tr uc tu ra s d e d at os e n l os c up itu lo s 2 0, 2 1 Y 2 2.) U n p ro gr am a p od rfa p ro ba re s taV ac io an te s d e in tentar l ee r o t ro e l emen to d e u n o b je to contenedor , U n p ro g ra m a p o dr ia p ro b ar es taL le no a nt es d e i nt en ta r i ns er ta r o tr o e le rn en to e n u n o b jc to c on te ne do r,

    L a c lu se T ie m po 1 c on tie ne e l c o ns tr uc to r T ie m po 1 (li ne ns 12 a 15) y lo s m eto do s e st ab le ce rH o-ra (lfne as 19 a 24) , aS tr in gU niv ersa l (line as 27 a 33) y aS tr in gE stand a r ( l in e ns 36 a 43) . E sto ss on l os me to d o s p ub l i c u a m bi en c o no c id o s c om o sc tv ic ios public 0 inter faces public) de l a c l as e , Lo sc l i e n t c s d e l u c la se T ie mp o1 c om o la clu se P ru eb aT ie mp ol (f ig ura 8.2), u ti liz an lo s r neto dos p ub lic d eT ie mp o1 p ara man ip u l a r lo s d a to s n lm a cc n a do s en objetos T i em p o l 0 p a r a h ace r q ue Ia clusc T ie mp ol rc a-l ice a l gu n s e rv i ci o , L os c li en te s d e u n u c la se u ti li zu n r ef er en c ia s p a r a in teructuar co n u n o bj et o d e l a c l as e. Pa rejem plo , e l m e to do p ain t d e u n np plct es u n c lien tc d e IIIc lase G ra ph ic s. E I m e to da p ain t u tiliza fill ar -g u r n e n t o ( u n a r ef er en ci a a un o b j e t o G ra ph ic s, c om o g ) p ara d ib uja r e n e l a pp le t, l ln m a nd o a l os m e to do ,q ue s on servicios p ub lic d e l u c lu se G rap h ic s (co mo d ra wS trin g , d raw Lin e . d raW Ova l y d r aw -R ec t) . C om o v ere mo s c n la fig ura 8 . 2 , se u tili zn ni u na r ef ere nd a a T ie m po l p ar a l nte ra ct na r c on u n o bj etoT i empo l .

    E n l as l fn e as 1 2 a 1 5 s e d ec lara el c o n s t r u c t o r d e l u c l as e T ie m po l. U n c on str uc to r in iciu liza l o s o b j e to sde un a c la se . C ua nd o u n p ro gr am u c re a l in o bj et o d e l n c l as e T i empo1 , l a i n s tr u cc io n ne w as igna m em o r i ap ar a e l o bj eto y l la m a a l c o ns tr uc to r p ara q ue in ic ia li ce a e sc o bje to . E I c o ns tr uc to r d e l a c la se T ie m po l l la -m a u l m e to d o e s t ab l e c e rHo r a ( Hn eu s 1 9 a 2 4) p a r a i ni ci al iz ar I us v a ri ab le s d e i ns ta n ci a hera, minu toy se g und o con 0 ( r cp re s cn t and o la medianoche) . L os c o n st ru c t or e s p u e dc n t o rn u r n r gum e n to s , p er o n o pue-d en d ev o lv er v al or es , U n a d if er en ci a i m po rt an te e n tr e l os c on st ru ct or es y l os m e to d os e s q u e l os c on st ru ct or esn o p u ed e n e sp e ci /i ca r w/ t i p o d e v al o r d e r et o m o ( n i s i qu i c ra vo id ) . E I nornhre d e l c o n st ru c to r d e b e se r elm i smo qu e el d e In clase, POI ' 10g en e r a l , lo s c o n st ru c t or e s. se d e c la r un c o m o p u b li c .

    E rro r co m un d e p ro gra m ac io n 8 _2T r a ta r t ie i le c larar 1 1 1 1 l i p o d e 1 ' " l l l l ' d e r e to r n o p a tu 1 1 1 1 c o ns tr uc to r; u tr a ta r d e d e vo lv er ( m ed ia n te return) u nI ' a l o r el/ 1 1 / 1 c o ll sl m e W I; , !S 1 1 / 1 e r r o r . I av u p er m it e q u o tr as m et od os d e l u c l os e l " l l g m l el m i s l I l o l Io m /l fe d e e su : yq u e e s p e c i / i< I / I e l l/ i p o s d e v al or d e r e to l 1 lo . D i c ll O S / l1 l 't O , [O S n o S O i l c o n s tm e l O n ! S y 110 " e ni n ll w u od o s a l i l/ st an e ia ra 1 1 / 1 v b j e l O d e 1 0 c i l l s e . JallI d e t er m i n o < l l Ie m < t t o li o s SOIl m n S/r ue to fe s l o "" lb m dv I us m e to li u s q ue t i e ne ll dm i s -/110Ilolllbl't, q lle l a c la se Y q lle IIU e s p e d J i c l / i / 1 1 / 1 { ip o d e I 'u lo r d e I'e/ol'llo.

    E lm eto d o e s tab le c e rH ora (Iin c a s 19 a 24 ) e s u n m e to do p ub li c q ue d ec la ra t re s p ar am e tr os in ty l os u li li za p ar a a ju st ar I tt h o ra . U n u c x p re si 6n c o nd ic io na l e va lu a c n da a rg u m cn to p ar a d ct er m in ur s i c i v a lo rs e e n cu en tr u e n u n r a ng o e sp ec il 1c ad o. P or e je m pl o, e l v a lo r d e h or a d eb e SC I ' r n uyo r 0 i gu al a 0 y m e no r q u e24 ( linea 2 1) , y u qu e d f or m at a d e hora u n iv e rs al r ep rc sc n ta a l as h o ra s c om o e n tc ro s d e l 0 ttl 2 3. D e m a n e r as im i l ar , l o s v a l o re s d e l o s m i n u to s y s e gu n d os d e b en s e r m u y o re s 0 i g u u le s a 0 y I11cno r e sq u e 6 0 ( I ineas 22 y 2 3 ) .C u a lq u ie r v u lo r fucra d e c st os r an go s e s u n v a lo r i nv :i li do y s e c s ta bl ec e e n c er a d e m a ne ra p re d et er m in ad u , p u -r a a se gu ra r q ue u n o b je to T ie m p ol s ic m pr c c on te n gu d at os v ii li do s. ( E n e s te e je m pl o, c er a e s Ul l v a l o r v u l id op ar a h or a, m in ut o y s eg un do .) E sto t am b ie n s e c o no ce c om o I n l l l l t e n e l ' e l o i J je l o ell u n e s ta d v c o l/ si s te ll -te 0 / l J a n t e l l e r II I i ll le g l 'i d a t / d e l o i ! ie l o . C ua nd u e st ab le ce rH or a r ec ib c v al or es d e d ato s i nv uIi do s, e s COi l "v e n ie n te q u e eI p ro g ra m a i nd iq u e q ue I a h o ra c s i nv il li da . E n e l c a p it ul o 1 5 v e re m o s 0 1m u n cj o d e e x c ep c io n es ,q u e p u e de u t il iz a rs e p a n t i n di c ar v a lo r cs d e i n ic i al iz a c i6 n i n va li d os .~ " Buena p ractica de p ro gr am a c io n 8 .3~ ~ I ne il l Y" C ( }f IS /I 'I IC [ {) ~'e sn la d e dt lr ac /' II I d e ~ lI Ia e lm ' e, p a J' ll l ls eg U rt ll ' q u e l as v u ria b le s d e i l/ st al l ci a d e la c 1 us e C O I l-ml el lg u ll v a lo re s V a ll do .l ( 'u a nd o s e c re el l o ~" ,/o s d e e sa d a se .

    E I m eto do aS tr in gU niv ersa l ( lin en s 27 a 3 3) n o t om a a rg u m en to s y d c vu e lv e u n u ~ u de n a e n f o rm a "t o d e h or a u n iv e rs al , e l ~ lI uI c on si st e d c s ei s d ig it us ; d os [ lu ra l a h o r a, d o s p u ra e l m i nu to y d os p ar a c i s eg un "d o. P ar e jc m plo , s i I n h om r ue ra I :3 0: 07 P M , cI m eto do aS tr in gU ni v e rsa l d evo lv er iu 13: 30 : 0 7. E n I al in en 2 9 s e c re ll u n a i ns ta nc ia d e In c lo se D e ci ma lF or ma t ( im p Ol 'tu da e n Ia l in en 3 d el p aq ue te j av a. te xt )p ar a d ar I'o rm a to a Ia h or n u ni ve rs al . A Ia r ef er en cia d os Di gi t os s e I e n sig na u na re fe re nc ia a u n o bj eto d e

    cop nu lo 8 P r og ra m ac l6 n b a sa da an ob l e to s 30 7

    la c la se D e ci ma lF orm a t, In e mu s e in ic ia liz a c an e l p a tro n " 00 ". B sto i nd ic a q ue u n rn im ero c on f or ma md e b e c o n s is t ir de do s d lg it os ; c a da 0 r ep re se n tu I n p o s i ci o n de u n d ig it o. S i e l m i m ero u l qu e s e e su i d a nd o for-m a lO e s u n s o lo d i gi to , se lc a gr cg a n ut mm it ic nm c nr e u n 0 a la i zq ui cr da ( es d ec ir , 8 s e t or ma te a c om o 08) . Lain str uc cio n r et ur n d e Iu s l fn ea s 31 y 32 utiliza a d oS Dig ito s p a ra invocar al m eto do fo rm at d e D e-c im alF orm at (e l c ua l d ev ue lv e u na c ad en u q ue c on tie nc e l m lm ero Io mm tc ad o) p ara d ar fo rm ate a lo sv ul or es d e h o ra , m i nu to y ! !e gu nd o c om o c ad en ns d e d os d lg it os . E sa s c ad en us s e c o nc at en un c on e l o p c"r ad o r + ( se pu ra da s p o r s ig no s d e d o , p un to s) y s e d ev ue lv e l a c a de na r es ul tu nt e m e di an te c l'm e to do a S tr in lUn iv e r s a l .

    El m e t o d a a S t r in g E a t a nd a r (l fn ca s 3 6 a 4 3) no t om a a r gum e n to s y devuelve u n v al or S tr in g enf or m ut o d e h or a e su in du r, e l c ua l c on si st e d e l os v ul or es hera, minu to y s eg un do s ep ar ad os p or si gn os d ed o s p u n ta s y s eg ui do s d e u n i nd ic ad or A M 0 P M (po r e jem plo , 1: 27 : 06 P M). A l ig uu l q u e e l metodoaS t r i n g un iv e r s a l , e l m e to d o aS t r i n gE s t and a r uti l iza el me to d o f or ma t d e D e ci ma lF or ma tp a ra d a r f or m nt o it minu to y s eg un do c om o v alo re s d e d os d il ,r ito s, c on c er os u lu i zq ui er da e n c as u d e SC I 'n ec csu rio . E n la lin ea 4 0 se de term in a e l v a lo r p u ra h ora e n la c ad en a: s i la h ora es 0 0 12 (A M0 PM) ,c s t ev a l or a p u r ec e c om a 1 2 ; en c a s o c o n t ra r i o, h o r a apurcce c om o un v a l o r e n t re 1 y li.

    ;~{f f t l i f1gf i t~I l I l ,I( fA~Et!.~ltJ . !Des p l i c s d e d e c la r ar la c l a se , p o d em o s u t il iz a r la c om o u n tipo e n l as dccluruciones c om o :~ i e m po l p u e s ta D e S o l; II r ef er en da a u n o bj et o ~ ie mp ol

    E I n om bre d e l a c la se ( Ti em p o1 ) e s u n n or nb rc d e t ip o. U n a c la se p ue de p ro du cir m uc ho s o bje to s d e ig uu lf or ma q u e l in t ip o p ri mi ti ve , c o m o i nt , p ue de p ro du ci r m u ch as v ar ia bl es . L o s p ro gr am a do re s p ue de n d ec lu -r u r n u e v o s t i po s de c lu se s c on fo rm e 1 0 n ec es it en ; c st a e s un a de la s r uz o ne s p o r l as q ue J av u s e c o no c e c om ou n le n g u aj e e x te n s ib l e.

    L a c la se de ap lic ac io n P ru eb aT ie mp o1 d e Ia f ig ura 8.2 utiliza a la cla sc T ie mp ol. E I m e tod o m aind e l a c l a se Pru eb aT iempo l d e c l a r u y c re a u n it i ns ta nc iu d e la c l a s e ' l ' i empo l l l amnd a tL em p o, e n l a l in ea 9 .Al in s tau c l a r se e l o bj ct o, n ew as igna In m e rn o ri u e n In q u e c l o b je to T i em p o l s c a lm a c en a ni , d e sp u es l l amau l c on st ru ct or d e T i em p o1 p ar a i ni ci al iz ar l as v a ri ab le s d e i ns ta nc iu d el n ue v o o bj et o T ie m po 1. E I c o ns tr ue -to r invoca ul me tn d o e l ; ! t ab l e c e rHo rC \ p a r u in i c iu l i z a r c a d a v a r ia b l e d e i n st u n ci u e x p lf c it am e nr e co n o. Des -p u e s ne w r e g r e s a un a r ef er en ci a a l nu evo o b j c t o y cs u r ef er en da s e a sig na a t i empo . D e m a ne ra s im il a r. e nl i l s l i n e a s 29 y 3 8 d e I a c la se T i em p ol ( Ii gu m S .l ) s e u li li za n ew p a ra c re ar o b je lo s D e dm a lF or m at y p u -S i l l ' e l a r g umen to "00 " al con s l r u c to r d e e a da o b je t o p a ra i n di c ar e l p a tr o n u t il iz a do p i U 'a d a r f o rm a t o.. O bs erv ac io n d e ln gen ieria d e s oftw are 8 .3r;irl C a da v ez 'ille llew c r e a llll o b je /u d e 1I1lt!dase , se hace u / { a l I amad ' l a f " " ", I' II 'U c /o r d , : " s a d a s e p a r a i n ic ia li zo r

    ~ I u s var iab le s d e i l lS l l l n c ia ddllllevlI ubk /D.

    12345 public clllSS PruebllTiempol {678910111 21 31 415

    1/ F ig . 8.2: l'ruebaTiempol. j a v a1 / Clase PruebaTiempol que utiliza 1a e l a s e ~'iempol.i m p o r t j a v a x . sw i n g . J Op t i o n P an e ;

    publlc s ta t ic v o id main( S tr in g a rg /;[ ] I{

    1 / an e ) { a r version String de t iem po a salida S t r i n gS t r i n g salida" "La ho ra \m iv e rsa l in ic i.a l a s : " +

    + " \n La h Ora e s t a n d a r [nidal es: " +

    F Ig ur a 8 . 2 U n o bJ et o T ie m po l u il li za do e n u n p ro gr am a . ( Pa rte 1 d e 2.)

  • 5/11/2018 08 - Programacion Basada en Objetos

    5/28

    3 08 P ro gr am a clo n b cs cd o e n o bje to s

    1 61 71 81 920

    / / cambi a r tiernpo y anexar nora actualizada a salidae sc ab le ce rH or a e s: jI +

    2 12 2 / / eat.ahl ecer tiernpo con val or e s Lnva l i.dos r anexar t:iempo actualizado

    a salida2 32 4252 62 7282 9303 13 2333435

    salida +" " \ n \ n D e s p u e s de i n t e n t a r a j u s t e s i n v a l i d o s : " +/1 \nl -lora uni ver sa l : I t 'f 'i 'i imIMI'{:"i\;:;I vnllcra es tandar: /1 + 'F.{;;";''';'':~:C:I

    JOptionPane. s;howMessagellialog ( null, salida,"Prueba de La cl ase 'I'Lempo ". JOpt i o n P a n e . INFOP.NA1'ION_MESSAGE;

    System.exit( 0 );/ / fin de main

    /I fin de Ia c lase Prueba'l'Lempo l

    F igu ra 8 .2 Un ob jeto Tiempol u tl li zo do e n u n p ro gr am a . ( Pa rt e 2 de 2,)O b se rv e q ue e l a rc hi v o PruebaTiempol. java n o i rn p o rt a l a c l as e Tiempol. ' S i u n a c la se s e e nc ue n-

    t r a e n e l r n i s m o p aq ue te q ue la c la s e q u e l a v a a u ti li zu r, l a d e c ln ra c io n import n o s e r cq u i c rc , T o da c ln se e nJ av a e s p a rt e d e u n p ag ua te . S i u n p ro gr a m ad or n o e sp ec if i c a u n p aq ue te p ar a u na c la se , e st a s e c ol o ca e n Ul lp a q u et e p r e dc t er m i n ad o s in n o m b re , e1 c ua l i n cl u y e a t o da s l a s c la sc s c om p il a da s e n e l d ir ec to ri o a ct u al . q uen o s e h ay a n c ol o c a do e xp li c it a m en te e n u n p uq ue te . D e be m os e sp ec if ic ur d ec la ra ci o nc s import p a r a las c l a -s es d e l a A P I d e J av a, y a q ue e st r i n d ec la ra da s f u er a d el p aq ue te d e c ad a n ue va c la se q ue c re ar n os . ( E n l u s ec -c io n 8 .1 3 I e e n se fi a re m os c om o d ec ln ra r s us p ro p i o s p uq ue re s. ) H ay q u e t en e r e n c u en tu q u e I us d e cl ar ac io n csimpo:t;t n o s c r eq u ie rc n s i e l p ro g r um a c al i l i c a comp leumcn t c e l n o m br e d e c ad a c lu se , a nt c pc ni e nd o a e st ee l n o m b re d e s u p aq ue te y u n p un to ( .) . P o r e je rn p l o , u n p ro g r am a p ue de i nv oc ar u l r n et o d o showMessage-Dialog d e l a c lu se JOptionPane d e I n s i g ui en te m u n er a;

    j ava x.8 wi ng .J Op ti on Pan e. sh ow Me ssa ge Di al og ( "A qu i v a SU m en sa je" ) ;S i n e m ba rg o , e s b u s ta nt c m o le st o l I s n l ' e st os n o m b re s l ar go s .

    E n l a s I in ea s 1 2 a 1 4 s c d cc la ra l a r ef er en ci a salida t i p o String, I II c ua l r ep re sc nt a u na c ad en a q u e s em o s t f il n \ e n u n c ua dr o d e d it \ l o go d e m c ns aj e . [ ni c iu lm c l1 te , e l p r og ra m u a si g na a salida l a h o r n e n f or m at od e h o ra u n iv e rs al ( il lv o ca n do a l m e to d o aStringUniversal d e l o b je ta tiempo) y e n f o nT I il to d e h o m e st an -d u r ( in v oc n nd o < I Im e to d a aStringEstandar d e l o b je to tiernpo) p ar a c on fi n na r q ue el o b j d O Tismpols e h a y a i n ic ia li z ud o a pr op in da m cn tc . O b se rv e I n s i n tu x i s d e l a H a m ad a a l m e to do e n c ad a c as o; l u r ef er en ci a

    ca pf tu lo 8 P roqr omc cl o n bo s odo en ob ja tos 309

    tieropo v a s e gu id a d e u n p un to ( . ) y d el n om b re d el m e to do . L a r ef er en da s e r ef ie re nl o b je to q u e r ec ib ir a l al l a m ud a a lm c to do ( es d ec ir , e l o b j e to a l c u a l s e c nv ia rd e l m e n s aj e ).

    E n l u l i n ea 1 7 s e u ti l i z a e l o b je to tiempo p ar a i n vo ca r a l m e t od a eatablecerHora y c am b iu r l a h o -ra e D e sp ue s, e n l a s l i n en s 18a 20 s e a n ex a n u ev a m en te l u h o rn a salida, e ll a m bo s f or m at o s p ar a c o n f i r m u rq u e l a h o r a s e h u y a a ju s ta d o c o rr ec m m e n te ,

    P a r a i l u st r ar q ue e l m e to do establecerllora v al i d a l o s v al o re s q ue r c ci b e , e n l a I f n ea 2 3 s e b u ce u naI lu m u d a a l m e t o do establecerllora y s e i nt cn ta e s ta b le ce r l as v a ri ab le s d e i ns ta n ci a a v a lo re s i nv u li do s d e9 9. D e s pu es , e n l a s l f n ea s 2 4 a 2 6 ~ e a ne xa l a h or n a salida o tr a v ez , e n a m bo s f or m ut o s p ar a c on fi r m ar q u eestablecerllora h ay a v al i d ud o l o s d at o s. E n l a s l i n en s 2 8 y 2 9 s e m u e s t r a u n c u ad ro d e d ia l o go d e m en ,s aj e c on l o s r e su lt a do s d e n ue st r o p ro gr n m a. L as t i l t im a s d es l i n en s d e l a v en ta na d e s al i d a m u es tr a n q ue e ln em p o s e r e st n b l e ci o a m e di a no c h e ( el v al o r p re de te rm i n ad o d e u n o b j e to Tiempol) d e sp u es d e t ra ta r d e a ju s -t ar e l t ie m p o c a n t re s v u lo re s i nv u li do s .

    L a c la se Tiempol c s n u es tr o p rim e r e je m p lo d e u na c la se q ue n o e s u n a pp le t, y q ue n o c on ti e nc u n r ne to -do main. L a c lu se PruebaTiempol d ec la ra a l m e to d o main, p o r 1 0 q u e PruebaTiempol p u e d e u t il iz a r scp ar a i n ic iu r l a e je cu c i o n d el p ro g r am a , E l r ne to do main s e c o no cc c o m o c l p u nta d e e nt ra d a e n e ! p ro g ru m a ,U n a c l a se q ue c on ti e ne a main sec on oc e c om o u na c la s e d e a p li ca c io n 0 c l a s e e j e cu t o b le .O b se rv uc io ll es a ce rc a d e l a d ec la ru ci o n d e l a c lo se TiempolD e b c m o s t o m a r e n c u e nt a a l gu n as c u e st io n e s r e la c io n a da s ca n e l d i s cf i o d e c la se s, c on r e sp ec to a l a c la seTieropol. L a s v a ri ab le s d e i ns ta n ci a hera, minuto y segundo s c d ec la ra n c om o private, p ar 1 0 q ue n os on d ir ec ta m en te a cc es ib le s f ue ra d e l a c la se e n l a q ue e s u i n d ec la ra da s. L a r ep re se nt a ci o n a ct u a l d e l o s d at o su ti l i z ad o s d en tr o d e l a c la se n o e s d e I n i n cu rn be nc ia d e l o s e li e nt e s d e I n c l as e. P o r e je m p l o , s en a r nz on ab lep ar a I n c lu se r ep rc se nt a r I n h o r a i n te rn am e nt e c om o e l n um e ro d e s eg un do s t r an sc ur ri d o s d e s de r ne d i a no ch c,L o s c l i e n t e s p od rf an u ti l i z ar l o s m i s m os m e to do s public y o b t c nc r l o s m i s m os r es u l t a do s s in n ec es id ud d es ab e r e st o .' E n e st e s cn ti d o , s e d ic e q ue l a i m p le rn e n tu ci o n d e u na c la se e st a o c u l t a d e s u s c li en t es .. O bs erva cion d e Ing enier(a d e s oftw are 8 .400 E I o c u lt u tn i en t o d e l a i ll j" o r m Q c io I lJ i m le l l( C ll a c a p a c id a d de m o d ij ka /" l os p r og r am a s y s il ll pl ij ic a l u p e r ce p ci fi ll q /l eei t 'n e e l c li e nte a ce IL a d e I Il1 a c uu e.

    E n l a f ig u r a 8 .1 , e l c o n s tr uc to r d e Tiempol i ni ci al iz u l as v a ri ab le s d e i ns ta n ci a e n 0 ( es d e ci r, e l e q ui va -l e nt e e n h om u ni v er s al d e 1 2 A M ) . E s t o a se gu ru q ue e l o b je to s e c rc e e n u n e st a do c on si s tc nt e ( e s d ec ir , q uet od a s l as v a ri ab le s d e i ns ta n ci a s ea n v a li da s) . N o p u ed e n g u ar da rs e v a lo rc s i nv ti li do s e n l as v a ri ab le s d e l ns ta n -c ia d e u n o b j e to Tiempol, y a q ue s e h ae c u na l l a m a da a l c o n st r u ct o r c ua nd o s e c re a e l o b je to Tiempol. yl o s i nt e nt o s s ub si g u ie nt e s p o r p a r te d e u n c li e nt e d e m o d if ic ar l a s v ar ia bl e s d e l n st a nc ia , s on e xa m in ad os a f on -d a p ar e l r ne to do eetablecerHora.

    L a s v ar ia bl e s d e i n st a nc ia d e u na c la se s c i n ic ia li z an e n e l c o n st r uc to r d e e sa c la se , p er o t a m bi e n p ue de ni n ic ia li z ar se a l m e m e n t o d e d ec la ra rs e e n e l c u e r po d e I n c la se . S i u st ed n o l n ic ia li z a l a s v ar ia bl e s d e i n st a nc iae x pl fc it am e n te , e l c o m p il ad o r l as i ni ci al iz u i rn p lf ci tu m e nt e: l as v a ri ab le s n u m e ri ca s d e t ip o p ri m it iv e s e e st a-b le ce n e n c e ra , l os v a lo re s boolean s e e st a bl e ce n e n false y l as r ef er cn c ia s s e e st ab le ce n e n null.

    E s i n te rc sa nt e q ue l o s m e to do s aStringGni versal y aStringEstandar n o t or ne n a rg u m en to s ,E s to s r nc to d os p er te ne ce n a la m i sm a c la se q ue l as v ar ia bl e s d e i n s t a nc ia hera, minuto y segundo. P or 1 0t a nt o , t i e ne n, e n f or m a im p lf ci t a , a cc es o a l a s v ar ia bl e s d e i n st a nc ia d el o b j e to Tiempol e sp ec ff lc o e n e l q u es e i n vo qu en . E s to h ac e q ue l a s l l a m ad as a l o s m e to do s s ea n m a s c on ci s as q ue l a s l l a m ad as a f un ci o n es c on ve n -c io na le e n l u p ro g r am a ci o n p o r p ro c e dim i e nt o s, T a m bi e n s e r ed u ce l u p ro ba bi l i d ud d e p as ar l os a rg um e nt o se rr on e os , l os t ip o s e rr 6n e os d e a rg u m cn to s 0 cl n u r ne ro e rr on e o d e l o s r ni s m os , c om o o cu rr e c or m in m en te c onl a s l Iu m ad a s a f un ci o ne s e n e ll e ng ua je C .. O bs erva cion d e ing enieria d e s oftw are 8 .5

    U li l im r / l il a m e wd ol og "a d e progr l l l l luC:; 'JII o rie nta d a a v bM o ,I ' if l Il e nu d v s im p li j ic a l as l la m ad as a lo s m d to d os , 1 1reduc i rse e l J lI im e ro d e argi l inel l los q ue d eb tm pmar se . E s l c b e ne J ic io d e la pmgramac i t i l l " ri en ta r ia a u b jt !l os sed er iv ll d el e nC G p sl lla m ie niv d e l as v ar ia b le s d e illsltlllda y l o s n u i to d o s d ell ir o d e W I o b j e l O .

    2 . E n e l e je rc ie in 8 .1 8 I e p e d ir em o s qu e r c ll li e e p r c ci S U l Il e n tc c s ta m u d i f ic a c io n a i ii c l as e T i em p o l d e i ii f ig u m 8 . i , p u ra m o s"t l 1\ r q ue n o h u y l in c am b ia v is ib le p u ra lo s c lie n te s d e I n c la sc ,

  • 5/11/2018 08 - Programacion Basada en Objetos

    6/28

    3 1 0 P ro gra ma cio n b asa da e n objatos

    L a s C ll lS C Ss im p li fi cu n l a p ro gr am u ci on , y n q u e e l c li en te s ol o n ec es it a p re oc up ar se d e l os m e to do s p u ~b li c e xp ue st os p or u na c la se . P a r 1 0 ge ne ra l, e st os m e to do s e st an d is er ia do s p ar a s er o ri cn tu do s a l c l ic nt e, e nv ez d e s er o ri en ta do s a la im p le m cn ta ci on . L os c li cn te s n o c on oc en n ad a d e, n i e su in i nv ol uc rn do s e n, la !t n.p le m en ta ci on d e u na c la se , L a s i nt er fa ce s c um b ia n c an m e no s f re cu en ci a q ue l as i m pl cm e nt uc io ne s. C u an dac am b ia u na i m pl em c nt ac io n, e l c od ig o d cp en di en te d e l a i rn pl er nc nt ac io n d eb e c um h ia r d e m n ne ra a co rd e. A ]o c ul ta r I n i m p l cm e n ta c lo n , r e du c im o s l a p o si b il id a d d e q u e o tr a s p a rt es d e l p ro g ra r na s e v u el va n d e pe n di en t csd e l o s d e t n ll e s d e i rn p le rn e nt a ci on d e I n c l as e .

    r 8 .3 A lc a n ce 'd e l as c lo s e s : 'R ec ue rd e q ue e n la s ec cio n 6 .9 v im o s q ue l as v ar ia bl es y lo s m e to do s d e u na c lu se p e r t c n e c e n ul a lc a nc e d ee s a c l a se . D e ntr o d el a lc an ce d e u na c la se , lo s m i em br os d e e sta s on a cc esi bl es p ar a t od os l os m uo do d e e s uclase y p u ed e n r e fe r en c ia r se d ir e ct am e n te p o r s u n o m b re . ' F u e r a d el a lc an ce d e u na c la se , I ns m i em b ro s d e e s-t a n o p ue de n rc fe re nc ia rse p or s u n or nb re , L os m ie m br os d e u na c la se ( co mo l os m ie m bro s p ub li c) q ue s ca nv is ib le s p uc de n u ti li za rs e s 61 0 a t ra ve s d e u n " m un ej ad or ": u na r ef er cn ci a a lin o bj et o d e l a c lu se , 0 e l n o m br em ism o d e In c la sc p ara lo s m ie m br os s ta ti c. S e p u ed e h ac er r ef er en da a lo s m ic rn bro s m ed ia nt e l I o l l l h r e R ( ! ./ c rc n c ia O b j er o . n o m b r eM i c l ll b ro O h j et o . P a r e je m pl o, u n p ro gr um a p uc dc d ct er m in ar e l r n i m e r o d e e l em e n to sen e l a r reg lo ca lific a c io n e s acced iend o a l m iem bro p ub lic l lam ado leng th d e l a r reg lo , a trn v e s d el a r e f er e n d a c a l if i ca c i on e s , COI l lO en calific a c io n e s . l en g th .

    L a s v ar ia bl es q ue s e d ec la ra n e n u n m e to da s on c on oc id ns s 61 0 p u r e sc m e to do r es d ec ir , s on v ar ia bl es 1 0c al es ). S i u n m et od a d oc l ar a a u na v ar ia bl e lo ca l c on c l m is mo n om br e q ue u na v ari ab le d ec la rn da e n la c 1a scq u e e nc ie rr a a e sc m e to do , l a v ar ia bl e d ec la ra da e n e l u lc nn ce d e l u c l as e q ue du s om b re ud a ( oc ul ta ) [ lo r l a v a-,r ia bl e l oc al . U n a v ar ia bl e d e i ns ta nc ia o cu lt a p ue de u ti li za rs e e n e l m e to do s i s e u nt ep o ne a s u n om b re l a p a lu -b r a c la v e t hi s y u n p u nto ( ,) , c om o e n th is . nombre l l e v anob l e . D e sc ri bi re rn o s l a p a la br n c la ve t hi s c onm a s d e ta l le e n l a s ec c io n 8.5 .

    L o s m o dl fi ca do re s d e u cc es o p ub li c y p riv at e c on tr ol a n e l a cc es o a Iu s v a ri ab le s y lo s m et od os d e u nac la se .' C o m o d lj im o s e n l a s ec ci on 8 .2 . e J p ri nc ip al p ro po si to d e l os m e to do s p ub li c e s p re sc nr ar a l os c li en -te s d e l a c la se u na v is ta d e l os servicios q ue l a c la se p ro po rc io na ( la i nt er fn z p ub li ca d e l a c la se ), L o s c li en tc sd e I n c la se n o n ec es it nn p re oc up ur se a ce rc u t ie c om o l a c lu se r ea li zu s us t ar ca s. P o r e st a r az ri n, I us v ar ia bl es ym et od os p ri va te d e u na c la se ( es d ec ir , lo s d e ta lle s d e l mp le m en ta ci on d e I n c l as e) n o s on d ir ec ta m en te a c-c es ib le s p ur a l os c li en te s d e u na c la se , A I p ro ce so d e r es tr in gi r e l a cc cs u a l os m i em b ro s d e u na c la se m e di an -te la p ala br a c la ve p ri va te s e le c on oc c c om o o cu lt am ie nto d e In i n fo rm a ci on .

    E n l a f ig ur a 8 .3 se rn ue st ra q ue lo s m ic m bro s d e c l as e p riv at e n o s on d irc ct um en te a cc es ib lc s fu er a d el a c l as e. E n l a l i ne a 10 s e t ra tu d e a cc ed er d ir ec ta m en te a In v a ria bl e d e i n sta nc ia p ri va te l ln ma da h ora , d elo bj et o T ie m po l q ue e s r ef er en ci ad o p or ti em po . A I c om pi la r c ste p ro gr nr na , e l c o mp il ad or g en er a m e nsa -je s d e e rro r in dic an do q ue lo s m i em bro s p riv ate h era , m in u to y s eg un do n o s on u cc es ib le s. (No ra : Es -t e p ro gr um a s up on e q ue e m pl ea ni lu c lu se T ie mp ol d e la f ig ur a 8 .1 .)"_ ,, E rro r co mu n d e p ro gra mac io n 8 .3~ Si till m et od o q ue 11 0 s ea m ie mb ro d e Will c la se e sp ec ij im , t ra tu d e a cc ed er II l l /UJ d e l os m i em b ro s pri va te de~ esa c lose . Sf p r o d u c e till e r ro r d e s i nt a xi s.

    1 II Fig. 8.3: PruebaTiempo2. java2 II En-ores que se p ro d u cen a l tratar d e a cc ed er ,1 l os m ie m bro s private de

    Timnpol.F ig ur a 8 .3 L os m le m br os p riv ad os d e 1 0c la se T ie m po l n o s on o cc esl bl es. (P or te 1 d e 2.)

    3. E n l a s e c c iu n S . I I v e r er n o sq u e l o s me i o d o s static s onun a ex cep c io nu e s t a r eg l a .4. Elle l c a p u u l o

  • 5/11/2018 08 - Programacion Basada en Objetos

    7/28

    312 P rcq rorn cc lon b asad a en obleto s C apnu lo 8

    101 11213141 51 61 71 81 92 02 12223242 52627

    HoraSimple hora = new HoraSimple ( 12, 30, 19 I;JOptionPane.showMessageDidlog( null, hora.crearCadena(l,

    " D e m o s trac i n d e la r e te re n c i a \"this\'/lIJOptionPane. rNFORMi\TION_~1E:SSAGE;

    System.exit( I) I;

    /I fin de La c laae Pr'ueba'l'hisIlIa cLase HoraSimple musst. ra e l uso de Ia referenda "this"class HoraSimple {

    p r i v a t e int hora;private int m i n u t o ;private int: s e g u n d o ;II e l constructor ut i i.za n o m b r c s de p a r a r n e t ros id,~nticos a los n o m b r e s

    de la variableII de instancia; se requiere L a referencia "this" para di f er enci ar entre

    109 nombres .public HoraSimple ( int h o ra , int minuto, int segundo I(

    2 829303 132333435363 736394 0414243444 546474649

    1/ usar "this" exp.l Icio e implicito par" Hamar

  • 5/11/2018 08 - Programacion Basada en Objetos

    8/28

    31 4 P ro gr am ac i6n b asa d a e n o bje to s C a pf tu lo B

    p re dc te rm i nu do p ar a u na c la se l la m a u l c o n st ru ct or si n a rg um e nt os p ar a s u s up cr cl as e ( lu c la se q ue e xt ie nd e) ,y l ue go p re ce de a i ni ci al iz ar l as v ar ia bl es d e i ns ta nc ia c on l os v al or es i ni ci al es e sp ec if ic ad os e n s us d ec Iu ra .ciones , 0 c on s us v al or es p re de te rm in ad os ( ce ro p ar a l os t ip os n um e ri co s p ri mi ti vo s, f al se p am l os v al o re sboo l e an y n ul l p ar a l as r ef er en ci as ). S i l a c l as e q ue a s c xt cn di da p or e st a c la se n o t ie ne u n c on st ru ct or s in "a rg um e nt os , e l c o m pi lu do r g en er a u n m e ns uj c d e e rr or . T ar nb ie n e s p os ib le p ar a e l p ro gr am a do r p ro po rc io na r,un c o n s t r u c t o r sin a rg um e nt o s, D e h e ch e , e l c o ns tr uc to r p a nt l a c l a s e Tiempo l d e l a f i gu ra S. l es u n c o n st ru c .to r sin a r g u m e n t o s . Si u n p ro g r nm a do r d ec la ra u no 0 m a s c o n s t r u c t o r c s p ar a u na c la se , J av a n o c re ar a u n c on s.t ru c to r p re d ct en n in u do p a ra e s a c la sc .. ., .. _, " B u en a p ra c tl ca d e p ro gr ar na ci on 8 .5~ Cud u ve z q / le s e a a p ro p ia d o ( c as i s ie m p re ], p r op o rc io n e lill c o ns t ru c to r p a ra a s eg u ra r q ll e t od as l a: v a r i a b l e s dern ins tanc ia de /1/1 o b je to s e i n ic ia l ic e n c o r ,. " c /< I I lI e 1 1 l e , C O i l va lore s s i gl li ji c at iv o s .. .,- /; E rro r co rn u" d e p ro gra rn ac io " 8 .5r o o S i I ll ln ( " iUS,! t ic ne c on st m ct or es , p er o l Ii ll g ll ll o d e los eOl l s /mc/o r es p ub l i c es cO l l s / r l l c r o . r s i n u r g u n te n t o s, y IiI lI 1 t L J pmgmnw ttuta de lku na r a I I I l cons truc tor sil l a r gu t ne n to s p a ra i l l icia/i ,ar 1 1 1 1 o bj e/ O d e In d o se , s e p ro du ce

    1 1 1 1 e r ro r d e compi/l lcit;n. U n c o n st ru c to r p u e dc l la m a r se s i l l a r g llm e ll t os s o la m e n te s i no h a y c o n st r uc to r e s p a r aIII c lasc (se l l ama al c on s t r u c t o r prede te rminado] v si ha y 1 1 / 1 c O l l s / r u c / u r public s i n l I r, q l lm e / ll O s .

    8 .r us o d e co h s hu C to re s s o br ec a rg a d osC om o d ijir no s e n la s ec ci on 8 .6 , In s c on st ru ct or es d e u na c ln se p ue de n sobrecargarse. L o s c o n st r uc t or e ss o b re c ar g ad o s p e n ni te n a lo s o b je to s d e un a c la s e i n ic ia li za r se d e d i st in t as f o rm a s , P a r a s o b rc c ar g n r c o n st ru c to r es ,s ir np lc m e nt c h a y q u e p r op o rc io n ar v a ri as d e cl ar ac io n es d e l c o ns tr uc to r c o n d is ti nt as l is ta s d e p a r a m e r r o s . Re -c u er de q u e en I n s ec ci o n 6 .1 1 v im o s q ue l os m e t o do s s o b re c at g ad o s deben t en o r d i st in t as l is ta s de p a ra m et ro s .. ,. .. .. ,, ' E r ro r c o rn u " d e p r og ra r na c io n 8 . 6~ Truta r d e s o b r e ca r g u r I I I l const r ucto r Ci I I l otro COl l s t r ue /u r ql te l e ll g u e xa c t ame n t e III / I I is i n a j i rm a ( 1 l l J 1 l 1 b r e Y [lard.~ 1 IIe /lV s) e s IIIl e r r o r de s in tus i s .

    E I cons tructor d e T iem po l en la s l f n cu s 1 2 a 1 5 d e l a f i g u r a 8 .1 in icial iza a hera, minu to y s eg undoc on 0 (qu e es m cd iu no ch e e n fo rm ato d e h om u niv or sa lj .Il am an do a l m et od o e sta ble ce rH ora d e l u c la se ,S in e m ba rg o, e st e c on st ru ct or n o p er mi te a l os c li en te s d e l a c l ns e i ni ci al iz ar I n h om c on v nl or es e sp ec if ic os . L ac la se T i em p o 2 ( fi gu ra 8 .5 ) c o nt ie n e c in c o c o ns tr uc to re s s ob rc c ar gn d os q u e p ro p or ci on a n f or m as c o nv e ni cn te sd e i ni ci al iz ar o bj et os d e l a n u ev a c la se T ie m po 2. C ad a c on st ru ct or g ar an ti za q ue t od o o bj et o q ue i ni ci al ic c e rn -p e za ra e n u n e st ud o c o ns is te n te , E n e st c p ro g ra m a , c u at ro d e l os c o ns tr uc to re s i nv o ca n a u n q u in to c o ns tr uc to r,e l c o al a s u v cz l l ama u l me t o da e s ta b l ec e r Ho r a p a ra a s cg u r ar qu e el v a lo r p r op o r ci o na d o p a r a hera s e e n-c u e n t r e e n e l r a n g e d e 0 a 23 y q ue l os v a lo r es p a ra minu to y s eg undo s e e n c u e n tr e n en e l r a n ge d e 0 a 5 9. S iu n v a lo r e ~t u f u e r a d e f an g o, s e c st ab le ce e n c er o med ian t e c l m e r o d o es tablecerHora ( a s e g u r a n d o un a v ezm i l s qu e e li d a v a ri ab l e d e i n sr a uc ia p e rm a n e zc a en u n e st ad o c o ns is tc n te ), P a ra i nv o ca r a l cons tructor a p r o p i a d o ,se compa r an e l m i m c r o y t ip o d e l os a r g u m e n t o s e s p e c if i ca d o s e n l u l la m a da a l c o ns tr uc to r c o n e l m i m er o y t iposd e l os p a ra m e tr es c s pe c if ic a do s e n l a d e cl ar ac io n d e c a da c o ns tr uc to r. E s to s e c o no c e t am b ie n c o m o i g ua l ar l a sf irmas . En l a I i gu ra 8 .6 s e u ti li za la c l a s e Tiempo2 p a r a r n o s t r a r su s c o n s t r u c t o r c s .

    I II Fig. 8.5: Tiempo2.java2 I I Declarac ion de La clase Tielllpo2 con ccnatrucccres sobrecarqados .3 import java.text.DecimalFormat;456789

    public class Tiempo2 {priva.te int hora; 1/ - 2 3private int m i nu t o r II 0 - 59private int sequndo : 1/ - 59

    Figura 8 .5 L a clos e T ie m po 2 c on c on st ru ct or es s ob re ca rg ad os . ( Pa rt e 1 de 3,)

    capf tu lo 8 P ro gr am ac io n b asa d a en ob ls tos 315

    3 33 43 53 63 7383 94 0414 2 II establecer un nuevo valor de tiempo, utilizando la hora univers'll;

    realizar43 I I comprobaciones de validez en los datos; establecer valores .inva lidos

    e n c er apublic void establecel"HOl;i:l( irit h , int m, int s ){

    hora _ ( ( h >- 0 ~& h < 24 ) " h : 0 );mlnu to = ( ( m >= 0 && m ~ 60 ) 7 m : 0 ) isegundo = { ( s >= 0 && s < 60 ) ? s : 0 );

    4 4454 6474 84 95051525354555 65 75 859

    /'I convertir a String en formata de hora universalpub.lic String aStJ;-lngUniversal ()(

    Decr a a l . F o rma t dosDigitos - new DecimalFormat( " 0 0 " ) ;return dosDigitos. format (hora +": n .,

    dosDigitos.rorrnat( minuto ) + ":" + do;;Digitos.format( segundo );

    Figura 8 .5 L a c la se T ie mp o2 c on c on str uc to re s s ob rsc or qo co s. ( Pa rte 2 d e 3. )

  • 5/11/2018 08 - Programacion Basada en Objetos

    9/28

    316 P ro gra ma ci6n b asa da e n o bje lo s C a pf iu lo 8

    60 II convart ira String en [armata de hera es tandar61 public Str ing aStringEstandar ()62 {63 Dec imalFormat; dosDigi tos , new llecimalFormat ( "00" );6 465 return ( (hera " 12 II hera " Il) ? 12 : hora % 12 I t" : "+66 dosDigitos.fol"IDat( minuto ) + ":" + dosDigitos. format ( ~egundo67 ( hera < 12 ? " AM" : ,. PM" );6 86 970 II fin de la clase Tiempo2

    F ig u r a 8.5 L a close 'I 'i sm p o 2 c on c on st ru cl or es s ob re ca rg ad o s. ( Pa rt e 3 de 3,)L a m ay or p a r te d e l c6d ig o e n la c la se T ism po2 es id en tico tt l d e la c la se T iem po l, p o r 10 q ue n os

    c on ce nr ra re m os e n l os n ue vo s c on st ru ct or es , E n Iu s l fn eu s 1 2 a 1 5 s e d ec la re e l c o ns tr uc to r s in a rg um e nt os(prcdcterminadc) y se in t r o d u ce u n u so e sp e ci al d e I n r ef er en d a t hi s, la cual se permite s ol o c o m o I tt p r imerai ns tr uc ci on e n e l c u er po d e u n cons tructor , E n la l fn ca 14 se u ti l iz a a th is en l a s in ta xi s d e H am a da a l m e to -d o, p ar a i nv oc ar al c on st ru ct or d e T ie m pe 2 q ue t om a tre s a rg um en to s ( de cla ra do s e n In s l in en s 3 0 a 33 ).EI cons tructor si n a rg um c nt os p us u v al or es d e 0 p ara In h or n, e l m inu to y e l s e gu n d o. A I u t il iz a r I n r e f e r end at hi s c om o s e m u c st ra a qu i p od e m os r eu ti li za r e l c 6d ig o d e i ni ci al iz ac io n p ro p or ci on ud o p o r o tr o c on st ru ct or , .e n v ez d e t on er q u e d ef in ir c od ig o s im i la r 0 i de rn ic o e n e l c u er po d e l c o ns tr u ct o r s in u rg u m cn to s.,,!~... E rror com un d e p rog ram acion 8 .7 .-, E s 1 1 1 1 e r r o r d e s in tu xi s c ua nd o l a r e fc r enc ia th is sc l IIi1izlI I ' l l el fuerpo t i t ' till const r ucto r para l l amar t lO lm~ C UIlS II" /f(" /o r d e l a m i sm a c lu se . y e s a i n s tt u c cu n ! /10 e s l a p ri m er a ell e! c o ns t ru c to r ; T a m b ie n ('.I' III/ er ro r d e s in t a-

    xis c u an d o u n me todu no cons truc tor i l l /e l l /II i l lVOfW a t i l l c a l l s / rue /or d ire c tumente media l l /e la referellcia th is ,E n l as li ne ns 1 8 a 21 se d ec la ra UII c on stru ct or d e 'I'i em p e2 q ue re cih e u n so lo a rg um en to i nt , e l c ua l

    re presen ta a lu h era , q ue se p asa ju nto c on lo s v alo res d e 0 p ara m in uto y s eg un do a l c o ns tr uc to r e n Iu sl in en s 3 0 a 3 3. E n Iu s l fn eu s 2 4 a 2 7 s e d ec la rn u n c on st ru ct or T ie m po 2 q ue r ec ib e d os n rg um e nto s i nt , l osc u al es r ep re se n ta n l u h o r a y e l m in uto , q ue se p usa n j un to c an el v alo r de 0 p aru se gu nd o a l c on stru cto ren la s Ii ne as 3 0 a 3 3. E n l as l in en s 30 a 33 s e d e clu ru e l c o n st ru c to r T i e m po 2 qu e r e c ib c t r e s a r g umen to s in t ,lo s cu a l e s r cp r c sen t an a l a h e ra , el m inu to y el se gu nd o. E ste cons tructor l l am a a e s t ab l e c er H o r a pa -r a l l ev a r it c ab o l u i n ic ia ll za ci on d e I us v a ri a bl e s d e ins tuncia,_" E rror c om un d e p rogra ma cion 8 .S~ U II C" l I sm /C lO r p ue de l lo m or a o tr os m et od os d e 1< 1 c la se . E s /' : c on sc ie ni e q u e l as v ar ia bl es d e e st od o t al ve ; flO se~ e ne ue n/ re ll m il l e ll UI I e su ul o c on si st en te , y o q ue e l c O ll s/ me to r e sld e ll e l p ru ce so d e i ll ic ia li Za r e l o b je to . U ti liz ar

    va r iab le s d e l ns tu n ci a a nt es de q l le havan s u l o i n i ci a l iu u l a s a pr op ia d am e nt e e s 1 1 1 1 e r r o r log ico .E n l as lf ne as 3 6 a 4 0 s e d ec lu ra u n c on st ru cto r 'I'i em p o2 q ue re ci be u na re fe re nc ia T is mp o2 a o tr o o b-

    je to T ie mp o2. E n e ste c as 0, l os v alo re s d el u rg um en to T ie m po 2 s e p a su n a l c o nstr uc to r e n la s l fn ea s 30 a 3 3p a r a in iciu lizar I n h o r a , el m inu t e y e l se gu nd o. O bse rv e q u e e st e con s t r u c to r a c ce d e d ir ec ta rn e nt e a lo sv a lo re s d e hera, minu to y seg undo d e su a rg um ento tism po . A pe sa r d e q u e s abem os q u e h era , m i-nu to y se gu nd o se d ec 1a ra n c om o v ar ia ble s p riv ate d e la c la se T ie mp o2, p od em os a cc ed er a e sto s v a-lo re s c on Iu s e xp re sio ne s tie mp o .h ora , tie mp e .m in uto y t ie m po . s eg un do ( H ne a 3 9 ). E s to s e d eb ea u na r el ac io n e sp ec ia l e nt re l os o b je to s d e l a m i sm a c la se ,. . O bs erva ci6 n d e in ge nieria d e s oftw are 8 .6

    C u an d o l in a b je to d e / Il ia c l as e / ie ne Wi l l referellda a a im o bj et o d e l a llIi.lllIa c la s t' , e ! p r i m er o b je u : p l ie d ,' a c e e de r II t od os l os da tos y m e to do s d el s eg u nd o o b j( !1 0 ( i n cl uy en d o a 10.1 ' qu e Still private),

    N i ng u no d e l os c on st ru c to rc s e sp ec if ic a l in t ip o d e v al or d e r et or no . ( R ec ue rd e, e st o n o e st a p er m it id o p ar al o s c o n st ru c to re s. ) A d e rm i s , t od o s l o s c o n s tr u ct o re s r ec i be n d i st in t os m i r nc r os d e a rg u m e nt o s y lo d i s ti n t os t i po s

    ) +

    Cap f iu lo 8 P rog ram ac lo n b a sad a e n o bJe to s 317

    d e a r g um c n to s . A p e s a r d e q ue s 61 0 do s d e l o s c o n s tr u c to r e s r e ci b e n v a l or c s p a r a la h ora , m in uto y se gu nd o,t o do s l o s c o n st ru c to re s e sp e ci fi ca n v a lo re s p a ra h o ra , m i n ut o y s eg un d o u ti li za nd o c er es p ar a s us ti tu ir l osv a lo r e s f a l t an t e s .

    L a c la se p ru eb aT ie mp o3 (f ig ura 8.6) c rc a se is o bje to s T ie mp o2 (lin en s 9 a 1 4) p an t rn os tra r c om oi nv oC a r a l os d is ti nt os c on st ru ct or es d e T i em p o2 . E n l a l in e a 9 s e m u es tr a q ue c l c o n st ru ct or s in a rg ur ne nt osH e i n Y oc U c u lo c an d o u n c on ju nt o v uc io d e p ar en te sls d esp ue s d el n om bre d e la C h I C , a l u sl gn a r un ob j e toT ie m pe 2 m e dia nte n ew . E n Iu s l mc ns 1 0 a 14 d el p ro gru ma s e m u es tra e1 p as o d e a rg um e nt os a l os c o ns tr ue -t or es d e T ie m po 2. E I c o ns tr uc to r a p r o p i u d o H e in vo ca c om p ar an do e l n um e ro y t i p o s de l os a rg u m en to s e sp e-c i fi ca d o s e n I n Hamad a 01 c o n s tr u c to r , c o n e l m i m er o y t ipos d e l os p a ram c t ro s e s pc c if i ca d o s e n In declaracionde cud a con s t r u c to r . Entonces , en la l i n e a 1 0 s e i nv o ca a l c o n st ru ct or d e l as Ifn ea s 1 8 a 21 d e l a f i g u r a 8.5. E nlu l in e a I I s e i nv o ca al con s t r u c to r de l a s l i ne a s 2 4 a 2 7 d e In l ig u ra 8 .5 , E n la s l i n e a s 1 1 y 1 3 s e i n vo ca e l con s -t r u c to r de la s l fn cu s 3 0 a 33 d e la fig ura 8. 5. En la lin ea 14 s e in vo ca a l c o n st ru c to r d e l as l fn e as 3 6 a 40 de laf i g u r a 8 .5 . E I r e st o d e l a a pl ic ac io n c re a u n a c ad cn u q u e c on ti en e l as r ep re sc nt ac io nc s e n c ad en a d e c ad a o bj e-to ' I ' iempo2 i n i c i u l i z u d o .

    1 II Fig. 8.6: PruebaTiempo3. j a v a2 II Constructores sobrecargados utilizados para inicializar objetos Tiempo2,3 import javax:.8wing.*j45 public class Prueba'I' impo.l67 public static void m ain ( String args [I )891 01 11 2131 41 516171 81 9202 1222 3242 52 62 72 82930313233343536

    String salida .; US e const ruyo con: " +lI \ntl: todos los argumentos pr edet.ernu nedos ' +"In tl. aStringUni ver sal ()"In " + tl.aString!lstand~r();

    salida += "\nt2: se especi f i.co hera. minute y seoundo predeterminadcs" +"In t2. aStringUni versal( ) +"\n " + t2.aStdngEstandar();

    salida += '\nt3: se especificaron hora y minuto; segundo predeterminado" +"\ n + t3 .aS tr in gU niv e rsa l( ) "\n t3 . aStringEs tandar ();

    salida t, "\nt4: se especi Eicaron hera. minu to y segundo" +"In .. t4. aStringllni ver aa l t l +"\n " t4.aStringEstandar();

    sal i.da t-= II\nt5: se aspecif icaron todos como val ores Inva.lLdos" +"In tS. aStdO\JUni versal t i +'IIn t5. aStringEstandar ();

    F ig u ra 8 .6 C o ns tr ue to re s s ob re co rg ad o s u tl ll zo do s p ar a i nl ci ol lz ar o b je to s T ie m p o2 , ( Pa rt e 1 d e 2 .)

  • 5/11/2018 08 - Programacion Basada en Objetos

    10/28

    31 8 Proqrcrnocton b a sad a en obletos C ap ij ul o 8

    3 73839404 142434445464748

    salida += "\nt6: se especific6 objeto t4 de 1" clase 'l'i empoz" +"\n + t6. aStringUn iersa 1 I I +"\n " + t,6.aStdngEstandarll;

    JOptionPane. showhesaaqelrl.a LoqI nul l, sali da ,"Constructores sobrecargados", JOptionPane.INFORMATION_MESSAc)EI;

    Sy:;tem.exitl 0 I;

    II fin de mainil fin de La clase PruebaTiempo3

    F ig ur a 8 .6 C o ns tr uc to re s s ob re ca rg ad os u ti ll zo do s p ar a I nl ci al lz ar o b l et os T ie m po 2. ( Pa rt e 2 d e 2 .)

    C ad u c on st ru cto r d e T ie m po 2 e n l a f lg ur a 8 .5 p od ria e sc rib ir se d e m a ne ra q ue i nc lu yc ra u na c op ia d e la si nst ru cc io ne s a pr op ia da s d el m e to da e st ab le ce rH or a. E st o p od rf a SCI ' l ig e ru m e nt e m a s e f ic i en te , y u q u e s oe li mi na rf un lu H am a da a di cio na l a l c on str uc to r y l u ll am ad a a e sta bl ec erH ota . S in e m ba rg o, c on si de rec am b ia l' la r ep re se nta ci on d e l a h orn , d e tr cs v al o re s i nt (q ue r cq uie re n 1 2 by te s d e m e mo ri al a u n s olo v al ori nt p ar a r ep re se nt ar e l m im e ro to ta l d e s eg un do s tr an sc ur rid os e n c l d f a (q ue r eq uie re 4 b yte s d e m e mo ri a).A I c o di fi c ar l os c o ns tr uc t or es d e T i em p o 2 y e l m e to do e sta blec erH ora e n fo rm a id en tic u sc d ific ultu d i-c ho c am bio e n e sta d ec la ra cio n d e c la se . S i la im ple me ntn cio n d el m cto do es ta ble ce rH ora c am biu ra , lai m pl er ne ut ac io n d e l os c on st ru ct or es d e T ie m po 2 t en dr ia q ue c am b ia r d e i gu al f or m a. P a ra h ac er q ue l os c on s-t ru ct or es d e T ie m po 2 l la m en a l c on st ru ct or c on t re s a rg um e nt os (0 i n cl u so q u e t in m e n a e s ta b le c er H or ad ire ct am en te ) se r eq uie re q ue c ua lq ui er c am bi o a l a i m ple rn en tu ci rm d e e s t ab le c e rH or a se re al ic e so lo u nav ez . E st o r ed uc e l u p o si bi li da d d e u n e rr or d e p ro gr am u ci on a l a lt er ar l a i m pl cm e nt ac io n.

    o O b se rv ac io n d e in g en ie ria d e s o ft wa re 8 .700 S l e l I Il 1 il o d" d e 11Ila c l os e p l Vp o rc il Jl 1 a l a j i ll lc io l ia l id a d r eq u er id l l p O l' 1 / 1 1 CU l l s/ r li e tu r ( l l 011'0 me lodo J d e I I I e l lI s e.(~ l I ome 11 e se m e ra do d es de el c O ll sl m el o l' ( l ll li m m e tl lt lo ) . E s lo s im p l ij ic o e l m l ll ll el li m ie ll lo d e l c 6 di .~ o y reduce III

    p os ib il id ad d e i nt ro dl ld r m v re s ell e l c r i di g o .

    L o s c am p os p ri va do s p ne de ll m a ni pu lu rs c s ll ia m cn tc m c di an te m c to do s d e I n c la se o n d on de e st en d cc la ra do s.U n a m a ni pu la ci on t fp ic a s er in a l a ju st e d el s al do b an ca ri o d e u n c li en te ( po r c je m pl o, u nu v ar ia bl e d e i ns tu ne ia

    cap itu lo B P ro gr am a clo n b as od a e n objelos 31 9

    p riv ate d e u na c lu se llam ada C ue nta Ban ca ria) m ed ia nte u n m eto da llnm ado c alc ula rln te re s.L as c l as es a m c nu do p ro po rc io na n m et od os p ub lic p ar a p er mit ir a l os c li en te s d e la c la se es tablecer ( es d e -c ir , a s i g na r v a lo re s a ) u obtener ( es d ec ir, re cib ir l os v alo re s d e) v aria ble s d e i n sta nc ia p ri va te . N o a s n e ce -s n ri o ! la m a r u e s te s m e t od o s es tablecer y obtener , p er c u m e nu do a si s uc ed e.

    C om o e je m p lo d e n o m en c la tu r a. u n me tod o p a r a c s tu b le c e r I n v a r ia b l e d e in s tan c iu ta sa ln te re s sa llu-m a r l a t i pi c am e n te e s t ab l e ce r T a sa l n te r e s, y un m etodo p ara obten er la ta saP eln te re s sa llam a-rf u t ip ic am en ta ob ten e rT asa ln te res . L os m c t o d o s establecer t u r n b i e n se c on oe en c om u n m e nte c o m om e / o d os m u t u d or e s ( po rq u e g c ne m lm e n te c u m bi an u n v a lo r) , L o s r ne to d os ob t e ne r t am b ie n s e c o no c en c o m i in -m e n te c o m o n u it od o s d e ac re s() 0 m e to d os d e c o ns ul ta .

    Parece SCI ' q u e p r op o r ci o n ar h e r r a r n i e n r a s para establecer y obte t i er e s e s en c i almen t e 10 m is m o q ue h ac erl as v a r ia bl es d e i ns ta nc ia p ub li cu s. E st a e s u na s ut il ez a d e J av a q ue h ac e d el l en gu aj e a lg o t an d es eu bl e p ar u I ni ng en ie ti a d e s of tw a re . S i u na v ar ia bl e d e i ns ta nc ia s e d ec la ra c om o p ub li c, c uu lq ui er r ne to do q ue t en gu u uar ef er en da a u n o bj ct o d e l a c la se e n I II qu e s e d e cl ar e e st a v ar ia bl e d e i us ta nc ia p od ra l ee r 0 e sc ri bi r e ll e ll a, S iu na v ari ab le d e i ns ta nc ia s e d ec lu ra c om o p ri va te , lin m e to da o ble lle rp ub lic e vid en tc me nte p ar ec e p er-m i ti r a o tr os m e to d os el a cc es o a l a v a ri ab le ; s in e m ba rg o, e l m e to do ob t e ne r c on tr ol a l u m a n er u e n q ue e l c l ie n-t e p u ed e t en er u cc es o a l u v a ri ab le . P O I'e jc m pl o, s i r e pr es en ta m os l u h e ra c om o e l m l m e ro t ot al d e s eg un do s e nu n d iu , u n r ne to do o bt en erH ora c alc ul arf a la h or u a ct ua l y d ev o lv er fa e sc v al or . E l c 6d ig o c li en te n o n ec e-s it a s ab er q ue n o h ay u na v ar ia bl e d e in st un cia H am a da h or a e n e l o b je to . E l c li en te s im p le m en te s e p re oc u-p u p a r c l( lo s) s er vi ci oi s) q ue p ro po rc io na e l o bj et o. U n m e to do es tablecer p u b li c o p u ed e (y d e b e ) e s c ud r i fi a rc ui du do sa m en te l os i nt en tn s p or m o di fi ca r e l v al or d e In v ar ia bl e, E st o n sc gu ra q ue c l n ue vo v al or s ea a pr op ia -d o p a r a e s c c le m en te d e d at os . POI ' e jc r np l o, u n i n te n to p a r establecer cI d fu d e l a s e rn an a e n u na f ec ha 3 7 s er fur e ch a za d o, u n i nt e nt o p a r es tablecer e l p es o d e u na p er so na e n u u v al or n eg at iv e s er ia r ec ha zu do , y a s ! s u c e si -v a m e nt e, E n to n ce s , u u n qu c l os m c t od o s establecer y ab t e ne r p u cd e n p r op o rc i on a r a c ce s o a l o s d a t o s p r iv a do s,e l p r o g ra m a do r r e st ri ng e s u u c ce s o m e d ia n te I n i r np l er ne n ta c io n d e l os m e t od o s,

    L o s b e n cf ic io s d e l a i nt cg ri da d d e l os d at os n o s c d an a ut on ui ti ca m en te s ol o p n r qu c l as v ar ia bl es d e i ns ta n-c ia s e d e c la re n c om o p ri va te ; e l p ro gr um u do r d eb e p ro po rc io na r l a c o m p ro ba ci on d e s u v al id cz . J av a p en ni -t e a lo s progrumadores d i s et i ar m e j o r es p r o g rnm a s de u n a m a n er a c o nv e ni e nt c. L o s r n ct od o s es tablecer d e u nac la se p u ed cn d ev ol ve r v al or es q ue i nd iq uc n q ue h ub o i nt en to s d e a si gn nr d at os i nv nl id os a l os o bj et os d e l a c l a-s e. E 51 0 pe rm i te a l os c ll en te s d e l a c la se p ro ba r l os v al or es d e r et or no d e l os m e to du es tabiecer , p a ra d e te r -m i n ur s i l o s o b je to s q u e e s tr in m a n ip u la n do s on v d li do s , y p ar a t om a r l a a cc io n a pr op in da s i l o s o bj et os n o SO i lv a li d os . E n e l c a pi tu l o 1 5 , m o st rn rc m os u na m n ne ra m : b r ob u st a ell l a q u e l os c li en te s d e u nu c la sc p ue de n s ern ot if ic nd os s l u n o bj et o n o e s v al id o,: O bs erva cio n d e in gen le rio d e s oftw are 8 .800 L v s m e to d o s 'III

  • 5/11/2018 08 - Programacion Basada en Objetos

    11/28

    3 20 P ro gra ma cl6 n b as ad a en o bja to s C ap ft ul o 8

    a l as v ar ia bl es d e i ns ra nc iu , L o s in tentos p a r e s ta b le c e r cualquier v ar ia bl e d e i ns ta nc ia e n u n v al or incorrectoh ac cn q ue e st a v ar ia bl e s e c st ab le zc a e n c era (d eju nd o a si a lu v a ri ab l e d e i n st an c ia e n u n e s tu d o c o ns is te n te ).Ca da metod a ob t e ne r d ev u el vc e l v al or d e l a v a ri ab le d e l ns ta nc ia a pr op ia da . E n e st e a pp le ! p re se nu u no s t am -b ie n te cn ic as m ej oru da s p ar a c l m an ejo d e ev en to s d e G Ur. p ara q ue u ste d p uc da p ro ba r lo s n ue vo s m6todo sestablecer y ob t e ne r de l a c la se T ie mp o3 e n f o rm a in teructiva.

    1 /1 Fig. 8 . 7 : Tiempo3.java2 /1 Declarac;i6n de la clase TiempQ) con rnetodos establecer y obcener.3 import j ava . text . Decima If 'ormat ,45678910 ! 1':1 constructor de Tiernpo3 inicializa cada variable de instancia en cere:1 1 1/ asegura que el objeto Tiernpo3 inicie en un estado cons iutent;e12 pub lic T ien lp03 ( )13 (14 this ( 0 , 0 , a J; ! I n v o c a al constructor de TiempoJ con tres a r q u m e n t o s1 51 617 II Constructor de Tie ll \[Jo3: 8(~ proporciona hera : minut ;o y segundo can

    valo r p rede t.ermi nado de18 public ' P i . em po l ( i . n t h )19 {20 thi s ( n, 0, 0 ); I! invoca al constructor de Ti8rnpo3 con t rcs arqument.oa212 223 / / Constructor de Tiempo3: se propcrc ionan hora y m i nut .o , segundo con

    valor" predet ermi.nado de24 public Tiempo3 ( inc 11 , int m2 526 this ( h, m , a ); II i nvoca al c o n s tr ue t or de T iempo3 co n t res a r q u m e n t . o a272 829 !/C o n e truct.or de Tiempo3: se pr oporc i.onan h ora , minuto Y segundo30 public ' I 'Lempo l ( int h, int In, int s )31 (32 establecerHora( h, m, s );333435 II Constructor de Tiemp()3: se propurc iona ot ro objeto Tiempo336 public Tiempo3( Tiernpo3 tiernpo )37 {3839

    public class Tiempo3 (private int ho ra , II 0 - 23private int m i n u t o ; II a - 59p r i v a t e int s e g u n d o j II 0 - 59

    4 04142 I / Mt~todos es tablecer43 I! establecer un nuevo valor de hora usando hera universal; rea lizar44 I! comprobaci ones de val .idez r)11 los datos. establecer val ores iva lidoaen cero

    F ig ura 8 .7 L a c lo se T iem po 3 c on m eto dos e s ta b le c e ry o b te n e r. ( Pa ri e 1 d e 3 .)

    c ap fi ul o 8 P ro qro mc clo n b as ad a e n o b je tos 3 21

    4546474 8495 05152535455565 7585960616263646566676869707 17 2737 4757 6777879808182838485868 78889909 19 293949596979899

    public void establecerHora( int h, int m, int s )(

    II 1.1etodos obtener

    II convertir a String " n fo rmato de hora univer salpubl ic S tr ing ast r i nqun iver sa l ( ){

    DecimalFomat dosDigitos " new DecimalYorrnat ( "00" );return dosDigitos.

    dosDig ito s. format (dosuiui tos . fo rma t ( );

    1/ conver ti a String en tormato de hera est.andarF ig ura 8 .7 L a c los e T iem po 3 co n rn eto do s e s ta b le c e ry o b te n e r. ( Pa ri e 2 d e 3 .)

  • 5/11/2018 08 - Programacion Basada en Objetos

    12/28

    3 2 2 P ro gr am a ci on b as ad a a n o bl at os Capnulo 8

    1 0 0 public StringaStringEstandar I)1 0 1 (1 0 2 DedmalFormat dosDigitos ~ [lew D ec imal Format; I " 0 0 " ) ;1 0 31 0 4 _ " 12 I I ) ?1 0 5 12 ) t ":" ormat I1 0 61 0 71 0 81 0 911 0

    ) +:" ., dosniq l t os . formal: I.;: 1 2 ? 1/ AM " " PW I;

    / / fin de La clase 'P i empo3Figura 8.7 La clos e Tlempo3 con rnetodos e s la b le c e ry o b te n e r . (Parte 3 d e 3.)

    Los n u ev o s m e t od o s establecertus l a c la s e Tiempo3 se d e cl ar a n e n la f i gu r n 8 . 7 , en las l fn eu s 5 3 a 5 6, 5 9a 62 y 65 a 6 8. C a da m e t o d a e j e cu t a la m i sm a i ns tr u cc i on c o nd ic i on n l q u e s e e nc on tr ab a a nt er io rm e ut e e n elmetod o establecerHora p a r a ajus tar las v a r i ab l e s hora, minuto 0 segundo. Es tes nuevos me todos n o sp e r rn i te n r e d ef i ni r el cu e r p o d el metod o establecerHora p a r n mejo r a r In i n ge n ie r ia d e s o f t w a r e . Recue r -d e q ue , s i e l m e t o da d e u na clase y a p ro p o rc i on a t o da 0 p a rt e d e l a f u n ci o n a li d a d r e q ue r id a p o r o tr o m e to do d eIn c ln se .I la m e a c se m e t o da . E I metodo establecerHora ( lf ne as 4 5 a 5 0) a ho ra l l a m a a lo s r n e to d o s es-tablecerHora, establecerMinuto y establecerSegundo, cad u u n o de lo s c u al es r ea l iz a p a rt e d eIn t ar ea d e establecerHora.

    L o s n u ev o s metod o s ge l d e l a c l as e s e d e cl ar a n e n l a s lin ea s 7 2 a 7 5, 7 8 a 81 y 84 a 8 7 . C a d a m e to da d e-v ue lv e e l v a l o r de hora, minuto 0 segundo. Se d ev ue lv e u n a cop iu d e cad a v a l o r , ya q u e es tas so n t c d a svar iables d e t i p o p ri m it iv o. U t il iz an do e st os n ue vo s r ne to do s, m o di fi ca m os l o s c u er p o s d e l o s metod o saStringUni versal ( l i n e n s 90 a 97 ) y aStringEstanda;r ( l inens 10 0 a 1(8). E n a m bo s c as es , c ad u u sod e l as v a r i a b l e s d e i n st n n c ia hera, minuto 0 segundo s e r e em p la z a c on u na l la m ad a a establecerHo-ra, establecer11inuto y establecerSegundo.

    L o s metod o s es tablecer y ob tcn er t ienen u n a i rn p or tn n te v e nt a ju d e i n ge n ie r ia d e s o f tw a r e : l a f l e x lb il i d n d ,A l u ti li za r m e to d os establecer y ob t e ne r a 1 0 l a rg o d e l os c o ns tr uc to r es y d en n i s m e to do s d e I n c 1 a se Tiempo3,min im izamo s lo s camb io s q u e d e be m o s r e al iz a r e n I n d ec la ra cl o n d e l a c la sc e n c ns o d e q ue a lt e rc m o s l n fe -p rc se nt a ci o n d e l o s d at o s. POl' e je m p l o , p od rf am o s c um b ia r l a r ep re se nt a ci o n d e l o s d at o s d e hoza , minutoy segundo p u r o tr u r ep re sc nt a ci o n , c om o u n s ol o e n t e ro p ar a r ep re sc nt a r e l t o ta l d e s cg un do s t r an sc u r ri d o se n e l d i u . A l r e al i z ar d ic ho s c am b io s, d eb er n os m o di f i c ar c ud a u na d e l a s p ar t e s d e I n c lu se q ue t e ng an a cc es od ir ec to a hera, minuto 0 segundo. S i u ti l i z am o s l o s m e to d os cstableccr y ob t e ne r d e I n c l a se p ar a n cc e-d el ' a hera, minuto y segundo a 1 0 l ar g o d e I n c la se , e nt o nc es s 61 0 n ec es it a m o s p ro po rc io na r u na n ue val og ic a p a ru l os m c to d os establecer y ob t e ne r . E I u ti li z ar e st n t e cn ic a t a m bi e n p er m it e a l o s p ro g r am a do re s c am -b ia r l a im p le m e nt a ci o n d e u na c la se s in a fe ct a r a l o s c li e nt e s d e e sa c la se ( s ie m p re y c u a n d o l as l la m ad as at od o s l os m e to d os public s e s ig an r ea li za nd o d e I n m i sm a r na ne ra )., O bserva cion d e ingenieria d e softw are 8 .1 1[ , 1 J E l " c re so a l os d at os private II t ru ve s d e mi lO t /o sd e " < 'c e su es tab lecer y ob tcner 110 . 1 0/ 0 p r ol e ge a I a s v a ri a bl e s

    ~ de i ns ta nc ia pam qu e 110 r e ci b un v a lo r es i ll l' ci li d os , s i no q u e l a m bi ,, " o c u lt a l u r e p r e s e n t a c i on i nt em t l d e l as v ar ia -b le s d e i ns /a nc ia a l os c li en te s d e e sa c lo se . P a r 1 0 t al l/ a, si l a r e pl 'e S el ll a ci O Il d e l o s d a to s c a m b ia ( g el le m l ll l en t ep ar a r ed uc ir l a c an ti da d d e o /m a ce na m ie nl o r eq ue ri do , o p ar a m ei or ar e l r e n d i m i e n t o } ; . 1 61 0 t ie n en q u e c a m b ia l 'l as i m pl em e il la ci ol le s d e l os m e to d os ; l as i m pl em c nt uc io n es d el c li en te n o n ec es it an c am b ia t; s ie m pr e y c ua tu lo s ep re se rv e l a i nt et fo : p m p ar ci on a da I 'o r l os m i la r /o s.

    E I s u b p ro g r um a PruebaTiempo4 ( fi g u r a 8 .8 ) p ro po rc io na u na i n le rf uz g rr lf ic a d e u su ar io q u e p em l i t e a lu su ar il l p ro ba r l o s m e to do s d e l a c 1 u se Tiempo3. E I u s ua ri o p u ed e e st ab le ce r eI v al o r d e l a h o r a, c l m i n u t o 0c l s e g un d o a1 e H c r ib i r u n v i ll o r e n e1 o b j e t o JTextField a p r o p i a d o , y d e s pu ~ s o p r im i r [nllv. E I u su ar io p u ed et u m bi e n b ae er c li e e n e l b o to n Agregar 1 a S e gu nd o p ar a i n cr e m e nt a r l a h or u p or u n s eg un do . E I m a n cj od e e ve nt o s m o st r a do e n C H Ic e je m pl o e s s im il a r a l q u e s e m u es tr a e n l a s f i g ur a s 6 .9 y 6 .1 6 . T o do s l o s e ve nt o s

    capilulo 8 P rog ram aclon b as od a en objetos 323

    p a r a l o s o b j et o s JTextField y JButton e n e s te a pp le t s e p r o ce sa n e n e l m e t o d a actionPerformed (li-n e a s 64a 90).O b s e rv e q ue e n l a s l f n ea s 5 4 a 5 7 s e l l a m a a addActionListener p a r a i n d i c ar q ue e l a pp le td eb e e m pe za r a e sc uc ha r e vc nt o s d e l o s o b j e to s JTextField l l a m a d o s horaCampo,minutoCampo y s a-gundocampo, y d e l o b je to JButton l l u m a d o ticBoton. La s c u ut ro l la m a da s u ti li zu n a this c om o a rg u -m e n t o . i n d i c and o q ue e l m e to do actionPerformed d e n ue st r o o b j e to d el a pp le ! Prueba'l'iempo4 d e b ei n v oc ar se p ar a c ad a i r ue ra cc io n d el u su ar io c on e st o s c ua tr o c om p on en te s d e O U I . E n e je rn p l o s u n t e ri o re s c onO U I , s o lo u n c om p on en te d e l a G l f l g en er ab a e ve nt o s . E s to p ro d uc e u na i n te re sa ni e p re gu n t a : I ,c om o d et e rm i -n am e s c ua l f uc e l c om p on en te d e la OU I c on e l q u e i n te r ac tu o e l u s u a r i o ?

    E n actionPerformed, evento.getSource () ( ll n ea s 6 7 , 7 1 , 7 7 y 8 3 ) d et e rm i na c ud l f ue e l c o m -p on en te d e I I I O U I q ue g en er a e l c ve nt o , P O I' ej e rn pl o , e n l a H n ea 6 7 s e d et e rm in a s i ticBoton f u e o p r im i d op o r e l u s u a ri o . D e s e r a s l, se e j e cu t a e l c u er po d e I II i n sr ru c ci on if. E n c u s o c o n t ra r i o, el p r og ra m a e v al ii a lac o n d ic ia n e n h i i n st ru c c io n if d e l a l i n ea 7 1 , y a sf s uc es iv am e n t e . T o do e ve n t o t i e ne u n o r i g e n : e l c o m p o n e nt ed e l a G U l c on e l q u e i n te ru ct u ri e l u s u ur io p ar a i nd ic ar a l p r og ra m a q ue r ea li c e u n a t a re a, E I p a n im e tr o Action-Event c on ti e ne u na r ef er en c i a a l o r ig en d el e ve nt o . L a c on d i c io n e n I II l in ea 6 7 p re gu n tu , H / , e s ticBoton elo r ig e n d e l e v c nt o t" E s ta c on d i c io n c om p ar e l a s r ef er en ci u s e n u m b os l a de s d el o pe ra do r s p a ra d e te rr ni na r s is e r ef ie r en a l m is m o o bj e to . E n e s te c a so , s i a m b o s s e r cf ie re n a l o b je to JButton H a m a d a ticBoton, en -t o nc es e l p r og ra m a s ab e q ue e l u su n r io o p r im i o e se b o t on , R c cu er de q ue e ll I II s ec ci o n 6 .8 v im o s q ue e l o ri g end el e ve nt o l l a m a a actionPerformed e n r es pu es ta a l a i n te ra cc io n d el u su ar io ,

    / / Fig. 8.8: Prueba'Piempo-l. java/ / D er n oa t r aci on de los metodos establecer y ob t ensr de L a clase ' l 'i emp o L

    123 import java.awt.;4 import java.awt.event.';567691 01 11 21 31 41 51 61 71 81 9

    import javax.swing.';public class Prueha'Li empod extends JApplet implements ActionListener (p r iv a te T ie m po 3 tiempOi. prLvat.e JLabel horastiqueta, minut.cjlt iquet.a , segundoEtiqueti.l;pr ivate ,JTextFie ld horacampo , mtnutocanpo. segundoCampo, pant.al Iacampo.priva te ,.JButton t icBoton;/ / creal- obj eta TiEmpo3 y conf Lqurar GU rpublic void irii t I )(

    1/ obtener el panel de conteoido del applet y cambiar esquema a20 Container contenedor " gEtContentPane I) ;2 1 cont enEclo r. setLayout ( new FlowLayou tl ) );2 223 // configurar horaEtiqu~ta y horaCampo24 horaEtiqueta : new JLabel I "Establecer hora" );2 5 horaCampo ~ new ,JTextFieldl 10 );2 6 contenedor. add( horaEtiqueta );27 contenedor. add ( horaCampo );2 82 9 / / ccnf i.qurar minutoEtiqueta y minutoCampo3 0 minutoEtiqueta ~ new JLabel I "Establecer minuto" )i3 1 minutoC(llnpo ~ new JTex t!1i eld I 10 )i3 2 cont

  • 5/11/2018 08 - Programacion Basada en Objetos

    13/28

    3435363738394041424344454647484950

    324 Programacl6n basada a n obls tos Capftu lo 8

    II con fi gu rar segundoE tique ta y segundoCamposegundoEtiqueta = new JLabel ( "Eat ah l e cer segundo" i;segundoCampo = new JTextI 'iel d ( 10 I;contenedor,add( segundoEtiqueta I;contenedor.add( segundoCampo I;II configurar pantallaCampopantallaCampo = new J'rextFi81d( 30 I;panta llaCampo.setEcti table( false I;contenedor,add( pantallaCampo I;II configurar t ic80tont.tcsot.cn = new JBucton( "Agregar 1a Segundo" I;contenedor,add( t ieBaton I;

    51525354555657585960616263646566676869707 1727 37475767 778798081828384858667

    mostrarHora(); f I ac tua lizar texto en pantallaCampo ybarra de estadoII fin del metodo init

    F ig uro 8 ,8 M e to do s 6 5 ta b / e c e ry o b / e n er u tl ll z o do s p ar a m o ni pu la r u n o bl et o 'l.'iempo3, ( Pa rte 2 d e 4 ,)

    c ap ft ul o 8 P ra gra ma cl6 n b as ad a a n ob la tos 325

    8889909192939495969 79 89910 010110 210 310 410 510 61 0 710810 911011 111211 31141 1 511 6117

    / I actua li.zar pantallaCampo ybarra de estado del ccnt.enedcr de appl et.spublic void noat. rarllor a (I(

    pant2\llaCampo.SE)tText( "Hora : " + ~lir-~"o:obteneriiOl:a.n" + "; Minuco: " .,ti$ lnPo: QQI ; en e i i ' j f n~ t o ( ) + ": Segundo: u + tiemPQ, obtc!ll~iSegulldoll );showStatus( "loa hora est andar es : " + t iempo.aStr ingEst ,- ;ndar(1 ,

    "; 1,-; hera uruversa l es: " + tiempo, aStringUn.lversal (I I;) II fin del met.odo most re rtlor a1/ sumar uno ,1 1 segundo y actua l L aar la hora/minuto si ell necesar iopublic void tic (I{

    if

    if

    1/ fin del me r . o d e tic/1 f i . n de la c l a s G PruebaTiempo4

    Antes y despuss de ajuster 10horo

    Antes y despuss de ajustar 81mlnuto

    Figura 8, B Metodas e s t a b/ e c e ry o b t e n er u il li z a do s p ar a m a ni pu la r u n o bj et o Tiempo3, ( Pa rte 3 d e 4 ,)

    326 P ro gr am a clo n b aso do e n o bje to s

  • 5/11/2018 08 - Programacion Basada en Objetos

    14/28

    A n t e s y d e sp u e s d e a l u st q re l s e g u nd o

    A g r e g a r 101 s e g un d o d o s v e c e s, hac iendac ll c e n 6 1 b at on A g re g ar 1 a Segundo

    F igu r a 8 .B Me t o d o s e s t ab le ce ry o b te /1 B ru ti ll zo d os p a ra m a n lp u la r l in o b je Jo T i em p o 3, ( P ar te 4 d e 4 .)

    D esp ue s d e p ro cc sa r c ad a u no d e lo s e ve nto s d e lu in tc rfa z d e u su ari o, e n In lin ea 88 se h ae c u nu H am ad aa m o stra rH ora p ara m ostr u r l a nUCVl \ h o r a c om o u na c a d e n u en l a b a r ra de es tado de l upp le t , y lo s va lo r esde la horn , min u t e y s eg un do e n e l c a m p o d e t ex to p a nt al la C a m po . E n l as v e n t a n u s d e s ali da d e In f igura8 .8 s e m u es tr u e l a pp le t a nt es y d es pu es d e I us s ig ui cn te s o pe ra ci on es : a ju st e d e l a h er a a 2 3, a ju st e t ie l r ni nu -t o u 5 9 , a ju st e d e l s e gu n d o a 58 e i nc re m en to d el v al or d e l os s e g u n d o s dOB v e c e s m e d ia n te c l b o r on A g r e g ar1a S e gu n do .

    C u a nd o e l u su u ri o haec c li c e n ~ l b o t on A g re g ar 1 a S eg un do ( como s e m u e st ra e n la s t il ti m a s d o sv e n t u n a s d e s al id a d e l a f ig ur a g .8 ), c l metod a a c tio n P e rfo rm ed l lam a al me t o d o tL c ( de el ar ad o e n l asl fn ca s 1 04 a 1 1 5 ) d el a pp le t, E l mc t o d o tic uti l iza lo s nu ev a s me t c d o s es tablecer y ob ten er para i n c r e rnen tu re l s e g un d o a p r op i a dum c n tc .

    8.9Compos ic i6n~U n a c la se p ue de t en et c om o r ni er nb ro s r ef er en ci as a o bj ct os d e o tr as c la se s. A e st a c ar ac te ri st ic a s e I e c o no cecomo composic: i l i l l . P or e je m pl o, u n objeto de In c la se R elo jA la rm a n ec es ita saber c u ii nd o s e s up o ne qu ed e be s on a r BU n l a rm a , a S I q u e L p n r qu e n o i n c lu i r un a r e f c r enc ia II un o b j ct o T i e m p a como mi cmb r o de l ob je-to Relo jA la rma ' i. O bserva cion d e ing enie ria d e softw are 8 .1 2I7i:l U I l U f o r m u de r e ll ti li za c io ll d e s o ft w ar e e s I II c o m p l1 . l' ic iu n , e n d m u le I I I IC l c la se l ie n" c om o m ie mb ro s t t f e re uc iu s ae. b je tl Js t ie o t ra s c la s es .

    E I s ig ui en te p ro gn un a c on ti cn e t re s c lu se s: F ec ha ( Ii gu ra g .9 ), E m p le ad o ( t iguru 8.10) y P r u e -b aE m p le ad o ( ti gu ra 8 .1 1) . L a c lo se E m ple ad o tie ne Ius var iab les de i ns tu n ci a p r im e r N on il ir e , a p el li -d oP at er no , f ec ha N ac im i en to y f echaCan t r a tac ion . Lo s m i em b r o s f e c ha N a c im i e n to yf ec h aC on t ra tac io n ( lln e as 7 y 8 de l a I i g u ra g . IO ) s o n . re f e r e n c iu s U o b j et o s F e c h a qu e t i encn I u s v a r i a -

    c op nu lo 8 P ro grc mo cio n b osc do an o bja to s 327

    b le s d e i ns ta n ci a m e s , d ia y a ni o. E st o d e m u es tr a qu e una c las e p ue dc t en er r e fe r e nc i as a o b je to s d e o t r asc la se s. O b se rv e q u e la clase Emp l e a d o no i rn p or ta a l a c la se F e ch a , ya