Orientación a objetos

Índice
- Introducción
- Objetivos
- 1.¿Qué es la orientación a objetos?
- 2.Clasificación y abstracción
- 2.1.Clasificación
- 2.2.Abstracción
- 2.3.Descripción de las clases de objetos
- 2.3.1.Atributos
- 2.3.2.Asociaciones
- 2.3.3.Operaciones
- 3.Ocultación de información y encapsulamiento
- 4.Herencia y polimorfismo
- 5.Caso práctico: un foro virtual
- 5.1.Clasificación de los objetos
- 5.2.Herencia
- 5.3.Asociaciones
- Resumen
- Actividades
- Ejercicios de autoevaluación
- Solucionario
- Glosario
- Bibliografía
Introducción
Objetivos
-
Entender los conceptos fundamentales de la orientación a objetos: clasificación, abstracción, ocultación de información, encapsulamiento, herencia y polimorfismo.
-
Saber cómo se pueden describir los objetos de un sistema mediante el uso de clases, atributos, operaciones y asociaciones.
1.¿Qué es la orientación a objetos?

.MODEL Small .STACK 100h .DATA msg db 'Hello, world!$' .CODE start: mov ah, 09h lea dx, msg int 21h mov ax,4C00h int 21h end start
#include<stdio.h> int main(int arg_count,char ** arg_values) { printf("Hello World\n"); return 0; }
10 PRINT "Hello World"
#include<stdio.h> int main(int arg_count,char ** arg_values) { printf("Hello World\n"); return 0; }
10 PRINT "Hello World"
10 PRINT "Hello World"
1.1.Evolución histórica de los lenguajes de programación
1.2.Los lenguajes de programación orientados a objetos
1.3.Análisis orientado a objetos

2.Clasificación y abstracción
2.1.Clasificación

-
Cargos
-
Empleados
-
Departamentos

2.2.Abstracción
2.3.Descripción de las clases de objetos
2.3.1.Atributos

Ámbito del atributo
Número de valores de un atributo
2.3.2.Asociaciones

Roles de las instancias

Clases asociativas

Asociaciones n-arias
2.3.3.Operaciones

3.Ocultación de información y encapsulamiento
3.1.Ocultación de información


3.2.Encapsulamiento
-
Visibilidad pública: cualquier objeto tiene acceso.
-
Visibilidad privada: sólo los objetos de la misma clase tienen acceso.
-
Visibilidad protegida: sólo los objetos de la misma clase o de alguna subclase tienen acceso.
-
Visibilidad de paquete: sólo los objetos del mismo grupo o "paquete" tienen acceso.

4.Herencia y polimorfismo
4.1.Herencia

4.1.1.Generalización y especialización
4.2.Polimorfismo

4.2.1.Clases abstractas y redefinición del comportamiento
4.2.2.Asociaciones polimórficas

5.Caso práctico: un foro virtual
5.1.Clasificación de los objetos
5.1.1.Clases

5.1.2.Atributos

5.2.Herencia

5.3.Asociaciones

