Introducción a la
programación orientada por
objeto
Prof. Barbara Briceño
Tópicos del Día
Introducción al diseño orientado por
objeto
Qué es la orientación por objeto
Diferencias entre la programación
convencional y la programación
orientada por objetos
Conceptos básicos
Introducción al diseño
orientado por objetos
El diseño orientado por objetos (DOO),
como otras metodología de diseños
orientados a la información crean una
representación
del
dominio
del
problema en el mundo real y lo
transforma en un dominio de soluciones
que es el software.
Introducción al diseño OxO
A diferencia de otros métodos, el DOO da
como resultado un diseño el cual
interconexiona los objetos de datos
(elementos de datos) y las operaciones de
procesamiento, de forma tal que encapsula la
información y el procesamiento.
Este encapsulamiento es el paradigma
fundamental de la orientación por objetos.
Modelo de una tarea típica de
programación
Espacio del mundo real
Resultado
Algorítmo del
mundo real
Objetos reales
y actividades
Problema
Modelo
Objeto reales
(cambio de estado)
Espacio del programa
Representar mediante
abstracción
Programador
Usuario
Interpreta
Programa
Objetos abstractos y
operaciones en lenguaje de
programación
Algorítmo
Datos e
información
Resultado
Diseño Orientado por objeto
La naturaleza única del diseño orientado por objetos
se debe a su habilidad para construir basándose en
tres conceptos importantes del diseño del software:
•Abstracción.
•Ocultamiento de la información.
•Modularidad.
Qué es la orientación por
objeto
El término "orientación por objeto" significa
que organizaremos el software como una
colección de objetos discretos que incorporan
tanto estructuras de datos como
procedimientos.
Esto contrasta con la programación
convencional, en la cual las estructura de
datos y el comportamiento están solo
aproximadamente conectados.
Qué es el desarrollo Orientado
por Objetos
El desarrollo orientado por objetos es
una nueva forma de pensar acerca del
software basado sobre abstracciones
que existen en el mundo real.
En este contexto, el desarrollo es
referido a la primera parte del ciclo de
vida del software: análisis, diseño e
implantación.
Diferencia entre la
programación convencional
Dato 2
Dato 1
Procedimiento
2
Dato 4
Procedimiento
1
Dato 3
Procedimiento
3
Fig. 2 Sistema convencional
M1
INVOCA 4
M4
DATO 2
M2
M3
M1
M4
DATO 1
INVOCA 1
M2
M3
M1
M4
INVOCA 3
DATO 3
M3
Fig.3 Sistema Orientado por objeto
M2
Constructos básicos de la
programación OxO
Objeto.
Identidad del objeto.
Clase.
Métodos.
Polimorfismo.
Herencia
Encadenamiento dinámico.
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
¿ Qué se puede considerar como objeto ?
-Persona
-Equipo Hardware
-Materiales
-Información
-Software
-Procesos
-Procedimientos
Conceptos básicos de OxO
Objeto Físico:Horno
Operaciones asociadas:
Encendido/Apagado/Cargado/Descargad
o.
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
Componentes para la construcción de
Software de un objeto.
Cuando un objeto se transforma en una
realización de software, consta de una
interfaz, una estructura de datos privada y
unos procesos llamados operaciones o
métodos que son los únicos que pueden
transformar legítimamente la estructura de
datos.
Conceptos básicos de la OxO
Diccionario
( )
Archivo Indizado
Objeto del mundo
real
Añadir palabra
Suprimir palabra
Encontrar palabra
.
.
.
Interfase
Estructura de dato
Operaciones
Representación abstracta de un objeto
Conceptos básicos de la OxO
Tipos de objetos
1.- Objetos reales
1.1
Objeto físico: Son objetos extremamente
perceptibles
ejemplo(vista, olfato,gusto,oído)
1.2
Objetos psíquicos: Son internamente
perceptibles. Ejemplo:
dolor, sentimiento, imágenes.
2.- Objeto ideales no son perceptibles.
2.1
Relaciones o asociaciones entre objetos
2.2
Pensamientos
2.3
Matemáticos, lógicos semiótico
Conceptos básicos de la OxO
Clasificación:
El proceso de clasificación es el enfoque
central de la orientación por objeto y
concierne a la agrupación de objetos con
propiedades (estructuras de datos o
atributos) y comportamiento (operaciones)
similares dentro de una clase.
Una clase es la abstracción que describe
propiedades importantes para una aplicación.
Conceptos Básicos de la OxO
Los objetos que pertenecen a una clase se describen
colectivamente por la definición de una clase, esto
significa que en lugar de describir los objetos
individuales la orientación por objeto concentra en un
patrón tanto el estado como el comportamiento que
es común a todos los objetos de la clase.
Esta clase de estructura que abarca tantos
propiedades como comportamiento es la unidad
natural de la abstracción en los sistemas de
orientación por objeto y puede ser utilizarse para
modelar tanto entidades objetos como relaciones
entre los objetos.
Conceptos Básicos de la OxO
Cada clase describe una posibilidad infinita de un
conjunto individual de objetos. Cada objeto que
pertenezca a una clase es llamado instancia de la
clase.
La instanciación es lo inverso a la clasificación y
concierne a la generación de los distintos objetos de
una clase. La distinción entre una clase y sus
instancias es similar a la distinción entre una
definición de tipo y la declaración de una variable en
un lenguaje de programación convencional. Sin
embargo, la mayoría de los sistemas orientados por
objeto crean dinámicamente instancias por envío de
mensajes "Nuevo" y "Crear" una clase.
Conceptos básicos de la OxO
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
Instancia de Hotel
Nombre
La Pedregosa
Dirección
Av. Los proceres
Dueño
Instancia de Compañia
Gerente
Instancia de Persona
Facilidades
Piscina, Sauna, Golf
Nombre
Oficina_general
Turisol
Mérida
Teléfono
22454
Instancia Persona
Fig. 5 Ejemplo de la clase Hotel
Nombre
Pedro perez
Dirección
Calle 22 entre
Av. 2 y 3
Conceptos básicos de la OxO
Atributos
Aplicando
abstracción
Tamaño del marco
Tamaño de la rueda
Material
Engranaje
Material
Operaciones
Pasos
Reparar
Cambio de posición
Conceptos básicos de la OxO
Clase polígono
Objetos polígonos
Aplicando
abstracción
Atributos
Vértices
Color del borde
Color de relleno
Operaciones
Dibujar
Borrar
Mover
Conceptos básicos de la OxO
Notación para representar una clase.
Una clase se representa por una caja la cual puede
tener 3 regiones.
La primera región contiene el nombre de la clase.
La segunda región contiene la lista de atributos,
cada nombre de atributo puede estar seguido por
detalles opcionales tales como tipo de atributo y
valores por defectos.
La tercera región contiene los nombres de las
operaciones. Cada nombre de operación puede ser
seguido por detalles opcionales tales como listas de
argumentos y tipos de resultados. Los atributos y
operaciones puede o no mostrarse; esto depende
del nivel de detalle deseado.
Conceptos básicos de la OxO
Nombre de la clase
Nombre_atributo1: tipo dato1= valor defecto1
Nombre_atributo2: tipo dato2= valor defecto2
.
.
.
Nombre_operación1(lista de argumento):tipo_resultado1
Nombre_operación2 (lista de argumento):tipo_resultado2
.
.
.
Conceptos básicos de la OxO
Cómo se implanta una clase en C++
Class Nombre de la clase {
Miembros datos;
Miembros métodos;
};
Conceptos Básicos
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
void persona::asigna_nombre(char *nomb_nuevo){
strcpy(nombre=new char [strlen(nomb_nuevo)+1],nomb);
}
Conceptos básicos de la OxO
persona::~persona(){
delete [] nombre;
delete [] apellido;
delete [] cedula;
delete [] sexo;
delete [] direccion;
}
Conceptos básicos de la OxO
Cómo se invoca un método sobre un
objeto?
.
Nombre del objeto Nombre del método(lista de parámetros);
Conceptos básicos de la OxO
Polimorfismo
Polimorfismo significa que la misma
operación
puede
comportarse
diferentemente sobre distintas clases.
Por ejemplo, la operación "mover"
ejemplo
puede
comportarse
diferentemente sobre una clase llamada
Ventana
y
una
clase
llamada
Piezas_ajedrez.
Conceptos básicos de la OxO
Clasificación de Polimorfismo
Universal
Paramétrico
Inclusión
Polimorfismo
Ad Hoc
Overloading
Coerción
Conceptos básicos de la OxO
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.
Conceptos básicos de la OxO
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.
Conceptos básicos de la OxO
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.
Conceptos básicos de la OxO
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.
Conceptos básicos de la OxO
Elementos capaces de ser heredados
Herencia Estructural.
Herencia de Comportamiento ( herencia
de métodos).
Conceptos básicos de la OxO
Persona
Nombre
Edad
Dirección
Sexo
Cargo
Empleado
Estudiante
Denominación
Profesión
Director
Secretaría
Año de experiencia
Dependencia
Idiomas
Dependencia
Carrera
Conceptos básicos de la OxO
Tipos de Herencia:
Simple.
Múltiple
Conceptos básicos de la OxO
Persona
Nombre
Edad
Dirección
Sexo
Cargo
Empleado
Estudiante
Denominación
Profesión
Director
Secretaría
Año de experiencia
Dependencia
Idiomas
Dependencia
Carrera
Conceptos básicos de la OxO
Definición de Herencia Múltiple: Una
clase puede heredar rasgos de más de
una superclase. Una clase con más de
una superclase es llamada clase junta.
Un rasgo de una clase ancestro que se
encuentra más de una vez a lo largo de
una ruta solo se hereda una vez.
Conceptos básicos de la OxO
Vehículos
Vehículos Terrestres
Carros
Vehículos Acuáticos
Vehículos
Anfibios
Bote
Conceptos básicos de la OxO
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.