Generalidades Programación Orientada a Objetos

download Generalidades Programación Orientada a Objetos

of 40

description

Historia y generalidades de la clase Programación Orientada a Objetos.

Transcript of Generalidades Programación Orientada a Objetos

Diapositiva 1

Programacin Orientada a ObjetosPOO23/04/20131POO - AIGLUnidad I: El paradigma Orientado a Objetos.1.1 Introduccin, surgimiento y desarrollo del paradigma Orientado a Objetos1.2 Clases y Objetos

1.3 Encapsulamiento

1.4 Herencia1.5 Polimorfismo

1.6 Sobrecarga de Operadores y Funciones23/04/20132POO - AIGLCrisis del Software

23/04/20133POO - AIGLCrisis del SoftwareEnglob a una serie de sucesos que se venan observando en los proyectos de desarrollo de software:Los proyectos no terminaban en plazo.Los proyectos no se ajustaban al presupuesto inicial.Baja calidad del software generado.Software que no cumpla las especificaciones.Cdigo inmantenible que dificultaba la gestin y evolucin del proyecto.

23/04/20134POO - AIGL1.1.- INTRODUCCIN, SURGIMIENTOS Y DESARROLLO DEL PARADIGMA ORIENTADO A OBJETO

Lenguaje = Idioma ArtificialLa palabra programacin se define como el proceso de creacin de un programa de computadora, mediante la aplicacin de procedimientos lgicos, a travs de los siguientes pasos:El desarrollo lgico del programa para resolver un problema en particular.Escritura de la lgica del programa empleando un lenguaje de programacin especfico (codificacin del programa).Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de mquina.Prueba y depuracin del programa.Desarrollo de la documentacin.

Qu es un paradigma de programacin?Paradigma un conjunto de teoras, estndar y mtodos que juntos representan un medio de organizacin del conocimiento: es decir un medio de visualizar el mundo.

IMPERATIVAC 1972, PASCAL

LOGICOPROLOGFUNCIONALLISPORIENTADO A OBJETOVisual NET , JAVAPARADIGMAS DE PROGRAMACION23/04/20135POO - AIGLEL PARADIGMA IMPERATIVOEste paradigma duro lo suficiente hasta que las compaas y empresas tuvieron una explosin de sus actividades y pasaron de ser locales a ser regionales y nacionales, aumentado su grado de complejidad y manejo de informacin, este se agudizo cuando las necesidades pasaron las fronteras de los pases y las empresas nacionales se trasformaron en compaas internacionales.

Programacin Imperativa, los primeros lenguajes imperativo fueron los lenguajes de mquina23/04/20136POO - AIGLEL PARADIGMA LGICO Orientado a la Inteligencia Artificial

La programacin lgica comprende dos paradigmas de programacin: la programacin declarativa y la programacin funcional. La programacin declarativa gira en torno al concepto de predicado, o relacin entre elementos. le_gusta_a(juan,maria).valioso(oro).Tiene(juan,libro).da(juan,libro,maria).

La programacin funcional se basa en el concepto de funcin (que no es ms que una evolucin de los predicados), de corte ms matemtico.

En cambio, la lgica matemtica es la manera ms sencilla, para el intelecto humano, de expresar formalmente problemas complejos y de resolverlos mediante la aplicacin de reglas, hiptesis y teoremas. De ah que el concepto de "programacin lgica" resulte atractivo en diversos campos donde la programacin tradicional es un fracaso23/04/20137POO - AIGL.EL PARADIGMA LGICO Campos de AplicacinSistemas expertos, donde un sistema de informacin imita las recomendaciones de un experto sobre algn dominio de conocimiento.

Demostracin automtica de teoremas, donde un programa genera nuevos teoremas sobre una teora existente.

Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la informacin contenida en una expresin lingstica humana.

23/04/20138POO - AIGLEl paradigma Funcional Los matemticos desde hace un buen tiempo estn resolviendo problemas usando el concepto de funcin. Una funcin convierte ciertos datos en resultadosLisp el ms antiguo a mediado de los 50Entrada ProcesoSalida23/04/20139POO - AIGLEl paradigma Funcional Los matemticos desde hace un buen tiempo estn resolviendo problemas usando el concepto de funcin. Una funcin convierte ciertos datos en resultadosLisp el ms antiguo a mediado de los 50Entrada ProcesoSalida23/04/201310POO - AIGLEl paradigma Orientado a ObjetosPodemos afirmar que el paradigma orientado a objeto reina en las metodologas actuales y pasaran varios aos para que resulte un nuevo paradigma para que la reemplace totalmente. La programacin orientada a objeto vino para quedarse y mejorar nuestras vidas.En POO, las entidades centrales son los objetos, que son tipos de datos que encapsulan con el mismo nombre estructuras de datos y las operaciones o algoritmos que manipulan esos datos.

