Documentos de Académico
Documentos de Profesional
Documentos de Cultura
inShare
Pag. 1 de 12
Pag. 2 de 12
Finalmente el cliente quiere canela, entonces se crea el objeto canela y se lo compone con la crema.
El cmputo de la descripcin total se obtendr de manera recursiva como se puede ver en el siguiente diagrama de secuencia:
El clculo del precio final del pedido se obtendr de forma anloga. El mtodo get_price() en lugar de retornar la concatenacin
de dos strings, va a devolver la suma de dos precios.
A continuacin se ilustra cules son las relaciones de las clases que permiten la solucin del enunciado:
Pag. 3 de 12
Pag. 4 de 12
3) Luego dentro de la interfaz Z_BEBIDA, se hace click en la solapa Atributes y se declaran los
atributosdescription y price como variables de instancia con los tipos asociados que se muestran a continuacin:
Para el tipo asociado a price se eligi un elemento de dato que tiene el siguiente formato:
Elegir algn elemento de dato que tenga caractersticas similares. Si tiene las tablas de vuelos (SPFLI, SFLIGHT, SBOOK)
puede elegir el elemento de dato S_PRICE.
4) Se hace click en la solapa de Methods de la interfaz Z_BEBIDA y se declaran los mtodos de instancia:
Pag. 5 de 12
Se selecciona el mtodo GET_DESCRIPTION y se oprime el botn Parameters. Luego, en la nueva pantalla se define el
parmetro de retorno R_DESCRIPTION.
Anlogamente se define el parmetro de retorno R_PRICE en el mtodo GET_PRICE. Recuerde definir como tipo asociado el
mismo tipo con que defini el atributo. En el caso de este tutorial ser ZGF_COFFEE_PRICE.
5) Se activa la interfaz Z_BEBIDA.
6) Se regresa a la clase Z_CAFE. Como sta implementa la interfaz Z_BEBIDA, debe implementar sus mtodos. Se dice que la
clase Z_CAFE usa los mtodos y los atributos de la interfaz Z_BEBIDA.
Pag. 6 de 12
Implementacin:
METHOD z_bebida~get_description.
r_description = z_bebida~description.
ENDMETHOD.
Pag. 7 de 12
METHOD constructor.
z_bebida~description = i_description.
z_bebida~price
= i_price.
ENDMETHOD.
9) Se activa la clase Z_CAFE.
10) Se crea la clase Z_INGREDIENTE. En la solapa Interfaces (al igual que como se hizo con la claseZ_CAFE), se declara
la interfaz Z_BEBIDA.
11) Dentro de la clase Z_INGREDIENTE, en la solapa de Methods se agregan los
mtodosCONSTRUCTOR y SET_CAFE_COMPUESTO (los mtodos GET_DESCRIPTION y GET_PRICE aparecen
automticamente porque la clase implementa la interfaz, al igual que ocurri con la clase Z_CAFE). En la solapa de atributos se
agrega la variable de instancia cafe_compuesto con el tipo asociado Z_BEBIDA.
La solapa de mtodos quedar como se ilustra a continuacin:
Pag. 8 de 12
Implementacin:
METHOD set_cafe_compuesto.
cafe_compuesto = i_cafe_compuesto.
ENDMETHOD.
12.3) Mtodo GET_DESCRIPTION. En ese caso no hay que definir ningn parmetro ya que los mismos surgen de la
interfaz Z_BEBIDA.
Implementacin:
METHOD z_bebida~get_description.
DATA: desc TYPE string,
desc_final TYPE string.
desc = cafe_compuesto->get_description( ).
CONCATENATE desc z_bebida~description INTO desc_final
SEPARATED BY ', '.
r_description = desc_final.
ENDMETHOD.
12.4) Mtodo GET_PRICE
Implementacin:
METHOD z_bebida~get_price.
DATA: parcial_price
final_price
TYPE zgf_coffee_price,
TYPE zgf_coffee_price.
parcial_price = cafe_compuesto->get_price( ).
final_price = parcial_price + z_bebida~price.
r_price = final_price.
Pag. 9 de 12
ENDMETHOD.
Nota: Recuerde incluir el elemento de dato correspondiente para las variables parcial_price y final_price.
13) Active la clase Z_INGREDIENTE como ltimo paso del desarrollo.
14) El lector puede testear las clases como desee. A continuacin se muestra el cdigo de un programa Abap de prueba, en
donde se va a realizar la composicin de los objetos a mano para verificar el funcionamiento. Recuerde nuevamente utilizar el
tipo de dato correspondiente para la variable price.
Cdigo ABAP de prueba propuesto:
*&---------------------------------------------------------------------*
*& Report Z_PRUEBA_PEDIDO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_prueba_pedido.
DATA: cappuccino
crema
canela
description
price
TYPE string,
TYPE zgf_coffee_price.
= '11'.
Pag. 10 de 12
i_description = 'crema'
i_price
= '1'.
= '0.5'.
= canela->z_bebida~get_price( ).
Pag. 11 de 12
Pag. 12 de 12