Programación Orietada A Objetos
Programación Orietada A Objetos
Programación Orietada A Objetos
OBJETOS
2
Introducción
Nuevo Paradigma:
Programación Orientada a Objetos (POO)
Origen
Objeto
Clase
Método
Evento
Mensaje
Propiedad o atributo
Componentes de un objeto
Representación de un objeto
Características de la POO
Abstracción
Encapsulamiento
Principio de ocultación
Polimorfismo
Herencia
Que es un paradigma ?
Paradigma: Modo de Pensar expresado en
breve (Un punto de vista personal, una
metáfora, un esquema-mental, una visión del
Mundo o cosmovisión)
Por ejemplo: ¿Cómo pensaba la gente que era
la Tierra antes de 1492?
Etimología
atributos,
identidad,
relaciones
y métodos.
Representación de un objeto
Dato 2
Dato 1
Procedimiento
2
Procedimiento
Dato 4
1
Procedimiento
Dato 3 3
Fig. 2 Sistema convencional
M1
M3
M1
INVOCA 1
M4 DATO 1M2
M3
M1
M4 DATO 3M2
INVOCA 3
M3
Programación Procedimental
Procedimiento 1
D
A
Procedimiento 2 T
O
S
Procedimiento 3
32
DATOS DATOS
Métodos Métodos
DATOS DATOS
Métodos Métodos
33
POO
POO
La visión de Objetos:
Mesas
Sillas
Computadores
Autos
Cuentas bancarias
Partidos de fútbol
Perros, etc
35
POO
METODOLOGÍA
37
Modelamiento
Los problemas
Modelar que se desea
resolver
con base en
Relevantes y
Entidades tangibles en el
problema
38
Abstracción
Ejemplo
Alumnos Profesores
Administr. Docente
Salas
Asignaturas
40
POO
Conceptos de la POO
Clase
Clase
Instancias-Objetos
Instancias-Objetos
EJEMPLO:
Suponer que existe la clase Vehículo
Atributos
Marca
Año
Color
Patente, etc.
47
Métodos
Principios de la POO
Encapsulamiento
Herencia
Polimorfismo
49
ENCAPSULAMIENTO
Abstracción de Datos
50
Encapsulamiento
Encapsulamiento
Encapsulamiento
Métodos:
Depositar
Girar
Conocer el saldo
53
HERENCIA
Organización jerárquica
Herencia
La herencia consiste en el compartir atributos y
métodos entre clases basándose en una relación
jerárquica.
Una clase puede definirse ampliamente y redefinirse
sucesivamente en subclases más refinadas.
Cada subclase que se incorpora, hereda todas las
propiedades de su superclase y adiciona sus propias
y únicas propiedades.
Elementos capaces de ser heredados
Herencia Estructural.
Herencia de Comportamiento ( herencia de
métodos).
Nombre
Persona Edad
Dirección
Sexo
Cargo
Profesión
Director
Simple.
Múltiple
Nombre
Persona Edad
Dirección
Sexo
Cargo
Profesión
Director
Vehículos
Carros Bote
Anfibios
Encadenamiento Dinámico:
Una de las ventajas que promueve el estilo de
programación orientada por objeto es la
característica del encadenamiento dinámico,
también llamado encadenamiento tardío. En efecto,
no se tendrían sistemas orientados por objeto sin esa
poderosa capacidad.
Simplemente, la declaración encadenamiento
dinámico significa que el sistema encadenará una
rutina a un selector para un método particular que
está implantado sobre un objeto clase.
62
La Herencia
Herencia
P ersona
N o m b re
D irec c ió n
RUT
POLIMORFISMO
Polimorfismo
Paramétrico
Universal Inclusión
Polimorfismo
Ad Hoc Overloading
Coerción
Polimorfismo Paramétrico: Se obtiene cuando una
función trabaja uniformemente sobre un rango de
tipos; esos tipos normalmente exhiben una
estructura común y puede comportarse de manera
distinta para cada tipo.
Polimorfismo de Inclusión: Es un polimorfismo
utilizado por modelos de subtipos y herencia. En
este tipo de polimorfismo un objeto puede
pertenecer a clases diferentes que no necesariamente
son disjuntas.
Polimorfismo por Overloading: En este caso el
mismo nombre se utiliza para denotar diferentes
funciones, y el contexto se utiliza para decidir cual
función se debería ejecutar para una invocación
particular del nombre.
Polimorfismo por Coerción: Es una operación
semántica que convierte argumentos a los tipos
esperado por una función, en una situación que de
otra forma resultaría en un tipo de error. La
coerción puede estar dada estáticamente,
insertándose automáticamente entre argumentos y
funciones a tiempo de compilación o pueden tener
que determinarse dinámicamente, con pruebas a
tiempos de ejecución sobre los argumentos.
70
Polimorfismo
Polimorfismo
Ejemplo 1:
Polimorfismo
Ejemplo 2:
MENSAJE
OBJETOS RESULTADOS
Sucesor
'A' 'B'
3 4
OBJETOS
Conceptos básicos sobre la
Orientación por Objetos
¿ Qué es un Objeto ?
Un objeto es una entidad física o abstracta que tiene
un comportamiento antes ciertos estímulos, tanto
externos como de otros objetos específicos que se
encuentran dentro del sistema.
Conceptos básicos de la OxO
Objeto Físico:Horno
Operaciones asociadas:
Encendido/Apagado/Cargado/Descargado.
Objeto Abstracto:Cola
Operaciones: Agregar/Eliminar/
Verificar vacía/
Verificar si llena/Primero cola/Siguiente cola/
Conceptos básicos de OxO
Identidad de un objeto
Cada objeto tiene su propia identidad que lo
distingue de los demás objetos. En otras palabras,
dos objetos distintos no son iguales aunque todos
los valores de sus atributos sean idénticos.
Conceptos básico de la OxO
D ic c io n a r io ( ) In te rfa s e
A r c h iv o In d iz a d o E s tr u c tu r a d e d a to
O b je t o d e l m u n d o
re a l A ñ a d ir p a la b r a
S u p r im ir p a la b r a O p e r a c io n e s
E n c o n tra r p a la b ra
.
.
.
Type Tipo_opcion(Piscina,Sauna,Tennis,Golf);
Class Hotel
Propiedades
Nombre: Cadena;
Dirección: Cadena;
Dueño: Compañia;
Director: Persona;
Facilidades: Set (Tipos_opcion):
Operaciones
Create ();
Reserva_hab(Habitación:integer; Huesped:Person, Fecha_llegada,
Fecha_partida:Tipo_fecha)
end Hotel.
Conceptos básicos de la OxO
Class Compañía
Propiedades
Nombre, Oficina_central, Teléfono: Cadena;
.........
Operaciones
..........
end Compañia.
Class Persona
Propiedades
Nombre, Dirección, Teléfono: Cadena;
.........
Operaciones
..........
end Persona.
Conceptos Básicos de la OxO
Instancia Compañía
Nombre Turisol
Instancia de Hotel Oficina_general Mérida
Teléfono 22454
Nombre La Pedregosa
Atributos
Pasos
Reparar
Cambio de posición
Conceptos básicos de la OxO
Clase polígono
Objetos polígonos
Atributos
Vértices
Aplicando Color del borde
abstracción Color de relleno
Operaciones
Dibujar
Borrar
Mover
89
Objetos
En la POO se dice que un objeto: "integra
datos y algoritmos"
En la programación estructurada, variables y
funciones están separadas
POO Procedural
Clase Tipo
Objeto Variable
Instanciación de objetos Declaración de variables
90
Objetos
Cada objeto es responsable de inicializarse y
destruirse en forma correcta
Un objeto consta de:
Atributos
Tiempo de vida Métodos
Estado
Comportamiento
91
Estado de un objeto
Comportamiento de un objeto
Clases
Clases
Nombre de la clase
Nombre_operación1(lista de argumento):tipo_resultado1
Nombre_operación2 (lista de argumento):tipo_resultado2
.
.
.
Conceptos básicos de la OxO
class persona {
// Mienbros Datos o Estructura de datos de la clase
char nombre[15],apellido[15],cedula[15];
// Miembros Función o Métodos de la clase
public:
void presenta_valores();
void asigna_nombre(char *nombre_nuevo);
void asigna_apellido(char *apellido_nuevo);
void asigna_cedula(char *cedula_nueva);
void cumpleano();
}; // Observe que se debe finalizar con punto y coma.
Conceptos Básicos
class persona {
// Mienbros Datos o Estructura de datos de la clase
char *nombre,*apellido,*cedula;
// Miembros Función o Métodos de la clase
public:
persona(); // Constructor de la clase
~persona(); // Destructor de la clase
void presenta_valores();
void asigna_nombre(char *nombre_nuevo);
void asigna_apellido(char *apellido_nuevo);
void asigna_cedula(char *cedula_nueva);
void cumpleano();
}; // Observe que se debe finalizar con punto y coma.
Conceptos básicos de la OxO
Operaciones ó métodos
Una operación es una función o
transformación que puede ser aplicada sobre los
objetos en una clase. Por ejemplo: abrir, cerrar,
ocultar, desplegar, son operaciones sobre una clase
ventana.
Cada operación tiene un objeto destino con
un argumento implícito. El comportamiento de la
operación depende de la clase destino.
Conceptos básicos de la OxO
¿ Cómo se declara una función miembro de la
clase ? (menos los constructores y destructores)
Tipo que devuelve nombre de la clase : : nombre del
método (Lista de parámetros ) {
cuerpo de la función o método
};
Los : : son conocidos como el alcance del operador
resolución, lo que indica al compilador donde
comienza la función.
Conceptos básicos de la OxO
persona::persona(){
strcpy(nombre=new char [30],"Domingo");
strcpy(apellido=new char [30],"Hernandez");
strcpy(cedula=new char [13],"v.-8.333.439");
strcpy(sexo=new char [13],"Masculino");
fecha_nac.set("12","03","64");
strcpy(direccion=new char [80],"Calle 32 ");
}
Conceptos básicos de la OxO
persona::persona(char *nomb,char *apell, char *ced, char *sex, char *d, char *m,
char *a, char *direcc ){
strcpy(nombre=new char [strlen(nomb)+1],nomb);
strcpy(apellido=new char [strlen(apell)+1],apell);
strcpy(cedula=new char [strlen(ced)+1],ced);
strcpy(sexo=new char [strlen(sex)+1],sex);
fecha_nac.set(d,m,a);
strcpy(direccion=new char [strlen(direcc)+1],direcc);
}
Conceptos básicos de la OxO
persona::~persona(){
delete [] nombre;
delete [] apellido;
delete [] cedula;
delete [] sexo;
delete [] direccion;
}
108
Métodos Métodos
Depositar Depositar
Girar Girar
Consultar Consultar
MENSAJES
111
Mensaje
Mensajes
Mensaje
Recepcionista
Paciente Médico
MÉTODOS
114
Métodos
Métodos
Ejemplos:
Depositar
Girar
Consultar
Cómo se invoca un método sobre
un objeto
.
Nombre del objeto Nombre del método(lista de parámetros);
RESUMEN
118
Mensajes y métodos
Clases y ejemplares
Clases y métodos
Clases y métodos
Clases y métodos
Clases y métodos