PDF de programación - Tema 2 - Fundamentos de la programación orientada a objetos

Imágen de pdf Tema 2 - Fundamentos de la programación orientada a objetos

Tema 2 - Fundamentos de la programación orientada a objetosgráfica de visualizaciones

Publicado el 24 de Junio del 2017
1.915 visualizaciones desde el 24 de Junio del 2017
1,0 MB
99 paginas
Creado hace 12a (30/01/2008)
Programación orientada a objetos

TEMA 2

FUNDAMENTOS DE LA PROGRAMACIÓN

ORIENTADA A OBJETOS

Cristina Cachero, Pedro J. Ponce de León

(3 sesiones)
Versión 0.5

Depto. Lenguajes y Sistemas Informáticos

Del tema anterior...

 ABSTRACCIÓN
 OCULTACIÓN DE INFORMACIÓN.
 ENCAPSULACIÓN
 Concepto de P.O.O: objetos, clases y herencia
 Carácterísticas básicas de un L.O.O

 Objetos (instancias)
 Clases
 Paso de mensajes
 Herencia…

 Carácterísticas opcionales de un L.O.O.

 Polimorfismo
 Genericidad
 Gestión de errores
 Aserciones
 Tipado estático
 Recogida de basura
 Concurrencia
 Persistencia
 Reflexión

2

Indice

 Clases
 Objetos
 Atributos
 Operaciones
 UML y el diagrama de clases
 Constructores y destructores
 Propiedades constantes y de clase en C++
 Relaciones entre objetos
 Diseño O.O.

3

Clase
Definición



“Esencia” de un objeto: abstracción de los atributos
(características), operaciones, relaciones y semántica comunes a un
conjunto de objetos

 Así, una clase representa al conjunto de objetos que comparten una

estructura y un comportamiento comunes

 Tanto metodologías como lenguajes OO tienen el concepto de clase

como elemento central.
 No hay noción de programa principal, y los subprogramas no existen
como unidades modulares independientes, sino que forman siempre
parte de alguna clase.

 El programa principal se convierte en un simple punto de entrada al

programa, y no debería contener lógica de control.

 Todos los tipos de datos deben ser clases

4

Clase
Partes de la Definición

 Identificador de Clase: nombre
 Propiedades

 Atributos o variables: datos necesarios para describir los objetos

(instancias) creados a partir de la clase

 La combinación de sus valores determina el ESTADO de un objeto

 Roles: relaciones que una clase establece con otras clases
 Servicios, operaciones, métodos (funciones miembro en C++): acciones

que un objeto conoce cómo ha de ejecutar

Nombre

atributos

operaciones

nombre1

...

5

Clase vs TAD

 Definición:

 TAD: Especificación algebraica (abstracta) de una estructura de datos junto con el
conjunto de operaciones que se pueden hacer sobre ese tipo de datos. Un TAD se
asocia a una o más implementaciones distintas. Al ser una especificación formal, no
soporta el concepto de herencia

 CLASE: Concepto que describe un TAD y una de sus implementaciones (total o

parcial). Así, una clase es un tipo abstracto de dato equipado con una implementación
posiblemente parcial. Soporta herencia.



La POO se encuentra a un nivel de abstracción superior que la PBO
(Programación Basada en Objetos o Programación con TAD’s):
 Un TAD representa una vista del mundo centrada en datos (su estructura,

representación y manipulación), mientras que POO representa una vista del mundo
orientada al servicio (qué pueden ofrecer esos TADs al resto del programa).

 La POO innova en aspectos como compartición de código y reuso. Estas innovaciones

se basan en tres conceptos:

 Paso de Mensajes: la actividad se inicia por una petición a un objeto específico. En este

hecho está implícita la idea de que la interpretación de un mensaje puede variar con distintos
objetos, y consecuentemente los nombres de operaciones no necesitan ser únicos -> código
más legible.

 Herencia: permite a TADs diferentes compartir el mismo código, lo que conlleva una

reducción de su tamaño y un incremento de funcionalidad.

 Polimorfismo: permite que este código compartido se adapte a circunstancias específicas de

tipos de datos individuales.

6

Indice

 Clases
 Objetos
 Atributos
 Operaciones
 UML y el diagrama de clases
 Constructores y destructores
 Propiedades constantes y de clase en C++
 Relaciones entre objetos
 Diseño O.O.

7

Objeto
Definición
 Un objeto es un elemento tangible (ocupa memoria) generado a partir

de una definición de clase.

 Se puede definir como una entidad (real o abstracta) con un papel

bien definido en el dominio del problema.

 Según Grady Booch: Un objeto tiene un estado, un comportamiento y

una identidad
 Estado: conjunto de propiedades y valores actuales de esas propiedades.
 Comportamiento: modo en que el objeto actúa y reacciona (cambios de

su estado y paso de mensajes). Viene determinado por la clase a la que
pertenece el objeto

 Identidad: propiedad que distingue a unos objetos de otros (nombre

único de variable)

3o:Naipe

num=3
palo=OROS

8

Objeto
Estado y Comportamiento
 El estado de un objeto puede influir en su

comportamiento

 Ejemplo: una cuenta puede variar su

comportamiento en función de su saldo
 Cuenta con saldo negativo: no se puede retirar dinero

pero sí ingresar. Se le cobra comisión. Se le envía
notificación de reclamo de puesta al día.

 Cuenta con saldo positivo pero saldo medio < 600
