Operaciones con conjuntos en c++(interseccion,diferencia,union),)
1. Introducción a las funciones amigas (Funciones friend)
2. Funciones amigas
3. Clases amigas
4. Ejemplo: La clase fraccional. Métodos operadores amigos
LP2 – Clases y funciones amigas
2010/2011
Yolanda García Ruiz
1
Clases y funciones amigas: friend
Introducción: funciones amigas
Hemos visto que el acceso entre clases es imposible cuando definimos los miembros como private.
class Punto
{
private : float x; float y; public :
Punto ( ); void visualizar ( );
} ;
LP2 – Clases y funciones amigas
Desde una clase no se puede acceder a los métodos o atributos privados de otra clase.
Desde una función normal tampoco se puede acceder a miembros privados de
una …ver más…
LP2 – Clases y funciones amigas
2010/2011
Yolanda García Ruiz
7
Clases y funciones amigas: friend
Funciones amigas
Habíamos visto que uno de los pilares de la programación orientada a objetos era la ocultación de la información. La declaración de funciones amigas permite dotar a la POO de una mayor flexibilidad.
¿existe una puerta trasera para burlar la ocultación de la información?.
Se preservan la seguridad y protección que proporcionan las clases.
Es la clase la que dice quiénes son sus amigos y pueden acceder a sus miembros privados.
Ninguna función puede autodeclararse amiga y acceder a la privacidad de una clase sin que la propia clase tenga conocimiento de ello.
LP2 – Clases y funciones amigas
2010/2011
Yolanda García Ruiz
8
Clases y funciones amigas: friend
Clases amigas
Si queremos que todos los métodos de una clase sean amigos de otra, entonces declaramos toda la clase como amiga. friend class NombreClase;
class Clase2; class Clase1;
{
private : float x, y; public : void visualizar ( ); friend class Clase2;
} ;
LP2 – Clases y funciones amigas
Para ello utilizamos la siguiente declaración
Prototipo para que la Clase1 reconozca la existencia de la Clase2
Desde la clase2 se puede acceder a los miembros privados de la Clase1
Clase2 es amiga de Clase1
2010/2011