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

 

 


Tema destacado:


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

Desconectado Desconectado

Mensajes: 8



Ver Perfil
programa de iniciación en java
« en: 6 Marzo 2014, 12:28 pm »

Buenas, estoy aprendiendo java, pero tengo un problema a la hora de desarrollar un ejercicio, este es el enunciado:

Desarrollar una aplicación de cifrado de códigos numéricos.

El cifrador recibirá un código numérico y una implementación de un algoritmo de cifrado/descifrado y la orden de cifrar o descifrar el código.

Existen distintos algoritmos:

• Multiplicar por un número determinado.

• Diferencia existente a un número determinado.

• El XOR con un número determinado.

Desarrollar la clase Actividad5 que en su método main cree un cifrador, y le pida cifrar y descifrar varios códigos usando distintos algoritmos de cifrado.

Realizar también el diseño del Diagrama de Clases UML.

hasta ahora este es el codigo que yo tenia realizado, el cual funcionaba
Código:
public interface Algoritmo 
{
          public abstract int cifrar();
          public abstract int descifrar();
}
Código:
public class Cifrado {
static int numero2;

public Cifrado(int numero2) {
Cifrado.numero2=numero2;
}

public int cifrar(int numero2)
{
return numero2;
}
public int descifrar(int numero2)
{
return numero2;
}
}
Código:
public abstract class Diferencia extends Cifrado implements Algoritmo {
//Atributos
       private int numero;

//Constructores
public Diferencia(int param)
       {
          super(numero2);
          numero = param;
        }

//Metodos
public int cifrar()
{
return numero - numero2;
}
public int descifrar()
{
return numero + numero2;
}
public void encriptacionDiferencia()
{
System.out.print("Algoritmo diferencia: ");
System.out.print("código cifrado -> " + cifrar());
System.out.println(" código descifrado -> " + descifrar());
}
}
Código:
public abstract class Multiplica extends Cifrado implements Algoritmo {
//Atributos
private int numero;

//Constructores
public Multiplica(int param)
{
super(numero2);
numero = param;
}

//Metodos
public int cifrar()
{
return numero - numero2;
}
public int descifrar()
{
return numero / numero2;
}
public void encriptacionDiferencia()
{
System.out.print("Algoritmo diferencia: ");
System.out.print("código cifrado -> " + cifrar());
System.out.println(" código descifrado -> " + descifrar());
}
}
Código:
public abstract class Xor extends Cifrado implements Algoritmo {
//Atributos
private int numero;

//Constructores
public Xor(int param)
{
super(numero2);
numero = param;
}

//Metodos
public int cifrar()
{
return numero ^ numero2;
}
public int descifrar()
{
return numero2 ^ numero;
}
public void encriptacionDiferencia()
{
System.out.print("Algoritmo diferencia: ");
System.out.print("código cifrado -> " + cifrar());
System.out.println(" código descifrado -> " + descifrar());
}
}
Código:
public class Actividad5 
{
    public static void main(String[] args) {
        Cifrado c = new Cifrado(4);
        Diferencia algoritmo1 = new Diferencia(10){};
        Multiplica algoritmo2 = new Multiplica(5){};
        Xor algoritmo3 = new Xor(20){};
        c.cifrar(4);
        algoritmo1.encriptacionDiferencia();
        algoritmo2.encriptacionDiferencia();
        algoritmo3.encriptacionDiferencia();
    }
}

Pero lo tengo mal planteado desde el principio, me dicen que tengo que tener el constructor de cifrador así:

public Cifrador(long l, Algoritmo tipoCifrado, boolean b){

................

y utilizarlo así:

Cifrador c=new Cifrador(111L, new Xor(),true);

pero no entiendo para que tengo que crear un "new Xor()" o un "boolean" ni que parte del código aparte del constructor y el main tendría que modiicar

por favor si me pudrieran guiar un poco me ayudaría mucho.

Saludos y gracias de antemano!


En línea

Mitsug

Desconectado Desconectado

Mensajes: 16



Ver Perfil
Re: programa de iniciación en java
« Respuesta #1 en: 7 Marzo 2014, 16:31 pm »

Hola,

Hay que aprovechar la POO. Tu code no está mal, pero podrá ajustarse más al estándar de la POO. Por ejemplo, podemos convertir tu código en polimórfico, de la siguiente manera:

1] Crear una interface que represente el tipo de cifrado.
2] Crear una clase por tipo de cifrado e implementar la interface.
3] Desde la clase Cifrador hacemos los cifrados por medio del constructor que mencionaste.

Código
  1. public class Cifrador {
  2.  
  3. public static void main(String[] args) {
  4. new Cifrador(30l, new CifradoXor(), true);
  5. }
  6. public Cifrador(long numero, TipoCifrado tipo, boolean estado) {
  7.                // no se para que usar el boolean..
  8. System.out.println(tipo.toString()+": "+tipo.cifrar(numero));
  9. }
  10.  
  11. }
  12.  
Código
  1. public interface TipoCifrado {
  2.  
  3. public long cifrar(long numero);
  4. }
  5.  
Código
  1. public class CifradoMultiplicador implements TipoCifrado {
  2.  
  3. @Override
  4. public long cifrar(long numero) {
  5. // cifrado
  6. }
  7.  
  8.        @Override
  9. public String toString() {
  10. return "Cifrado tipo Multiplicador";
  11. }
  12.  
  13. }
  14.  
Código
  1. public class CifradoDiferencia implements TipoCifrado {
  2.  
  3. @Override
  4. public long cifrar(long numero) {
  5. // cifrado
  6. }
  7.  
  8.        @Override
  9. public String toString() {
  10. return "Cifrado tipo Diferencia";
  11. }
  12.  
  13. }
  14.  
Código
  1. public class CifradoXor implements TipoCifrado {
  2.  
  3. @Override
  4. public long cifrar(long numero) {
  5. // cifrado
  6. }
  7.  
  8.        @Override
  9. public String toString() {
  10. return "Cifrado tipo Xor";
  11. }
  12.  
  13. }
  14.  


Saludos..


« Última modificación: 7 Marzo 2014, 16:36 pm por Mitsug » En línea

tollis

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: programa de iniciación en java
« Respuesta #2 en: 7 Marzo 2014, 20:07 pm »

Muchísimas gracias!!!!
Me ha sido de gran ayuda, fallo al plantear las cosas, ahora ya he visto como hacerlo de mejor manera, gracias de nuevo.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programa de Java
Java
belerofonte 1 2,954 Último mensaje 17 Marzo 2005, 09:18 am
por Ambolius
Programa java
Java
JUSEMS 1 2,504 Último mensaje 12 Junio 2005, 15:48 pm
por Ragnarok
[Batch] Ebook de iniciación
Scripting
jimbo777 2 3,097 Último mensaje 4 Marzo 2009, 16:18 pm
por jimbo777
programa java
Ejercicios
Hiras 3 7,367 Último mensaje 4 Junio 2011, 05:32 am
por dakomt
pasar un programa de java.swit a java.io
Java
javier210186 1 2,820 Último mensaje 17 Marzo 2013, 03:54 am
por javier210186
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines