Páginas

sábado, 16 de julio de 2011

Gambas2 y OOP Trabajando con clases (06) Trabajando con la #Herencia y #Polimorfismo #Práctica 7b


Gambas2 y OOP (VI) 
Trabajando con la 
Herencia y Polimorfismo 
Práctica 7b


Veamos la práctica 7b:
 Desarrollar una aplicación de encriptación de códigos numéricos.
El encriptador recibirá un código numérico y una implementación de un algoritmo
de encriptación/desencriptación y la orden de encriptar o desencriptar 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 Practica9 que en su método main cree un encriptador, y le
pida encriptar y desencriptar varios códigos usando distintos algoritmos de
encriptación.

Resolución:
Clase Algoritmo:

' Gambas class file
PUBLIC FUNCTION encriptar() AS Integer
END

PUBLIC FUNCTION desencriptar() AS Integer
END


Clase AlgoritmoDiferencia:

' Gambas class file

INHERITS Algoritmo

PRIVATE num AS Integer = 0

'constructor
PUBLIC SUB _new(param AS Integer)
num = param
END

'metodos
PUBLIC FUNCTION encriptar(param AS Integer) AS Integer
RETURN num - param
END

PUBLIC FUNCTION desencriptar(param AS Integer) AS Integer
RETURN num - param
END


Clase AlgoritmoMultiplicacion

' Gambas class file

INHERITS Algoritmo

PRIVATE num AS Integer = 0

'constructores
PUBLIC SUB _new(param AS Integer)
num = param
END


'metodos
PUBLIC FUNCTION encriptar(param AS Integer) AS Integer
RETURN param * num
END

PUBLIC FUNCTION desencriptar(param AS Integer) AS Integer
RETURN param / num
END


Clase AlgoritmoXOR

' Gambas class file

INHERITS Algoritmo

PRIVATE num AS Integer = 0

'constructores
PUBLIC SUB _new(param AS Integer)
num = param
END

PUBLIC FUNCTION encriptar(param AS Integer) AS Integer
RETURN param * num
END

PUBLIC FUNCTION desencriptar(param AS Integer) AS Integer
RETURN param ^ num
END

Clase Encriptador:

' Gambas class file

PUBLIC SUB _new()

END

'metodos
PUBLIC FUNCTION encriptar(param1 AS Integer, param2 AS Algoritmo) AS Integer
RETURN param2.encriptar(param1)
END

PUBLIC FUNCTION desencriptar(param1 AS Integer, param2 AS Algoritmo) AS Integer
RETURN param2.desencriptar(param1)
END


Clase Fmain

' Gambas class file

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
DIM codigo AS Integer

DIM e AS NEW Encriptador
DIM aux AS Integer = 0

DIM a1 AS NEW AlgoritmoMultiplicacion(10)

DIM a2 AS NEW AlgoritmoDiferencia(2147483467)

DIM a3 AS NEW AlgoritmoXOR(2)

codigo = 12345
aux = e.encriptar(codigo, a1)




TextArea1.text = "Codigo: " & Str$(codigo)
TextArea1.text &= "\n" & "Algoritmo Multiplicacion"
TextArea1.text &= "\n" & " Encriptado: " & Str$(aux)
TextArea1.text &= "\n" & " Desencriptado: " & Str$(e.desencriptar(aux, a1))

aux = e.encriptar(codigo, a2)
TextArea1.text &= "\n" & "Algoritmo Diferencia"
TextArea1.text &= "\n" & " Encriptado: " & Str$(aux)
TextArea1.text &= "\n" & " Desencriptado: " & Str$(e.desencriptar(aux, a2))

aux = e.encriptar(codigo, a3)
TextArea1.text &= "\n" & "Algoritmo XOR"
TextArea1.text &= "\n" & " Encriptado: " & Str$(aux)
TextArea1.text &= "\n" & " Desencriptado: " & Str$(e.desencriptar(aux, a3))



END



Pantallazo de la aplicacion


Enlace de descarga del código:
http://manualjsb.googlecode.com/files/practica7b-0.0.1.tar.gz


Saludos