euros: puede retirar e ingresar dinero, se le cobra
comisión de mantenimiento.

 Cuenta con saldo medio>600 euros: puede retirar e

ingresar dinero. No se le cobra comisión de
mantenimiento.

10

Objeto
Creación e Inicialización

 Antes de comenzar a trabajar con un objeto, éste debe

estar:
 Creado: reserva de memoria y enlazado de ese espacio de

memoria a un nombre

 Inicializado: proceso no limitado a dar valores a los datos

miembro, sino más bien al establecimiento de las condiciones
iniciales necesarias para la manipulación de un objeto.

 La encapsulación permite que este proceso se realice de manera

transparente al usuario.

 En algunos lenguajes, el proceso de creación va unido al proceso

de nombrar una variable.

 Por ej., C++: Naipe AsDeBastos;
 En otros sin embargo, es obligatorio separar ambas operaciones

 Smalltalk primero declara una referencia y luego crea el objeto

con el método new (también usado en Java, Object Pascal,
C#...)

11

Objeto
Creación e Inicialización
 Cuando lo que pretendemos crear es un array de objetos

hay que guardar memoria para dos conceptos
 El array en sí mismo
 Cada uno de los objetos que componen el array

 C++ en algunos casos permite hacer ambas cosas en una sola línea

Naipe arrayCartas[52];

 Java no:

Naipe arrayCartas[]=new Naipe[13];
for (int i=0;i<13;i++)

arrayCartas[i]=new Naipe(i+1;Palo::ESPADAS);

12

Objeto
Punteros y ubicación en memoria

 Todos los lenguajes utilizan punteros para la representación

interna de objetos.

 Java: Cuando decimos ‘Java no tiene punteros’ simplemente

indicamos que Java no tiene punteros que el programador pueda
ver, ya que todas las referencias a objeto son de hecho punteros
en la representación interna.

 C++: Distinguimos entre:

 variables automáticas: memoria stack.
Desaparece cuando la variable sale de
ámbito de manera automática.
 punteros : memoria heap. Los objetos
se crean con el operador new. Debe
eliminarse explícitamente con el operador
delete.

a
c
i
m
á
n
D

i

Memoria
Estática

Stack

Heap

13

Objeto
Liberación de memoria

 En C++ es responsabilidad del programador liberar la

memoria heap cuando ya no hay más referencias a
ella.

 Otros lenguajes OO utilizan un

recolector automático de basura (garbage
collector): Java, C#, SmallTalk, Clos,…

 Este recolector automático es más costoso (usa tiempo
de ejecución) (menor eficiencia) pero da lugar a código
más flexible al evitar:

 Quedarse sin memoria al olvidar liberarla.
 Que el programador intente usar memoria después de que

haya sido liberada.

 Que el programador intente liberar la misma memoria más

de una vez.

14

Indice

 Clases
 Objetos
 Atributos
 Operaciones
 UML y el diagrama de clases
 Constructores y destructores
 Propiedades constantes y de clase en C++
 Relaciones entre objetos
 Diseño O.O.

15

Atributos
Definición
 Atributos (datos miembro o variables de

instancia)
 Porción de información que un objeto posee o

conoce de sí mismo.

 Nombre + tipo de dato (primitivos o abstractos)

 Tienen asociada una visibilidad

 + Pública
 # Protegida (herencia)
 - Privada (encapsulación)
 ~ De paquete (en Java)

16

Atributos
Definición
 Algunos lenguajes de programación (e.g. Delphi, C#) definen un concepto
especial, al que denominan de manera genérica propiedad ya que es una
combinación de atributo+ operaciones de lectura/escritura sobre ese
atributo.



¡Ojo! No confundir con el concepto genérico de propiedad en UML,
que hace referencia al conjunto de atributos+operaciones+roles
de la clase

 Este concepto se manipula sintácticamente como un dato, pero opera

internamente como un método: permite generación automática de
setters/getters.

 P. ej. Delphi
type

TPlayingCard=class (TObject)

public
...

property palo: Palo read valorPalo write valorPalo;
property numero: int read valorNum;

private

valorPalo: Palo;
valorNum: Integer;

end;

¿Cómo consigo que una
propiedad sea de sólo

lectura en C++?

17

Atributos
Tipos de Atributo

 Constantes/Variables

 Constante: Una casa se crea con un número determinado de

habitaciones (característica estable):

 const int numHab;

 Variable: Una persona puede variar su sueldo a lo largo de su vida:

 int sueldo;

 De instancia/De clase

 De instancia: atributos o características de los objetos representados

por la clase

 Se guarda espacio para una copia de él por cada objeto creado
 int nombre;

 De clase: características de una clase comunes a todos los objetos de

dicha clase:

 static int numEmpleados; // de la clase Empleado

18

Atributos
Atributos de clase
 Atributos de clase (estáticos): Implican una sola zona de memoria
reservada para todos los objetos de la clase, y no una copia por objeto,
como sucede con las variables de instancia.
 Las variables de clase se diferencian de las variables globales en que

permiten preservar la encapsulación.

 Sirven para:

 Almacenar características comunes (constantes) a todos los objetos

 Número de ejes de un coche
 Número de patas de una araña

 Almacenar características que dependen de todos los objetos

 Número de estudiantes en la universidad
 Se puede utilizar c
  • Links de descarga
http://lwp-l.com/pdf4586

Comentarios de: Tema 2 - Fundamentos de la programación orientada a objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad