Está en la página 1de 8

Juan Pablo Palominos.

RESUMEN ABAP OO
(TEORÍA)
DEFINICION DE CLASES.
- Pueden ser visualizados / modificados
a) ATRIBUTOS
solamente por métodos de instancia.
DE INSTANCIA - Existe 1 vez por cada objeto creado.
(OBJETOS) - Al cambiar su valor, solo cambia el valor para
a) ATRIBUTOS ese objeto.
SE DIVIDEN EN
(VARIABLES)
- Pueden ser visualizados / modificados por
b) ATRIBUTOS
métodos de instancia y métodos de la clase.
DE LA CLASE - Existe 1 única ves.
(ESTÁTICOS) - Al cambiar su valor, ese valor cambia para la
clase y todos sus objetos creados
SE (Independiente de Instancia).
CLASES DEFINEN
MEDIENTE

- Pueden llamarse solamente una vez que se


a) METODOS
haya creado el objeto o, en otras palabras,
DE INSTANCIA instanciado la clase.
(OBJETOS)
b) METODOS
SE DIVIDEN EN
(FUNCIONES)
b) METODOS - Pueden llamarse sin necesidad de crear el
objeto o, en otras palabras, instanciar la clase.
DE LA CLASE
(ESTÁTICOS)
TIPOS DE VISIBILIDAD.
- ATRIBUTOS pueden ser accedidos desde dentro y fuera de la
clase directamente  NO RECOMENDADO.
TIPOS DE - METODOS pueden ser invocados desde dentro y fuera de la clase
PUBLICO
VISIBILIDAD (mediante éstos se puede interactuar con los métodos y atributos
encapsulados, ya sean privados o protegidos).

- ATRIBUTOS y METODOS pueden ser accedidos sólo dentro de la


propia clase  concepto de ENCAPSULACIÓN.
PRIVADO - Para modificar atributos privados desde fuera de la clase se deben
definir Métodos Públicos.

- ATRIBUTOS y METODOS pueden ser accedidos dentro de la


propia clase y por las subclases o clases hijas (herencia).
PROTEGIDO
SINTAXIS ABAP
1) DEFINICION En la definición la palabra
reservada lleva una S. En la
CLASS <nombre_clase> DEFINITION. implementación NO lleva S.
PUBLIC SECTION. MÉTODOS DE
METHODS: INSTANCIA
MÉTODOS DE LA
CLASS-METHODS:
CLASE
PRIVATE SECTION. ATRIBUTOS DE
DATA: INSTANCIA
CLASS-DATA: ATRIBUTOS DE LA
CLASE
ENDCLASS.

Clases METHODS <nombre_método>


[ IMPORTING…
Locales en EXPORTING…
ABAP CHANGING…
RETURNING value( )…
EXCEPTIONS…
RAISING…
].
2) IMPLEMENTACION
• Con RETURNING no se definen parámetros
CLASS <nombre_clase> IMPLEMENTATION. ni de EXPORTING ni de CHANGING.
METHOD <nombre_método>. • Las EXCEPTIONS devuelven un código de
ENDMETHOD. error en el campo de sistema SY-SUBRC, a
ENDCLASS. diferencia de las excepciones tipo RAISING
que no lo hacen.
• No se puede utilizar EXCEPTIONS y RAISING
juntos.
• Sólo en la definición de un método se especifica la FIRMA del
método (parámetros de IMPORTING, EXPORTING, etc).
INSTANCIAS DE CLASES ABAP
DATA: <nom_objeto1> TYPE REF TO <nom_clase>. Hace referencia a la clase <nom_clase>

DATA: <nom_objeto2> LIKE <nom_objeto1>.


Hacen referencia al tipo de
<nom_objeto1>, cuyo tipo es una clase
DATA: <nom_objeto3> LIKE <nom_objeto1>.

CREATE OBJECT <nom_objeto>.

CREATE OBJECT <nom_objeto2>.

<nom_objeto3> = <nom_objeto2>.

Objeto
<nom_objeto1> en
INSTANCIAS DE Memoria
n°1
CLASES
<nom_objeto2>
Objeto
en
<nom_objeto3> Memoria
Llamada Método de n°1
<nom_clase> => nombre_método( … ).
clase

<nom_objeto> -> nombre_método( … ). Llamada Método de


instancia <nom_objeto3> queda apuntando en memoria al
<nom_objeto2>. Cualquier cambio en el primer objeto
se refleja en el segundo objeto o viceversa.
TIPOS DE CONSTRUCTOR
CONSTRUCTOR DE CLASE.
• Constructor de Clase se invoca la primera vez que se
accede a la clase, ya sea al crear un objeto de la clase
(Instancia) o invocar un método estático.
• Una clase no puede tener más de 1 método constructor
estático.
• El constructor de clases no tiene parámetros ni
excepciones.
• Se debe definir en el ámbito público de la clase.
• No puede llamarse explícitamente el constructor de clase.

TIPOS DE
CONSTRUCTOR

CONSTRUCTOR DE INSTANCIA
• Un constructor es un método
especial que no es llamado • Constructor de Instancia se invoca cada vez que se crea un
explícitamente. objeto de la clase.
• Generalmente se utiliza para • Una clase no puede tener más de 1 método constructor de
inicializar las variables de la instancia.
clase / objeto. • El constructor de instancia sólo puede tener parámetros de
IMPORTING y excepciones.
• El constructor de instancia debe ser definido en el ámbito
público de la clase.
• No debe llamarse al constructor de forma explícita (se
puede sólo en casos excepcionales).
CONCEPTO DE HERENCIA
SuperClase • La subclase hereda todos los componentes de la superclase (independiente de la
visibilidad).
• La subclase puede añadir nuevos componentes.
ESPECIALIZACIÓN

• La subclase puede redefinir los métodos de la superclase.


GENERALIZACIÓN

• NO se pueden eliminar componentes de una superclase en una subclase, sólo agregar


y/o modificar.
• LA HERENCIA ES UNA RELACIÓN DE UN SOLO LADO (Desde una superclase no
puedo acceder a los componentes de una subclase, pero una subclase si puede
acceder a los componentes de una superclase).

SubClase

CLASS <nom_clase_hija> DEFINITION INHERITING FROM <clase_padre>


PUBLIC SECTION.
METHODS <nom_metodo_superclase> REDEFINITION. • Con REDEFINITION se puede cambiar el
ENDCLASS. comportamiento de un método padre (NO
cambia la firma del método, solo su
CLASS <nom_clase_hija> IMPLEMENTATION. comportamiento).
METHOD <nom_metodo_superclase>. • La redefinición no es posible con la
… sección privada de la clase padre.
• El prefijo super hace referencia al
super-><nom_metodo_superclase>( … ).
componente del padre.

ENDMETHOD.
ENDCLASS.
HERENCIA - VISIBILIDAD Clase Padre
(tiene constructor)

• En el caso del constructor, no se utiliza el comando En caso de definir un


constructor, en su SubClase1
REDEFINITION. Puede cambiarse la firma del
implementación debe (tiene constructor)
constructor, pero dentro de la implementación del
invocarse al
constructor hijo debe llamarse inmediatamente al
constructor de la
constructor padre [ super->constructor( … ) ].
• En el caso de llamar al constructor del padre, si este subclase1, que es el SubClase2
constructor más (no tiene constructor)
no tiene constructor definido, debe buscarse en la
próximo dentro de la
jerarquía hacia arriba el constructor más próximo
jerarquía.
SubClase3
(tiene constructor)
VISIBILIDAD EN HERENCIA

• COMPONENTES PUBLICOS: Visible para todos.


• COMPONENTES PROTEGIDOS: Visibles dentro de la clase y visible para todas las
subclases.
• COMPONENTES PRIVADOS: Visibles solo en la clase.

OBS: al definir una herencia, se heredan todos los componentes de la clase padre, pero
debido a la visibilidad, no se puede acceder directamente a los componentes privados.

HERENCIA EN COMPONENTES ESTÁTICOS

• Los Métodos estáticos no pueden ser redefinidos.


• El constructor estático de una superclase es ejecutado cuando la superclase o una de las subclases es accedida
por primera vez.
• Una subclase puede tener un constructor estático independiente si una superclase tiene o no un constructor
estático.

También podría gustarte