Acceder a una variable privada de una clase desde otra clase

Iniciado por Alvaro093, 26 Enero 2012, 19:47 PM

0 Miembros y 1 Visitante están viendo este tema.

Alvaro093

Hola, vereis, tengo una duda, tengo una clase "Empleado" la cual tiene algunas variables cadena (Nombre, direccion...) y una cadena la cual cada elemento es un struct, el caso es que tengo otra clase que tiene un metodo que me pide a traves de un parametro ver si en una cadena existe algun objeto de tipo empleado, si existe que la muestr, y si no que devuelva un objeto empleado con todo vacio, es decir, las variables privadas a 0.

Como accedo desde la segunda clase a las variables privadas de la primera?

Citarclass Empleado {
     Cadena Nombre;
     Cadena Direccion;
     Cadena Banco;
     float Sueldo;
     Trabajo Horario[250];
     int NoTrabajos;

Como accedo a esas variables desde la segunda clase, es decir, inicializo un Empleado E, pero como accedo a lo dicho de ese objeto?

Gracias!

soyloqbuskas

¡Buenas Alvaro093!

Para poder acceder a variables privadas de una clase desde el exterior debes crear una funcion publica dentro de esa clase que te retorne la variable que quieres.


class Empleado {
    Cadena Nombre;
    Cadena Direccion;
    Cadena Banco;
    float Sueldo;
    Trabajo Horario[250];
    int NoTrabajos;

    public Cadena getNombre(){
         return Nombre;
    }


De esta manera, cuando crees tu objeto empleado, podras llamar a tu funcion getNombre()


     Empleado emp = new Empleado(..., ..., ....,);
     Cadena nombreEmpleado = emp.getNombre();


Espero haberte servido de ayuda. ¡Un saludo!
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw

satu

Hola

Eso es lo básico de la programación orientada a objetos, la encapsulación: desde el exterior no deberías poder acceder directamente a los atributos de la clase, necesitas métodos públicos como dice soyloqbuskas.

Saludos
Breakbeat como forma de vida

El_Java

Tambien puedes declarar que Clase 2 es amiga de Clase 1:
Código (cpp) [Seleccionar]
class Clase1{
public:
   Clase1();
   ~Clase1();
   friend class Clase2;
private:
   int privada;
};

class Clase2{ //Esta clase puede ver los elementos privados de Clase1
...
};


More info here: http://c.conclase.net/curso/?cap=032

wachi

hola
como ya te dijeron antes ,a las variables privadas de una clase no se puede acceder desde otra clase ,tienes que hacer un método publico que te devuelva dicho variable
Ej:
public:
Cadena getNombre(){
          return Nombre;
     }

y otro para modificar esa variable en caso que lo necesites
Ej:
void setNombre(Cadena nom ){
       strcpy(Nombre,nom);
     }
Empleado emp = new Empleado(..., ..., ....,);
Cadena nombreEmpleado = emp.getNombre();

emp.setNombre("nom");

en cuanto a lo de las clases amigas te lo recomiendo a modo de cultura, no para que lo utilices ya que creo que es una mala practica de programación,porque hasta donde se solo se puede hacer en c++.Eso es en caso  de que quieras aprender bien POO sin importar el lenguaje ....
Si lo que vas a decir no es mas bello que el silencio : no lo digas