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

[SOLUCIONADO] Clases abstractas, problema tonto... D:

Estas en el tema de Clases abstractas, problema tonto... D: en el foro de Java en Foros del Web. Hola! Tengo que hacer un ejercicio de clases abstractas en java, lo tengo casi terminado pero me da un error y no logro darme cuenta ...
  #1 (permalink)  
Antiguo 28/11/2013, 06:19
Avatar de muchuelu93  
Fecha de Ingreso: noviembre-2013
Mensajes: 35
Antigüedad: 10 años, 5 meses
Puntos: 2
Sonrisa Clases abstractas, problema tonto... D:

Hola!

Tengo que hacer un ejercicio de clases abstractas en java, lo tengo casi terminado pero me da un error y no logro darme cuenta de donde viene...

El ejercicio consiste en una clase abstracta llamada ALGORITME que deriva a AMULTIPLICACIO y ADIFERENCIA, estas 2 ultimas heredando de ALGORITME. Luego una clase llamada ENCRIPTADOR (yo creo que no es muy necesaria, pero la tengo que poner...) y por ultimo la clase TEST, donde se muestran los resultados.

Mas abajo os dejo todos los codigos de cada clase. El problema es que en la clase TEST, done pongo "Algoritme oba1 = new AMultiplicacio(10);" o "Algoritme oba2 = new ADiferencia(100);" me da error. Creo que es una tonteria pero es que he tocado un millon de cosas y no lo arreglo...

Gracias!

CODIGOS

ALGORITME:

Código:
public abstract class Algoritme
{
	//Metodes
	public abstract int encriptar(int codi);
	public abstract int desencriptar(int codi);
}
AMULTIPLICACIO:

Código:
public abstract class AMultiplicacio extends Algoritme 
{
	//Atributs
	private int numero;
	
	//Constructors
	public AMultiplicacio(int num)
	{
		numero=num;
	}	
	
	//Metodes
	public int encriptar(int codi)
	{
		return codi*numero;
	}
	
	public int desencriptar(int codi)
	{
		return codi/numero;
	}
}
ADIFERENCIA

Código:
public abstract class ADiferencia extends Algoritme 
{
	//Atributs
	private int numero;
	
	//Constructors
	public ADiferencia(int num)
	{
		numero=num;
	}	
	
	//Metodes
	public int encriptar(int codi)
	{
		return codi-numero;
	}
	
	public int desencriptar(int codi)
	{
		return codi+numero;
	}
}
ENCRIPTADOR:

Código:
public class Encriptador 
{
	//Metodes
	public int encriptar(int codi, Algoritme a1)
	{
		return a1.encriptar(codi);
	}
	public int desencriptar(int codi, Algoritme a1)
	{
		return a1.encriptar(codi);
	}
}
TEST:

Código:
public class Test 
{
	public static void main(String[] args)
	{
		int codi=12345;
		int aux=0;
		
		Encriptador e=new Encriptador();
		
		Algoritme oba1 = new AMultiplicacio(10);
		aux = e.encriptar(codi, oba1);
		System.out.println("El codi encriptat es "+aux);
		System.out.println("El codi desencriptat es "+e.desencriptar(aux.oba1));
		
		Algoritme oba2 = new ADiferencia(100);
		aux = e.encriptar(codi, oba2);
		System.out.println("El codi encriptat es "+aux);
		System.out.println("El codi desencriptat es "+e.desencriptar(aux.oba2));
	}
}
  #2 (permalink)  
Antiguo 28/11/2013, 06:52
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Clases abstractas, problema tonto... D:

efectivamente es tonto el problema

Si pretendes crear una clase no abstracta que extienda a otra que sí es abstracta, no declares la nueva clase como abstracta.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 28/11/2013, 07:24
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Clases abstractas, problema tonto... D:

Para que te quede un poco más claro.

Una clase abstracta podríamos decir que solo existe para ser extendida y que la lógica de sus métodos se implemente en las clases que extienden de esta.

Por lo tanto si intentas hacer una instancia (Clase c = new Clase()) de una clase de tipo abstracto no te dejará que es lo que te ocurre a ti en tu método main.

Y por eso mismo Fuzzylog te dice que no declares las nuevas clases (que posteriormente intentas instanciar) como abstractas.
  #4 (permalink)  
Antiguo 28/11/2013, 09:45
Avatar de muchuelu93  
Fecha de Ingreso: noviembre-2013
Mensajes: 35
Antigüedad: 10 años, 5 meses
Puntos: 2
Respuesta: Clases abstractas, problema tonto... D:

Ya lo he arreglado! Muchas gracias, realmente era un tontería pero es que no sabia muy bien como se hacia. Gracias por todo!

Etiquetas: Ninguno
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 01:00.