elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Dudas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Dudas.  (Leído 7,869 veces)
Gm3z

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Dudas.
« en: 27 Febrero 2012, 21:33 pm »


Desarrollar una clase llamada Asignatura que:

•   Tenga dos atributos private de tipo int (el identificador) y de tipo double (la calificación).
•   Tenga un constructor con un parámetro de tipo int.
•   Tenga un getter para cada uno de los atributos.
•   Tenga un setter para la calificación.

Desarrollar una clase llamada Alumno que:

•   Tenga tres atributos private de tipo Asignatura.
•   Tenga un constructor con tres parámetros de tipo Asignatura que inicialice los tres atributos.
•   Tenga un constructor con tres parámetros de tipo int que inicialice los tres atributos.
•   Tenga un getter para cada uno de los atributos.

Desarrollar una clase llamada Profesor que:

•   Tenga un método ponerNotas que recibe un parámetro de tipo Alumno y que no devuelve nada. Pondrá una calificación aleatoria a cada una de las asignaturas del alumno.
•   Tenga un método calcularMedia que recibe un parámetro de tipo Alumno y devuelve un double.

Desarrollar una clase llamada Actividad1 que en su método main:

•   Cree e inicialice tres Asignaturas.
•   Cree un Alumno con las tres Asignaturas.
•   Cree un Profesor que le ponga calificaciones al Alumno y muestre por pantalla la media del Alumno.

Hola y deciros que muchas gracias por vuestra atención antes que nada.
Os pego aquí el enunciado que tengo sobre un ejercicio a realizar, lo que pasa que no se como empezar:

Mis dudas son las siguientes:
1º. Cada clase tiene que ir en un archivo distinto y luego llamarlo desde el proyecto princiapal , y si es correcto que es asi, seria como llamarlo directamente es decir Asignatura.getnombre() ¿?

2º. Estoy un poco perdido en que son los contrusctores,getter y setter.
Lo que yo entiendo por esos conceptos son:
-Constructor: no se muy bien como explicarlo.
-Getter: Es el que devuelve el valor como si fuera el return.
-Setter: El que modifica las variables no.

Es que no entiendo muy bien esos conceptos con lo cual no se como se estructuraría para poder empezar a montar el ejercicio.

Muchas gracias ^^




En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Dudas.
« Respuesta #1 en: 27 Febrero 2012, 21:49 pm »

Cada clase por separado como bien has dicho.

El getter es para recuperar un valor de una instancia y el setter para añadirlo.

Asignatura.getnombre() no exactamente. Te pongo un ejemplito de un main.

Código
  1. public class prueba{
  2. public static void main(String adr[])
  3. {
  4. Asignatura a = new Asignatura(9);
  5. }
  6. }


El constructor es el método que se ejecuta cuando haces la instanciación (new Asignatura(paramentros))
Código
  1. public class Asignatura{
  2. private int identificador;
  3. private double calificacion;
  4. public Asignatura(int valor)
  5. {
  6. identificador = valor;
  7. }
  8. }


En línea

Gm3z

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Dudas.
« Respuesta #2 en: 27 Febrero 2012, 21:57 pm »

Vale y el identificador se puede quedar vació o que valor debería darle?

En el apartado del main dice que cree e inicialice 3 asignaturas deberia hacerlo asi

Citar
public class prueba{
public static void main(String adr[])
{
Asignatura a = new Asignatura(9);
Asignatura b = new Asignatura(9);
Asignatura c = new Asignatura(9);
}
}

El 9 porque es?

Puff bueno intentare montarlo a ver si me sale.

Gracias ^^
En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Dudas.
« Respuesta #3 en: 27 Febrero 2012, 22:24 pm »

El 9 es el valor que tu quieras pero cada asignatura debe tener un número diferente porque es el codigo identificador de la asignatura (de ahí el nombre).
Por ejemplo
Código
  1. public class prueba{
  2. public static void main(String adr[])
  3. {
  4. Asignatura matematicas = new Asignatura(1); // La asignatura matematicas tiene un identificador único que es el 1
  5. Asignatura lengua = new Asignatura(56); // Lo mismo para el resto
  6. Asignatura fisica = new Asignatura(6);
  7. }
  8. }

Obviamente no puede quedar vacío porque es el identificador de la clase.
En línea

Gm3z

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Dudas.
« Respuesta #4 en: 27 Febrero 2012, 23:27 pm »

Muchas gracias proteus ^^
vale lo del identificador ya lo he entendido =)
ahora luego me quedara darle valores a las asignaturas :D
Eso lo intentare, si tengo alguna duda la pondré

De verdad muchas gracias =)

Edito:
Citar
•   Tenga un getter para cada uno de los atributos.
•   Tenga un setter para la calificación.

En esta parte que quiere decir que la tiene que tener un metodo para guardar el valor y otro para luego recogerlo o directamente lo hago en el principal?

