Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Zikem10 en 15 de Julio 2014, 04:16
-
Buenas Dia tengo unas dudas respecto a este Ejercicio.
1.-Quise utilizar una variable comun sumando el nombre y apellido para cuando la vayara a llamar fuera mas sencillo llamar a nombapell=nombre+apellido1+apellido2, pero al compilarlo me manda un NULL.
2.-Intente hacerla como un metodotipo procedimiento y despues como funcion para que el valor siempre lo tuviera actualizado al momento que que lo llamara en los diferentes metodos de edad,especialidad,ec.... pero tampoco.
yolo que queria hacer es tener esos tres datos nombre apellido1 y apellido dos como una sola variable para evitar llamarlas una por una, deje lo que habia hecho y me dio resultado null como //comentario para no borrarla y ver si me lo pueden revisar o si realmente ando inventando cosas que no, lo siento pero me esta llamando la atencion esto de programar y le estoy picando y moviendole al programa.
saludos y Gracias
//Programa Medico este programa nos dara los atributos de Nombre, Apellidos, edad, casado, ife, espeialidad
//Programa Hecho por Osvaldo Maciel Julio 2014
public class Medico{
String nombre, apellido1, apellido2, especialidad, ife;
String nombapell=apellido1=apellido2;
int edad;
boolean casado;
//Definimos el constructor cuando se cree los objetos medico
public Medico(){
nombre= "Ninguno";
apellido1= "Ninguno";
apellido2= "Ninguno";
edad= 0;
casado= true;
ife= "Ninguno";
especialidad= "Ninguno";
}// Cierre constructor
// Metodo para establecer nombre
public void setNombre(String ValorNombre){
System.out.println("Ha cambiado el Nombre del Medico: "+ nombre + "El nuevo Nombre del Medico es: "+ ValorNombre);
nombre=ValorNombre;//Maniene guardado los datos en las casillas del objeto, mientras este este abierto
}
//Metodo para establecer Apellidos
public void setApellidos(String ValorApellido1, String ValorApellido2){
System.out.println("Ha cambiado los Apellidos del Medico: " +apellido1 +apellido2 +"Los nuevos apellidos son: " +ValorApellido1+ValorApellido2);
apellido1=ValorApellido1;
apellido2=ValorApellido2;
//Maniene guardado los datos en las casillas del objeto, mientras este este abierto
}
//Metodo para establecer la edad del Medico
public void setEdad(int ValorEdad){
System.out.println("Ha cambiado la edad del Medico: "+ nombre +apellido1+apellido2+edad +"La Nueva edad es: "+ValorEdad);
edad=ValorEdad;//Maniene guardado los datos en las casillas del objeto, mientras este este abierto
}
//Metodo para establecer el estado civil del Medico
public void setCasado(boolean ValorCasado){
if (casado=ValorCasado)
{
System.out.println("El estado Civil del Medico: "+ nombre +apellido1+apellido2+casado);//+casado +"El nuevo estado Civil es: "+ValorCasado);
}
else {
System.out.println("Ha cambiado el estado Civil del Medico: "+ nombre +apellido1+apellido2 +"El nuevo estado Civil es: "+ValorCasado);
}
casado=ValorCasado;//Maniene guardado los datos en las casillas del objeto, mientras este este abierto
}
//Metodo para establecer los datos de la credencial del IFE
public void setIfe(String ValorIfe){
System.out.println("Han cambiado los datod de la credencial del IFE: "+ nombre +apellido1+apellido2+ife +"Los nuevos datos de la credencial del IFE son: "+ ValorIfe);
ife=ValorIfe;//Maniene guardado los datos en las casillas del objeto, mientras este este abierto
}
//Metodo para establecer la Especialidad del Medico
public void setespecialidad(String ValorEspecialidad){
System.out.println("Ha cambiado la Especialidad del Medico: "+ nombre +apellido1+apellido2+especialidad +"Lanueva especialidad es: "+ValorEspecialidad);
especialidad=ValorEspecialidad;//Maniene guardado los datos en las casillas del objeto, mientras este este abierto
}
/*Metodo para establecer el Nombre y Apellidos
public void getsetNombApell(String ValorNombApell){
nombapell=ValorNombApell;
}*/
//Metodo para obtener los Atributos
public String getNombre(){return nombre;}
public String getApellido1(){return apellido1;}
public String getApellido2(){return apellido2;}
public int getEdad(){return edad;}
public boolean getCasado(){return casado;}
public String getIfe(){return ife;}
public String getEspecialidad(){return especialidad;}
// public String getNombApell(){return nombapell;}
}
-
Hola Osvaldo, por favor cuando pegues código usa el botón # que te aparece en el editor del foro. Pulsa # y te aparecerán las etiquetas [ code ] ... [ /code], luego pega el código entre esas dos etiquetas y pulsa previsualizar. Si ves algo que corregir, corrígelo y vuelve a pulsar previsualizar, si no pulsa publicar.
Esto es incorrecto:
String nombapell=apellido1=apellido2;
Esto no es válido en Java, no puedes poner varios iguales así seguidos.
Tampoco puedes poner esa instrucción para ligar los atributos en la declaración de atributos, piensa que en la parte inicial de la clase lo que haces es declarar los atributos.
Para establecer ese tipo de relaciones tendrías que hacerlo en el constructor, que es donde se establecen valores y relaciones entre los atributos de la clase.
Por ejemplo:
public class MedicoNuevo{
String nombre, apellido1, apellido2, especialidad, ife;
String nombreapell;
int edad;
boolean casado;
//Definimos el constructor cuando se cree los objetos medico
public MedicoNuevo(){
nombre= "Ninguno";
apellido1= "Ninguno";
apellido2= "Ninguno";
edad= 0;
casado= true;
ife= "Ninguno";
especialidad= "Ninguno";
nombreapell = nombre + apellido1 + apellido2;
}// Cierre constructor
}
Sin embargo no es buena idea tener un atributo que sea la concatenación o suma de otros atributos, porque estarías repitiendo información. Para obtener esa relación entre atributos lo mejor es tener un método:
public class MedicoNuevo{
String nombre, apellido1, apellido2, especialidad, ife;
// NO PONERLO AQUÍ String nombreapell;
int edad;
boolean casado;
//Definimos el constructor cuando se cree los objetos medico
public MedicoNuevo(){
nombre= "Ninguno";
apellido1= "Ninguno";
apellido2= "Ninguno";
edad= 0;
casado= true;
ife= "Ninguno";
especialidad= "Ninguno";
}// Cierre constructor
public String obtenerNombreYApellidos() { //LO OBTENEMOS COMO RESULTADO DE MÉTODO
return nombre + apellido1 + apellido2;
}
}
-
Gracias pero creo que aprete mal la tecla y no queria igualar tres cosasString nombapell=apellido1=apellido2; sino mas bien nombapell=apellido1+apellido2.
otra cosa me sugieres hacer un metodo funcion ya que obtendria toda la informacion guardada por el metodo de procedimiento verdad?, pero mi duda aqui es que si puedo utilizar la notificacion punto utilizando el metodo funcion, yo pienso queno porquese que el metodo funcion se utiliza para invocar a un atributo o a un objeto, pero si tengo esa inquietud, porque yo lo que pienso es siquiero llamar a tres atributos constantemente creo que debe de haber algo que los reuna e invocarlos de manera facil sin tener que ir llamando en este caso nombre+apellido1 +apellido2 con una instruccion larga.
Perdona si pregunto cosas muy obvias pero quiero que me quede claro
-
Sí, puedes utilizar la notación de punto para invocar el método función, esa es la forma de recuperar nombre, apellido 1 y apellido 2 todo junto. A medida que vayas haciendo ejercicios lo verás más claro. Saludos.
-
Muchas Gracias