Professional Documents
Culture Documents
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).
CLASES
SE DEFINEN MEDIENTE
- Pueden llamarse solamente una vez que se haya creado el objeto o, en otras palabras, instanciado la clase.
- 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
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).
Objeto en Memoria n1
<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.