Citar
que recibe un parámetro de tipo Alumno o Asignatura
Como paso eso?
Seria Objeto.Variable = Valor ?
« Última modificación: 28 Febrero 2012, 01:07 am por Luroum » En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Dudas.
« Respuesta #5 en: 28 Febrero 2012, 02:44 am »

Error Objeto.Variable = Valor
Las variables en java son privadas (o se intenta) por lo tanto no puedes acceder a variables de objetos como cualquier cosa.
Para eso existen los get & set.

valor = obj.getVariable();
obj.setVariable(valor);

Son los métodos get & set los encargados de gestionar las variables, y no la clase externa que "invoca" a Asignatura.
En línea

Gm3z

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Dudas.
« Respuesta #6 en: 28 Febrero 2012, 15:49 pm »

Ok, creo que me he enterado ya con el get recojo el valor de esa variable para podre mostrarla y luego con el set le paso el valor y la modifico en el set que haya creado en la clase, supongo que sera asi no?

y eso de:
Citar
que recibe un parámetro de tipo Alumno o Asignatura

Como se pasa esa variable tipo objeto?

Asi llevo el Código:
Citar
Parte de Actividad1:
Código:
import java.util.*;
public class Actividad1
{

/**
* @param args
*/
public static void main(String[] args)
{
String nombre,nombre1,nombre2,nombre3,aux;
Scanner leer = new Scanner (System.in);
Asignatura a = new Asignatura(1);
System.out.println("Introduce el nombre del Alumno");
nombre=leer.next();
System.out.println("Introduce el nombre de las Asignaturas");
nombre1=leer.next();
nombre2=leer.next();
nombre3=leer.next();
Alumno b = new Alumno (2,nombre1,nombre2,nombre3);
Profesor c = new Profesor (3);
c.PonerNotas(b.identificador);
}

}

Citar
Parte de Alumno:
Código:
public class Alumno
{
int identificador;
double Nota1,Nota2,Nota3;
private String Asignatura1,Asignatura2,Asignatura3;
public Alumno (int valor,String nombre1,String nombre2,String nombre3)
{
identificador = valor;
Asignatura1 = nombre1;
Asignatura2 = nombre2;
Asignatura3 = nombre3;
}
public String getAsignatura1()
{
return Asignatura1;
}
public String getAsignatura2()
{
return Asignatura2;
}
public String getAsignatura3()
{
return Asignatura3;
}
public double getNota1()
{
return Nota1;
}
public double getNota2()
{
return Nota2;
}
public double getNota3()
{
return Nota3;
}
}

En la parte del profesor no empezado ya que no se como se le pasan los atributos tipo Alumno.

Y la de Asignatura solo le puse el Identificador y la califacacion como pide en el enunciado.
« Última modificación: 28 Febrero 2012, 17:29 pm por Luroum » En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Dudas.
« Respuesta #7 en: 28 Febrero 2012, 19:05 pm »

Para pasar objetos es igual que para pasar enteros
Código
  1. Alumno b = new Alumno();
  2. Profesor a = new Profesor();
  3. a.setAlumno(b);
  4.  

Solo necesitas que tu profesor tenga un setAlumno() que le entre por parametro un Alumno
Código
  1. public setAlumno(Alumno alum)
  2. {
  3. miAlumno = alum;
  4. }
  5.  

Es un ejemplo al azar, no se si te piden eso, pero así es como se pasan objetos.
Por supuesto la variable miAlumno es una variable privada de la clase Profesor inicialmente sin valor (private Alumno miAlumno);
En línea

Gm3z

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Dudas.
« Respuesta #8 en: 28 Febrero 2012, 20:56 pm »

Uff. bueno entonces si yo lo que quiero es mandar al metodo ponerNotas para que me ponga las notas aleatoriamente.

deberia hacerlo asi:
Citar
c.PonerNotas(b); // cuando c es el objeto de profesor
y en la clase profesor lo recibo asi:

Código:
public void PonerNotas (Alumno Alum)
{
aux=Alum;

}

y ya con la variable auxiliar ya puedo coger los set, get y demas de la clase Alumno?
para poder con el set modificar el valor de las notas?

Un saludo! y Gracias por aguantar ^^
En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: Dudas.
« Respuesta #9 en: 28 Febrero 2012, 21:12 pm »

Puedes hacerlo directamente con Alum, no necesitas aux. Aux es necesario si quieres guardar dentro de profesor el alumno.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Dudas binarias o de muy muy pero de muy bajo nivel (7 dudas)
Ingeniería Inversa
jamonyqueso 7 4,989 Último mensaje 7 Noviembre 2007, 04:45 am
por Ferсhu
Dudas y mas dudas con Antenas...
Materiales y equipos
rOoLeZ 9 4,616 Último mensaje 27 Noviembre 2008, 16:30 pm
por heaviloto
[DUDAS] Todas las dudas sobre RadASD + MASM aqui « 1 2 3 »
ASM
AleX Inc. 23 21,032 Último mensaje 5 Julio 2010, 11:58 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines