Crear Métodos y Utilizarlos en Un ABAP

download Crear Métodos y Utilizarlos en Un ABAP

of 12

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