Java
Java
Programación
Orientada a Objetos
en Java
Tema 1. INTRODUCCIÓN
Introducción 0
SINTESIS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS:
nuevo equilibrio en condiciones de igualdad de importancia entre
procesos y datos con un enfoque más antropomórfico
ATENCIÓN:
“X es bueno; Orientado a Objetos es bueno; Ergo, X es Orientado a
Objetos”. [Stroupstrup, 88]
“Mi conjetura es que la orientación a objetos será en los 80 lo que
la programación estructurada en los 70. Todo el mundo estará a
favor suyo. Cada productor prometerá que sus productos lo
soportan. Cada director pagará con la boca pequeña el servirlo.
Cada programador lo practicará. Y nadie sabrá exactamente lo que
es”. [Rentsch, 82]
Introducción 1
ÍNDICE
1. Bases de la Programación
2. Evolución de los Lenguajes de
Programación
3. Elementos de la Programación Orientada a
Objetos
4. Objetivos de la Programación Orientada a
Objetos
Introducción 2
1. Bases de la Programación (I)
Abstracción: proceso mental de extracción de las características
esenciales de algo, ignorando los detalles superfluos
• Encapsulación: proceso por el que se ocultan los detalles del
soporte de las características de una abstracción
• Modularización: proceso de descomposición de un sistema en un
conjunto de módulos (‘piezas’) poco acoplados (independientes) y
cohesivos (con significado propio)
El acoplamiento “[...] es la medida de fuerza de la asociación
establecida por una conexión ente un módulo -elemento- y otro. El
acoplamiento fuerte complica un sistema porque los módulos son
más difíciles de comprender, cambiar o corregir por sí mismos si
están muy interrelacionados con otros módulos. […] La cohesión
mide el grado de conectividad entre los elementos de un solo
módulo.” [Booch, 96]
Introducción 3
1. Bases de la Programación (II)
Jerarquización: proceso de estructuración por el que se produce
una organización (jerarquía) de un conjunto de elementos en grados
o niveles de responsabilidad, de incumbencia o de composición,
entre otros.
Jerarquía de composición
Jerarquía de clasificación
Introducción 4
2. Evolución de los Lenguajes
de Programación (I)
Introducción 5
2. Evolución de los Lenguajes
de Programación (II)
Introducción 6
2. Evolución de los Lenguajes
de Programación (III)
OO = TAD’s + Herencia
Introducción 7
2. Evolución de los Lenguajes
de Programación (IV)
- Código Máquina E
Abstracción
Ensamblador V
Programación de Alto Nivel O
Encapsulación L
Programación Estructurada
U
Programación Modular C
Modularización
Tipos Abstractos de Datos I
Programación Orientada a Objetos
O
Jerarquización N
+
Introducción 8
2. Evolución de los Lenguajes
de Programación (V)
LEYES DE LHEMAN Y BELADY:
Introducción 9
2. Evolución de los Lenguajes
de Programación (VI)
OBJETIVO DE LA POO (II):
Implicaciones:
• El incremento de abstracción, encapsulación, modularidad y
jerarquización aumentan la compresión, la escalabilidad y la
flexibilidad del software
• El incremento de la comprensión , la escalabilidad y la
flexibilidad del software reduce los costes del mantenimiento del
software (correctivo, adaptativo y perfectivo)
• La reducción de los costes del mantenimiento del software
reduce drásticamente los costes del desarrollo del software
Introducción 10
2. Evolución de los Lenguajes
de Programación (VII)
Abstracción
Encapsulación + Aumento de la
compresión del
software
Modularización
Jerarquización
+ Legibilidad
Creación
de código + Facilidad de Mantenimiento
Mantenimiento
de código
- Costes
50 60 70 80 90 Introducción 11
3. Elementos de la Programación
Orientada a Objetos (I)
Clase: descripción de los datos y de las operaciones que
describen el comportamiento de un cierto conjunto de
elementos homogéneos.
Ej. Clase Intervalo
- datos: extremos inferior y superior;
- operaciones: intersección, longitud, desplazar, …
Objeto: ejemplar concreto (instancia) de una clase, que responde
al comportamiento definido por las operaciones de la clase a la
que pertenece, adecuándose al estado de sus datos particulares.
Ej. Objetos de la clase Intervalo :
- constantes: (8,10), (-100,100),…
- variables: misHorasDeTrabajo, miPresiónArterial, …
Introducción 12
3. Elementos de la Programación
Orientada a Objetos (II)
Mensaje: invocación de una operación sobre un objeto. Un
objeto es el agente activo que lanza el mensaje y otro objeto es
el agente pasivo que recibe el mensaje. El objeto receptor del
mensaje debe contemplar dicha operación entre las definidas en
su clase.
Ej. Mensajes a objetos de la Clase Intervalo
- (8,10).longitud = 2; (-100,100).desplazar(3) => (-97,103),…
- misHorasDeTrabajo.interseccion(tusHorasDeTrabajo), …
Método: definición de una operación de una clase.
Ej. Métodos de la Clase Intervalo
- longitud: extremo superior menos extremo inferior;
- desplazar: acumular cantidad a ambos extremos;
Introducción 13
3. Elementos de la Programación
Orientada a Objetos (III)
Atributo: cada uno de los datos de una clase, y por tanto,
presente en todos los objetos de esa clase.
Ej. Atributos de la clase Intervalo
- extremos inferior y superior
Estado: conjunto de los valores de los atributos que tiene un
objeto, por pertenecer a una clase, en un instante dado.
Ej. Estados de objetos de la clase Intervalo
- 8 en el extremo inferior y 14 en el extremo superior de
presiónArterial;
- 9 en el extremo inferior y 18 en el extremo superior de
misHorasDeTrabajo;
Introducción 14
3. Elementos de la Programación
Orientada a Objetos (IV)
RELACIÓN DE LOS ELEMENTOS DE LA POO:
Introducción 15
3. Elementos de la Programación
Orientada a Objetos (V)
Las clases asumen el principio de encapsulación: cuando se
describe una clase, se debe describir tanto su vista pública o
interfaz como su vista privada o implantación.
Introducción 16
3. Elementos de la Programación
Orientada a Objetos (VI)
Las clases que conjugan de forma equilibrada atributos (datos) y
métodos (operaciones) son el único bloque de construcción de
programas: módulos.
Introducción 17
3. Elementos de la Programación
Orientada a Objetos (VII)
Herencia: transmisión de atributos y métodos de una clase a otra
clase.
Ej. A partir de la Clase Intervalo
- IntervaloCerradoCerrado [x,x], IntervaloAbiertoCerrado
(x,x],…
Polimorfismo: enlace dinámico de expresiones a clases y/o de
mensajes a métodos.
Ej. Objetos intercambiables de las clases Intervalo,
IntervaloCerradoCerrado, …
Introducción 18
3. Elementos de la Programación
Orientada a Objetos (VIII)
RELACIÓN DE LOS ELEMENTOS DE LA POO:
Introducción 19
3. Elementos de la Programación
Orientada a Objetos (IX)
COMPARATIVA DE LA POO vs PROGRAMACIÓN ESTRUCTURADA:
PROGRAMACIÓN BASES DE LA POO
ESTRUCTURADA PROGRAMACIÓN
Registro + Funciones Abstracción, Encapsulación Clase
y Modularidad
Variable de Tipo Registro Abstracción, Encapsulación Objeto
Función Modularidad Método
Llamada a Función Abstracción Mensaje
Campo de un Registro Encapsulación Atributo
y Modularidad
Estado de una Variable Registro Encapsulación Estado
Registros de Campos Variables Abstracción y Modularidad Herencia
Punteros a Funciones Abstracción y Encapsulación Polimorfismo
Introducción 20