ELO-329: Diseño y Programación Orientados a Objetos 1 Conceptos ELO329: Diseño y Programación Orientados a Objetos.

Slides:



Advertisements
Presentaciones similares
MODELOS ORIENTADOS A OBJETOS
Advertisements

Definición de Clases y Variables de referencia.
PROGRAMACION ORIENTADA A OBJETOS
UML para programadores Java
1 Pensando OO ELO329: Diseño y programación orientados a objetos Agustín J. González 1s09.
Arquitectura CLARO-TECNOTREE
Introducción a la Orientación a Objetos
Programación Orientada a Objetos (P.O.O.)
El proceso de desarrollo de software
Estructuras de datos y algoritmos
1 Pensando Orientado a Objetos Agustín J. González ELO-329: Diseño y Programación Orientados a Objetos 1er. Sem
Tipo de Dato Abstracto Tipos de datos:
CONCEPTOS Y PRINCIPIOS ORIENTADOS A OBJETOS
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
Programación 1 Introducción
Aplicación del paradigma orientado a objetos
DESCRIPCION DEL PROBLEMA
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
METODOLOGIA DE LA PROGRAMACION
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
PROGRAMACIÓN ORIENTADA A OBJETOS
Fundamentos de Programación
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Introducción a la programación Orientada a objetos
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Semana 5 Subprogramas..
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
PROGRAMACIÓN ORIETADA A OBJETOS
Ingeniería de Software
Fundamentos de Programación
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
1 Diseño Orientado a Objetos Agustín J. González ELO-329: Diseño y Programación Orientados a Objetos 1er. Sem
Herramientas de polimorfismo y herencia en C++
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
Programación orientada a objetos. La programación orientada a objetos es un conjunto de normas, que se basan en la idea de construir un software de forma.
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Programación Orientada a Objetos (P.O.O.)
Facultad de Ingeniería
Programación orientada a objetos
Herencia y Clases Abstractas
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Ing. Esp. Ricardo Cujar. Programación Orientada a Objetos  Modelo de desarrollo de software.  Modo de pensar del hombre y no de la máquina.  Abstracción.
DIAGRAMA DE CLASES.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Programación Orientada a Objetos: CLASES Y OBJETOS
Programación Orientada Objetos
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
La Programación Orientado a Objetos
Fundamentos de Ingeniería de Software
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Prof. Manuel B. Sánchez. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
PARADIGMA viene del Griego Paradeima = Modelo. Un paradigma es el resultado de los usos, y costumbres, de creencias establecidas de verdades a medias,
:: Prof. Yeniffer Peña Introducción a JAVA Presentación Programación I.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar los.
PROGRAMACION ORIENTADA A OBJETOS
ELO-329: Diseño y Programación Orientados a Objetos1 Conceptos ELO329: Diseño y Programación Orientados a Objetos.
ELO329: Diseño y Programación Orientados a Objetos
Conceptos ELO329: Diseño y Programación Orientados a Objetos
Conceptos ELO329: Diseño y Programación Orientados a Objetos
Transcripción de la presentación:

ELO-329: Diseño y Programación Orientados a Objetos 1 Conceptos ELO329: Diseño y Programación Orientados a Objetos

ELO-329: Diseño y Programación Orientados a Objetos 2 Paradigmas de Programación Historia: – Los computadores parten cableados por hardware, – Luego se introduce la programación en binario, – Se desarrolla el lenguaje assembler – Se desarrollan los lenguajes de alto nivel siguiendo dos paradigmas: Programación imperativa: donde la computación es descrita vía sentencias que cambian el estado del programa. Es una secuencia de comandos para el computador. El programa señala cómo se llega a la solución. Ej. C, Pascal. Programación declarativa: la computación es descrita según su lógica sin indicar su control de flujo. Se indica qué debe hacerse no el cómo debe hacerse. Ej. HTML, CSS, las fórmulas en planillas electrónicas; de alguna manera Makefile.

ELO-329: Diseño y Programación Orientados a Objetos 3 Programación Imperativa Parte con la Programación por Procedimientos (Procedural Programming) donde la computación es descrita con el apoyo de llamados a procedimientos o funciones. Como antes el programador debe encontrar la secuencia de instrucciones que resuelven la tarea, pero ahora hace uso de procedimientos para mejorar la estructura y claridad del programa. Se dice que el lenguaje es estructurado (sin go-to). Luego evoluciona a la Programación Orientada a Objetos: El programador debe encontrar objetos; es decir, entidades que tienen comportamiento, estado y pueden interactuar con otros objetos. La computación se describe como la interacción de estos objetos. Representa un intento por hacer los programas más cercanos a la forma como pensamos y nos relacionamos con el mundo. Este enfoque permite programas más naturales, más simples de construir bien y de entender.

ELO-329: Diseño y Programación Orientados a Objetos 4 Paradigmas de Programación Programación Imperativa Programación Declarativa Programación Procedural Programación Orientada a Objetos

ELO-329: Diseño y Programación Orientados a Objetos 5 Programación Orientada a Objetos A partir del problema el programador identifica los objetos del mundo real que intervienen en el problema. En el programa se crean objetos de software que modelan lo relevante de esos objetos reales del problema. Además se crean objetos sintéticos (artificiales) que sean necesarios para estructurar una solución coherente y natural.

ELO-329: Diseño y Programación Orientados a Objetos 6 Objetos de Software Los objetos de software modelan dos aspectos de los objetos o entes reales: su estado y su comportamiento. Luego todo objeto de software tendrá estado y un comportamiento. Además todo objeto de software tendrá un identificador o nombre para poder referirnos a él. Similar ocurre en C con: – integer i;  integer nos da una pista sobre qué cosas podemos hacer con i.  Si i=20, entonces podemos decir que su estado es 20.  i es un nombre necesario para diferenciarlo de otros enteros.

ELO-329: Diseño y Programación Orientados a Objetos 7 Objetos de software Estado Comportamiento, Servicios: Cosas que el objeto puede hacer Salvo excepciones, la interacción con el objeto sólo debería ser vía los servicios de cada objeto 22 años

ELO-329: Diseño y Programación Orientados a Objetos 8 Ejemplo de Objeto Un punto del espacio R 2 Según nuestro problema podemos representar un punto de varias formas: coordenadas cartesianas, polares, etc. Es así como podemos almacenar el estado de un punto como dos reales x e y, o dos reales r, ө. Independientemente de la forma como representemos un punto, nos puede interesar conocer: – El ángulo que forma el rayo del origen hasta el punto con el eje de abscisas. – Su distancia al origen. – Su distancia a otro punto, etc.

ELO-329: Diseño y Programación Orientados a Objetos 9 Un Punto en Java Una vez hecha la descripción para un punto, en java podríamos hacer cosas así: Punto p = new Punto(); Con esto creamos un punto y tenemos un identificador o nombre p para referirnos a él. Su estado inicial es definido junto con su creación. Ya lo veremos. Luego podríamos hacer cosas del tipo: – p.x() /* para obtener su coordenada x */ – p.distancia() /* distancia al origen del punto p*/ – p.distancia(p2) /* distancia entre p y otro punto p2 */

ELO-329: Diseño y Programación Orientados a Objetos 10 Clases Cada objeto es único, pero generalmente hay varios del mismo tipo. Hay varios puntos; por ejemplo. Cuando modelamos la realidad, lo hacemos reconociendo los objetos que comparten sus características. Por ejemplo: En un sistema podemos tener varios estanques, pero todos siguen el mismo patrón de comportamiento. Las clases definen las características abstractas de los objetos. Son el “rayado de la cancha” para una categoría de objetos. Tendremos tantas clases como tipos de objetos distintos reconozcamos en nuestro problema.

ELO-329: Diseño y Programación Orientados a Objetos 11 Clases Una clase debe definir todos los comportamientos y los atributos (para almacenar el estado) de ese tipo de objetos. El comportamiento, servicios o mensajes que puede exhibir, ofrecer o recibir un objeto, lo expresamos como funciones en el sentido clásico de los lenguajes. Para diferenciarlos, en OO se les llama métodos. Así cada objeto posee atributos y métodos que son definidos en la clase a la cual él pertenece.

ELO-329: Diseño y Programación Orientados a Objetos 12 Ejemplo de Clase en Java class Punto // nombre de la clase { private int x,y; // atributos para almacenar el estado public Punto(){ // método para definir estado inicial, al momento de ser creado x=y=0; // este tipo de método lo llamamos constructor. } public Punto(int _x, int _y){ // otro constructor x=_x; y=_y; } public int getX(){ return x; } public int getY(){ return y; } public boolean equals(Punto p){ if (p== null) return false; return ((x==p.getX()) && (y==p.getY())); }

ELO-329: Diseño y Programación Orientados a Objetos 13 Jerarquías de clases Es común que los objetos del mundo real estén relacionados de la forma “es un”. Al ver la definición de casi cualquier cosa notamos: – Mesa: es un mueble que se compone de … – Chileno: es una persona natural de Chile.... Luego es natural identificar jerarquías donde una clase comparte características comunes con otra clase y además posee alguna otra peculiaridad. Mesa Muebles

