✒️ABAP POO / Friends Por Enrique Lugo Lander

Selector Alummnos / Empresas

ABAP Friends

ABAP Friends

FRIENDS (Relaciones de Amistad)

Definición de relaciones de amistad.

En algunos casos, las clases tienen que trabajar tan estrechamente que una clase necesita acceder a los componentes protegidos y privados de otras clases. Del mismo modo, es posible que una clase pueda crear instancias de otras clases sin importar la visibilidad del constructor. Para evitar que estas opciones estén disponibles para todos los usuarios de la clase, utilice el concepto de clase de amistad. Una clase puede garantizar amistad a otras clases e interfaces y, por lo tanto, a todas las clases que implementen la interfaz.

Para crear la amistad, utilice el suplemento FRIENDS de la sentencia CLASS o la pestaña FRIENDS en el generador de clases. Todas las clases e interfaces a las que se garantice amistad están enumeradas en este lugar.

La garantía de amistad es unilateral.

Una clase que garantice una amistad no es automáticamente una amiga de los amigos de la clase. Si una clase que garantiza amistad quiere acceder a los componentes que no son públicos de un amigo, este amigo debe garantizarle su amistad explícitamente.

Implementación de clases factory.

Una aplicación habitual del concepto de amigos (FRIENDS) es la definición de una clase factory. Como el método factory, una clase factory crea y administra las instancias de una clase. Al subcontratar la administración para una clase dedicada, la clase en sí se mantiene más pequeña y fácil de comprender.

En el ejemplo, LCL_FACTORY funciona como una clase factory para los aviones. La clase LCL_FACTORY proporciona el método público CREATE_AIRPLANE en el que CREATE_AIRPLANE instancia la clase LCL_AIRPLANE o devuelve una referencia a una instancia existente. Para restringir la instanciación, la clase LCL_AIRPLANE se define con el suplemento CREATE PRIVATE. Al añadir FRIENDS LCL_FACTORY, la amistad permite que únicamente la clase factory pueda crear instancias de aviones y acceder a los atributos privado.

Normalmente existe una estricta división entre clases externas (PUBLIC) e internas (PROTECTED y PRIVATE). Un consumidor solo puede acceder a los componentes públicos de una clase. Esto permite cambiar la implementación interna de una clase sin invalidar a sus consumidores.

En raras ocasiones, sin embargo, las clases tienen que trabajar tan estrechamente juntas que requieren acceso a sus componentes mutuamente invisibles. El concepto de amistad entre clases se desarrolló para que estos componentes no tengan que estar disponibles para todos los consumidores al mismo tiempo.

FRIENDS

Una clase puede otorgar amistad a otras clases e interfaces (y por lo tanto a todas las clases que implementan esta interfaz). Esta relación se crea usando las adiciones de FRIENDS de la declaración CLASS ... DEFINITION especificando todas las clases e interfaces a las que se les otorgará amistad. A estos amigos se les concede acceso a todos los componentes de la clase que ofrecen la amistad, independientemente de su sección de visibilidad o la adición SOLO LECTURA y siempre pueden crear instancias de esta clase independientemente de la adición CREATE de la declaración CLASS.

Nota: Recomendamos precaución al otorgar una amistad de interfaz global. Cada clase que implementa la interfaz se convierte en amiga de la clase que concede la amistad. Si se utiliza una interfaz global, el alcance de esta amistad debería limitarse utilizando el concepto de paquete, por ejemplo.

La amistad es unilateral

La amistad es un principio unilateral. Una clase que otorga amistad no es automáticamente amiga de sus amigos. Si la clase que otorga la amistad quiere acceder a los componentes privados o protegidos de su amigo, este último debe otorgar la amistad de manera explícita.

Herencia, interfaces y amistad

Las subclases de amigos e interfaces a las que se les asigna un amigo como interfaz de componentes también se convierten en amigos. Por esta razón, se debe tener mucho cuidado al definir una amistad. Cuanto más alto esté un amigo en el árbol de herencia, mayor será el número de subclases que pueden acceder a todos los componentes de la clase que otorgan amistad. Una clase que otorga amistad al objeto de la clase raíz gana todas las clases de Objetos ABAP como amigos y, por lo tanto, no tiene privacidad alguna. Por el contrario, es relativamente seguro otorgar amistad a una clase final, ya que esta clase por sí sola se especifica como un amigo.

La amistad concedida no se hereda, a diferencia del atributo de amigo. Un amigo de una superclase no es, por tanto, automáticamente un amigo de sus subclases.

Las adiciones de FRIENDS

La declaración CLASE ... DEFINICIÓN tiene tres adiciones de FRIENDS:

... FRIENDS cif1 ... cifn

Esta adición se puede especificar al definir cualquier clase local de un programa. La amistad se puede otorgar a todas las clases o interfaces del mismo programa y a las clases e interfaces en la biblioteca de clases. Tenga en cuenta, en particular, que las clases locales de un grupo de clases pueden otorgar amistad a la clase global de ese grupo de clases.

... GLOBAL FRIENDS cif1 ... cifn

Esta adición solo se puede usar con clases globales y es generada por Class Builder cuando se crea. La amistad se puede otorgar a todas las demás clases e interfaces globales.

... LOCAL FRIENDS cif1 ... cifn

Esta adición no se especifica cuando se declara la clase, sino que define su propia declaración. En un grupo de clases, la clase global puede usar esta declaración para otorgar amistad a las clases e interfaces locales de su propio grupo de clases. Mientras que Class Builder genera la declaración CLASS para la declaración de clase real, la declaración

CLASS ... DEFINITION LOCAL FRIENDS cif1 ... cifn.

se ingresa directamente en el programa de inclusión para definir clases e interfaces locales.


 

Escanear / Compartir

 

 


Sobre el autor

Publicación académica de Enrique Horacio Lugo Lander, en su ámbito de estudios para el Master ABAP Orientado a Objetos.

SAP SemiSenior

Enrique Horacio Lugo Lander

Profesión: Tsu en Informática - Argentina - Legajo: GB93C

✒️Autor de: 30 Publicaciones Académicas

🎓Egresado del módulo:

Certificación Académica de Enrique Lugo

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "Friends" de la mano de nuestros alumnos.

SAP Expert


La adición FRIENDS y cómo se implementa: En cualquier lenguaje de programación orientado a objetos, el acceso a los componentes privados y protegidos, ya sea a los atributos o a los métodos, se encuentra prohibido. Si alguien trata de acceder a ellos, el compilador generará un error de sintaxis. A veces puede ser ventajoso dar acceso a los atributos protegidos y privados de otra clase. Esto puede lograrse utilizando la adición FRIENDS. Friends: Adición que se agrega en una clase para permitir que otra clase pueda acceder a sus componentes protegidos y privados. Esta adición se debe agregar en la clase cuyos atributos necesitan ser accedidos. La nomenclatura para establecer la relación...

Acceder a esta publicación

Creado y Compartido por: Jeferson Jos Pena Curvelo / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert



En ABAP, el concepto Friends (amigos) proviene de la Programación Orientada a Objetos (POO) y se utiliza para permitir que una clase acceda a los atributos y métodos privados o protegidos de otra clase, sin perder el principio de encapsulación. Para declararlo, se usa la sentencia FRIENDS <nombre_clase> dentro de la definición de la clase que concede acceso. Esta técnica resulta útil cuando dos clases deben colaborar estrechamente, por ejemplo, una clase de prueba unitaria que necesita validar el comportamiento interno de otra. En ABAP, no se pueden declarar amigos individuales (como métodos o atributos), solo clases completas. El uso de Friends debe aplicarse con precaución, ya...

Acceder a esta publicación

Creado y Compartido por: David Ibarra / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

La adicion FRIENDS y su implementacion. En cualquier lenguaje de POO el acceso a los components privados y protegidos ya sea a atributos o metodos se encuentran prohibidos. A veces puede ser de gran ayuda acceder a los atributos/métodos protegidos o privados, esto se puede lograr utilizando la adición FRIENDS. “FRIENDS Es una adición que se agrega en una clase para permitir que otra clase pueda acceder a sus componentes privados o protegidos.” CLASS <name> DEFINITION FRIENDS <fclassname>… ENDCLASS. Si declaramos la clase local LCL_ME y deseamos que otra clase local LCL_FRIEND , para acceder a los componentes de LCL_ME deberíamos escribir la sgte adición. INTERFACE LIF_FRIEND....

Acceder a esta publicación

Creado y Compartido por: Tobias Emanuel Mareco Rojas / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Friends. Que es? Adicion que se agrega en una clase para permitir que otra clase pueda acceder a sus componentes protegidos y privados. En cualquier lenguaje de programacion orientado a objetos el acceso a los componentes privados y protegidos ya sea a los atributos o a los metodos se encuentra prohibido, para acceder a ellos por medio de la adicion FRIENDS. De no realizarse este acceso, el compilador generara un error de sintaxis. La adicion se debe agregar en la clase cuyos atributos necesitan ser accedidos. Tambien se puede especificar una interface como amiga de una clase. Si se realiza esto todas las clases que implementen la interface tendran acceso garantizado a la clase.

Acceder a esta publicación

Creado y Compartido por: David De Jesùs Restrepo Cañas

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

FRIENDS (Relaciones de Amistad) Definición de relaciones de amistad. En algunos casos, las clases tienen que trabajar tan estrechamente que una clase necesita acceder a los componentes protegidos y privados de otras clases. Del mismo modo, es posible que una clase pueda crear instancias de otras clases sin importar la visibilidad del constructor. Para evitar que estas opciones estén disponibles para todos los usuarios de la clase, utilice el concepto de clase de amistad. Una clase puede garantizar amistad a otras clases e interfaces y, por lo tanto, a todas las clases que implementen la interfaz. Para crear la amistad, utilice el suplemento FRIENDS de la sentencia CLASS o la pestaña FRIENDS en el generador de clases. Todas...

Acceder a esta publicación

Creado y Compartido por: Enrique Horacio Lugo Lander

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


FRIENDS – LECCION 2-8 ¿PARA QUE SE UTILIZA LA ADICION FRIENDS Y COMO SE IMPLEMENTA? En cualquier lenguaje de programación orientado a objeto el acceso a los componentes privados y protegidos, ya sea a los atributos o a los métodos, se encuentra prohibido Si alguien trata de acceder a ellos, el compilador generara un error de sintaxis A veces, puede ser ventajoso dar acceso a los atributos protegidos y privados de otra clase. Esto puede lograrse utlizando la adicion FRIENDS FRIENDS, adicion que se agrega en una clase para permitir que otra clase pueda acceder a sus componentes protegidos y privados Esta adicion se debe agregar en la clase cuyo atributo necesitan ser accedidos La nomenclatura para establecer la relación...

Acceder a esta publicación

Creado y Compartido por: Cristian Darwin Arteaga Diaz / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


FRIENDS: Adicion que se agrega en una clase para permitir que otra clase pueda acceder a sis componentes protegidos y privados. Se agregará en la clase cuyos atributos necesitan ser accedidos: CLASS clase1 DEFINITION FRIENDS clase2. ... .. ENDCLASS. También se puede especificar una interface como AMIGA de una clase, con lo que garantizamos el acceso a la clase a...

Acceder a esta publicación

Creado y Compartido por: Juan Ignacio De Tejada Santiago / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert



FRIENDS ADICION FRIENDS, para qué y cómo se implementa. En los lenguajes POO el acceso a los componentes privados y protegidos, ya sean atributos o métodos, está prohibido. FRIENDS permite dar acceso a atributos protegidos y privados de otra clase. Esta Adición que se agrega en una clase permite a otra clase que pueda acceder a sus componentes protegidos y privados. La adición FRIENDS se debe agregar a la clase cuyos atributos necesitan ser accedidos. CLASS lcl_clase1 DEFINITION FRIENDS lcl_clase2. … … ENDCLASS. Por ejemplo, declaramos la clase local (LCL) LCL_ME y queremos que otra clase local (LCL) LCL_AMIGA pueda acceder a los componentes de la clase LCL_ME, se haría de este...

Acceder a esta publicación

Creado y Compartido por: Josep Antoni Lopez Moyano

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

U2-L8 Uso de adición FRIENDS y como se implementa. Adición que se agrega a una clase para permitir que otra clase pueda acceder a sus componentes protegidos y privados. La adición se agrega en la clase cuyos atributos necesitan ser accedidos. CLASS lcl_class1 DEFINITION FRIENDS lcl_class2. ... .. ENDCLASS. En el siguiente ej; La clase local LCL_FRIEND denominada 'amiga' podrá acceder a los componentes de la clase local LCL_ME: CLASS lcl_me DEFINITION FRIENDS lcl_friend. PRIVATE SECTION. DATA: a1 TYPE string VALUE 'Soy A1 de la clase LCL_ME'. ENDCLASS. El método ACCESS_A1_OF_CLASS1 de clase LCL_FRIEND accederá a componentes privados de LCL_ME. CLASS lcl_friend DEFINITION....

Acceder a esta publicación

Creado y Compartido por: Denisse Adriana Hernandez Trujillo

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Friends: es una adición que se agrega a una clase para que otra clase pueda acceder a sus componentes protegidos y privados. Se define mediante CLASS DEFINITION FRIENDS - ENDCLASS.

Acceder a esta publicación

Creado y Compartido por: Daniel Alejandro Monteros Segura

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 99.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

🔎Buscador de Publicaciones:


🔎Googlear en CVOSOFT:
Googlear: "ABAP - Friends"

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!