Está en la página 1de 18

CONALEP LOS REYES 180

SANTA CLARA
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
MATERIA:

PROGRAMACIN ORIENTADA A OBJETOS


TEMA:

2.2 Asegura la integridad de los datos implementando


medidas de seguridad
DOCENTE:

LI. GERARDO ARROYO PEREZ


NOMBRE DEL ALUMNO:

RAFAEL ANTONIO SNCHEZ MEDINA


GRUPO: 402
CARRERA: PT-B EN INFORMATICA

SANTA CLARA, MICH 17 de junio de 2016

19

ACTIVIDAD:
Elabora una
investigacin
documental acerca
de distintos
patrones

Objetivo: Realizar una investigacin documental a travs de la consulta de


las fuentes sugeridas o haciendo uso de internet, para analizar y describir

19

distintos patrones de diseo existentes para implementar la autenticacin en


aplicaciones orientadas a objetos. Describe:
- Patrones de diseo para la autenticacin
- Singular o Singleton.
- Mtodo de fbrica o Factory Method.
- Prototipo.
- Mtodos para la operacin continua del sistema

Introduccin:
Con el paso del tiempo la tecnologa avanza de manera sorprendente, la oferta y
demanda de las personas cada vez son mayores, todo debe adaptarse a las
necesidades requeridas.
Todos los programadores son los encargados de satisfacer esas necesidades, de
manera correcta, y con el principal enfoque la seguridad.
Y como seguridad es sinnimo de prioridad.
Es por eso que a continuacin presentar un pequeo proyecto en el cual llevar a
cabo la explicacin de algunas medidas de seguridad que implementndose,
aseguran la integridad de los datos de nuestro usuario.
Cmo lograr eso?
Existen diversos mtodos para ello, pero de entre todos ellos, tres, los ms
destacables y en los cuales me centrar.
Adems de una pequea explicacin del funcionamiento de los objetos, para as
poder analizar que cada uno de ellos se complementan y son usados segn sea el
caso.

19

Portada
...pgina 1
Introduccin:

arriba
Singular o Singleton:
.
abajo
Mtodo Factora o Factory Method
abajo
Prototype
.abajo
DES (Data Encription Standard )
..abajo
Creando objetos..................................................................................................
...............abajo
Finalizar un objeto en Java
.abajo
Manejo de Excepciones
abajo
Conclusin:

.abajo
Fuentes de consulta: Fecha de consulta: 16/06/2016:

abajo

19

Desarrollo:
Singular o Singleton:
La idea del patrn Singleton es proveer un mecanismo para limitar el nmero de
instancias de una clase. Por lo tanto el mismo objeto es siempre compartido por
distintas partes del cdigo. Puede ser visto como una solucin ms elegante para
una variable global porque los datos son abstrados por detrs de
la..interfaz..que..publica..la..clase..singleton.
Dicho de otra manera, esta patrn busca garantizar que una clase slo tenga una
instancia
y
proporcionar..un..punto..de..acceso..global..a..ella.
Usaremos..este..patrn..cuando:
Debe haber exactamente una instancia de una clase y deba ser accesible a los
clientes
desde
un
punto
de..acceso..conocido.
Se requiere de un acceso estandarizado y conocido pblicamente.
Sus usos ms comunes son clases que representan objetos unvocos. Por ejemplo, si
hay un servidor que necesita ser representado mediante un objeto, este debera ser
nico, es decir, debera existir una sola instancia y el resto de las clases deberan de
comunicarse con el mismo servidor.

En el diagrama, la clase que es Singleton define


una instancia para que los clientes puedan
accederla. Esta instancia es accedida mediante
un
mtodo
de
clase.
Los clientes (quienes quieren acceder a la clase
Singleton) acceden a la nica instancia mediante
un
mtodo
llamado
getInstance().

Ejemplo.
Como dije anteriormente, este patrn es ideal para aquellas clases que representan
objetos nicos. Por ejemplo, un instituto educativo es un objeto nico. No
deberamos crear muchas instancias de esta clase ya que al hacer esto estaramos
diciendo que hay varios institutos educativos. Caso contrario seran los alumnos que
asisten a dicho instituto. Debera haber un objeto por cada uno de los alumnos, ya
que todos ellos tienen propiedades distintivas, desde el nombre hasta el documento
de identidad. Pero todos los alumnos deberan comunicarse con el mismo instituto.

19

19

Mtodo

Factora

Factory Method
Libera al desarrollador

sobre la forma correcta de crear objetos.

Define la interfaz de creacin de un cierto tipo de objeto, permitiendo que las

clase

concreta

necesitan

subclases
decidan que
instancias.

Muchas veces ocurre que


una clase no puede anticipar el tipo de objetos que debe crear, ya que la
jerarqua de clases que tiene requiere que deba delegar la responsabilidad a una

subclase.
Este patrn debe ser utilizado cuando:

Una clase no puede anticipar el tipo de objeto que debe crear y quiere que
sus subclases especifiquen dichos objetos.

Hay clases que delegan responsabilidades en una o varias subclases. Una


aplicacin es grande y compleja y posee muchos patrones creacionales.
Creator:
declara
el
mtodo
de
fabricacin (creacin), que devuelve un
objeto
de
tipo
Product.
ConcretCreator: redefine el mtodo de
fabricacin para devolver un producto.
ProductoConcreto: es el resultado final. El
creador se apoya en sus subclases para definir
el mtodo de fabricacin que
devuelve el objeto apropiado.
Ejemplo

19

En nuestro ejemplo tenemos una clase abstracta llamada Triangulo, de la cual


heredan los 3 tipos de triangulos conocidos.
Fabricas Abstractas
Contexto: Debemos crear diferentes objetos, todos pertenecientes a la misma
familia. Por ejemplo: las bibliotecas para crear interfaces grficas suelen utilizar este
patrn y cada familia sera un sistema operativo distinto. As pues, el usuario declara
un Botn, pero de forma ms interna lo que est creando es un BotnWindows o un
BotnLinux, por ejemplo.
El problema que intenta solucionar este patrn es el de crear diferentes familias de
objetos.
El patrn Abstract Factory est aconsejado cuando se prev la inclusin de nuevas
familias de productos, pero puede resultar contraproducente cuando se aaden
nuevos productos o cambian los existentes, puesto que afectara a todas las familias
creadas

19

El

Prototype
patrn
prototype
tiene
un
objetivo muy sencillo: crear a partir de un modelo.Permite
crear objetos prediseados sin conocer

detalles de cmo crearlos. Esto lo logra especificando


los
prototipos
de objetos a crear. Los nuevos
objetos que se crearn de los prototipos, en realidad, son clonados.
Vale decir, tiene como finalidad
crear nuevos objetos
duplicndolos,
clonando
una
instancia
creada
previamente.
Cuando utilizar este patrn.
Aplica en un escenario donde sea
necesario la creacin de objetos parametrizados como "recin
salidos de fbrica" ya listos para utilizarse, con la
gran ventaja de la mejora de la

performance: clonar objetos es ms rpido que crearlos y luego


setear cada valor en particular.
Este patrn debe ser utilizado cuando un sistema

posea objetos con datos repetitivos, en cuanto a sus atributos: por ejemplo, si
una biblioteca posee una gran cantidad de libros de una misma editorial, mismo
idioma, etc. Hay que pensar en este patrn como si fuese un fbrica que tiene
ciertas plantillas de ejemplos de sus prodcutos y, a partir de estos prototipos, puede
crear una gran cantidad de productos con esas caractersticas.

19

Los objetos de Prototipo Concreto heredan de Prototype y de esta forma el patrn se


asegura de que los objetos prototipo proporcionan un conjunto consistente de
mtodos para que los objetos clientes los utilicen.

medio de la clonacin
Cliente:
crea
nuevos
que se clone.

de

Prototype: declara la interface del


objeto que se clona. Suele ser una
clase
abstracta.
PrototypeConcreto: las clases en este
papel implementan una operacin por
mismo.
objetos pidiendo al prototipo

Los objetos de
Prototipo
Concreto
heredan
de
Prototype y de esta
forma el patrn
se asegura de que los
objetos prototipo
proporcionan
un
conjunto consistente de mtodos para que los objetos clientes los utilicen.
Ejemplo: Nuestro ejemplo ser muy sencillo:
prototipos de TVs. Para ello
crearemos la clase TV y
dos subclases: LCD y Plasma.

19

DES (Data Encription Standard )