ELO-329: Diseño y Programación Orientados a Objetos 14 Jerarquías de Clases: Herencia Los Lenguajes Orientados a Objetos permiten definir clases a partir de clases ya definidas. El hecho que el conocimiento de una categoría más general es también aplicable a una categoría específica se conoce como Herencia. Decimos que la clase Mesa hereda los atributos de la clase Mueble, y ésta hereda de la clase Objeto_inanimado según el problema.... Se establece así una Jerarquía de clases.

ELO-329: Diseño y Programación Orientados a Objetos 15 Ejemplo: Jerarquías de Clases Objeto Material AnimalPlanta Mamífero Perro Humano VendedorIngeniero Florista Marta (mi florista)Pluto Flor Flores de mi abuelita Clavel Ingeniero Electrónico AgustínInstancias u Objetos Clases

ELO-329: Diseño y Programación Orientados a Objetos 16 Vocabulario Así como Agustín es un caso específico de la abstracción o clase Persona, podemos decir que Agustín es un ejemplo o instancia de persona. En OO decimos que los objetos son instancias de una clase. Al crear una instancia de un clase, creamos un objeto. Herencia: Manera de crear nuevas clases a partir de clases ya creadas. Así reusamos el trabajo hecho previamente.

ELO-329: Diseño y Programación Orientados a Objetos 17 Subtipos Cuando una clase hereda de otra, hablamos de clase base o padre y la otra es clases heredada o hija Es interesante ver que si en alguna situación requerimos un mueble, si tenemos una mesa estaríamos bien. Por ejemplo, si queremos bloquear una puerta, podemos usar un mueble; si tenemos una mesa cerca, ésta puede hacer el trabajo. Subtipo es el uso un objeto en lugar de uno de jerarquía mayor. Mesa es subtipo de Mueble. Mueble Mesa Clase Base o Padre Clase hija o heredada

ELO-329: Diseño y Programación Orientados a Objetos 18 Subtipo Ejemplo: En la USM hay estudiantes, éstos son personas. Además hay estudiantes de Ing. Civil Electrónica, Telemática etc. Podemos identificar varias clases: Persona, Estudiante, EstudianteTelemática, EstudianteElectrónica. Los Lenguajes OO permiten que si en un método se debe poner una instancia de Persona como argumento, también es válido poner una instancia de Estudiante o una de EstudianteElectrónica. Esto es posible gracias a que los lenguajes OO permiten sustituir una instancia por otra proveniente de un subtipo.

ELO-329: Diseño y Programación Orientados a Objetos 19 Polimorfismo RAE: Cualidad de lo que tiene o puede tener distintas formas En OO esto ocurre de varias maneras. La idea básica es usar el mismo nombre para referirse a cosas similares. Supongamos la clase Stack: ¿Por qué debería darle un nombre distinto al método push cuando insertamos un real -float- o insertamos un carácter -char? Cuando un estudiante ocupa el lugar de una persona (por subtipo), también decimos que hay polimorfismo. El estudiante es también persona (dos formas). Hay otras formas de polimorfismo que verán más adelante.

ELO-329: Diseño y Programación Orientados a Objetos 20 Características de los POO Los lenguajes OO se caracterizan por: – Permiten expresar herencia: habilidad de reusar la definición de un tipo de objeto para definir otro tipo de objeto. – Subtipos: Si un objeto a tiene todo lo requerido por otro objeto b, entonces podemos usar a donde se esperaba b. – Permiten expresar abstracción: esto es los detalles de una implementación pueden ocultarse en el programa. Para usar una clase no necesitamos conocer cómo está implementada. La implementación de una clase es el código de sus métodos y los atributos que tiene. – Ligado dinámico: Cuando un método es invocado en un objeto, el código ejecutado (método) es determinado en tiempo de ejecución según el objeto que lo recibe. Esto conduce a que una misma invocación puede responder de manera distinta.

ELO-329: Diseño y Programación Orientados a Objetos 21 Diseño/Implementación Orientado a Objetos El Diseño OO involucra identificar los conceptos importantes de la solución y usar objetos para estructurar la manera cómo esos conceptos son reflejados en un sistema de software. Se trata de modelar el sistema como la interacción de objetos inter-actuantes. Involucra: – Identificar los objetos a un nivel de abstracción dado. – Identificar la semántica (comportamiento) de esos objetos. – Identificar la relación entre los objetos. – Implementar los objetos Es un proceso Iterativo