Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Iagp 4
Iagp 4
Mtodo de desarrollo de software que basa la arquitectura del sistema en mdulos deducidos de los tipos de objetos que se manipulan, en lugar de basarse en la funcin o funciones a las que el sistema est destinado a asegurar. No preguntes primero qu hace el sistema, pregunta A QUIN LO HACE!!
IAGP 1
IAGP
Es interesante fijarse en la estructura de organismos vivos para establecer un marco para entender la naturaleza adaptativa de los objetos.
IAGP
Programa OO
Clase Objeto
La mayora de la informacin est contenida en molculas de protena, dentro del ncleo de la clula. El comportamiento, que puede extenderse desde conversin de energa al movimiento, es realizado por estructuras fuera del ncleo.
Las clulas estn rodeadas por una membrana que permite solamente ciertas clases de intercambios qumicos con otras. Esta membrana protege el funcionamiento interno de la clula contra la intrusin exterior, y tambin oculta la complejidad, presentando un interfaz relativamente simple al resto del organismo.
IAGP 10
IAGP
11
IAGP
12
IAGP
13
IAGP
15
IAGP
16
IAGP
18
Modularidad
Extensibilidad + Reutilizacin necesidad de arquitecturas flexibles hechas con componentes autnomos Programa modular: formado por un conjunto de mdulos Mdulo: unidad bsica de descomposicin de un sistema software Un mtodo de construccin de software es modular si ayuda a producir sistemas software a partir de elementos autnomos interconectados por una estructura simple y coherente.
IAGP 19
Modularidad: 5 criterios
Cinco criterios, cinco reglas, cinco principios.
Requisitos que debe satisfacer un mtodo de construccin de software para merecer el nombre de modular:
Permitir una descomposicin modular
Descomposicin modular
Un mtodo de construccin de software satisface la descomposicin modular si permite la descomposicin de un problema en un pequeo nmero de subproblemas menos complejos, conectados por una estructura simple, y que se pueden abordar por separado.
Importante que las dependencias sean mnimas y que se conozcan. Ejemplo: Diseo Descendente Contra-ejemplo: Mdulos de Inicializacin
IAGP 21
Composicin modular
Un mtodo satisface la composicin modular si favorece la produccin de elementos software que pueden ser combinados para crear nuevos sistemas, posiblemente en un entorno diferente a aquel en el que se idearon.
Comprensin Modular
Se satisface si facilita que quin lea un mdulo pueda comprenderlo sin necesidad de acudir a otros mdulos (en el peor de los casos a unos pocos mdulos). Relacionado con el mantenimiento Contra-ejemplo: Dependencias secuenciales
IAGP
23
Continuidad Modular
Un mtodo satisface la Continuidad Modular si se favorecen arquitecturas software en las que un cambio pequeo en la especificacin origina un cambio en un solo mdulo, o en un pequeo nmero de mdulos.
Contra- ejemplos:
Diseo de programas basado en la representacin fsica de los datos y el uso de vectores estticos
IAGP 24
Proteccin Modular
Un mtodo satisface la Continuidad Modular si se originan arquitecturas en las que el efecto de una condicin excepcional acaecida en tiempo de ejecucin slo afecta al mdulo dnde se produce, o slo se propaga a los mdulos vecinos.
Relacionado con la robustez Ejemplo: Mdulos de entrada de datos comprueben su validez. Contra-ejemplo: Excepciones no disciplinadas.
IAGP
25
Modularidad: 5 reglas
De los criterios anteriores se derivan cinco reglas que se deben seguir para asegurar la modularidad
Correspondencia directa Pocas conexiones entre mdulos Intercambio de informacin intermodular mnimo Conexiones explcitas Ocultamiento de Informacin
Las cuatro ltimas se refieren a la comunicacin entre mdulos: uso o comparticin de datos
IAGP 26
Impacto de la POO
Desarrollo ms rpido. Mantenimiento barato Proceso de modelado ms simple Diseos ms claros y manejables Incremento productividad de programadores Inconveniente: Curva de aprendizaje
Diseo con objetos diseo procedural
IAGP Libreras bien diseadas y fciles de usar 27
Abstraccin y modelado
Modelado del problema: Proceso de abstraccin Lenguajes O.O.: Representa elementos del marco del problema a resolver Cdigo (solucin): descripcin del problema Objetos: Tienen su estado y pueden realizar operaciones
IAGP 28
Caractersticas de la O.O.
Todo es un objeto (alumno, factura, polgono) Programa: Conjunto de objetos. Se envan mensajes para decirse qu deben hacer Objetos pueden estar compuestos por otros Cada objeto es de un tipo (instancia de clase) Objetos de un mismo tipo pueden recibir los mismos mensajes
IAGP 29
Interface de un objeto
Elementos del problema: Entidad (Objeto) Objeto: Pertenece a una clase.
Define sus caractersticas y comportamiento
POO crea nuevos tipos e instancia los objetos necesarios de esos tipos modelado: Mapeo 1 a 1 Problema Solucin Tipo: Interface. Informa de las peticiones que se pueden hacer a objetos de ese tipo
IAGP 30
Encapsulacin
Programador: Dos puntos de vista
Crear clases Crear clientes de esas clases
Slo muestra lo necesario para quien programa clientes. Oculta el resto Interface Qu solicitudes puedo hacer? Implementacin: Realizacin de las tareas de la interface Envo de mensajes (ejecucin de un mtodo) IAGP 31
Si se modifica la implementacin:
El programa que usa el TAD no se modifica Slo cambian los mtodos del TAD Cambios transparentes al resto del programa
IAGP
33
Control de acceso
Disponibilidad de mtodos. Razones:
El cliente no necesita ver lo que no le afecta (simplicidad) Modificaciones en la implementacin sin afectar a la interface Cliente no afectado
C l a s e S u b c l a s eP a q u e t e T o d o s
p r i v a t e p r o t e c t e d p u b l i c
S I S I S I S I S I * S I S I S I S I S I
p a c k a g e
IAGP
35
Reutilizacin
Uso habitual: Instanciar un objeto de una clase Composicin: Relacin "tiene un" (has-a)
Clases que contienen objetos de otras clases (member object) Objetos miembro: Privados si no son necesarios en la interface
Herencia
Evita crear tipos (clases) nuevos por necesidad de similar funcionalidad El nuevo tipo es un duplicado del otro con aadidos y/o modificaciones Modificaciones en la clase original afectan a la clase hija Herencia: Es realmente necesaria?
Composicin mucho ms habitual
IAGP 37
Herencia: Subclases
Nuevo tipo. Contiene todos los miembros del anterior Los miembros privados son inaccesibles Duplica el interface de la original. Es del mismo tipo que la clase base Formas de modificar la nueva clase:
Aadir nuevos mtodos Cambiar el comportamiento de un mtodo (override)
IAGP 38
Herencia: Polimorfismo
Objetos de clases derivadas se pueden tratar como de la clase base Permite cdigo independiente del tipo.
Fcil de escribir y entender
IAGP
39
Ejemplos:
Polimorfismo:
Mensaje a un objeto de tipo desconocido. Se ejecuta el mtodo correcto No hay que especificarlo (en C++ virtual)
Enlace dinmico.
Ej. Trabajadores y nminas
IAGP 40
Clases abstractas
Subclases diferentes con un interface nico Slo se permiten objetos de subclases Mtodos abstractos (sin implementacin)
Slo en clases abstractas
Interfaces:
Impiden implementar cualquier funcin Slo declaraciones Herencia diferente a clases (herencia mltiple) Las subclases "implementan" interfaces IAGP 41
Declaracin de clases
<acceso> class <nombre> { <miembros> // "members" }
Miembros:
Atributos:
Variables de instancia, globales a la clase. Atributos de clase (informacin esttica, compartida)
Constructores
Se garantiza la inicializacin de cada objeto (sus atributos) con un constructor Java invoca al constructor al crear el objeto La instanciacin (new) reserva el lugar de almacenamiento e invoca al constructor Nombre del constructor = nombre de la clase Se encargan de todas las operaciones de inicializacin necesarias.
IAGP 43
Constructor: No tiene valor de retorno Una clase puede tener mltiples constructores
Sobrecarga de constructores
public class Coordenada { double x, y; public Coordenada(){ x = 0.0; y = 0.0; } public Coordenada (double v1, double v2){ x = v1; y = v2; } }
IAGP 44
Constructor "por defecto". Sin parmetros. Clase sin constructor: El compilador crea un constructor "por defecto". Si hay constructores con argumentos, no se crea el "constructor por defecto". Ejemplo.
Error si se invoca el constr. sin parmetros
La referencia this
Referencia al objeto actual. Permite invocar mtodos del objeto actual.
No es necesario this para hacer eso
Permite devolver una ref. al objeto actual Permite invocaciones entre constructores IAGP
46
La llamada a super
Referencia a la superclase de la que desciende la clase actual Reutilizacin de cdigo por medio de herencia
super invoca al comportamiento anterior.
Surge
en los aos 1970, en el Centro de Investigacin de Xerox en Palo Alto (PARC) en EE.UU.
Creado por Alan Kay, Adele Goldberg y Daniel Ingalls Influenciado por Simula y Lisp El objetivo del proyecto de Smalltalk es proporcionar soporte
informatizado para el espritu creativo
Para
que un lenguaje de desarrollo llegue a ser ampliamente aceptado deber ser estandarizado.
Responder a las necesidades de la industria Smalltalk Favorecer la aparicin de estndares Crear un punto de encuentro para la comunidad Smalltalk
http://www.stic.org Apuntes sobre Smalltalk:
http://www.um.es/informatica/alumnos/apuntes/tercero/poo/smalltalk.ppt
IAGP 52
Polgonos y Rectngulos
Tenemos la clase Poligono y necesitamos representar rectngulos.
Debemos crear la clase Rectangulo partiendo de cero?
class Rectangulo inherit Poligono feature ...Caractersticas especficas para rectngulos end
IAGP 54