Vous êtes sur la page 1sur 16

UNIVERSIDADTECNOLOGICA DE LA SELVA

Antologa
Programacin de Aplicaciones.
Ing. Gloria de Jess Escobar Guilln
11/12/2014

CONTENIDO

UNIDAD I. PRINCIPIOS BSICOS DE LA PROGRAMACIN ORIENTADA A OBJETOS. ............... 3


UNIDAD II. CONCEPTOS AVANZADOS DE LA PROGRAMACIN ORIENTA A OBJETOS. ........... 7
UNIDAD III. PATRONES DE DISEO. ....................................................................................... 9
UNIDAD IV. SEGURIDAD EN EL DESARROLLO DE APLICACIONES. ......................................... 11

UNIDAD I. PRINCIPIOS BSICOS DE LA PROGRAMACIN ORIENTADA A OBJETOS.


1. Unidad Temtica

I.

2. Horas Prcticas

3. Horas Tericas

4. Horas Totales

10

Principios Bsicos de la Programacin Orientada a Objetos.

El alumno programar aplicaciones Orientadas a Objetos para

5. Objetivo

satisfacer las necesidades bsicas de la empresa.

Temas

Saber

Paradigma
Clases

de

Saber hacer

POO, Definir los conceptos de Formular

Objetos, clase, objetos, atributos, empleando

Atributos, Mtodos y mtodos y herencia.


Herencia.

Reconocer

las

objetos,

Ser
programas Analtico
las

clases, Ordenado
atributos, Sistemtico

buenas mtodos y herencia.

prcticas de programacin.

Objetivo
tico
Coherente
Proactivo
Asertivo

Agregacin

y Definir los conceptos de Emplear el paradigma de Analtico

asociacin.

Agregacin y Asociacin.

POO
en

Ordenado
una

aplicacin Sistemtico

solicitada.

Concepto de clase.

Una clase define las caractersticas y comportamientos comunes de los objetos.

En otras palabras la clase es el molde para la creacin de los mismos.

Las clases son declaraciones de objetos, tambin se podran definir como


abstracciones de objetos.

Una clase es la estructura de un objeto, es decir, la definicin de todos los elementos


de que est hecho un objeto.

Una clase se compone de dos partes:


o

Atributos

Mtodos

Concepto de objetos.

Los objetos tienen caractersticas y comportamientos que estn definidas de la clase


de donde se instancian.

Los objetos son ejemplares de una clase cualquiera.

Un objeto es, por lo tanto, el "resultado" de una clase.

En realidad, un objeto es una instancia de una clase, por lo que se pueden


intercambiar los trminos objeto o instancia (o incluso evento).

Un objeto posee:
o

Estado.

Lo que el objeto sabe

El estado de un objeto es una de las posibles condiciones en que el


objeto puede existir.

El estado normalmente cambia en el transcurso del tiempo.

El estado de un objeto es implementado por un conjunto de


propiedades (atributos), adems de las conexiones que puede tener
con otros objetos.

Comportamiento

Lo que el objeto puede hacer

El comportamiento de un objeto determina cmo ste acta y


reacciona frente a las peticiones de otros objetos.

Es modelado por un conjunto de mensajes a los que el objeto puede


responder (operaciones que puede realizar).

Se implementa mediante mtodos.

Identidad

Los objetos se distinguen unos de otros.

Concepto de atributos.
Las propiedades o atributos son las caractersticas de los objetos. Cuando definimos una
propiedad normalmente especificamos su nombre y su tipo.
Nos podemos hacer a la idea de que las propiedades son algo as como variables donde
almacenamos datos relacionados con los objetos.

Concepto de mtodos.
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las
llamamos mtodos. Los mtodos son como funciones que estn asociadas a un objeto.

Concepto de herencia.
Tomar caractersticas y funcionalidades definidas en otras clases.

Ejemplo:

Auto hereda de vehculo motorizado. Como gra tambin hereda de vehculo


automotor.

La herencia sirve para crear objetos que incorporen propiedades y mtodos de otros objetos.
As podremos construir unos objetos a partir de otros sin tener que reescribirlo todo.

Asociacin
Una asociacin es una relacin semntica entre objetos. Cuando un objeto accede a los
atributos y mtodos de otro objeto estamos definiendo una asociacin entre ellos.

La asociacin se podra definir como el momento en que dos objetos se unen para trabajar
juntos y as, alcanzar una meta.

Ambos objetos son independientes entre s.


Para validar la asociacin, la frase Usa un, debe tener sentido:
El ingeniero usa una computadora.
El cliente usa tarjeta de crdito.

Ejemplo de asociacin.

Agregacin.
La agregacin es una relacin que define que un objeto es parte de otro objeto. Cuando
definimos que un objeto tiene como atributo otro objeto decimos que es una agregacin. A
travs de la agregacin se definen objetos compuestos.

En las relaciones de agregacin si existe el todo y la parte. Puede ser de tipo composicin o
contenedor. En la composicin la parte no puede existir sin el todo.
El catalogo tiene productos.
La empresa tiene departamentos.

Ejemplo agregacin.

UNIDAD II. CONCEPTOS AVANZADOS DE LA PROGRAMACIN ORIENTA A OBJETOS.


1. Unidad Temtica

II.

2. Horas Prcticas

10

3. Horas Tericas

4. Horas Totales

15

Conceptos avanzados de la programacin orientada a objetos.

El alumno programar aplicaciones Orientadas a Objetos mediante


5. Objetivo

los conceptos avanzados de este paradigma, para integrar la


informacin en los sistemas.

Temas

Saber

Saber hacer

Ser

Polimorfismo.

Identificar el concepto Desarrollar aplicaciones empleando el Analtico


de Polimorfismo en el concepto de Polimorfismo en un Ordenado
POO.

programa.

Sistemtico
Objetivo
tico
Coherente
Proactivo
Planificador
Creativo
Innovador

Clases

Identificar el concepto Desarrollar aplicaciones empleando el Analtico

Abstractas.

de clases abstractas en concepto de clases abstractas.

Ordenado

el POO.

Sistemtico
Objetivo
tico
Coherente
Proactivo
Planificador
Creativo
Innovador

Temas

Saber

Interfaces.

Identificar el concepto Programar una aplicacin empleando Analtico


de interfaces en el POO.

Saber hacer

conceptos

Ser

avanzados

programacin Orientada a Objetos.

de Ordenado
Sistemtico
Objetivo
Coherente
Proactivo
Planificador
Creativo
Innovador

Polimorfismo.
La forma en la que podemos tratar una subclase como si fuera una Clase del tipo de su
superclase, usando solo los mtodos o atributos disponibles para la Clase declarada.
Muchas formas.
Capacidad que tienen los objetos de comportarse de mltiples formas, programando de
manera general en vez de hacerlo de forma especfica.
Ejemplo polimorfismo.
class FiguraGeometrica{
}
class Triangulo extends FiguraGeometrica {
}
public class Principal{
public void metodo(){
/**Puedo crear objetos polimorficos Objeto Triangulo de tipo FiguraGeometrica*/
FiguraGeometrica triangulo=new Triangulo();
}
}

Vemos que FiguraGeometrica es la superclase y Triangulo es la clase hija o subclase, y por


medio del polimorfismo podemos crear una instancia de Triangulo de tipo FiguraGeometrica

UNIDAD III. PATRONES DE DISEO.


1. Unidad Temtica

III.

2. Horas Prcticas

25

3. Horas Tericas

15

4. Horas Totales

40

5. Objetivo

Temas

Patrones de diseo.

El alumno desarrollar aplicaciones utilizando patrones de diseo


para optimizar el desempeo de la solucin.

Saber

Saber hacer

Conceptos bsicos de un Identificar


patrn de diseo.

conceptos

de

Ser

los

Analtico

un

Ordenado

patrn de diseo.

Sistemtico
Objetivo

Patrones de diseo.

Identificar

las Desarrollar

Analtico

caractersticas de los aplicaciones

Ordenado

diferentes patrones de empleando

Sistemtico

diseo existentes:

diferentes patrones Objetivo

Singleton.

de diseo.

Coherente

Factory.

Proactivo

Proxy.

Planificador

MVC.

Creativo
Innovador
Comprometido
Responsable

Patrones de Diseo.
Es un tema importante en el desarrollo de software actual.
Busca ayudar a la comunidad de desarrolladores de software a resolver problemas comunes.
El uso de patrones ayuda a obtener un software de calidad.

Definicin de un patrn.

Cada patrn describe un problema que ocurre una y otra vez en nuestro entorno y
describe tambin el ncleo de la solucin al problema, de forma que puede utilizarse
un milln de veces sin tener que hacer dos veces lo mismo.
9

Un patrn de diseo es una descripcin de clases y objetos comunicndose entre s,


adaptada para resolver un problema de diseo general en un contexto particular.

Los patrones de diseo son el esqueleto de las soluciones a problemas comunes en el


desarrollo de software.

Elementos de un patrn.

Nombre.
o

El problema.
o

Describe el problema de diseo.

Describe cuando aplicar un patrn.

La solucin.
o

Describe los elementos que componen el diseo, sus relaciones,


responsabilidades y colaboracin.

Las consecuencias.
o

