3- Programacion Orientada a O Con Netbeans

18
- Dos de datos y -- :3s-de-datos-y- = i6 de octubre del Fr*g*&rffi&rE*ffi *r§*ntede a :: recciones-iava'pdf 3btenido el 17 de Java-Y excePciones -= octubre del 2011 Java - Netbeans' inalterable en el le un programa' de memoria donde se . ias y columnas) donde se consola en Java' ----,: -:crón -: s :aradigmas =-'.: gma de programación Resumen Autoevaluación cbjet*s G*ffi i$etffie&ffis 7.1 Refleiione y responda las siguientes preguntas I qué se denomina paradigma de programación? _ ls ra p¡69¡6mación a objetos el nuevo paradigma del desarrollo de software? _ - es la reutilización de software? ¿Posibilita la programación orientada a objetos " '=-tilización de código? -:: -=r,a un lenguaje de programación orientado a objetos? Contenido -:,:s de paradigmas de programación Evidencia b:¡--=-acrón orientada a objetos Referencias -:':iucción a la programación orientada Bibliografía : : :, a:os páginas web recomendadas - - - -:ptos básicos de la programación Respuestas a la autoevaluación : -:-::da a objetos :: -:íismo DESARROLLO DE SOFMARE CON NETBEANS 7.1 - ENRIOUE GÓMEZ A!ia*rle+¡

Transcript of 3- Programacion Orientada a O Con Netbeans

Page 1: 3- Programacion Orientada a O Con Netbeans

- Dos de datos y

-- :3s-de-datos-y-

= i6 de octubre del Fr*g*&rffi&rE*ffi *r§*ntede a:: recciones-iava'pdf

3btenido el 17 de

Java-Y excePciones

-= octubre del 2011

Java - Netbeans'

inalterable en el

le un programa'

de memoria donde se

. ias y columnas) donde se

consola en Java'

----,: -:crón-: s :aradigmas

=-'.: gma de programaciónResumen

Autoevaluación

cbjet*s G*ffi i$etffie&ffis 7.1

Refleiione y responda las siguientes preguntas

I qué se denomina paradigma de programación?

_ ls ra p¡69¡6mación a objetos el nuevo paradigma del desarrollo de software?

_ - -é es la reutilización de software? ¿Posibilita la programación orientada a objetos

" '=-tilización de código?

-:: -=r,a un lenguaje de programación orientado a objetos?

Contenido

-:,:s de paradigmas de programación Evidenciab:¡--=-acrón orientada a objetos Referencias

-:':iucción a la programación orientada Bibliografía: : :, a:os páginas web recomendadas- - - -:ptos básicos de la programación Respuestas a la autoevaluación: -:-::da a objetos:: -:íismo

DESARROLLO DE SOFMARE CON NETBEANS 7.1 - ENRIOUE GÓMEZA!ia*rle+¡

Page 2: 3- Programacion Orientada a O Con Netbeans

4A

r

Programáción or¡éntada a objetos con NetBeans 7.L

EXPECTATIVALa programación orientada a objetos es un paradigma de programación vigente en

nuestrós días. Mediante este paradigma se pueden diseñar sistemas y aplicaciones

informáticas que permiten la especificación funcional y la reutilización de códigos y

componentes. Esto sign\f\ca un a\to grado de cohesión y más aCop\amientO de laS

aplicaciones a las reglas de negocios ex¡stentes en nuestros días. Por ende, conocer

este paradigma Se convierte en una necesidad obligada para todos los que sededican al desarrollo de aplicaciones informáticas.

Después de estudiar este capítulo, el lector será capaz de

flempMilm.oW

ilry'T'm@mlJl

Conocer los componentes de la programación orientada a

conceptualizarla dentro del contexto del desarrollo deinformáticas.Comprender el paradigma de la programación orientada aforma de implementarla con Netbeans 7.1Desarrollar aplicaciones en Netbeans 7.1 que utilicen laorientada a objetos.Aplicar la reutilizacién de código y componentes en elaplicaciones orientadas a objetos con Netbeans 7.1

objetos paraaplicaciones

objetos y la

programación

desarrollo de

'Iil tir|].1l/il:*I,Fl illiiülÍ i lri*t.,

;tilt{Nnn,,Il1ll]llllliil]lutiiit],, Ilhtfl rfl{ill|}llu! il ti l i ti iiff ll,

DESARROLLO DE SOFMARE CON NETBEANS 7,1 - ENRIOUE GÓMEZ

,! mmrf,mrliüilliinili}t m fl iliilil,-

MtrcG!:. uirr tiifltl]iultiiíiirltfl;lilullilliu,-r rii

JJlllllrlllllllllllllil tltiltlr .ui,i:l¡,-i

llilil]fl t I liltffl rm]lfl ilfi Íutfl fi Nnr,.

iül]lllr|l fl llllllltlitlilltiltiü]tl]tffi

llllltriilfflllÍ]llrl}ilIl 1ír

rilllllltiliitll]]ll|lÍÍtmli rrltftilli

llfl ilil iü iltitiuf líÍlllllf lt tffl lriltf lllult,,]rf iür l

ilrñns itLlilf

llllllillÍfluliltilflllulilti ititi I

tNtitill]llrfllti",íll ilill

lll0illÍ]ln]üü[ fililt,

filllt, it]Ifiill rL i

Itr 'rÍ[if

i,,-rum

,üunt[ifl

lriillitw:

iiuÍrl]ru

iiu,lllllM

'-lrti]llÍfl

iliimmrum ü mmüEr

,llillillrrri "

llllllillllllll¡F

u{ lliri rr ll llll

Page 3: 3- Programacion Orientada a O Con Netbeans

A4+t

vigente en

= :='-.mas Y aPlicaciones'= --, tización de códigos Y

-'s acoPlamiento de las

:-as. Por ende, conocer

:¿ra todos los que se

capaz de

- -:^tada a objetos.Para

,s,=-'3tlo de aPlicaciones

:':r^tada a objetos Y la

--. rcen la Programación

en el desarrollo de

INTRODUCCIÓN:- - -:stros días el desarrollo de software es una actividad que genera millones de:: -'=s, Esos ingresos se obtienen del uso del software y por la producción del::-,,3'r. En el primer caso, se sabe que la vida comercial y financiera se ve:--:-:-etida con el uso intensivo del software para la realización detransacciones

" ::-:ración de información. En el segundo caso, empresas desarrolladoras se:---:.::. en una lucha feroz por ser parte del mercado de la venta de aplicaciones::-:': ales. financieras, juegos, entre otros. Por ello es necesario contar con'--- - -a'e de punta y las mejorestécnicas para eldesarrollo rápido de aplicaciones

:= : -ejor calidad. El paradigma de orientación a objetos permite muchas de*"=:: -a:esidades.

:§ parad¡gmas

-- :¿'.: gma se conceptualiza como un modelo o patrón de cualquier disciplina. =--=:"¿ c de otro contexto. Puede concebirse como un conjunto de ideas,t -- : :s. oensamientos, técnicas, métodos, entre otros elementos. Ese conjuntot ::_:-,-ro por grupos de personas comprometidos e identificados con la misma:.:--

= -=s:lución de un problema relacionada con el tema.

rar'ad igm a de programac¡ón

-* :,.-=: g-a de programación se concibe como una propuesta tecnológica que un; -:: :. 3ersonas adopta para la resolución de un problema claramente:* ---::: t-n paradigma de programación supone la formulación de técnicas,*":-: =s -étodos o cualquier otro elemento que permlta el cambio radical o:r:: :: ltro paradi§ma anterior. Por ejemplo, el paradigma de la orientación a::,r-:: ,'. a sustituir la programación tradicional basada en una estructura

*mms de paradigmas de programac¡ón

la historia de la computación han existido varios paradigmas deAl día de hoy la programación orientada a objetos es la que se

. ¿erte y la que más compañías de software utilizan en el mundo.. : -: :: caradigmas se han gestado gracias a la investlgación tecnológica, el

:= -s-arios y las experiencias vividas tanto en el desarrollo de software': -: :- en la funcionalidad del mismo.

DESABROLLO DE SOFTWARE CON NETBEANS 7.1 - ENBIOUE GÓMEZ¡ifü*iliü§al

p-:-= :cn

Page 4: 3- Programacion Orientada a O Con Netbeans

42.pi;s&;i¿¡i¡a¡tuAá á;bj nCIn Neigeans r'tr

La figura 3.1 muestra los tipos de paradigmas que han existido hasta el momento'

:i:i::: t::t:.tut::: :: :: t: :t :: I , ::.,::jr,t.tr,, ,,,t,:ii,

' i* basa en FaePdimt*ntot

¡ C 0 8ásic 50* Parte oe á:te par*Urgma

;*llÑe i'irria es rare drseiiar apllcacrü*ɧ'i

uar* el des¡rrolBo de aplíeacicnesr ernstrtuYe el nuevo Paradignta '

Figura 3'1 Tipos de paradigmas de programación'

pRocRnrunctÓN oRIENTADA A oBJETos

Como se mencionó, la programación orientada a objetos utiliza objetos y :=

interacciones que se puuá"n"a.,ablecer entre ellos' lncluye varias técnicas entre 3':

que se destacan rJ- r,ár"ncia, "r abstraccionismo, el polimorfismo v =

encapsulam¡ento. rsüs t"*itui utilizadai en forma adecuada y combir¿;=

permiten diseñar v oL1-.rioilur-sisternas informáticos de calidad en cuanto e s-

arquitectura y oesemp"ñ.in r" actualidad existen muchos lenguales que sopc--:-

laprogramaciónorientadaaobjetosyesraroencontrarunoquenolohaga.Muc.;=suites de desarrolto, .J"rá.é ta nárramieÁtá Oe creaciOn de la aplicación' ofre:=-

utilitarios que permiten el diseño conceptuai del mismo. Entre estos utilltarics -

encuentran OisenaOJüJ'0"-áirgru.nas UML que implementan diseñadores :*

código e inteffaces que facilitan el desarrollo de aplicaciones'

DESARROLLODESOFTWARECONNETBEANST.I-ENBIOUEGÓMEZ ..- - i

ümn,iiltrItr|1tt$lrr1i:tfl|i

,l!íillt' .tiitiilt§ilif,iif*i

mrmnmr:üllllm

llllñr,lllllllllllllilllll!{lr rl iih

tilmlllllllllllxil¡lHlniiliitiilltrr

liifl runüil ll llliillit ufliltrt",1

uL lílllillLt,,t

rm[üñ

illlri,f,

w,lil

Page 5: 3- Programacion Orientada a O Con Netbeans

-r-

Jisenaoores oe

&ii¡:üffeüa

-c .rtiliza objetos Y las

, arias técnicas entre lasrállor !vv.' -

.] -Joiimo,'tismo Y el

.r".uáou Y combinada

..lOuO en cuanto a su

--- . enguaies que t:P"11:- - .],.-Álro haga' Muchas- -- ;;i, aolicación' ofrecen

: - *tá estos utilitariot ::

43.

Los objetos son entidades que comparten las mismas caracteristicas. Se agrupanen clases funcionales y pueden ser utilizados mediante instanciación.Conceptualmente, un objeto posee dos contextos: un estado y un comportamiento.El estado se refiere a la configuración inicial de todos y cada uno de los atributos deun objeto. El comportamiento son los cambios que se producen en los estadosniciales de un objeto o la lógica que se ejecuta en un método de la claseinstanciada.

La identidad del objeto es otra característica presente en los objetos y se'efiere a la identificación unívoca del mismo dentro de la colección de objetos de laaplicación. Finalmente, eltiempo de vida del objeto alude a la duración que tiene de, da dentro de la vida general de la aplicacion.

La figura 3.2 muestra las características básicas de un objeto.

Figura 3.2 Características básicas de un obieto.

DESARROLLO DE SOFTWARE CON NETBEANS 7.1 - ENRIOUE GÓMEZ

§ :--' NetBeans f t

r-,:-.a el momento'

I ::l:

i :lr::

u:n:.':r:á{iG . ri.,.,r .:

E,:. :te:t¿dO ',:, :,. ,1']::

r¿ción'

OBJEÍOS

Page 6: 3- Programacion Orientada a O Con Netbeans

*,¿i _ _ : - ---

=-:+'. - =: _- _- =.-.zi¿ a objetos con NetBeans 7.1

Im¡mo¡r ¡mrcor @ ta proÉramac¡ón orientada a ob¡etos

9onde.la.glase paQ.re hereda a las clases hi¡as.

;hmmmffiUm @rqriiq

,¡fim¡nmruulllmmn

rümrI¡n¡fl unmilüí@............

mm¡mummrrm

'l[mullprrmEf

hilrilt-.-,nx-.-

!!_-- ao[§m-

.'.::

';1',_l :- l-

Clase

Herencia

Objeto

: -Lndo de la programación orientada a objetos, essonceptos importantes. Estos conceptos importantes se

Tabla 3.1 básicos de la programac¡ón orientada a

Una . clase conlu

propiedades y métodos. La instanciación de una clase crealo que se denomina un objeto. Existen superclases ysubclases. Con ello se ffea lo que se llama jerarquía dá

Es la faciiid¿propiedades y métodos públicos de otra clase. La herenciapuede ser simple o múltiple. Es simple cuando una clasehereda solamente de otra clase supérior (se convierte unarelación subclase. - superclase) mientras que la herenciamúltiple es cuando la clase hereda de 2 o más clasesruperiores. En Java y .NET sólo existe la herencia simple.Es una épropiedades o atributos (datos) y de comportamiento ofu,ncionalidad (métodos) que básicamLnte responien a eventos.El objeto puede instanciarse de una clase directamente o de unaclase derivada l? cual hereda de otra

MétodoConstituye ta t

implementa para realizar una determinada-operación sobrelo_s atrib-utos de Ia clas.e o de una clase oerivaáá.Es el encargaOo Oáq-u

Evento

Mensaje

Propiedad

programáticos más comunes se tiene el clic que se producesobre un botón, el keypress sobre un objeto textb o change quese produce sobre dropdown.Constituye ta comuñiüc¡¿ñ que se establece entre obleto;para intercambiar parámetros sean de entrada, saliúa oa1b9s. Mediante parámetros se establece un esquema decolaboración entre obietos.S" ," O"no*iñel contenedor de un valor de un tipo de dato determinado. Unmétodo puede variar ese contenido.

También se debe agregar cuálesprogramación orientada a objetos. Lapropiedades.

son las propiedades principales de latabla 3.2 muestra algunas de estas

- -ltt

: j-:- I1'"1,fiíffi

DESARROLLO DE SoFMARE CON NEIBEANS 7,1 - ENBIoUE GÓMEZ &!laüñ'!{}{J*

Page 7: 3- Programacion Orientada a O Con Netbeans

---- ,,,,,t,r,iiI,ir,l:,i

¡s con NetBeans I 'J45

a obietos

)esarrotlo üe software Con NetBeans 7.1.

A.pstracción

Representa las características esenciales de un objeto, sintener la preocupación de las demás características que no loson. Se preocupa más de los detalles importantes de laimplementación de un objeto, separando el comportamientoesencial. Abstracción es describir una entidad del mundoreal, por compleja que sea, y utilizar dicha descripción en unprograma.Ejemplo de abstraccionismo es la de un motor. Este motorpuede ser muy genérico y comportarse de tal forma cuandoes implementado por un motor a explosión, eléctrico o avapor.

r:-tada a obietos' es

ia:3tos importantes se

¡tada a

ffi il---".oa,tentasmismas

L,-rn'de una clase crea.'-lr.t"n suPerclases Y

.*--r"',f á*t ierarquia de

ffitr:: :3::."'iH':["J:.- -.'ror tse convierte una

I-=-rras que la herencta

-=i o. 2 o más clases

ffi, '

- j" comportamiento o

-.-'!-."rponden a eventos

---psulamiento

Tiene como objetivo descomponer una aplicación en otras másll-:.e:.¡lari.dad pequeñas (módulos) que sea lo más acoplada posible a sí

-€L =ClOn

Es el sistema de aislamiento generalmente de laspropiedades de un objeto para proteger su integridad y elacceso desautorizado que pueda modificar su contenido.Sólo los métodos internos o pertenecientes a la clasepueden modificar dichas propiedades. Se puede afirmaracordes con la Ley de Demeter.

-.:r -:Ftsmo

Se refiere a la capacidad de los objetos de comportarse deacuerdo a la funcionalidad requerida. Es decir, establecerdiferentes comportamientos para los métodos, por ejemplo,del objeto, que implementan diversas funcionalidades deacuerdo con parámetros recibidos a través de los mismos.Por ejemplo, se puede realizar una suma de enteros quedevuelva enteros y reciba parámetros enteros, o una sumade valores flotantes donde se reciban parámetros flotantes ydevuelva un valor flotante. Ambos métodos pueden llamarseigual pero se diferencian por los parámetros que reciben.

:!sq.É€ : bstraCtaS

- ^; : ::: abstracta implementa la estructura genérica de la funcionalidad quelirn:*-: ;=- -plementada en una clase derivada. Una clase abstracta en realidad no::r ii*:+ -:,:-sc, es decir, nose puede instanciaren un objeto para ser utilizada" Más:ime- - ::- , a en otra clase y sobre ésta es que se crea la instanciación.

- -: : ise abstracta se puede crear o definir cuando se necesita englobarlilrErr. :: ::: diferente y se quiere implementar polimorfismo. Supóngase que sen{rr" +: :':-'un sistema que sea lo suficientemente genérico (parametrizable)t]l]üri'r'- : -: =s.=¡lezca ALFAoMEGA los métodos que obligatoriamente deben realizarse.

DESARRoLLO DE SOFTWARE cON NETBEANS 7.1 _ ENRIOUE GÓMEZ

Significa la conjunción de elementos que abstractamente seconsideran pertenecientes a una entidad, con mayorcohesión entre los componentes de la misma, No se debeconfundir con el principio de ocultamiento.

i= o*áh"*ente o de una

:;--Ároontmo que se

.--.lnada-operación sobre

ffi::1=.irür""" un esquema de

:-; de la;ae¡onstituYe.;.;;"tt determinado un

:: a desr::t- -estra

orinciPales de la

utgunu. de estas

ilil¿t¡res¡

Tabla 3.2 Conceptos básicos de la programación orientada a

ffi--I-"='"ioi" áue se Produce

-: ,oPto texto o change que

Page 8: 3- Programacion Orientada a O Con Netbeans

hiculo {

protected int modelo;

protected String color;

protected String marca;

protected double Preclo;ocesar lecttrras de

//leclado a usar en clases

@stringcolor' ffiffimprecio)

tfrit-oO"to = modelo;

this.marca = marca;

this.Precio = Precio;

vacío'

@.woit'"c'Ifrylglu

46 ProgramaciÓn orientada a oL{etcs ccn \etBeans 7'1

AquíesdondeentranenjUegolasclasesabstractas.Lareutilizacióndecódigoen

"Jü .ont"*to es claramente demostrable'

A continuación se muestra un e.¡emplo de implementación de clases abstractas'

L. lnicie abriendo NetBeans'

2. proceda a crear un nuevo proyecto Java, tal y como se mostró en las figuras

2.LY 2.2 del caPÍtulo anterior'

iimrnmnillrm ü

;. I ''- r:. - *"Í'I,iiii, ,, t.

* *"" ffi

-':,t¡:- ,: iü

J:r,ül rli q,"" 1';r,,1,

riqn i :l:._. :i :. .llUl

;llq.t: x.u,- J@

.)lllL, ri¡gq¡1116 -

J: * .IESU*T'i::Illlfluflt

_,*f* #l,;il,,,rri- " -¡l

lill]tillll,tll,,.,,tnil," ;::t *. -tt4ff triiiitilillt":btl:it llIrillilliiiiffili]: iliil:t'" .llrj,TáümfltitiluÉ"l]:JilF.

,.:ltilllliit^,.,í,Íl]rltl

Itr|ll|lilUt[llllilill dflmniinii:lúiiir llr[

1- *iltiuiir rl[

'f,lilll]llllllllllufl liitilIiti, -., lrrti,,,r rilLilil;,il lilmlll

lrLlnllflllli:n ]llt .tirüW[]lll

ililillllllllllllllfilfl qfl}tril}|tr,,llin,,ilrLlfi,

;1, ilitttUnnilrl ffi6tillllltltl,t -nummil

,Li¡r,nnrÉ,,ñ{i¡iiilil ll|i"r,uEl

rfiii|fiittiiltiltitl,Ttilii jill0fill

,,;,,,iltilxiililIrfiilíil, tm

,,;uilulilllitllllltilflll,xuiitry

lllllllÍr'

flilt]l|]]llll]lililtilill rflitütü

rí ilflilflfl,Ill]lilmfl

llllllLlllillllllÍtillrll I lLlLu0llllt,

, flllllilillutiüütfulfi]fllr fr,r tttüüllWlfi lliltifl tiutiltiilXfi iu,

fl ]ll]Íltlll])fl Iltt¡il!tlltirrln]]l]]il|.¡l.rlllfi lÍ

llt&ilff0]l]lml ilfimrt ll

i(illlllllruilullfl ifl nIl]Il

Comoseooservasehadeclaradolaclasepúblicaveh¡culo,sehaantepues..:la sentencia abstract con lo cual se crea comá una clase abstracta' Se declaran ::

atributos modero, coroi"márca y-precio oe tipo protected. ¿Qué es un atributc ::

Ir¡i¡ -, "

DESARROLLO DE SOFMARE CON NETBEANS 7'1 - ENRIOUE GÓMEZ

L.-

Page 9: 3- Programacion Orientada a O Con Netbeans

Desarrol,lo,de softwáre con ltletBeáns, 7 1

-- po protected? Son atributos que son accesibles desde la clase donde se definen,asi- como en las clases que se derivan de ella (subclases).

Observe la siguiente línea de código:

c;blic vehiculo (int modelo, String color, String marca, double precio)

Esta línea es el constructor de la clase (observe que la clase se llama igual:,=niculo). El constructor de la clase recibe los parámetros modelo, color, marca y:-:cio, Pero observe la línea siguiente:

:¡rs.modelo = modelo:

Si es observador podrá notar que en la clase existe un atributo con nombre-::eio y que el constructor recibe un parámetro con el mismo nombre. Entonces,_:-é función cumple el this? Pues this es una referencia al objeto que está

=.=:-iando el método. Es decir, le está diciendo que el atributo modelo de la clase

- :srgnado con el valor del parámetro modelo. Así pasa con el resto de atributos: -= son cargados con parámetros recibidos en el constructor y gue tienen el mismo

lcserve ahora la línea:

: -: : ¿bstract void registrarvehiculoQ;

:' esta línea se está declarando una función abstracta denominada'-: ;-.'a,Vehiculo0 pero observe que no está implementado el código de dicha'-- - :' Eso significa que en la derivación de otra clase será donde se escriba el":: ¡:,espectivo.

: ihora crearemos una nueva clase, que será donde se implemente el código3el método abstracto; se reutilizaran los atributos protegidos de la claseecstracta. Proceda como en el punto 4 creando una nueva clase de nombrea,ttomovil.

lrando cree la nueva clase debe cambiar el encabezado de la clase:

: -¡tic class automovil {

::',: -trlrc class automov¡l extends vehiculo i

-: primera línea lo que hace es crear una clase normal, denominada:-::movil. La segunda línea lo que hace es crear la clase automovil e-: :arle que herede (mediante la palabra reservada extends) de la clase

=:s--:acta. Una vez que escriba eso NetBeans se dará cuenta que está-: €mentando una clase abstracta, por ende le solicitará que implemente:.::s los métodos abstractos de dicha clase. La figura 3.3 muestra esta

- ., a: ón.

DESARROLLO DE SOFTWARE CON NETBEANS 7,1 - ENRIOUE GÓMEZ

47,

de código en

- ases abstractas'

*:strÓ en las figuras

derecho sobre el

I{*ro Y Ctase Java'

: ¿-rente:

.'iettlo. se ha antePuesto

, ,"=lu.iu' Se declaran los

.¿i;;;'-"' atributo de

.[iiü*ili8§3

fI=' tecturas de

F,:- 3r': ClaSeS

Page 10: 3- Programacion Orientada a O Con Netbeans

Programación orientada, a. ohietos Coh l.,letBéáns 7 . 1

:t::;;:t; i

ji.tll I

3§:iiil:;i

,t,á¡;¿t!,:::l:::,

F;¡I,ñBe r:¡mn1 ¡re"¡s¡¡ l

is tlst*s¡"*{t#Íd Cá¿s ftat&Brdt als§t{t rrrÉt'lüd n |¡efti*&

Figura 3.3 lmplementación de los métodos abstractos de la clase abstracta.

6. Debe pulsar sobre el ícono de la lamparita para que los métodos abstractosde la clase aparezcan en el código de esta nueva clase.

El código para esta clase es como el que se indica a continuación.

DESARROLLO DE SOFIWAHE CON NETBEANS 7.1 - ENRIOUE GÓMEZ

u rlass autoeúvii" exlerds .¡eh¡cr¡l* {

public class automovil extends vehiculo {

@Override

public void registrarveh¡culo0 i

String estilo; I /coupe, sedan, compacto...

System.out.print("Dig¡te el modelo del automóvil: ")

modelo = Lector.nextlntO;

System.out.print("Digite el color del automóvil: ")

color = Lector.next$;

System.out.print("Digite el precio del automóvil: ");

precio = Lector.nextlnt0; ]

]

, '.'j

- - -: - _

Page 11: 3- Programacion Orientada a O Con Netbeans

uesarrollo oesonware con NetBean§ /.1 ' 49.,..:........,,.,:,:,,.,.:,,,,.i.,:

7. Ahora crearemos otra clase, denominada bicicleta, con el siguiente código:

Como comentarios a este código se puede agregar que existe la palabra@Override, lo cual es una anotación que significa que está sobrescr¡biendoun método de la clase padre (es decir, está sobrescribiendo el métodoreg¡strarvehiculo} en bicicleta que es implementada desde la clase padrevehiculo). Considérese otro ejemplo similar.Suponga que necesita escribir una clase que contenga una operaciónilamada cocinar. Sin embargo, también sabe que con dicha operacióndesea que se procese cualquier tipo de alimento. Atributos genéricospodrían ser tiempoCoccion y temperaturaCoccion. En un determinado casopodría ser que se cree una clase comidaChina que requiere preparar undeterminado tipo de alimento, o la clase comidaCasera que es otro tipo.Ambos necesitan algo común que es cocinar y cocinar requiere los atributostiempoCoccion y temperaturaCoccion. En dicho caso la clase queimplementará la operación cocinar podríamos declararla como abstractacon la operación de tipo abstracto (vacio) y las clases comidaChina ycomidaCasera implementarán el método según sus necesidades.

Actividades para el lector-;s.:':'clle un programa Java utilizando NetBeans, que implemente la solución:= :':biema de comida china y comida casera.

: :^ata vamos a implementar la clase ejemplotercero que es la que tiene el-a ni) que permite ejecutar los programas del proyecto.

DESARROLLO DE SOFMARE CON NETBEANS 7,1 - ENRIOUE GÓMEZ

8

ra clase abstracta'

:s métodos abstractos

a continuación'

A!{üü§ie$¡

public void registrarvehiculo0 {

System.out.print("Digite el color de la bicicleta: ");

color = Lector.next0;

System.out.print("Digite el precio de la bicicleta: ");

precio = Lector.nextlntQ; ]

)

Page 12: 3- Programacion Orientada a O Con Netbeans

Frogiamación orientada ái.objetos con NetBeans 7.L

public class EjemploTercero {

public static void main(Stringl] args) {

bicicleta B¡cicleta = new bicicletaO;

Bi cicleta. registra rVeh icu lo0 ;

automovil Automovil = new automovil0;

Automovil.registrarVehiculo0;

)

)

Como podrá observar en el main se instancia las clases Bicicleta y Automov¡lde las clases bicicleta y automovil, respectivamente. Hay que recordar que tantobicicleta como automovil implementan el método abstracto reg¡strarvehiculo) quese creó en la clase abstracta vehiculo.

10. En la figura 3.4 se muestra la ejecución típica de este ejemplo.

i i §al¡d* - ñierñ,pleTsrcero {rqn}

c¡loe de 1.a biüi.*¿*¿áí R*:*¡rre*i* qáe I* bicisl"eee: t*8ñ8*§rr}d€.¿.fi ds.I ar,lc*r+ár¡itr 3S1Lc*}"cr deL eue¿:s¡éví1: l§agr*E)¡*§¿rl. áel aug*.s:*¡¡i:- r [.e O*oc,f *

Figura 3.4 Ejecución de la nuestro ejemplo de clase abstracta.

En el ejemplo anterior se ha tratado indirectamente el concepto de herencia.En Java sólo se dispone de la herencia simple y no como en C++ que puede utilizarla herencia múltiple. Sin embargo, debe considerar que la mayoría de lenguajes deprogramación (si no es que todos) implementan la herencia simple nada más.

La instrucción:

public class automovil extends vehiculo {

Hace uso de la herencia en Java. En este sentido, extends significa "hereda".Por tanto, en la línea anterior se establece que la clase automovil hereda de la clasevehiculo. En este sentido se establecen las siguientes reglas (en el caso quevehiculo no fuera una clase abstracta):

DESARROLTO DE SOFMABE CON NETBEANS 7.1 - ENRIOUE GÓMEZ ..\ifaüíli*qa

50 h;u; t 5rfldrilü

-dl

rLumüur

Er' ,arlmeEü.a ¡[ilh!-+'

-s {[fih[

t &E¡.l@!;@::

fiUumre, *.,: llrry nm¡ m ar

i¿¡ '::ut"" ":ü:"qt¿Ee e¿

r!ifit:,,1 ji,il,iíril i*íqj'ra *1i*^;*,rHyj> J$rry:LrÉ E,¡'

I l§igi'f* *1"

tu::{

:

.d

Ir¡a

{il

Page 13: 3- Programacion Orientada a O Con Netbeans

51

automovil hereda de vehiculo todos sus miembros que sean públicos. Porregla general sólo los métodos se declararían públicos, por tanto, automovilheredaría los métodos públicos de vehiculo.

Los atributos se declaran de tipo privado "private", por lo que la clase quehereda no tiene acceso a estos atributos, sino que lo hace a través delmétodo público heredado.

La instanciación se realiza sobre la clase automovil para que herede devehiculo. Recuerde que no se puede utilizar directamente una clase en unprograma.

lnvestisue y documenteActividades para el lectorpara qué se util¡za la instrucción super.

rnterf aces

',":: ¿¡te interfaces puede cubrir la necesidad de que una clase herede de otras- ==:s ral menos dos). Dado que en Java no existe el uso de la herencia múltiple,:-::^:es se tiene que utilizar una interface como enlace entre una subclase y dos: -:.':|ases. Considere el diagrama de clases de la figura 3"5.

-- -n,n,or^ vAUtOmOVil

:-.' :¿;;;.i o,:,l"Llll=g¡srcrVen¡culo0 que

elemPlo.

abstlacta'

iDeP¡rtmarxtm:r-a.!a aé

- I rotriedades-; _-.-.--

::top6* Fe

¡ls..Íffi{4,,,,,,.t,'.::.:'..,i# Fr¡¡Fies*d,*s :

ffi es*r:de.d+s

# fssé¡ñ?rn.#,*

:u+- f§{iát }dffiñ:4* rx's¿#¡)sf,(Arer6dsrr

.- e:c:,+5

r"ár'li:!t

tr!l

:\i;

- ^onceoto de herencta'

=^ g** que Puede Yt'l':l.= -ávorá ie lenguajes de

: a srmPle nada mas'

= {ends sig¡nifica "hereda

"= -=.orir héreda de ta ct111

;;á;t (en el caso que

v isrgcsrdlfJrif6

r"¡iJ fr*Bl*+*ad,*+ ',,,. '

'# ¡o-wF-!b

ffi ept+s,ff wtid*d,s.-,-._-,1 €HEs".*ia-;-l nññ1§3r*tr@ -^*.:vtsL, a

',S t¿:raftint*e'.:.'Mét{}d(}§

:,qiy .eeigr.!er$ept<:Ef I E !q rlssfSf"ersdi ,.

=ql,,r: 3 5 Diagrama de clases simulando herencia múltiple mediante interfaces.

DESARROLLO DE SOFTWARE CON NETBEANS 7.1 - ENRIOUE GÓMEZ;iiia*¡''e':'

Page 14: 3- Programacion Orientada a O Con Netbeans

il¡¿&;.¡¿; :á'ia¡táaa,á óbjétos con ÑetBeáns 7.t

Este diagrama de clases demuestra la necesidad de asociar una clase empleado

con las c-lases departamentos y operadoras de pensión. como Java no puede

implementar la herencia múltiple, tendrá que acudir a una interface para que las

relácione. Es por ello que primero se crean dos interfaces con la declaratoria de los

atributos y métodos que requiere y posteriormente las hereda de las interfaces'

11. Desarrolle el proyecto procediendo como se indicó en los puntos 2.L y 2.2

del capitulo 2. En lugar de crear una clase seleccione una interface que se

denomine iDeparfamentos. El código que escribirá en el editor es el

siguiente:

l=S,=-: : :É ;:*,rslÉ52

--. .".. : =,-,Á_ lffi

L2. Ahora proceda a crear la interface ioperadoraPension,misma manera que en el punto anterior.

procediendo de la

la clase Empleado. Para ello

.Ei{Drireüa

: :----

1-3. Ahora se implementan estas interfaces en

escriba el siguiente código:

DESARROLLO DE SOFTWARE CON NfiBEANS 7.1 - ENRIOUE GÓMEZ

public interface iDepartamentos {

//se crea un vector de cadena y se inicializa con SUS respectivos valores

public static final String dptosll = {"Recursos Humanos","lnformática'"

"Fina nciero","Contabi I idad","Ventas"] ;

/ /se inicializa un vector de enteros con sus respectivos valores

public static final int exts[] = {723,345,324,125,423};

//se crear un método vacío (sin implementar)

vord asignarDepto0:

]

El código de esta interface se muestra a continuación:

publ¡c intedace iOperadoraPension {

//se crea un vector de cadena con sus respectivos valores

public static final String entidades[] = {r'Banco de Pensiones",

"Pensiones Costa Rica", "Banco Municipa1",

"sistema de Pensiones","Pensiones Acme");

//se crea un vector de tipo double con sus respectivos valores

pu blic static final dou ble tasa Ri nde[] = {0. 12,0' 13,O.L2,O.72,O.t2};

void asignaroperadora0;

]

__-: ::it;-:.1.. .:

Page 15: 3- Programacion Orientada a O Con Netbeans

--r-p-.- con NetBeans 7'1

rL,rna

"ta=e empleado

ho mra no Pueoe .

lrrc.r"o Para que las.

Ea'xlr:;::*:'*

H,t'lt*ffi¡k1i

Desarrollo de software cón NetBeans ?.1

..,/rmplementación de la clase Empleado con las interfaces antes creadas,public class Empleado implements iDepartamentos,ioperadoraPensionnt i;.,,'se

crea una varia tipo para realizar lecturas desde tecladoScanner Lector = new3Override / /para implementar el método:ublic void asignarDeptofl

3_, siem.out.print("Escriba Nombre del em- : -bre = Lector.next0; I /se lee de teclado el contenido nombre':' =O:i<dptos.length;i++) / /se recorre el vector dptos.

S,, stem.out.println(i+1+'' "+ ): //se muestran valores del vector3,. srem.out.print(:'::: = Lector.nextlnt0; //lee por teclado una variable de tipo entera

-: . s:e m, o ut. pri ntl n(" Depa rtamento seleccionado : "+d ptos[d pto-1]);':- =J:i<exts.length;i++) //se recorre el vector de extensiones

, ::: -,out.println(i+1+" "+

la Extensión l ");

ext-11);

=)=- ^ ! ^^:-.-Jd5t

_:€-:.tasa:: =- <e¡tidades.length-l-;i++

i!t.println(i+1-+" "+ entidadesfi]);- -r.print("Seleccione la

= -ector.nextlntfl;,- : -"-.orintln("Departamento seleccionado : "+enti.:r- Rinde.length-

- --. irintln(i+1+" "+ tasala tasa de rendimiento: ");

DESABROLLO DE SOFTWARE CON NEIBEANS 7.1 - ENRIOUE GÓMEZ

s3,

clase EmPleado'

i\if etr. : '

¡l':l- 'cS valores

', -,-.rátiCá",

--=.=ion, Procediendo de la

Page 16: 3- Programacion Orientada a O Con Netbeans

54

Observe cómo se implementan las interfaces ¡Departamentos y

iOperadoraPension a la clase Empleado.

1"4. Finalmente, implemente el uso de la clase que implementa las dosinterfaces creando la instancia de la clase Empleado. Elcódigo en elprograma principal (que contiene el main) es el siguiente:

15. Una corrida de la aplicación se muestra en la figura 3.6.

Es,§s.s.S*}},iEr Ü'itsElh{:e d,tl- ery}l"eBds :: &.!:§rEi{§c.a,e

I ;i.,eq1*E§*o::'p $i[u;s**r¡<*.9* I¡'¡:§s¡r:mÁE'i-caa r{ *s.eé i a#A

4 C*maa,h.¿3.r"de61É Ltri8ff.É.é§

Fei¡p,a,x:e «}§*e ratÍ É. ,s @ Lse,e.i,r3ñre{*e

3 .§45

4 !.á:§5 4E3§*f"É. .*i{},ra.e 3-e. H.¡et,er¡*.ii,*:¡* ::

g.§trerrs.iGr! : &,4 4:L E!,gr¡'ets e*,e Fe:E:rgáq:rpg.g3 S,eEr:sris.rs:!.as geat;* §t.j.,s¡a:S g.*§r.#r:$ ñ{1irxi}$*e¿i$}*}* §ii.€ssse .r¿.á S'er*:*¿*r§es§,q:-sqqji{}váe A.e §E¡e;qs{leEe :

§3#r *3.*,:s'c" á.td¡r* :rns e É !É.:- *,*e i" *.ft.* dt*¿ :u... ÁcÉ $-L,S.3 U:- Ád

'4 §3.^. [:8.

I:§ f Er,i§-ña& ri.*,, üe.

§i*.#:t-eÍrua {f,,Éi F.{áti3,:á(¿.!*iii}ái*

§ef,-ee,*á*r+e 3a tese d,E ssr.¿rCáx*i.e:m**; kE:reemgíÉ¡a : fr-I-3#E'1,§áp;-&.,ff,,L"¡,f **,AR.:iÜ.fa ltii::t,* - fl.irm€¡: f § §,e*f:,n(j.r

F¡gura 3.6 Corrida típica de nuestra aplicacién de interfaces.

DESARROLLO DE SOFMARE CON NETBEANS 7.1 - ENRIOUE GÓMEZ

q§i?--:ilr' :I: §ffiitrI

Y .--.- _

ti. .-- r _4*

Aifaiftr$a

public class EjemploTercero {public static void main(Stringl] args) iEmpleado aux = new Empleadofl;

aux.asignarDepto0;aux.asigna rOperadora0;

]

Page 17: 3- Programacion Orientada a O Con Netbeans

-ra--

las dos

1 :Ódigo en el

dÉ É*lg'r' ¿r*,f}'6s

29 §*e'i#rt'aii**3

de interfaces'

Désarrotlo de software cóh NetBeans 7.1

Actividades para el IectorDesarrolle un programa Java utilizando NetBeans que implemente lasinterfaces necesarias para el caso de Animales, Peces y Aves.

Polimorfismo

i polimorfismo (llamado también upcasting) brinda la posibilidad de que una'eferencia a un objeto de una clase pueda utilizarse también en las clases derivadasl3 éstas. En otras palabras el polimorfismo se refiere a la capacitad de clases:erivadas de utilizar un método en forma diferente. Por ejemplo, considere el caso:: dos animales: Pez y Ave. Ambos derivarían de una superclase denominada:^'mal. Posiblemente, en la clase Animal se implementaría un método abstracto::^ominado desplazarse. Debe ser abstracto dado que las formas de moverse de: - oos animales es diferente: el primero nada y el segundo vuela.

Existen dos tipos de polimorfismos: dinámico y estático. El polimor-fismo: -á-ico (llamado también polimórfico) es el que no se incluye especificación= i--a sobre el tipo de datos sobre el cual se opera. Por ende, se puede utilizar en--,:: : Do de datos que sea compatible. Al polimorfismo dinámico se le conoce como-':;':mación genérica. El polimorfismo estático (también denominado ad hoc) es: - -:: os tipos de datos deben ser explÍcitos y declarados en forma individual antes:: :.: ler utilizarlOS.

:-ponga que tiene una clase que implementa tres métodos que tienen el- .-: ^ombre pero que reciben parámetros de distinto tipo y devuelven resultados'- -: :^ diferentes. Proceda a crear el ejemplo:

- igregue una nueva clase al proyecto que está trabajando en este capítulo.-:enomínelo clsPolimorfismo. El código de esta clase es el siguiente;

-:i-- : :-e se tienen tres métodos que se llaman igual, con la diferencia de,: -.::s que recibe como parámetro y la devolución de la función misma.

DESARROLLO DE SOFTWARE CON NETBEANS 7,1 - ENRIOUE GÓ¡i|EZ

55

rtii¿lfia 1'

- a - -'

Fá--:=s

Page 18: 3- Programacion Orientada a O Con Netbeans

56 Éroár,amláción orientada á obietos con NétBéáns"7.l

La llamada a estas funciones dependerá del tipo de dato que envía dicha llamada'

ás decir, si se envían datos de tipo cadena se ejecutará la función que recibe ese

tipo de parámetros.

2.Ylaclasequellamaaejecutarlafuncionalidaddelaclase(dondeseencuentra el main) contiene el siguiente código:

rhlin nl F oloTercero {

ÑFsta¡¡c void main(Stringl] args) {

-Fo¡fmofismo

aux = new clsPolimorfismo0;

a ux's u ma r( -E !

ri g Le=':,

aux'sumar(2'5' 3'3)):,

\

-Se!s4»]

3. La figura 3.7 muestra la salida de la ejecución de este programa'

i

i

i s'c¡ffie *a §,sxre§*s: s

i S'*** Se #s*s,n,ss: Enxá'ryae #*mes

: Su,m* de **uh}'*s; S . üi,n

i ,t§,hfrE üf*E. iü*,&§"§ü§& isf=..ü.*^t ti;ne: tl m,#:6'*§1d§ l

F¡gura 3.7 Eiecución del eiemplo de polimorfismo'

Actividades Para el lector

Desarrolle un programa Java que utilizando NetBeans abstraiga el pago de

irpr""to. oe un páís A y de un país B, cuyos procedimientos son diferentes.

DESARBOLLO DE SOFMARE CON NETBEANS 7,1 - ENRIOUE GÓMEZ

ün***gn,: r -,¡arü r:il.

--.,--: : t: i:*u:i-

RESUMEÑ

^¡f¿Lr$iri,