Foros del Web » Programación para mayores de 30 ;) » Java »

Duda con principio OO

Estas en el tema de Duda con principio OO en el foro de Java en Foros del Web. Si trabajo con interfaz grafica swing o con algun tipo de clase no grafica los atributos deberian ser privados y los metodos publicos?He leido que ...
  #1 (permalink)  
Antiguo 27/01/2011, 21:52
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Duda con principio OO

Si trabajo con interfaz grafica swing o con algun tipo de clase no grafica los atributos deberian ser privados y los metodos publicos?He leido que por principio OO deberia ser asi.

Si yo creara una clase siguiendo el principio OO, entonces no podria construir una clase control para validar los atributos de la clase padre, porque siempre me daria un mensaje de que el atributo no es visible.

Habria alguna forma de solucionar ese problema? a parte de declarar los atributos publicos
Código PHP:
public class Animal
{
private 
int edad=null;
private 
String nombre=null;

public 
void setEdad(int edad)
{
this.edad=edad;
}
public 
void setNombre(String nombre)
{
this.nombre=nombre;
}

public 
int getEdad()
{
return 
edad;
}

public 
String getNombre()
{
return 
nombre;
}

//Luego para llamar el metodo 
public Animal getAnimal()
{
return 
this;
}

 
Validando va = new Validando(getAnimal());

va.valida();

Ahora si quisiera validar en otra clase
Código PHP:
public class Validando
{
public 
Animal animal;

public 
Validando(Animal animal)
{
this.animal=animal;
}

public 
void valida()
{
if(
animal.edad.equals("")||animal.nombre.equals("");
{
System.out.println("datos vacios");
}
else
{
System.out.println("datos ingresados");}
}

  #2 (permalink)  
Antiguo 27/01/2011, 23:06
 
Fecha de Ingreso: agosto-2010
Mensajes: 29
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Duda con principio OO

En todo caso en tu validador deberias usar los metodos get y set para acceder a los atributos, revisa el concepto de Encapsulamiento:

Código Java:
Ver original
  1. public class AnimalValidator{
  2.     private Animal animal;
  3.  
  4.     public AnimalValidator(Animal animal){
  5.         this.animal = animal;
  6.     }
  7.  
  8.     public void validate(){
  9.         if(animal.getEdad() == 0 || animal.getNombre().equals("")){
  10.             // si cumple
  11.         }else{
  12.            //si no cumple
  13.         }
  14.    }
  15. }
  #3 (permalink)  
Antiguo 28/01/2011, 02:53
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Duda con principio OO

De acuerdo con DDoS. Se hacen los atibutos privados para que nadie tenga conocimiento de ellos, así que debería ser la clase que los tiene la reponsable de saber si esos atributos son válidos o no.

En cualquier caso, tienes los métodos set y get para acceder a esos atributos, así que desde fuera también podrías hacer la validación

if(animal.getEdad().equals("")||animal.getNombre() .equals("");

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: principio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:18.