Determinar cules son los costos y beneficios obtenidos.

Clasificacin de los patrones.

Patrones Creacionales:
o

Inicializacin y configuracin de objetos.

Patrones Estructurales:
o

Separan la interfaz de la implementacin. Se ocupan de cmo las clases y


objetos se agrupan, para formar estructuras ms grandes.

Patrones de Comportamiento:
o

Ms que describir objetos o clases, describen la comunicacin entre ellos.

Creacionales

Estructurales

Fbrica
(Abstrac

Abstracta
Factory)

mbito objeto.

Mtodo

de

Fabricacin
Method)
clase.

Adaptador

De comportamiento

Cadena

(Adapter).

responsabilidad

Puente (Bridge).

(Chain

Objeto

responsibility).

(Factory

Compuesto

Orden (Command).

mbito

(Composite).

Intrprete

Envoltorio

de

of

(Interpreter).
10

Prototipado

(Decorator).

Iterador (Iterator).

Mediador (Mediator)

(Prototype).

Fachada (Facade).

Singleton .

Peso

MVC

(Model

View

Ligero

(Flyweight).

Controler).

Apoderado

(Proxy).

Recuerdo (Memento)
.

Observador
(Observer).

Estado (Server).

Estrategia (Strategy) .

Mtodo
plantilla(Template
Method).

Visitante (Visitor).

UNIDAD IV. SEGURIDAD EN EL DESARROLLO DE APLICACIONES.

1. Unidad Temtica

IV.

2. Horas Prcticas

3. Horas Tericas

4. Horas Totales

10
El alumno utilizar las mejores prcticas en el campo de la

5. Objetivo

Seguridad de Software para el desarrollo de aplicaciones confiables.

Temas

Saber

Seguridad

Saber hacer

en Definir seguridad en

Informtica.

Mejores

Seguridad en el desarrollo de aplicaciones.

Prcticas

Ordenado

informtica aplicada a

Sistemtico

la programacin.

Objetivo

de Identificar las mejores Desarrollar

seguridad del software.

Ser

prcticas

en

seguridad
software

la aplicaciones

Analtico
Ordenado

del empleando mejores Sistemtico


en

el prcticas

de Objetivo
11

desarrollo
aplicaciones.

de seguridad
generacin

en

la Coherente
de Proactivo

aplicaciones

Planificador

confiables.

Creativo
Innovador
Organizado
Responsable
Disciplinado
Comprometido
tico

Seguridad en el desarrollo de aplicaciones


Hablaremos de la seguridad desde el punto de vista del programador, es decir, de aquello que
tenemos que tener en cuenta en las etapas de diseo y codificacin de los programas.

Describiremos algunos errores de programacin habituales que tienen implicaciones desde el


punto de vista de la seguridad, daremos ejemplos de cmo se han usado para romper la
seguridad de aplicaciones reales y comentaremos tcnicas para detectar y corregir estos
errores.

Principios de seguridad
Se suele decir que los tres objetivos fundamentales de la seguridad informtica son:

Confidencialidad: el acceso a los activos del sistema est limitado a usuarios


autorizados.

Integridad: los activos del sistema solo pueden ser borrados o modificados por
usuarios autorizados.

Disponibilidad: el acceso a los activos en un tiempo razonable est garantizado para


usuarios autorizados.

Hay que identificar los objetos de seguridad de una aplicacin para saber si un diseo o
implementacin los satisfacen.
Commoncriteria o CC(ISO/IEC 15408:1999): estndar internacional para identificar y definir
requisitos de seguridad. Se suele emplear para redactar dos tipos de documentos.

12

Perfil de proteccin (Protection Profile o PP): es un documento que define las


propiedades de seguridad que se desea que tenga un producto; bsicamente se trata
de un listado de requisitos de seguridad.
Objetivo de seguridad (Security Target o ST): es un documento que describe lo que
hace un producto que es relevante desde un punto de vista de la seguridad.

Los CC definen un conjunto de requisitos funcionales de seguridad que puede necesitar una
aplicacin.
Auditoria de seguridad: permite el registro de eventos (hay que identificar cules
pueden ser interesantes desde el punto de vista de la seguridad).
No rechazo (Non-repudiation): uso de tcnicas para verificar la identidad del emisor
y/o receptor de un mensaje.
Soporte criptogrfico: si se usa criptografa Qu operaciones la usan? Qu
algoritmos y tamaos de clave se usan? Cmo gestionan las claves?
Requisitos funcionales

Proteccin de datos de usuarios: especificar una poltica para la gestin de datos


de usuario (control de acceso y reglas de flujo de informacin).

Identificacin y autenticacin: uso de tcnicas de validacin de identidad.

Gestin de seguridad: definicin de perfiles de usuarios y niveles de acceso


asociados.

Privacidad: soporte del anonimato de los usuarios.

Autodefensa: la aplicacin debe incluir sistemas de validacin de su


funcionamiento y fallar de manera segura si esa validacin no se cumple.

Utilizacin de recursos: soporte a la asignacin de recursos, tolerancia a fallos.

Control de acceso: soporte de sistema que limiten en nmero y tipo de sesiones


anteriores al usuario para ayudar a la deteccin de intrusos.

Rutas o canales fiables: existencia de mecanismos que permitan al usuario


identificar que acceden a la aplicacin real.

Desarrollo de aplicaciones seguras


Para desarrolla una aplicacin segura debemos tener en cuenta los siguientes aspectos:
1. Control de la entrada: validar todas las entradas.
2. Gestin de memoria: desbordamiento de buffers.
3. Estructura interna de diseo del programa.
4. Llamadas a recursos externos: bibliotecas, scripts, etc.

13

5. Control de la salida: formato, restricciones.


6. Problemas de los lenguajes de programacin
7. Otros: algoritmos criptogrficos, de autentificacin.
Control de entrada
Hay que validar todas las entradas que vienen de fuentes no fiables.
Se debe determinar que es legal y rechazar lo que no lo sea; siempre se debe verificar que algo
es legal, la aproximacin es contraria (deteccin de entradas errneas) puede fallar. El sistema
se debe verificar generando entradas errneas desconocidas.
Desbordamientos de buffer

Se producen cuando un atacante puede conseguir escribir datos fuera de los lmites de
un buffer (generalmente ms all del final), con lo que sobre escribe valores
preexistentes.

Si el buffer est en la pila el ataque se llama stack over flow y puede permitir cambiar
direcciones de retorno e incluir cdigo para ser ejecutado, que es lo que suelen hacer
los exploits de este tipo de errores.

Es posible porque C, C++ o el ensamblador no validan el acceso a los lmites de los


buffers.

Como evitar desbordamientos de buffer en C/C++

Evitar o usar con mucho cuidado funciones peligrosas como gets, strcpy, strcat, sprintf,
scanf.

Trabajar de un modo consistente con funciones que trabajan con buffers de tamao
fijo o dinmico:

C estndar con tamao fijo: strncpy, strncat.

strlcpy y strlcat (OpenBSD, ms fciles y consistentes que strncpy y strncat).

C estndar con gestin dinmica: malloc.

C++ estndar: std::string.

Estructura y diseo de programas

Seguir principios de la ingeniera del software:

Siempre se debe trabajar con privilegios mnimos.

Simplicidad en el diseo: KISS.


14

Diseo abierto: no hay que depender de la ocultacin.

Mediacin completa: todos los accesos se controlan.

Valores por defecto seguros: acceso cerrado.

Separacin de privilegios: control acceso multi-nivel.

Mnimo uso de recursos compartidos (p.ej. /tmp).

Facilidad de uso: los usuarios colaboran ms.

Interfaz segura: debe ser mnima (simple), dar acceso a las funciones justas y no ser
evitable. Siempre se asume que la confianza es mnima.

Separacin de control y datos: no se debe soportar el uso de macros almacenadas en


los documentos.

Minimizacin de privilegios: Concesin de privilegios mnimos, se abandonan en


cuanto no son necesarios (ej. apertura puertos TCP), se controla su tiempo de validez y
se conceden al mnimo nmero de mdulos posible.

15

FUENTES BIBLIOGRFICAS

Autor
Erich

Ao

Ttulo del Documento

Ciudad

(2008)

Patrones de Diseo

Madrid

(2003)

Object-Oriented Programming San

Pas

Editorial

Espaa

Addison Wesley

Gamma
Garrido,
Jos M.

Jose USA

(From Problem Solving to California

Charles

River

Media

JAVA) (Programming Series)


James W. (2002)

Introduction

Cooper

Patterns in C#.

to

Design San

Jose USA

California

AddisonWesley
Professional

Steven

(2004)

Design Patterns in C#

San

John

Jose USA

California

Metsker

AddisonWesley
Professional

REFERENCIAS (INTERNET)

Autor
Yasar,
Preuveneers,
Berbers

Fecha de
creacin
(2008,
diciembre
24)

Ttulo del Documento


Best

Practices

for

Consultado

Referencia

31 de Marzo de http://ieeexplore.ie

software security: An 2009.

ee.org/xpl/freeabs

overview.

_all.jsp?isnumber=
4777689&arnumbe
r=4777730&count=
119&index=40

16

Vous aimerez peut-être aussi