objeto Tema 2 Prof. Domingo Hernndez Tpicos del Da Introduccin al diseo orientado por objeto Qu es la orientacin por objeto Diferencias entre la programacin convencional y la programacin orientada por objetos Conceptos bsicos Introduccin al diseo orientado por objetos El diseo orientado por objetos (DOO), como otras metodologa de diseos orientados a la informacin crean una representacin del dominio del problema en el mundo real y lo transforma en un dominio de soluciones que es el software. Introduccin al diseo OxO A diferencia de otros mtodos, el DOO da como resultado un diseo el cual interconexiona los objetos de datos (elementos de datos) y las operaciones de procesamiento, de forma tal que encapsula la informacin y el procesamiento.
Este encapsulamiento es el paradigma fundamental de la orientacin por objetos.
Modelo de una tarea tpica de programacin Espacio del mundo real Objetos reales y actividades Objetos abstractos y operaciones en lenguaje de programacin Objeto reales (cambio de estado) Datos e informacin Problema Modelo Programa Algor tmo Resultado Usuario Representar mediante abstraccin Programador Algor tmo del mundo real Resultado Espacio del programa Interpreta Diseo Orientado por objeto La naturaleza nica del diseo orientado por objetos se debe a su habilidad para construir basndose en tres conceptos importantes del diseo del software:
Abstraccin. Ocultamiento de la informacin. Modularidad. Qu es la orientacin por objeto El trmino "orientacin por objeto" significa que organizaremos el software como una coleccin de objetos discretos que incorporan tanto estructuras de datos como procedimientos. Esto contrasta con la programacin convencional, en la cual las estructura de datos y el comportamiento estn 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: anlisis, diseo e implantacin.
Diferencia entre la programacin convencional Procedimiento 1 Procedimiento 3 Procedimiento 2 Dato 1 Dato 3 Dato 2 Dato 4 M1 M3 M4 M2 DATO 1 M1 M3 M4 M2 DATO 3 M1 M3 M4 M2 DATO 2 INVOCA 3 INVOCA 4 INVOCA 1 Fig. 2 Sistema convencional Fig.3 Sistema Orientado por objeto
Constructos bsicos de la programacin OxO Objeto. Identidad del objeto. Clase. Mtodos. Polimorfismo. Herencia Encadenamiento dinmico. Conceptos bsicos sobre la Orientacin por Objetos Qu es un Objeto ? Un objeto es una entidad fsica o abstracta que tiene un comportamiento antes ciertos estmulos, tanto externos como de otros objetos especficos que se encuentran dentro del sistema.
Conceptos bsicos de la OxO Qu se puede considerar como objeto ? -Persona -Equipo Hardware -Materiales -Informacin -Software -Procesos -Procedimientos
Conceptos bsicos de OxO Objeto Fsico:Horno Operaciones asociadas: Encendido/Apagado/Cargado/Descargad o. Objeto Abstracto:Cola Operaciones: Agregar/Eliminar/Verificar vaca/ Verificar si llena/Primero cola/Siguiente cola/ Conceptos bsicos de OxO Identidad de un objeto Cada objeto tiene su propia identidad que lo distingue de los dems objetos. En otras palabras, dos objetos distintos no son iguales aunque todos los valores de sus atributos sean idnticos. Conceptos bsico de la OxO Componentes para la construccin de Software de un objeto. Cuando un objeto se transforma en una realizacin de software, consta de una interfaz, una estructura de datos privada y unos procesos llamados operaciones o mtodos que son los nicos que pueden transformar legtimamente la estructura de datos. Conceptos bsicos de la OxO
Diccionario ( ) Archivo Indizado Aadir palabra Suprimir palabra Encontrar palabra . . . Interfase Estructura de dato Operaciones Objeto del mundo real
Representacin abstracta de un objeto Conceptos bsicos de la OxO Tipos de objetos 1.- Objetos reales 1.1 Objeto fsico: Son objetos extremamente perceptibles ejemplo(vista, olfato,gusto,odo) 1.2 Objetos psquicos: Son internamente perceptibles. Ejemplo: dolor, sentimiento, imgenes. 2.- Objeto ideales no son perceptibles. 2.1 Relaciones o asociaciones entre objetos 2.2 Pensamientos 2.3 Matemticos, lgicos semitico Conceptos bsicos de la OxO Clasificacin: El proceso de clasificacin es el enfoque central de la orientacin por objeto y concierne a la agrupacin de objetos con propiedades (estructuras de datos o atributos) y comportamiento (operaciones) similares dentro de una clase. Una clase es la abstraccin que describe propiedades importantes para una aplicacin.
Conceptos Bsicos de la OxO Los objetos que pertenecen a una clase se describen colectivamente por la definicin de una clase, esto significa que en lugar de describir los objetos individuales la orientacin por objeto concentra en un patrn tanto el estado como el comportamiento que es comn a todos los objetos de la clase.
Esta clase de estructura que abarca tantos propiedades como comportamiento es la unidad natural de la abstraccin en los sistemas de orientacin por objeto y puede ser utilizarse para modelar tanto entidades objetos como relaciones entre los objetos.
Conceptos Bsicos 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 instanciacin es lo inverso a la clasificacin y concierne a la generacin de los distintos objetos de una clase. La distincin entre una clase y sus instancias es similar a la distincin entre una definicin de tipo y la declaracin de una variable en un lenguaje de programacin convencional. Sin embargo, la mayora de los sistemas orientados por objeto crean dinmicamente instancias por envo de mensajes "Nuevo" y "Crear" una clase.
Conceptos bsicos de la OxO Type Tipo_opcion(Piscina,Sauna,Tennis,Golf); Class Hotel Propiedades Nombre: Cadena; Direccin: Cadena; Dueo: Compaia; Director: Persona; Facilidades: Set (Tipos_opcion): Operaciones Create (); Reserva_hab(Habitacin:integer; Huesped:Person, Fecha_llegada, Fecha_partida:Tipo_fecha) end Hotel.
Conceptos bsicos de la OxO Class Compaa Propiedades Nombre, Oficina_central, Telfono: Cadena; ......... Operaciones .......... end Compaia. Class Persona Propiedades Nombre, Direccin, Telfono: Cadena; ......... Operaciones .......... end Persona.
Conceptos Bsicos de la OxO
La Pedregosa Av.Losprocer es I nstancia de Compaia I nstancia de Persona
Piscina,Sauna, Golf
I nstancia Compaa Nombr e
Oficina_general Telfono Turisol Mr ida 22454 I nstancia Per sona Direccin Pedr o perez Calle 22 entre Av.2 y 3 I nstancia de Hotel Direccin Nombr e Dueo Gerente Facilidades Nombr e Fig.5 Ejemplo de la clase Hotel Conceptos bsicos de la OxO Aplicando abstraccin Atributos
Tamao del marco Tamao de la rueda Material Engranaje Material
Operaciones
Pasos Reparar Cambio de posicin Conceptos bsicos de la OxO Aplicando abstraccin Objetos polgonos Clase polgono
Atributos Vrtices Color del borde Color de relleno
Operaciones
Dibujar Borrar Mover
Conceptos bsicos de la OxO Notacin para representar una clase. Una clase se representa por una caja la cual puede tener 3 regiones. La primera regin contiene el nombre de la clase. La segunda regin 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 regin contiene los nombres de las operaciones. Cada nombre de operacin 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 bsicos de la OxO Nombre de la clase
Nombre_atributo1: tipo dato1= valor defecto1 Nombre_atributo2: tipo dato2= valor defecto2 . . .
Nombre_operacin1(lista de argumento):tipo_resultado1 Nombre_operacin2 (lista de argumento):tipo_resultado2 . . .
Conceptos bsicos de la OxO Cmo se implanta una clase en C++ Class Nombre de la clase { Miembros datos; Miembros mtodos; }; Conceptos Bsicos class persona { // Mienbros Datos o Estructura de datos de la clase char nombre[15],apellido[15],cedula[15]; // Miembros Funcin o Mtodos 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 Bsicos class persona { // Mienbros Datos o Estructura de datos de la clase char *nombre,*apellido,*cedula; // Miembros Funcin o Mtodos 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 bsicos de la OxO Operaciones mtodos Una operacin es una funcin o transformacin que puede ser aplicada sobre los objetos en una clase. Por ejemplo: abrir, cerrar, ocultar, desplegar, son operaciones sobre una clase ventana. Cada operacin tiene un objeto destino con un argumento implcito. El comportamiento de la operacin depende de la clase destino. Conceptos bsicos de la OxO Cmo se declara una funcin miembro de la clase ? (menos los constructores y destructores) Tipo que devuelve nombre de la clase : : nombre del mtodo (Lista de parmetros ) { cuerpo de la funcin o mtodo }; Los : : son conocidos como el alcance del operador resolucin, lo que indica al compilador donde comienza la funcin. Conceptos bsicos 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 bsicos de la OxO
void persona::asigna_nombre(char *nomb_nuevo){ strcpy(nombre=new char [strlen(nomb_nuevo)+1],nomb); } Conceptos bsicos de la OxO persona::~persona(){ delete [] nombre; delete [] apellido; delete [] cedula; delete [] sexo; delete [] direccion; } Conceptos bsicos de la OxO Cmo se invoca un mtodo sobre un objeto?
Nombre del objeto.Nombre del mtodo(lista de parmetros); Conceptos bsicos de la OxO Polimorfismo Polimorfismo significa que la misma operacin puede comportarse diferentemente sobre distintas clases. Por ejemplo, la operacin "mover" ejemplo puede comportarse diferentemente sobre una clase llamada Ventana y una clase llamada Piezas_ajedrez. Conceptos bsicos de la OxO Clasificacin de Polimorfismo
Universal Ad Hoc Paramtrico Inclusin Overloading Coercin Polimorfismo Conceptos bsicos de la OxO Polimorfismo Paramtrico: Se obtiene cuando una funcin trabaja uniformemente sobre un rango de tipos; esos tipos normalmente exhiben una estructura comn y puede comportarse de manera distinta para cada tipo. Polimorfismo de Inclusin: 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 bsicos 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 funcin se debera ejecutar para una invocacin particular del nombre.
Conceptos bsicos de la OxO
Polimorfismo por Coercin: Es una operacin semntica que convierte argumentos a los tipos esperado por una funcin, en una situacin que de otra forma resultara en un tipo de error. La coercin puede estar dada estticamente, insertndose automticamente entre argumentos y funciones a tiempo de compilacin o pueden tener que determinarse dinmicamente, con pruebas a tiempos de ejecucin sobre los argumentos.
Conceptos bsicos de la OxO Herencia La herencia consiste en el compartir atributos y mtodos entre clases basndose en una relacin jerrquica. Una clase puede definirse ampliamente y redefinirse sucesivamente en subclases ms refinadas. Cada subclase que se incorpora, hereda todas las propiedades de su superclase y adiciona sus propias y nicas propiedades. Conceptos bsicos de la OxO Elementos capaces de ser heredados Herencia Estructural. Herencia de Comportamiento ( herencia de mtodos). Conceptos bsicos de la OxO Nombre Persona Empleado Estudiante Secretar a Director Ao de experiencia Idiomas Dependencia Cargo Denominacin Carrera Edad Direccin Sexo Profesin Dependencia Conceptos bsicos de la OxO Tipos de Herencia:
Simple.
Mltiple Conceptos bsicos de la OxO Nombre Persona Empleado Estudiante Secretar a Director Ao de experiencia Idiomas Dependencia Cargo Denominacin Carrera Edad Direccin Sexo Profesin Dependencia Conceptos bsicos de la OxO Definicin de Herencia Mltiple: Una clase puede heredar rasgos de ms de una superclase. Una clase con ms de una superclase es llamada clase junta. Un rasgo de una clase ancestro que se encuentra ms de una vez a lo largo de una ruta solo se hereda una vez. Conceptos bsicos de la OxO Vehculos Vehculos Terrestres Vehculos Acuticos Carros Vehculos Anfibios Bote Conceptos bsicos de la OxO Encadenamiento Dinmico: Una de las ventajas que promueve el estilo de programacin orientada por objeto es la caracterstica del encadenamiento dinmico, tambin llamado encadenamiento tardo. En efecto, no se tendran sistemas orientados por objeto sin esa poderosa capacidad. Simplemente, la declaracin encadenamiento dinmico significa que el sistema encadenar una rutina a un selector para un mtodo particular que est implantado sobre un objeto clase.