Title: Tema 2' El paradigma Orientado a Objetos'
1Tema 2. El paradigma Orientado a Objetos.
- Departamento de Lenguajes y Ciencias de la
Computación - E.T.S. de Ingenieros en Informática
- Universidad de Málaga
- http//www.lcc.uma.es/amg/ISE/Tema2.zip
2Programa
- El Paradigma Orientado a Objetos
- Historia e introducción.
- Conceptos básicos.
- Aplicación de los conceptos en lenguajes de
programación y métodos de análisis.
3Evolución Histórica
4Evolución Histórica
COMPONENTES
5Introducción
- Razones para la crisis del software
- Hacer un lápiz es difÃcil?
- La industria del software se parece más a ...
- la fabricación de armas?
- la fontanerÃa?
- TecnologÃa / objetivo.
6Programa
- El Paradigma Orientado a Objetos
- Historia e introducción.
- Conceptos básicos.
- Aplicación de los conceptos en lenguajes de
programación y métodos de análisis.
7Qué es la Orientación a Objetos?
- El concepto surge en los lenguajes de
programación - Se organiza el software como una colección de
objetos discretos que encapsulan - Estructuras de Datos y
- Comportamiento.
- Un sistema OO funciona mediante la colaboración
entre los objetos que se comunican entre sÃ. - El concepto se extiende a los métodos de análisis
y diseño - Se utilizan los objetos del mundo real como base
para construir modelos - Los elementos que forman los sistemas del mundo
real se corresponden con objetos software
8Las clases y los objetos están en todas partes
9Conceptos básicos CLASES y OBJETOS
- CLASE
- Atributos
- Operaciones
- Comportamiento
10Conceptos básicos PASO DE MENSAJES
- Invocación de métodos
- Medio de colaboración entre objetos
11Conceptos básicos ENCAPSULACIÓN
- Ocultación de detalles
- Concepto de Interfaz
- Independencia
Vol
12Conceptos básicos HERENCIA
- Generalización / Especialización
- Los objetos heredan las caracterÃsticas de la
clase. - Las clases pueden heredar de otras clases.
- Extensión.
- Restricción.
- Modificación.
- Utilidad
- Abstracción.
- Reutilización.
13Conceptos básicos POLIMORFISMO
- Permite al modelador hablar el lenguaje del
cliente. - Evita asignar identificadores artificiosos para
distinguir las operaciones. - Contribuye a la reutilización de código.
- Ej Operación Enchufar
14Conceptos básicos ASOCIACION
- Modela la relación entre objetos (necesaria para
que se comuniquen y colaboren) - Asociación-Clase / Enlace-Objeto
- Tipos básicos
- Asociación
- Herencia
- Agregación / Composición (agregación fuerte)
15Hasta aquà deberÃamos tener claro ...
- Cómo surge el enfoque OO.
- Cómo funciona un sistema OO.
- El concepto y la representación de
16Programa
- El Paradigma Orientado a Objetos
- Historia e introducción.
- Conceptos básicos.
- Aplicación de los conceptos en lenguajes de
programación y métodos de análisis.
17 Clases y Objetos
- CLASE MODULO TIPO
- Criterio de Modularización
- Estado Comportamiento
- Entidad estática (en general)
- OBJETO Instancia de una CLASE
- Objeto (Clase) ? Valor (Tipo)
- Identidad
- Entidad dinámica
- Cada objeto tiene su propio estado
- Objetos de una clase comparten su comportamiento
18Métodos y Mensajes
- Métodos definen el comportamiento de una clase
- Invocación de métodos Paso de Mensajes
- obj.mens(args) mens(obj,args)
19Clases
- Estructuras que encapsulan datos y funciones
class Punto public Punto() float x,y void
trasladar(float, float) void cambiar_x(float
a)xa void cambiar_y(float b)yb float
distancia(Punto)
20Colaboración entre objetos
- Los objetos (clases) colaboran para resolver
problemas. - La forma en que los objetos (clases) colaboran
puede ser muy variada - Asociación simple
- Herencia
- Agregación
- Composición
- ...
21Agregación de objetos
class Segmento private Punto inicio,final
public Segmento(Punto p) inicio Punto()
final p public float longitud() return
inicio.distancia(final) public void
trasladar(float a,float b) inicio.trasladar(a,b)
final.trasladar(a,b)
22Composición de objetos
public class Habitacion private int
numHabitacion private int numCamas //
declaración de métodos ... public class
Hotel1 Habitacion h1 Habitacion h2 //
resto declaraciones ... h1 new Habitacion(
222 )
23Construcción y Destrucción
- Diferentes mecanismos para la creación y la
eliminación de objetos, dependiendo del lenguaje. - Construcción de objetos (?reservar memoria)
- Constructores (C, Eiffel, Java)
- Métodos de clase (Smalltalk)
- Eliminación de objetos (?liberar memoria)
- Destructores (C)
- Recolección automática de memoria garbage
collection- (Smalltalk, Eiffel, Java)
Detalles
24Construcción y Destrucción
- //C
- class Jugador
- int salud
- int fuerza
- Jugador() // constructor - no tiene
tipo - Jugador(int s, int f)// constructor
alternativo - void mover()
- void atacar()
-
- JugadorJugador()
- salud 0
- fuerza 0
25Construcción y Destrucción
- JAVA
- class Circulo extends Elipse
- // extensión, restricción, modificación
- public Circulo ()
- ...
- public Circulo (int radio)
- ...
-
- ...
- Circulo c1
- ...
- c1 new Circulo(4)
26Construcción y Destrucción
- Smalltalk
- Vehiculo subclass Coche
- // extensión, restricción, modificación
- ...
- MiCoche Coche new ABC-1234
27Herencia
- Posibilidad de reutilizar código
- Algo más que incluir ficheros o importar módulos
- Distintos tipos de herencia
- simple / múltiple
- de implementación/de interfaz
- Limitaciones
- Problemas
Detalles
28Herencia
- JAVA
- class Elipse extends Figura
- // extensión, restricción, modificación
-
- C
- class Elipse public Figura
- // extensión, restricción, modificación
-
- Smalltalk
- Figura subclass Elipse
- extensión, restricción, modificación
- Python
- class Elipse (Figura)
- extensión, restricción, modificación
29Herencia
- Extensión y Reutilización de código
- Una clase derivada hereda el comportamiento de su
clase padre - Redefinición de métodos
- Clases abstractas
- Herencia múltiple / Herencia repetida
30Polimorfismo
- Una variable puede referirse a objetos de una
clase distinta de la que se ha declarado - Tipo Dinámico vs. Tipo Estático
- Polimorfismo de objetos / de mensajes
- Restricción en base a la herencia
31Encapsulación
- Las clases ocultan los detalles de realización de
los métodos. - Los usuarios (los objetos que invocan esos
métodos) conocen el interfaz y la semántica. No
tienen que preocuparse de los detalles. - El concepto de interfaz puede ampliarse.
- Contribuye a la reusabilidad del código.
32Al fin del tema 2 debemos tener claro ...
- Cómo surge y evoluciona el concepto OO.
- Cuáles son los elementos y caracterÃsticas
básicas de este enfoque. - Cómo se plasma el enfoque OO en los lenguajes de
programación. - Las particularidades que se introducen sobre los
conceptos básicos al aplicarlos en sistemas reales
33A continuación ...
- El Lenguaje de Modelado Unificado.
- Introduciremos UML, y
- veremos cómo realizar
- Modelado estructural
- Modelado del comportamiento
- Modelado arquitectónico
- Preparación
- Tema 3. El Lenguaje de Modelado Unificado.
- http//polaris.lcc.uma.es/amg/ISE/Tema3.zip
- Caps. 1,3,4,5. Schmuller. Teach yourself UML in
24 hours. - Cap, 1. Los 3 amigos, The Unified Modeling
Language. - Probar/Jugar con Rational Rose y MagicDraw UML.