Crear Métodos y Utilizarlos en Un ABAP
-
Upload
martinjosep -
Category
Documents
-
view
221 -
download
0
Transcript of Crear Métodos y Utilizarlos en Un ABAP
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
1/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
inShare
En este tutorial de ABAP Objects conoceremos conceptualmente los patrones de diseño yaprenderemos cómo implementar, paso a paso, el patrón de diseño "decorator", y probaremossu uso mediante un prorama ejemplo en ABAP!
Los patrones de diseño son modelos ("frameworks") de diseño estandarizados, utilizados en la programación orientada aobjetos, ue buscan ofrecer una solución le#ible, prototipada y reusable a ciertos problemas de diseño ue ocurren en formarecurrente en un determinado conte!to #uando se utilizan de manera correcta, los patrones de diseño a$udan a lograr un
software reutilizable $ mantenible, aumentando la e!tensibilidad $ la portabilidad del sistema
Los patrones de diseño tienen ue %er fundamentalmente con el diseño $ la interacción de los objetos, $ son utilizados a tra%&sde todo el espectro de entornos '' l presente artculo analizar* la implementación en el mundo de ABAP OO, paso a paso,
de un patrón de diseño conocido como "$ecorator", a tra%&s de un ejemplo +na %ez e!plicada en forma conceptual la solución
$ su implementación en -. se lo testear* en un programa de prueba
La utilización de patrones de diseño e!ige conocer las caracter%sticas particulares del entorno OO &ue se est' utili(ando/
en otras palabras, es necesario conocer a u& paradigma dentro del mundo de objetos pertenece -. '', $ alunas
consideraciones teóricas del patrón de diseño "decorator" en particular #omo se %er* en la pró!ima sección, no todos los
lenguajes '' organizan el conocimiento de la misma manera, $ ha$ cuestiones de jerarua de clases, herencia, $ conducta delcompilador ue afectan el fucnionamiento de los patrones
n %irtud de ello, antes de desarrollar el ejemplo haremos una bre%e clasificación de los distintos paradigmas en los lenguajes
de programación orientados a objetos 0o es el alcance de este tip e!plicar estos paradigmas en detalle, sino identificar en u&grupo se encuentra -. 'bjects Si el lector se encuentra familiarizado con los distintos paradigmas de los lenguajes
orientados a 'bjetos, puede omitir la lectura de las dos pró!imas secciones
O)er)ie* de los dierentes paradimas de los lenuajes orientados a objetos
Los lenguajes de programación orientados a objetos se pueden clasif icar en dos grupos, dependiendo de u& manera orani(an
el conocimiento1
.or una parte est*n los lenguajes ue organizan el conocimiento de manera jer*ruica, mediante clases, $ por otra, los ue lo
hacen a tra)+s de prototipos!
El primer caso, por ejemplo, es el de los lenguajes m*s populares como 2a%a, 3-0et , Smalltalk, #44, 'bjecti%e5# Abap OO
tambi+n pertenece a este rupo! l segundo grupo, ue utiliza prototipos, est* compuesto por lenguajes menos conocidos
como "Self"
6entro de los lenguajes ue conforman el primer grupo se pueden encontrar dos grandes di%isiones1 lenguajes tipados $ no-tipados1
Los tipados son au&llos en ue el compilador )eriica tipos #uando se define un atributo o par*metros de entrada o
salida del m&todo de una clase en 2a%a por ejemplo, se debe especificar de u& tipo son dichos par*metros
n los notipados, no e!isten los tipos l lenguaje no controla los tipos de %ariable ue declara ste es el caso de
Smalltalk $ 'bjecti%e5#, por ejemplo
Abap OO pertenece al rupo de los tipados, de -ec-o, &uienes -ayan proramado en Abap OO y .a)a, puede apreciar
&ue tienen muc-as similitudes y +sto se debe a &ue ambos pertenecen al mismo paradima!
6ada la naturaleza de cada grupo, la implementación de un patrón de diseño depende del paradima al cual pertene(ca ellenuaje n el caso de los tipados, como el compilador %erifica tipos, es necesario -eredar de una superclase o
implementar una intera( para &ue dos objetos sean polimóricos!ste es el caso de bap 'bjects n contraste, los
lenguajes no tipados, al no tener "tipos", dicha superclase o interfaz 0' es necesaria para ue dos objetos sean polimórficos
.ag 7 de 78
http://www.teknodatips.com.ar/sap-netweaver/257-abap-objects-tutorial-implementacion-patron-decorator.htmlhttp://www.teknodatips.com.ar/sap-netweaver/257-abap-objects-tutorial-implementacion-patron-decorator.html
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
2/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
/eneralidades de los patrones de diseño
#omo se dijera en la introducción, un patrón de diseño es un modelo de solución reusable $ prototipada a un problema de diseñoue se plantea una $ otra %ez en forma recurrente dentro del mundo de la programación orientada a objetos La definición de un
patrón de diseño inclu$e1
7) 0ombre del patrón: #onsiste en una o dos palabras ue describen el problema de diseño
8) El problema: specifica cu*ndo aplicar el patrón $ e!plica el conte!to
9) 1a solución: 0o describe un diseño concreto ni una implementación en particular, $a ue el mismo se puede aplicar en
diferentes situaciones n cambio, el patrón pro%ee una descripción abstracta de un problema de diseño $ de u& manera unconjunto de elementos (clases $ objetos) lo resuel%en
:) 1as consecuencias: Son los resultados ue se obtienen al aplicar un patrón ;nclu$en su impacto en la fle!ibilidad,e!tensibilidad $ la portabilidad del sistema
Objeti)o y necesidad del patrón de diseño “$ecorator”
Supóngase ue se desea agregar a la %ista de un te!to un botón, un elementos adicionales como scroll, borde, input,te!t bo! $ table e!isten 97 combinaciones posibles? ) n segundo lugar, si surge una nue%a funcionalidad (un button en la %ista
por ejemplo), es tanto el nue%o código ue se debe programar ue resulta inmantenible @eredar el borde de una clase es otra
solución incorrecta, $a ue todas las subclases heredaran el borde sto es infle!ible, porue la elección se lle%ara a cabonue%amente de forma est*tica
Decorator es un patrón de diseño ue resuel%e el problema de añadir din*micamente funcionalidades adicionales a un objeto.ara ello, propone una solución al problema ue consiste en encapsular la )ista de te#to en otro objeto &ue area elborde! n t&rminos de programación dicha encapsulación es una relación de composición, la cual mediante polimorfismo, se
puede lle%ar a cabo de manera din*mica
Si bien en el el presente tutorial se %a a e!plicar el patrón "decorator", e!isten muchos otros como por ejemploSingleton,Composite, State, Strategy y Template Method #ada uno propone una solución general para un problema particular recurrenteen diseño
Enunciado del ejercicio a desarrollar
Se reuiere armar el pedido de un caf& para el bar “El almacén del buen Café” n este bar un caf& puede ser de diferente tipo1
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
3/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
An'lisis de cómo se )a a utili(ar “decorator”
Supongamos ue "l almac&n del buen #af&" tiene un pedido Cappuccino con los ingredientes crema $canela .odemos
pensar ue los inredientes son decoradores del cappuccino n primer lugar, el cliente desea un Cappuccino, entonces secrea un objeto cappuccino Luego el cliente uiere crema, entonces se crea dicho objeto ingrediente (crema) $ se hace ue
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
4/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
5mplementación de la solución en Abap OO
.lanteado el enunciado del problema a resol%er, en los pró!imos pasos se %a a implementar la solución en -.
.ara ello se %an a crear las tres clases, $ se definir*n los atributos $ los m&todos correspondientes Einalmente, se crear* un
programa de prueba para testear la solución
0ota: l presente tip supone ue el lector $a se encuentra familiarizado en cómo crear clases,definir m&todos $ atributos Si &ste no es el caso, es recomendable la lectura del tip Futorial -.'bjects1 .arte 8, en donde aprender* esos conceptos necesarios para el seguimiento del
presente Futorial
n este Futorial, se crear*n las clases de manera lobal, mediante la transacción 6E78 o 6E9 6e todas maneras, si el lectorlo desea, puede optar por lle%ar a cabo la creación de las mismas de forma local en un programa
Los pasos para la implementación de la solución son los siguientes1
;4 Se crea la clase E en la transacción 6E78 o 6E9!
94 +na %ez creada la clase E, en la solapa de “5nteraces” se declara la intera(
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
5/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
?4 Luego dentro de la interfaz
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
6/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
Se selecciona el m&todo /ET2$E6=@5PT5O0 $ se oprime el botón Parameters! Luego, en la nue%a pantalla se define el
par*metro de retorno @2$E6=@5PT5O0
n*logamente se define el par*metro de retorno @2P@5=E en el m&todo /ET2P@5=E Aecuerde definir como tipo asociado elmismo tipo con ue definió el atributo n el caso de este tutorial ser* 2=O>>EE2P@5=E
4 Se acti%a la interfaz
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
7/12
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
8/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
KF@'6 constructor
zbebidaMdescription N idescription
zbebidaMprice N iprice
06KF@'6
G4 Se acti%a la clase E
;84 Se crea la clase
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
9/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
5mplementación:
KF@'6 setcafecompuesto
cafecompuesto N icafecompuesto
06KF@'6
;9!?4 K&todo /ET2$E6=@5PT5O0 n ese caso no ha$ ue definir ningGn par*metro $a ue los mismos surgen de la
interfaz
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
10/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
06KF@'6
0ota: Aecuerde incluir el elemento de dato correspondiente para las %ariables parcial2price $ inal2price!
;?4 cti%e la clase
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
11/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
idescription N RcremaR
iprice N R7R
#AF '-2#F canela
U.'AF;0H
idescription N RcanelaR
iprice N RC>R
Se eali.a la composicion
crema5Qsetcafecompuesto(
U.'AF;0H
icafecompuesto N cappuccino )
canela5Qsetcafecompuesto(
U.'AF;0H
icafecompuesto N crema )
+++Se obtiene la descripcion y el precio
description N canela5QzbebidaMgetdescription( )
price N canela5QzbebidaMgetprice( )
VA;F1 R6escripcion1 R,description,
W,R.recio1 R,price
6alida resultante por pantalla:
.ag 77 de 78
http://www.teknodatips.com.ar/sap-netweaver/257-abap-objects-tutorial-implementacion-patron-decorator.htmlhttp://www.teknodatips.com.ar/sap-netweaver/257-abap-objects-tutorial-implementacion-patron-decorator.html
-
8/17/2019 Crear Métodos y Utilizarlos en Un ABAP
12/12
ABAP Objects: Tutorial para implementar el patrón de diseño “decorator”
=onsideraciones adicionales:
;4 0otar ue en el prorama de prueba, la composición se realizó E
e 50/@E$5E0TE sean polim!rficos/ n los lenguajes tipados, se necesita heredar de una superclase o implementar una interfaz
para ue dos objetos sean polimórficos s por eso ue se usó la interfaz BEB5$A!Se podra haber utilizado una clase abstracta,pero se optó por usar una interfaz $a ue no se encuentra una superclase apropiada ue tenga como subclases a #E e
;0HA6;0F ;gualmente si el lector lo desea, puede probar la alternati%a de usar una clase abstracta/
?4 'bser%ar ue no se creó una clase para cada inrediente $ ue las mismas heredan de una superclase ;0HA6;0F Secreó una Hnica clase porue todos los inredientes tienen la misma forma de calcular su costo $ su descripción (mismo
comportamiento) Suponga ahora ue el precio de la leche est* dado por >Cml $ ue el cliente puede decidir cu*ntos ml de lecheuiere n este caso el precio de la leche %a a depender de un atributo adicional ue es la cantidad solicitada .or lo tanto en
este caso tiene sentido crear una clase abstracta ;0HA6;0F con subclases L#@ $ #0L por ejemplo
4 nalizar cómo cambia la implementación del patrón en los lenguajes no5tipados como Smalltalk n ese caso no se
necesitara de la interfaz o clase abstracta --;6, $a ue en dichos lenguajes no se reuiere de herencia para ue dos objetossean polimórficos Es por esta ra(ón &ue se e#plicó a &u+ paradima pertenece Abap OO!
4 'bser%ar ue para in%ocar los m&todos et2price34 $ et2description34 se utilizó la forma un$obeto-
0nombre$interfa.1un$metodo2 3/ 6e esta manera ueda e!puesto el uso de la interfaz, lo cual no es con%eniente .ara lograr
una mejor encapsulación se recomienda el uso de