En filosofa un objeto es aquello que puede ser observado, estudiado y aprendido.El trmino objeto tiene el mismo significado que un nombre o una frase nominal. Es una persona, lugar o cosa. Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de los objetos que pertenecen al negocio con que estamos trabajando o al problema con el que nos estamos enfrentando, y con los que podemos interactuar23/04/201311POO - AIGLObjeto del Mundo RealObjeto: Persona

Atributos: Caractersticas que lo describen (nombre, edad raza, fecha de nacimiento.)

Comportamiento: el cojunto de cosas que puede hacer un objeto, matar, llorar, trabajar caminar.

23/04/201312POO - AIGLEn sntesis los objetos conocen cosas y hacen cosasLas cosas que un objeto conoce son ___________Las cosas que hace un objetos es su ___________

Otros objetos

23/04/201313POO - AIGLlos objetos segn Shlaer, Mellor y Coad/Yourdon pueden caer dentro de las categoras:

Cosas tangibles (camin, bicicleta, batera, motor, libro)

Roles o papeles jugados o representados por personas (gerentes, operarios, usuarios cliente)

Organizaciones o instituciones (Empresas divisin, departamento, equipo)Procesos u acciones que representan un suceso (evento) u ocurrencias, tales como llamada a un servicio, juego, accin determinada, pueden ser fsica o real.

Interacciones Generalmente implican un contrato, o transaccin y relacionan dos o ms objetos del problema en cuestin

Especificaciones muestran aplicaciones o plantillas de artculos, productos industriales

Lugares oficinas, sala de estudio, aula, muelle de embarque.

Cuando hemos determinados los posibles objetos pasamos a identificar los posibles atributos y las operaciones sobre ellos

23/04/201314POO - AIGLQu clase de cosas puede ser objetos en un programa OO? La respuesta solo se limita a la imaginacin. Ejemplos tpicos:

Objetos FsicosAviones en un sistema de trafico areo.Automviles en un sistema de control de trafico terrestre.Casas.Elementos de interfaces grficos de usuarioVentanas MensObjetos grficos (cuadrados, tringulos, etc.)TecladoCuadros de dialogoRatn.AnimalesVertebradosInvertebradosPescados

Tipos de datos definidos por el usuarioDatos complejosPuntos de un sistema de coordenadas.

AlimentosCarnes FrutasPescadosVerdurasPasteles23/04/201315POO - AIGLCuando hemos determinados los posibles objetos pasamos a identificar los posibles atributos y las operaciones sobre ellos

Objeto: Empleado Atributos: NombreDireccinUbicacinNombre del departamentoNivel de estudio

Objeto: PelculaAtributos: Nombre Director Genero Duracin Color

23/04/201316POO - AIGLDentro del contexto de un Lenguaje OO (LOO), un objeto encapsula datos y los procedimientos/funciones (mtodos) que manejan esos datos. La notacin grafica varia de una metodologa a otras.

Nombre del objeto Datos

MtodosNotacin grafica Yourdon / CoadNombre AtributosMtodosNotacin Grafica OMTAtributos Datos o variables que caracterizan o describen el estado del objeto.Mtodos Procedimientos o acciones que cambian el estado de un objeto. Describen el comportamiento asociado a un objeto.23/04/201317POO - AIGLEjemplo.Coche 1 MatriculaMarcaPrecioAo compraCalcular_Precio_Actual23/04/201318POO - AIGLLas clases se organizan en las siguiente relaciones:

AbstraccinEncapsulamientoModularidad PolimorfismoLos principios bsicos orientados a objetos son:

23/04/201319POO - AIGLJerarquaLos cuatro elementos (propiedades) que ayudan a definir un objeto sonObjetos como instancia de una claseMensajeMtodosAtributosHerenciaAgregacinAsociacinUsoLas caractersticas esenciales de un objeto, sin preocuparse de las restantes caractersticas (no esenciales)

Centrado en la vista externa de un objeto, de modo que sirva para separar el comportamiento esencial de un objeto de su implementacin.

Con nfasis al Qu hace? Ms al Cmo lo hace?

Permite disponer de las caractersticas de un objeto.

Por ejemplo para un sistemas de matrcula del objeto persona podemos obtener las caractersticas nombre, edad, direccin, estado civil, etc.

si lo requerimos para el rea de biologa, dentro de sus atributos quiz tengamos, ADN, Tipo de Sangre, etc.

Abstraccin23/04/201320POO - AIGL

Modelando una fraccin, por ejemplo

La fraccin ser el objeto y tendr dos propiedades, el numerador y el denominador. Luego podra tener varios mtodos como simplificarse, sumarse con otra fraccin o nmero, restarse con otra fraccin

Abstraccin23/04/201321POO - AIGLFraccionNumeradorDenominadorSimplificar()Sumar()Restar()Permite asegurar que el contenido de la informacin de un objeto est oculta al mundo exterior: El contenido del objeto A est oculto al contenido del objeto B.

Conocida como la ocultacin de la informacin.

La encapsulacin permite la divisin de un programa en mdulos. Estos mdulos se implementan mediante clases, de forma que una clase representa la encapsulacin de una abstraccin, en la prctica esto significa que cada clase debe tener dos partes: un interfaz y una implementacin.

El interfaz de una clase captura solo su vista externa y la implementacin contiene la representacin de la abstraccin, as como los mecanismos que realizan el comportamiento deseado.

Encapsulamiento23/04/201322POO - AIGL

ocultamiento del estado, es decir, de los datos miembro, de un objeto de manera que slo se puede cambiar mediante las operaciones definidas para ese objeto.

EjemplosCuando vemos televisin no nos preocupamos del modo como ste funciona, o lo que hace para cambiar de canal o aumentar de volumen23/04/201323POO - AIGLLa encapsulacin se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dndole al programador accesoslo a lo que necesitaEsto da dos ventajas iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervencin indeseada23/04/2013POO - AIGL24

Te imaginas a tu mam que no tiene ni idea de electrnica desarme el televisor y juegue con los circuitos para cambiar manualmente?? o.O

23/04/2013POO - AIGL25La segunda ventaja es que, al hacer que la mayor parte del cdigo estoculto, puedes hacer cambios y/o mejoras sin que eso afecte el modo como los usuarios van a utilizar tu cdigo. Slo tienes que mantener igual la forma de acceder a len el caso del control de la tele, que los botones sigan siendo los mismos y que el botn de apagado no cambie el volumenEstaspuertas de accesoque das a los usuarios son lo que se conoce comointerfaz.El encapsulamiento consiste en unir en la Clase las caractersticas y comportamientos, esto es, las variables y mtodos.

Una de las premisas de POO, es que la mayora, sino todos, los atributos de un objeto deben ser privados, esto para tener seguridad sobre los valores del objeto, pero entonces...cmo acceder a los atributos de una clase?, la respuesta, encapsulamiento, los mtodos de encapsulamiento se utilizan slo cuando es apropiado entregar los datos a otro objeto que solicite la informacin.

Piensa en tus atributos, tienes nombres, apellidos, etc , todos esos atributos son privados, pero si son privados...porque la gente me llama por mi nombre? fcil, por los mtodos de encapsulamiento que permiten al objeto entregar la informacin que sea solicitada por otro objeto... Encapsulamiento23/04/201326POO - AIGLte encuentras en un Bar, a lo lejos en la penumbra vez una sombra que se acerca a tu mesa, ests slo era de esperarse porque nadie te quiere...(s ests leyendo esto es porque eres programador, los programadores no tienen amigos, eso todo el mundo lo sabe)...

Encapsulamiento23/04/201327POO - AIGL

pero la sombra se sigue acercando, cuando la reducida luz que se encuentra sobre tu persona, alcanza a iluminar ligeramente a la persona desconocida vez que es lo que estabas esperando, es la mujer ms hermosa del mundo y te tiene ganas,

ella atraves todo el bar para conocer tu atributo privado nombre, tu utilizas t mtodo de des-encapsulamiento para entregarle a la desconocida ese valor...Encapsulamiento23/04/201328POO - AIGLpfff entonces, para qu encapsulo si al final voy a entregar el valor a cualquier desconocido?.

Imagina la misma escena, slo que esta vez no es el amor de tu vida sino un ladrn que te va a hacer el paso millonario y que esta vez no est interesado en tu nombre sino en tu PIN de la tarjeta, tu se lo entregas?, NO! por eso es importante encapsular los atributos de una clase, para que los objetos slo puedan entregar los valores que sean programados por ti y no por nadie ms.Encapsulamiento23/04/201329POO - AIGL(ocultamiento de la informacin) es la idea de empacar juntas en una Unidad de programacin una coleccin de miembros de datos y sus funciones (Operaciones) bien definida.Encapsulamiento23/04/201330POO - AIGL(ocultamiento de la informacin) es la idea de empacar juntas en una Clase de programacin una coleccin de miembros de datos y sus funciones (Operaciones) bien definida.23/04/2013POO - AIGL31Existen tres niveles de acceso:pblico: funciones de toda clase pueden acceder a los datos o mtodos de una clase que se define con el nivel de accesopblico. Este es el nivel de proteccin de datos ms bajo

protegido: el acceso a los datos est restringido a las funciones de clasesheredadas, es decir, las funciones miembro de esa clase y todas lassubclases

privado: el acceso a los datos est restringido a los mtodos de esa clase en particular. Este es nivel ms alto de proteccin de datos(10)Encapsulamiento23/04/201332POO - AIGLLa Clase es, por otro lado, una encapsulacin porque constituye una cpsula o saco que encierra y amalgama de forma clara tanto los datos de que constan los objetos como los procedimientos que permiten manipularlos. Las Clases se constituyen, as, en abstracciones encapsuladasUna clase es la descripcin de un conjunto de objetos; consta de mtodos y datos que resumen caractersticas comunes de un conjunto de objetos. Una clase puede definir un numero virtualmente infinito de objetos, y cada objeto es denominado una instancia de la clase.

Por consiguiente, los objetos no son mas que instancias de una clase. Una instancia es una variable de tipo objeto. Ejemplo:

Carro AoPasajerosColor ModeloEncenderApagar23/04/201333POO - AIGLCLASESClasesUna descripcin abstracta de un conjunto de objetos, cada uno de los cuales se diferencia por su estado especfico y por la posibilidad del objeto de realizar una serie de operaciones.

Una clase en trminos coloquiales, es el plano de un objeto, es donde se deben definir todas las caractersticas de los objetos de la vida real o de objetos abstractosCLASES23/04/201334POO - AIGLLas clases son una descripcin abstracta, ideal de un grupo de objetos, cada uno de los cuales se diferencia por un estado especifico y es capaz de realizar una serie de operaciones.

1.- Carlos Meja Godoy, Katia Cardenal, Jos Manuel Espinoza pertenecen a la clase cantantes de Nicaragenses

2.- Jeff, Alejandra, Moiss, Alejandro pertenecen a la clase de Estudiantes del 2M4-Co

3.- Carlos Andrs Prez, Violeta Barrios, Bill Clinton, pertenecen a la clase Ex presidentes de Amrica

Clases23/04/201335POO - AIGL

Clases23/04/201336POO - AIGL

23/04/201337POO - AIGL

Clase: Trabajadores UNI

Es la propiedad que permite subdividir una aplicacin en partes mas pequeas (llamadas mdulos), cada una las cuales debe ser tan independiente como sea posible de la aplicacin en si y de las restantes partes.

Por su parte Brbara Liskov establece que "modularizacin consiste en dividir un programa en mdulos que pueden ser compilados de forma separada, pero que tienen conexiones con otros mdulos"2Modularidad23/04/201338POO - AIGLMtodos23/04/201339POO - AIGL Algoritmo asociado a un objeto (o Clase de objetos), cuya ejecucin se desencadena tras la recepcin de un mensaje.

Desde el punto de vista del comportamiento, es lo que el objeto puede hacer.

Un mtodo puede producir un cambio en las propiedades del objetos.

Mensajes23/04/201340POO - AIGLLos objetos de un programa interactan y se comunican entre ellos por medio de mensajesA veces el objeto que recibe el mensaje necesita ms informacin Esta informacin se pasa junto con el mensaje en forma de parmetro.Partes del mensajeEl objeto al cual se manda el mensajeEl mtodo o funcinLos parmetros que necesita ese mtodo Clase Posibles atributosPosible Comportamiento

BicicletaModeloVelocidadescolorFrenarCambiar velocidades

NaranjaDulzuraColor tipoPelarPudrirseExprimir

EdificioTemperaturaNmero de pisosNmero de habitacionesAbrirCerrarCalefaccin

EstudianteNombreDireccinNumero de CarneAo de estudioCambiar clasesMatricularGraduarInscribir materias