Resumen
Actividades
-
Elaborad una lista de las clases que podemos encontrar en este dominio.
-
Para cada clase, indicad los atributos que tiene, el tipo de cada atributo y cuál es su número posible de valores.
-
Identificad las asociaciones entre clases. Para cada una indicad los nombres de los roles y, si existen, los atributos que tenga la clase asociativa.
-
Identificad las relaciones de herencia entre clases y qué clases creéis que son abstractas.
-
¿Qué atributos de Vehículo son visibles desde la clase Vehículo?
-
¿Y desde la clase Coche?
-
¿Y desde Persona?
-
¿Puede ocurrir que un contribuyente tenga asociado un bien inmueble?
-
¿Un contribuyente podría pedir la operación hipotecar sobre todos sus bienes asociados?
-
Según este esquema, ¿los bienes inmuebles tienen valor?
-
¿Los bienes tienen referencia catastral?
Ejercicios de autoevaluación
Solucionario
-
No es lo mismo el teléfono 003 que el 3, a pesar de que sí son el mismo número.
-
Los teléfonos no admiten ninguna de las operaciones habituales de los números. Nunca sumamos, restamos, multiplicamos, dividimos, etc. teléfonos, aunque sí lo hacemos con los números.
-
Algunos caracteres no numéricos pueden formar parte de un número de teléfono. Como mínimo, el carácter +, que podemos utilizar para señalizar el prefijo internacional como un número de teléfono y que realmente se indica al marcar el número.
-
Producto: nombre:String, marcaComercial:String, descripcion:String, fotografia:Imagen, precio:Importe
-
Producto electrónico: fichero:Fichero, formato:Formato
-
Categoría: nombre:String, descripcion:String
-
Usuario: nombreUsuario:String, contraseña:String, direccion:Direccion
-
Compra: fecha:Fecha
-
PerteneceA: cada producto (con nombre de rol productos) pertenece a una o más categorías (con nombre de rol categorías).
-
Hace: cada usuario (nombre de rol usuario) realiza una serie de compras (nombre de rol compras).
-
Incluye: una compra (nombre de rol compra) incluye una serie de productos (nombre de rol productos). Ésta es una clase asociativa con el atributo numUnidades:nat.
-
Todos.
-
Matrícula y marca, ya que marca es protegido y visible desde las subclases, pero modelo es privado y no es visible desde ninguna otra clase que no sea Vehículo.
-
Matrícula, ya que marca y modelo no son públicos.
-
Sí. Un contribuyente puede tener asociado cualquier número de bienes y los bienes inmuebles también son bienes.
-
No, ya que los bienes que no son inmuebles no se pueden hipotecar; es decir, la operación sólo está definida para la clase BienInmueble y, por lo tanto, sólo se puede invocar sobre instancias de esta clase.
-
Sí. Todo bien inmueble es un bien y, por lo tanto, como todos los bienes, tiene un valor. Visto desde el punto de vista de la herencia, la clase BienInmueble hereda el atributo valor de la clase Bien.
-
En general, no. Sólo aquellos bienes que sean inmuebles tendrán referencia catastral. Pero todos los otros no tendrán.
Glosario
- abstracción f
- El acto de reunir las cualidades esenciales o generales de cosas similares. También las características esenciales provenientes de una cosa.
- abstracta (clase) f
- Clase que no se puede instanciar directamente; sólo se pueden instanciar las subclases no abstractas que tenga.
- abstracta (operación) f
- Operación que no tiene asociado un método; es decir, para la que no se ha definido un comportamiento.
- ámbito (de un atributo) m
- Característica que distingue si un atributo almacena un valor diferente para cada instancia (ámbito de instancia) o un mismo valor para todas las instancias de una clase (ámbito de clase).
- análisis orientado a objetos f
- Aplicación de los conceptos e ideas de los lenguajes orientados a objetos al análisis de sistemas.
- asociación f
- Relación estructural entre dos (o más) clases que nos indica qué objetos de la segunda clase conocen los objetos de la primera. Una asociación, por lo tanto, constituye una responsabilidad de cada una de las clases implicadas.
- asociación polimórfica f
- Ved polimórfica (asociación)
- asociación recursiva f
- Asociación que conecta una clase con ella misma.
- atributo m
- Elemento estructural de una clase que indica qué información tienen las instancias de aquella clase; por lo tanto, es una de las responsabilidades de la clase.
- caja blanca f
- Tipo de descripción de un objeto en el que se describe, además de cualquier aspecto externo del objeto, su estructura y funcionamiento internos.
- caja negra f
- Tipo de descripción de un objeto en el que se describe su funcionamiento desde un punto de vista externo, sin explicar la estructura ni el funcionamiento internos.
- clase abstracta f
- Ved abstracta (clase)
- clase asociativa f
- Clase cuyas instancias pertenecen a una asociación; es decir, cada instancia de una clase asociativa representa una instancia de una asociación, en el sentido de que está formada por el par (en el caso de asociaciones binarias) de instancias asociadas, además de tener los atributos, las asociaciones y las operaciones propias.
- clase (de objetos) f
- Descriptor de un conjunto de objetos que comparten los mismos atributos, asociaciones, operaciones y métodos.
- clasificación f
- Mecanismo de identificar clases de objetos como descriptoras de conjuntos de objetos con las mismas responsabilidades.
- código máquina m
- Código formado por el conjunto de instrucciones que los procesadores (en general, el hardware) pueden entender y ejecutar.
- de paquete (visibilidad)
- Visibilidad de un atributo, asociación u operación tal que sólo es visible por los objetos del mismo grupo o paquete.
- encapsulamiento m
- Mecanismo de la orientación a objetos que nos permite ocultar información definiendo qué atributos, operaciones y asociaciones de un objeto son visibles y cuáles quedan ocultos.
- especialización f
- Proceso de identificación de una subclase de una clase existente que sirve para describir las responsabilidades comunes a un subconjunto de las instancias de la clase original, pero no a todas.
- generalización f
- Proceso de identificación de una superclase de dos o más clases ya existentes que sirve para describir las responsabilidades comunes a las clases ya identificadas inicialmente.
- herencia f
- Característica de la orientación a objetos por la que podemos identificar una relación entre una superclase y una subclase, de manera que todas las instancias de la subclase lo son también de la superclase. Decimos que la subclase hereda la definición de la superclase, por lo que para definir la subclase sólo debemos indicar aquellas características que le son específicas y que no están presentes en la superclase.
- implementación (de una clase) f
- Comportamiento interno de las instancias de una clase que queda definido por el conjunto de métodos de la clase. La implementación queda oculta detrás de la interfaz.
- instancia f
- Ved objeto
- interfaz f
- Conjunto de operaciones ofrecidas por las instancias de una clase y que, por lo tanto, pueden ser invocadas por otros objetos. Sin embargo, la interfaz no incluye la implementación, que está formada por los métodos que implementan estas operaciones.
- invocar v
- Pedir a un objeto la ejecución de su comportamiento para una determinada operación.
- lenguaje ensamblador m
- Lenguaje de programación en el que las instrucciones se corresponden prácticamente una a una con las operaciones que puede entender el procesador. Se traduce a código máquina para ser ejecutado.
- lenguaje de programación m
- Lenguaje artificial que está diseñado para expresar los cómputos que queremos que lleve a cabo un ordenador.
- lenguaje de programación de alto nivel m
- Lenguaje de programación más rico que el lenguaje ensamblador, ya que permite expresar las instrucciones con un nivel de abstracción más alto.
- lenguaje de programación orientado a objetos m
- Lenguaje de programación de alto nivel que eleva el nivel de abstracción para crear
una abstracción del problema que se quiere resolver utilizando el paradigma de la
orientación a objetos.
Ved orientación a objetos - lenguaje natural m
- Lenguaje que utilizamos las personas para comunicarnos entre nosotros (como el español o el inglés), por oposición a los lenguajes que utilizamos para comunicarnos con los ordenadores (como los lenguajes de programación).
- lenguaje procedimental m
- Lenguaje de programación de alto nivel que eleva el nivel de abstracción y crea una abstracción de la máquina sobre la que se ejecutan. Permite utilizar un juego de instrucciones más abstractas de las que el procesador es directamente capaz de ejecutar.
- lenguaje unificado de modelización m
- Ved universal modeling language
- llamar v
- Ved invocar
- mensaje (orientación a objetos) m
- Metáfora que representa un llamamiento o invocación de una operación de un objeto. Bajo esta metáfora decimos que el objeto que hace el llamamiento (el que pide la ejecución de la operación) envía un mensaje al objeto que recibe el llamamiento (el que debe ejecutar su comportamiento para aquella operación).
- método m
- Conjunto de instrucciones que para una operación, en una clase, indica cómo se comportarán los objetos de esa clase. El conjunto de los métodos de la clase forma la implementación.
- multivaluado (atributo) m
- Atributo que, para una determinada instancia, puede tener más de un valor en lugar de estar obligado a tener sólo uno. Antónimo de univaluado.
- objeto m
- Cada uno de los elementos autónomos que forma un sistema orientado a objetos.
- obligatorio (atributo) m
- Atributo en el que todas las instancias de la clase deben tener valor. Antónimo de opcional.
- ocultación de información f
- Capacidad de hacer que cada elemento de un sistema contenga cierta información que se oculta al resto de los elementos y les muestra una visión simplificada. En el caso de las clases de un sistema orientado a objetos, el encapsulamiento permite indicar qué elementos son visibles y ocultar el resto.
- opcional (atributo) m
- Atributo que, para una determinada instancia, puede no tener valor. Si un atributo no es opcional, entonces debe tener valor para todas las instancias de la clase. Antónimo de obligatorio.
- operación f
- Especificación de una tarea que pueden llevar a cabo todas las instancias de una clase. La operación se puede pedir mediante el llamamiento o la invocación y el comportamiento de la instancia que reciba el llamamiento se define en un método. Por lo tanto, es una de las responsabilidades de la clase.
- operación abstracta f
- Ved abstracta (operación)
- operación polimórfica f
- Ved polimórfica (operación)
- orientación a objetos f
- Paradigma consistente en descomponer un sistema complejo en un conjunto de elementos autónomos (los objetos) que se comunican unos con otros para llevar a cabo sus tareas.
- paquete m
- Agrupación de elementos en un sistema orientado a objetos para facilitar su organización. Un paquete puede contener clases y otros paquetes y puede resultar útil para definir la visibilidad de paquete de los atributos, las asociaciones y las operaciones de las clases que contiene.
- polimórfica (asociación) f
- Asociación en la que una (o más) de las clases que participan tiene subclases, de tal manera que un objeto puede tener asociados, por la misma asociación, objetos pertenecientes a diferentes clases (siempre que pertenezcan a la jerarquía de herencia de la clase asociada).
- polimórfica (operación) f
- Operación que tiene un método asociado a una clase pero cuyo método es diferente para alguna de las subclases de la clase. De esta manera, las diferentes instancias de la clase, al ejecutar la operación, se comportarán de manera diferente en función de si son instancias sólo de la clase o de qué subclase sean instancias.
- polimorfismo m
- Capacidad de un objeto de presentarse con formas diferentes (interfaces diferentes) según el contexto. Así, un objeto que pertenezca a una clase cualquiera se puede ver como perteneciente a aquella clase, a la superclase de ésta, a la superclase de la superclase de aquélla, etc.
- privada (visibilidad) f
- Visibilidad de un atributo, asociación u operación que sólo es visible para la misma clase en la que está definida.
- protegida (visibilidad) f
- Visibilidad de un atributo, asociación u operación que sólo es visible para la clase en la que está definida y para sus subclases.
- pública (visibilidad) f
- Visibilidad de un atributo, asociación u operación que es visible para todos los objetos del sistema.
- redefinir (una operación) v
- Definir, para una operación de una subclase, un método (un comportamiento) diferente del método que tenía asociada aquella operación a la superclase. Al redefinir una operación en una subclase la convertimos en una operación polimórfica.
- responsabilidad (de un objeto) f
- Características u obligaciones de una clase, que pueden ser información que las instancias deben conocer (atributos), otras instancias que han de conocer (asociaciones) o tareas que deben poder llevar a cabo (operaciones).
- rol m
- Extremo de una asociación al que se asigna un nombre para indicar su propósito; es decir, para indicar cuál es el papel que tienen las instancias cuando se asocian.
- subclase f
- En una relación de herencia entre dos clases, la clase que hereda las responsabilidades de la otra clase; por lo tanto, es la clase más específica.
- superclase f
- En una relación de herencia entre dos clases, la clase de la que se heredan las responsabilidades; por lo tanto, es la clase más genérica.
- tipo (de un atributo) m
- Descripción del conjunto de valores que puede tomar un atributo. Algunos ejemplos de tipo de atributos pueden ser el tipo fecha (que define un conjunto de valores que incluye 1/3/2011 o 31/3/1414), entero (como 14 o 356) o carácter (como "a" o "@").
- unified modeling language m
- Lenguaje de modelización de propósito general estandarizado por el OMG y utilizado
en el campo de la ingeniería del software.
Sigla UML - univaluado (atributo) m
- Atributo tal que ninguna instancia de la clase puede tener más de un valor en ese atributo. Antónimo de multivaluado.
- visibilidad f
- Propiedad de un atributo, asociación u operación que define qué objetos pueden verlo o verla. La visibilidad puede ser pública, privada, protegida o de paquete.