Programacion o o

50
Introducción a la programación orientada por objeto

Transcript of Programacion o o

Page 1: Programacion o o

Introducción a la programación orientada por objeto

Page 2: Programacion o 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

Page 3: Programacion o o

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.

Page 4: Programacion o o

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.

Page 5: Programacion o o

Modelo de una tarea típica de programación

Espacio del mundo real

Objetos reales y actividades

Objetos abstractos y operaciones en lenguaje de

programación

Objeto reales (cambio de estado)

Datos e información

ProblemaModelo

Programa

Algorítmo

Resultado

Usuario Representar mediante abstracción

Programador

Algorítmo del mundo real

Resultado

Espacio del programa

Interpreta

Page 6: Programacion o o

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.

Page 7: Programacion o o

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.

Page 8: Programacion o o

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.

Page 9: Programacion o o

Diferencia entre la programación convencional

Procedimiento 1

Procedimiento 3

Procedimiento 2

Dato 1

Dato 3

Dato 2

Dato 4

M1

M3

M4 M2DATO 1

M1

M3

M4 M2DATO 3

M1

M3

M4 M2DATO 2

INVOCA 3

INVOCA 4

INVOCA 1

Fig. 2 Sistema convencional

Fig.3 Sistema Orientado por objeto

Page 10: Programacion o o

Constructos básicos de la programación OxO Objeto. Identidad del objeto. Clase. Métodos. Polimorfismo. Herencia Encadenamiento dinámico.

Page 11: Programacion o o

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.

Page 12: Programacion o o

Conceptos básicos de la OxO ¿ Qué se puede considerar como

objeto ? -Persona -Equipo Hardware -Materiales -Información -Software -Procesos -Procedimientos

Page 13: Programacion o o

Conceptos básicos de 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/

Page 14: Programacion o o

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.

Page 15: Programacion o o

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.

Page 16: Programacion o o

Conceptos básicos de la OxO

D i c c i o n a r i o ( )

A r c h i v o I n d i z a d o

A ñ a d i r p a l a b r a S u p r i m i r p a l a b r a

E n c o n t r a r p a l a b r a . . .

I n t e r f a s e

E s t r u c t u r a d e d a t o

O p e r a c i o n e s

O b je t o d e l m u n d o r e a l

Representación abstracta de un objeto

Page 17: Programacion o o

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

Page 18: Programacion o o

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.

Page 19: Programacion o o

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.

Page 20: Programacion o o

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.

Page 21: Programacion o o

Conceptos básicos de la OxO

TypeTipo_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.

Page 22: Programacion o o

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.

Page 23: Programacion o o

Conceptos Básicos de la OxO

La Pedregosa

Av. Los proceres

Instancia de Compañia

Instancia de Persona

Piscina, Sauna, Golf

Instancia Compañía

Nombre Oficina_general

Teléfono

Turisol

Mérida

22454

Instancia Persona

Dirección

Pedro perez

Calle 22 entre Av. 2 y 3

Instancia de Hotel

Dirección

Nombre

Dueño

Gerente

Facilidades

Nombre

Fig. 5 Ejemplo de la clase Hotel

Page 24: Programacion o o

Conceptos básicos de la OxO

Aplicando abstracción

Atributos Tamaño del marco Tamaño de la rueda Material Engranaje Material Operaciones Pasos Reparar Cambio de posición

Page 25: Programacion o o

Conceptos básicos de la OxO

Aplicando abstracción

Objetos polígonos

Clase polígono Atributos Vértices Color del borde Color de relleno Operaciones Dibujar Borrar Mover

Page 26: Programacion o o

Conceptos básicos de la OxONotació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.

Page 27: Programacion o o

Conceptos básicos de la OxO

Nombre de la clase

Nombre_atributo1: tipo dato1= valor defecto1Nombre_atributo2: tipo dato2= valor defecto2...

Nombre_operación1(lista de argumento):tipo_resultado1Nombre_operación2 (lista de argumento):tipo_resultado2...

Page 28: Programacion o o

Conceptos básicos de la OxO Cómo se implanta una clase en C+

+Class Nombre de la clase {

Miembros datos;Miembros métodos;

};

Page 29: Programacion o o

Conceptos Básicosclass 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.

Page 30: Programacion o o

Conceptos Básicosclass 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.

Page 31: Programacion o o

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.

Page 32: Programacion o o

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.

Page 33: Programacion o o

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 ");

}

Page 34: Programacion o o

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);

}

Page 35: Programacion o o

Conceptos básicos de la OxO

void persona::asigna_nombre(char *nomb_nuevo){

strcpy(nombre=new char [strlen(nomb_nuevo)+1],nomb);

}

Page 36: Programacion o o

Conceptos básicos de la OxO

persona::~persona(){

delete [] nombre;

delete [] apellido;

delete [] cedula;

delete [] sexo;

delete [] direccion;

}

Page 37: Programacion o o

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);

Page 38: Programacion o o

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.

Page 39: Programacion o o

Conceptos básicos de la OxO

Clasificación de Polimorfismo 

Universal

Ad Hoc

Paramétrico Inclusión

Overloading Coerción

Polimorfismo

Page 40: Programacion o o

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.

Page 41: Programacion o o

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.

Page 42: Programacion o o

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.

Page 43: Programacion o o

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.

Page 44: Programacion o o

Conceptos básicos de la OxO

Elementos capaces de ser heredados

Herencia Estructural. Herencia de Comportamiento

( herencia de métodos).

Page 45: Programacion o o

Conceptos básicos de la OxO

Nombre

Persona

Empleado Estudiante

Secretaría

Director

Año de experiencia

Idiomas

Dependencia

Cargo

DenominaciónCarrera

Edad Dirección Sexo

Profesión

Dependencia

Page 46: Programacion o o

Conceptos básicos de la OxO Tipos de Herencia:

Simple.

Múltiple

Page 47: Programacion o o

Conceptos básicos de la OxO

Nombre

Persona

Empleado Estudiante

Secretaría

Director

Año de experiencia

Idiomas

Dependencia

Cargo

DenominaciónCarrera

Edad Dirección Sexo

Profesión

Dependencia

Page 48: Programacion o o

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.

Page 49: Programacion o o

Conceptos básicos de la OxO

Vehículos

Vehículos Terrestres Vehículos Acuáticos

CarrosVehículos Anfibios

Bote

Page 50: Programacion o o

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.