You are on page 1of 8

Juan Pablo Palominos.

DEFINICION DE CLASES.
a) ATRIBUTOS DE INSTANCIA (OBJETOS) a) ATRIBUTOS (VARIABLES)
SE DIVIDEN EN - Pueden ser visualizados / modificados solamente por mtodos de instancia. - Existe 1 vez por cada objeto creado. - Al cambiar su valor, solo cambia el valor para ese objeto. - Pueden ser visualizados / modificados por mtodos de instancia y mtodos de la clase. - Existe 1 nica ves. - Al cambiar su valor, ese valor cambia para la clase y todos sus objetos creados (Independiente de Instancia).

b) ATRIBUTOS DE LA CLASE (ESTTICOS)

CLASES

SE DEFINEN MEDIENTE

a) METODOS DE INSTANCIA (OBJETOS) b) METODOS (FUNCIONES)


SE DIVIDEN EN

- Pueden llamarse solamente una vez que se haya creado el objeto o, en otras palabras, instanciado la clase.

b) METODOS DE LA CLASE (ESTTICOS)

- Pueden llamarse sin necesidad de crear el objeto o, en otras palabras, instanciar la clase.

TIPOS DE VISIBILIDAD.
TIPOS DE VISIBILIDAD
PUBLICO
- ATRIBUTOS pueden ser accedidos desde dentro y fuera de la clase directamente NO RECOMENDADO. - METODOS pueden ser invocados desde dentro y fuera de la clase (mediante stos se puede interactuar con los mtodos y atributos encapsulados, ya sean privados o protegidos).

PRIVADO

- ATRIBUTOS y METODOS pueden ser accedidos slo dentro de la propia clase concepto de ENCAPSULACIN. - Para modificar atributos privados desde fuera de la clase se deben definir Mtodos Pblicos.

PROTEGIDO

- ATRIBUTOS y METODOS pueden ser accedidos dentro de la propia clase y por las subclases o clases hijas (herencia).

SINTAXIS ABAP
1) DEFINICION
CLASS <nombre_clase> DEFINITION. PUBLIC SECTION. METHODS: CLASS-METHODS: PRIVATE SECTION. DATA: CLASS-DATA: ENDCLASS.
En la definicin la palabra reservada lleva una S. En la implementacin NO lleva S.
MTODOS DE INSTANCIA MTODOS DE LA CLASE ATRIBUTOS DE INSTANCIA ATRIBUTOS DE LA CLASE

Clases Locales en ABAP

METHODS <nombre_mtodo> [ IMPORTING EXPORTING CHANGING RETURNING value( ) EXCEPTIONS RAISING ].

2) IMPLEMENTACION
CLASS <nombre_clase> IMPLEMENTATION. METHOD <nombre_mtodo>. ENDMETHOD. ENDCLASS.
Con RETURNING no se definen parmetros ni de EXPORTING ni de CHANGING. Las EXCEPTIONS devuelven un cdigo de error en el campo de sistema SY-SUBRC, a diferencia de las excepciones tipo RAISING que no lo hacen. No se puede utilizar EXCEPTIONS y RAISING juntos.

Slo en la definicin de un mtodo se especifica la FIRMA del mtodo (parmetros de IMPORTING, EXPORTING, etc).

INSTANCIAS DE CLASES ABAP


DATA: <nom_objeto1> TYPE REF TO <nom_clase>. DATA: <nom_objeto2> LIKE <nom_objeto1>. DATA: <nom_objeto3> LIKE <nom_objeto1>. CREATE OBJECT <nom_objeto>. CREATE OBJECT <nom_objeto2>. <nom_objeto3> = <nom_objeto2>.
Hacen referencia al tipo de <nom_objeto1>, cuyo tipo es una clase

Hace referencia a la clase <nom_clase>

<nom_objeto1> INSTANCIAS DE CLASES <nom_objeto2>

Objeto en Memoria n1

<nom_clase> => nombre_mtodo( ). <nom_objeto> -> nombre_mtodo( ).

Llamada Mtodo de clase Llamada Mtodo de instancia

<nom_objeto3>

Objeto en Memoria n1

<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 mtodo esttico. Una clase no puede tener ms de 1 mtodo constructor esttico. El constructor de clases no tiene parmetros ni excepciones. Se debe definir en el mbito pblico de la clase. No puede llamarse explcitamente el constructor de clase.

TIPOS DE CONSTRUCTOR
Un constructor es un mtodo especial que no es llamado explcitamente. Generalmente se utiliza para inicializar las variables de la clase / objeto.

CONSTRUCTOR DE INSTANCIA
Constructor de Instancia se invoca cada vez que se crea un objeto de la clase. Una clase no puede tener ms de 1 mtodo constructor de instancia. El constructor de instancia slo puede tener parmetros de IMPORTING y excepciones. El constructor de instancia debe ser definido en el mbito pblico de la clase. No debe llamarse al constructor de forma explcita (se puede slo en casos excepcionales).

CONCEPTO DE HERENCIA
SuperClase
ESPECIALIZACIN

La subclase hereda todos los componentes de la superclase (independiente de la visibilidad). La subclase puede aadir nuevos componentes. La subclase puede redefinir los mtodos de la superclase. NO se pueden eliminar componentes de una superclase en una subclase, slo agregar y/o modificar. LA HERENCIA ES UNA RELACIN 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).

GENERALIZACIN

SubClase

CLASS <nom_clase_hija> DEFINITION INHERITING FROM <clase_padre> PUBLIC SECTION. METHODS <nom_metodo_superclase> REDEFINITION. ENDCLASS. CLASS <nom_clase_hija> IMPLEMENTATION. METHOD <nom_metodo_superclase>. super-><nom_metodo_superclase>( ). ENDMETHOD. ENDCLASS.

Con REDEFINITION se puede cambiar el comportamiento de un mtodo padre (NO cambia la firma del mtodo, solo su comportamiento). La redefinicin no es posible con la seccin privada de la clase padre. El prefijo super hace referencia al componente del padre.

HERENCIA - VISIBILIDAD
En el caso del constructor, no se utiliza el comando REDEFINITION. Puede cambiarse la firma del constructor, pero dentro de la implementacin del constructor hijo debe llamarse inmediatamente al constructor padre [ super->constructor( ) ]. En el caso de llamar al constructor del padre, si este no tiene constructor definido, debe buscarse en la jerarqua hacia arriba el constructor ms prximo En caso de definir un constructor, en su implementacin debe invocarse al constructor de la subclase1, que es el constructor ms prximo dentro de la jerarqua.

Clase Padre
(tiene constructor)

SubClase1
(tiene constructor)

SubClase2
(no tiene constructor)

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 ESTTICOS


Los Mtodos estticos no pueden ser redefinidos. El constructor esttico de una superclase es ejecutado cuando la superclase o una de las subclases es accedida por primera vez. Una subclase puede tener un constructor esttico independiente si una superclase tiene o no un constructor esttico.

You might also like