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
2.807 visualizaciones desde el 24 de Junio del 2017
1,0 MB
99 paginas
Creado hace 16a (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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad