Gambas2 y OOP (VI)
Trabajando con la
Herencia y Polimorfismo
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