El DES (Data Encription Standard o Estndar de Encriptacin de Datos) es el nombre
del documento FIPS (Federal Information Processing Standard) 46-1 del Instituto
Nacional de Estndares y Tecnologa (NIST) del Departamento de Comercio de
Estados Unidos. Fue publicado en 1977. En este documento se describe el DEA
(Data Encription Algorithm o Algoritmo de Encriptacin de Datos. Es el algoritmo de
cifrado simtrico ms estudiado, mejor conocido y ms empleado del mundo.
El DEA (llamado con frecuencia DES) es un algoritmo de cifrado por bloques de 64
bits de tamao. Emplea una clave de 56 bits durante la ejecucin (se eliminan 8 bits
de paridad del bloque de 64). El algoritmo fue diseado para ser implementado en
hardware. Cuando se utiliza en comunicaciones ambos participantes deben conocer
la clave secreta (para intercambiarla se suelen emplear algoritmos de clave
pblica). El algoritmo se puede usar para encriptar y desencriptar mensajes, generar
y verificar cdigos de autentificacin de mensajes (MAC) y para encriptacin de un
slo usuario (p. ej para guardar un archivo en disco). Existen distintos tipos de
encriptacin pero ahora solo ser una explicacin general

19

Creando objetos.
Un objeto es una instancia de una clase.

Es la implementacin con valores del modelo abstracto (clase).

La sintaxis para crear un objeto es new Objeto(), donde la parte izquierda del
igual representa la referencia del objeto.

Por ejemplo, para crear un objeto de la clase Persona habra que colocarla siguiente
sintaxis:
Persona p = new Persona()
El paradigma de objetos posee tres caractersticas fundamentales:
1. Encapsulamiento
2. Herencia
3. Polimorfismo
Finalizar un objeto en Java
Cuando un objeto ya no est en uso por el programa es eliminado de memoria por el
garbage collector. Si bien, antes de ser eliminado de la memoria, el garbage
collector finaliza el objeto Java. Es decir, ejecuta el mtodo finalize(). Y es que el
mtodo finalize() nos permite ejecutar las acciones pertinentes sobre el objeto antes
de que sea totalmente eliminado. Por ejemplo, podemos pensar en casos como
gestin de ficheros o bases de datos, en los cuales podremos cerrar las conexiones
sobre dichos recursos.
La definicin del mtodo finalize() tiene la siguiente estructura:
protected void finalize() throws Throwable{
System.out.println("Finalizando el Objeto");
super.finalize();
}
Al incluir el mtodo finalize() sobre un objeto estaremos reescribiendo el mtodo
finalize() por defecto que viene en la clase Object. Mediante la sentencia
super.finalize() estamos ejecutando el mtodo finalize() de las clases padre.
Aunque los mtodos finalize() se ejecutarn cuando pase el garbage collector, existe
la posibilidad de sugerir a la mquina virtual java (jvm) que se ejecute el finalize de

19

los mtodos. Esto lo conseguiremos ejecutando el mtodo runFinalization() de la


clase System.
El mtodo System.runFinalization() solo es una sugerencia. No implica una ejecucin
directa de los mtodos finalize().
El cdigo de ejecucin del System.runFinalization() sera el siguiente:
public static void main(String[] args) {
FinalizarUnObjeto fuo = new FinalizarUnObjeto();
System.out.println(fuo.toString());
fuo = null;
System.runFinalization();
}
Manejo de Excepciones
Bsicamente una excepcion es un Objeto descendiente de la clase java.lang.Object,
podemos pensar en ellas como una condicin excepcional en nuestro sistema el cual
altera la correcta ejecucin del mismo, las excepciones nos indican que hay algo
anmalo, inconsistente o simplemente un Error, lo cual impide que el sistema se
ejecute como debera de ser...
Tal vez se preguntaran si pero Anmalo, inconsistente o Error no es bsicamente lo
mismo?... podra ser, pero en este enfoque no necesariamene lo es, ya que lo que
vamos a conocer como una excepcion no siempre es un error (hablando como
excepcion en general, ya que en java una Exception es muy diferente a un Error),
muchas veces necesitaremos trabajar con excepciones controladas para indicar
alguna inconsistencia en nuestro sistema que podra provocar errores...
A modo de ejemplo, podemos encontrarnos con el famoso NullPointerException el
cual nos indica que un objeto se encuentra vaci, pero esto no es un error ya que
nosotros podemos trabajar con objetos null, entonces veamoslo como si la
excepcion nos dijera "Es un objeto nulo y no se puede efectuar el proceso", mientras
que hay errores como NoClassDefFoundError el cual nos indica que la maquina
virtual de Java (JVM) no puede encontrar una clase que necesita, debido a por
ejemplo que no encuentra un .class, esto si se maneja como un error en java
Para hacer mas claridad sobre el tema veamos la Jerarqua de Excepciones de Java
(puede que no se encuentren algunas excepciones, pero se contemplan las mas
comunes)
Jerarqua de excepciones

19

Vemos que se tiene un claro rbol de herencia mediante el cual se pueden definir las
categoras de Excepciones o de Error que se puede dar en el sistema.
La importancia de Prever:
Cuando se est programando debemos tener claro que nuestro cdigo no es
perfecto, as tengamos mucha experiencia en desarrollo siempre est la posibilidad
de que algo falle, sea por nuestro cdigo o por otros factores, por eso de la
importancia de contemplar todo desde antes, posibles fallos o lo que pueda afectar
el sistema.
Veamos un ejemplo Simple:
private void metodoDividir(int dividendo, int divisor){
String resultado+=dividendo/divisor;
System.out.println(resultado);
}
el metodoDividir(int, int) tericamente esta bien, claro, a simple vista si tenemos :
dividendo = 4 y divisor = 2 pues el resultado es 2 ......bsico....... pero y si el divisor
es 0? pues con ese caso puntual el resultado seria el siguiente.
Vemos que nos indican que se produjo una ArithmeticException debido a una
divisin por cero, adems se muestra cual fue la traza del error pasando por el
mtodo main hasta el metodoDividir().
La anterior es una Excepcion simple, algo que se supone no debera pasar, es obvio,
no se puede dividir por cero, o no?..pues no, en programacin no podemos asumir
ni pensar as, ya que muchas veces nos olvidamos de las cosas obvias y las
pasamos por alto, el problema es que eso tan obvio puede detener toda la ejecucin
del programa.

Trabajando con try - catch - finally


con los bloques Try - Catch podemos capturar y procesar una posible excepcion,
evitando que el sistema se detenga sin necesidad cuando el motivo de esto puede
ser corregido facilmente, la estructura bsica es la siguiente.
try {

19

//Bloque de cdigo que vamos a procesar


} catch(excepcion) {
//Tratamiento que se le da a la posible excepcin
} finally {
//Bloque de cdigo que se ejecutar despues del try o del catch
}
Apliquemos esto a nuestro ejemplo anterior...
private void metodoDividir(int dividendo, int divisor){
String resultado="";
try {
resultado+=dividendo/divisor;
}catch (Exception e) {
resultado="Se intent dividir por cero";
JOptionPane.showMessageDialog(null,"Error: No se puede dividir por cero ",
"Advertencia",JOptionPane.WARNING_MESSAGE);
}
finally{
System.out.println("Termino el proceso : el resultado es = "+resultado);
}
}

Como vimos aplicamos la estructura de los bloques y de esta manera nos


aseguramos que la excepcin anterior fue controlada evitando que el sistema se
detenga, en el catch podemos hacer el proceso que consideremos conveniente, ya
sea solo informar del error o solicitar nuevos parmetros de entrada.
la salida es la siguiente:
Algunas Consideraciones.

19

Veamos un poco mas lo que debemos tener en cuenta cuando usamos estos
bloques:
try : Aqu vamos a escribir todo el bloque de cdigo que posiblemente llegue a
lanzar unas excepcin la cual queremos manejar, aqu va tanto el cdigo como
llamados a mtodos que puedan arrojar la excepcin.
En este bloque solo se detectara la primera excepcion lanzada, hay que tener en
cuenta que por cada try se debe especificar un catch y/o un finally.
catch : en caso de que en el try se encuentre alguna excepcin, se ingresara
automaticamente al bloque catch donde se encontrara el cdigo o proceso que
queremos realizar para controlar la excepcin.
Se pueden especificar cualquier cantidad de catch de ser necesario, estos deben ser
ubicados despus del try y antes del finally (en caso de que este ultimo se
especifique), cada catch que se ponga debe manejar una excepcion diferente (no se
puede repetir) y el orden de estos depende de la jerarqua de herencia que se tenga,
ingresando al primer catch que pueda suplir la necesidad a corregir, por ejemplo.
try {
//Sentencias con posibles errores;
} catch(InterruptedException e){
//manejo de la exepcion
} catch(IOException e){
//manejo de la exepcion
} catch(Exception e){
//manejo de la exepcion
}
Si se genera una excepcin en el try, se valida a cual de los 3 catch se ingresa,
dependiendo si InterruptedException puede controlarlo se ingresa a esa, sino
entonces a IOException o si no a la superClase que seria Exception (ver la jerarqua
de herencia anterior).
En el ejemplo que del metodoDividir() trabajamos directamente con Exception e, de
esta forma nos aseguramos que capture cualquier excepcin, sin embargo se
recomienda usar la jerarqua en los catch para poderle dar un mejor manejo.

19

finally : Este bloque es opcional, lo podremos si queremos ejecutar otro proceso


despus del try o el catch, es decir, siempre se ejecutara sin importar que se
encuentre o no una excepcin.
Conclusin:
Programacin Orientada a Objetos de JAVA es un lenguaje con un enfoque dirigido a
la seguridad del usuario, para ello existen mtodos aplicables, mtodos de cifrado,
controlar excepciones ya que eso hace parte de la seguridad y calidad de nuestros
desarrollos, cada uno dependiendo del caso y no solo eso, adems podemos
configurar nuestro programa para aumentar an ms el grado de seguridad.
Esto por supuesto es perfecto, ya que la seguridad tiene que ser una prioridad ante
el programador, debido a que es la principal demanda del cliente, ante tal necesidad
como programador, deberamos estar a la vanguardia de la seguridad. Es por eso
que concluyo en que conocer toda esta informacin es de suma importancia no solo
para el programador; sino tambin como ya lo haba mencionado, para el usuario.
Aun cuando es bastante difcil comprender, conocer y aplicar todo ello, todos esos
tecnicismos y fuentes poco fiables lo vuelven mucho ms difcil.
Cuesta trabajo, no es nada fcil pero realmente vale la pena entender cada uno de
los elementos de este lenguaje, saber que en combinacin son perfectos para lograr
la meta del programador.
Fuentes de consulta: Fecha de consulta: 16/06/2016
21:26
Mtodos para Encriptar y Desencriptar en Java | Quality Info Solutions
www.qualityinfosolutions.com
21:26
CoDejaVu: Manejo de Excepciones en Java
codejavu.blogspot.mx
21:25
Tratamiento de excepciones en Java - davidmarco.es
www.davidmarco.es
21:06
Finalizar un objeto en Java - Lnea de Cdigo
lineadecodigo.com
20:28
Java development 2.0: Proteccin de datos de aplicacin Java para computacin en
la nube
www.ibm.com
20:28
Seguridad en JAVA: Arquitectura criptogrfica: Arquitectura Criptogrfica de Java
(JCA)
www.uv.es

19

20:25
Cifrar y descifrar datos con DES | Java | Consultora Informtica
www.webprogramacion.com
20:25
Seguridad en JAVA: Tcnicas criptogrficas: Algoritmos de clave pblica
www.uv.es
19:37
Seguridad en JAVA: Introduccin
www.uv.es
19:15
Java - Destruir un Objeto...
www.lawebdelprogramador.com
19:15
Para que sirve este comando de java "intern()? - Foros del Web
www.forosdelweb.com
19:09
Leccin 69: Destruccin de Objetos en Java. - Foros de programacin informtica Comunidad de programacin
www.foro.lospillaos.es
19:05
Conceptos de objetos y clases en Java. Definicin de instancia. Ejemplos bsicos y
prcticos. (CU00619B)
www.aprenderaprogramar.com
19:03
Mi granito de java: Singleton
migranitodejava.blogspot.mx
18:47
Mi granito de java: Objetos
migranitodejava.blogspot.mx
18:30
Mi granito de java: Factory Method
migranitodejava.blogspot.mx
18:03
Mi granito de java: Patrones Creacionales
migranitodejava.blogspot.mx
17:25
Mi granito de java: Factory Method
migranitodejava.blogspot.mx
17:01
http://www.fdi.ucm.es/profesor/jpavon/poo/2.14pdoo.pdf

19

También podría gustarte