Programación Orientada a Objetos INTRODUCCIÓN Y CONCEPTOS

Documentos relacionados
2.2.- Paradigmas de la POO

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

2. Conceptos básicos Abstracción La abstracción como un proceso mental natural La abstracción en el desarrollo de software

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

Repetir el proceso para cada abstracción identificada hasta que el diseño este expresado en términos sencillos

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Programación Orientada a Objetos en Java

Institución Educativa Inem Felipe Pérez de Pereira 2012 Estrategia taller. AREA: Sistemas de información Taller Previsto

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Yalù Galicia Hernàndez. Yalú Galicia Hdez. (FCC/BUAP)

QUÉ ES Y PARA QUÉ SIRVE UML? VERSIONES DEL LENGUAJE UNIFICADO DE MODELADO. TIPOS DE DIAGRAMAS. INGENIERÍA DEL SOFTWARE (DV00205D)

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Unidad VI: Supervisión y Revisión del proyecto

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Patrones de Diseño Orientados a Objetos 2 Parte

Capitulo III. Diseño del Sistema.

BASE DE DATOS RELACIONALES

Tema 5. Diseño detallado.

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

Análisis de esquemas XML [1]

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

PROGRAMACIÓN ORIENTADA A OBJETOS

Índice.

DIRECCIONAMIENTO IPv4

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

DIAGRAMA DE CLASES EN UML

Notación UML para modelado Orientado a Objetos

UML, ejemplo sencillo sobre Modelado de un Proyecto

MATERIAL 2 EXCEL 2007

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Metodología Orientada a Objetos Clave Maestría en Sistemas Computacionales

guía para LOS PADRES APOYANDO A SU HIJO EN TERCER GRADO MATEMÁTICAS

Iniciativas para el Desarrollo del Jugador Normas para partidos en cancha pequeña & Registro por año de nacimiento Preguntas Frecuentes

Curso de Java POO: Programación orientada a objetos

Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

BLOQUE 5: REALIZACIÓN DE RECADOS OFICIALES FUERA Y DENTRO DEL CENTRO

Programación orientada a objetos TEMA 1 INTRODUCCIÓN AL PARADIGMA ORIENTADO A OBJETOS POO

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Introducción al UML. Domingo Hernández H. Escuela de Ingeniería de Sistemas Departamento de computación

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Conceptos de redes. LAN (Local Area Network) WAN (Wide Area Network)

CAPÍTULO 2 ANTECEDENTES

Redes de alta velocidad. William Stallings Traducido por Horacio Goetendía Bonilla

Curso de Python Inicial

Análisis y gestión de riesgo

ANÁLISIS DE PROPUESTAS CURRICULARES. El planteamiento curricular presenta varios aspectos interesantes, como por ejemplo:

Diseño orientado a los objetos

CAPITULO 3 MOVILIDAD EN LA NAVEGACIÓN Y ALMACENAMIENTO EN BASES DE DATOS

Capitulo V Administración de memoria

ASEGURAMIENTO DE LA CALIDAD EN LABORATORIO

Informática I Notas del curso

VENTAJAS Y DESVENTAJAS DE LAS TECNOLOGIAS

Inteligencia Artificial II. Razonamiento con ontologías

TEMA 7: DIAGRAMAS EN UML

CAPITULO V PLANIFICACIÓN Y GESTIÓN DEL PROYECTO

1. Aplicación de la conmutación de circuitos y la conmutación de paquetes. 1.1 Sistema de señalización número 7 (SS7).

MANTENIMIENTO Y SOPORTE

REDES AD HOC INFORME DE REDES DE COMPUTADORES I. Felipe Muñoz Jonathan Porta Matías Contreras

AUTORES: OBREGON CARLA ROMERO MARIA MARACAIBO FEBRERO 2012

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

En este capítulo se describe las herramientas, así como los procesos involucrados en el análisis y desarrollo de sistemas de información, por otro

2.1. Introducción al lenguaje Java

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

6.8 La Arquitectura del Sistema. [Proceso]

Universidad de Cantabria

Introducción a Computación

1.2 Qué es un Sistemas de Información Geográfica?

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Sistema de Mensajería Empresarial para generación Masiva de DTE

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

DCU Diagramas de casos de uso

4 ARQUITECTURA DE COMUNICACIONES

Workflow, BPM y Java Resumen de la presentación de Tom Baeyens

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Conclusiones. Particionado Consciente de los Datos

TEMA 3: EN QUÉ CONSISTE?

CAPITULO 3 REDES HIBRIDAS-COMPLEJAS. 3.1 Descripción de la Red Híbrida Compleja (HCNN)

Unidad 9. Implementación. M.C. Martín Olguín

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

Programación Orientada a Objetos

Base de datos relacional

UNIVERSIDAD DE ORIENTE UNIVO FACULTAD DE CIENCIAS ECONÓMICAS

Procesos Críticos en el Desarrollo de Software

La vida en un mundo centrado en la red

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Figura 4.1 Clasificación de los lenguajes de bases de datos

Haciendolo realidad ENTRENAMIENTO DE PADRES EN EL MANEJO

Práctica 2 de Microsoft Access

Problemas fáciles y problemas difíciles. Cuando a los niños les planteamos problemas de suma y resta, Laura dejó sin resolver el siguiente problema:

COMO REALIZAR UN DIAGNÓSTICO INICIAL Y DEFINIR LA POLITICA DE SEGURIDAD PARA EL SISTEMA DE GESTIÓN EN CONTROL Y SEGURIDAD BASC

Diferencias entre nivel 2 y nivel 3 y una estrategia de implantación

Por qué es importante la planificación?

Curso: FT433 - Introducción a la virtualización con VirtualBox

Transcripción:

Programación Orientada a Objetos INTRODUCCIÓN Y CONCEPTOS

Programación OO Vista Macro: La programación orientada a objetos trata sobre el desarrollo de software utilizando un paradigma que descompone el problema en objetos independientes Vista Micro: La programación orientada a objetos es utilizar un lenguaje orientado a objetos para implementar soluciones de software 2

Vista Macro Análisis y Diseño Orientado a Objetos (UML) Reuso Diseño basado en Patrones Marcos de Trabajo (Frameworks) Componentes 3

Vista Micro Clases y Objetos Mensajes y Métodos Jerarquía de Clases y Herencia Encapsulación y Ocultamiento de Información Unión de Métodos y Polimorfismo Lenguajes 4

Por qué la POO es Popular? Similaridad con la forma de pensar acerca de los problemas en la vida real natural Es muy escalable, desde problemas triviales hasta sistemas muy complejos El uso de librerías permite el desarrollo de aplicaciones en muchos campos reuso 5

Lenguajes y Pensamiento Una teoría muy aceptada entre los lingüistas asevera que el lenguaje que hablamos influencia directamente la manera en la cual vemos el mundo y expresamos nuestros pensamientos. Los esquimales son un ejemplo, su idioma tienes muchas palabras para describir los diversos tipos de nieve. Es muy fácil expresar situaciones complejas relacionadas con nieve en ese lenguaje que en un lenguaje menos adaptado para eso. Esto se aplica tanto a lenguajes naturales como a lenguajes computacionales. 6

Lenguajes de Programación y Solución de Problemas Ejemplo: análisis de una secuencia de DNA Las secuencias de DNA es representada como un vector de valores enteros: ACTCGGATCTTGCATTTCGGCAATTGG.. Encontrar si un patrón de largo M (donde M es pequeño y fijo) esta repetido en una secuencia de DNA de longitud N (siendo N muy muy largo) 7

Solución en Fortran DO 10 I = 1, N-M DO 10 J = 1, N-M FOUND=.TRUE. DO 20 K = 1, M IF X[I+K-1].NE. X[J+K-1] THEN FOUND =.FALSE. IF FOUND THEN. 8

Solución en APL ACTCCTCGATCCATTTCGGCAATTGG. Reorganizar en una matriz N x M Ordenar la matriz por columnas Buscar filas adyacentes iguales ACTCCTC 1-7 ACTCCTC CTCCTCG 2-8 CCTCGAT TCCTCGA 3-9 CGATCCA CCTCGAT 4-10 CTCCTCG CTCGATC 5-11 CTCGATC TCGATCC 6-12 TCCTCGA CGATCCA 7-13 TCGATCC 9

Comparación de las 2 Soluciones Los programadores de Fortran (procedimentales) piensan en términos de lazos. La solución en Fortran es extremadamente lenta O(M x N 2 ) El programador de APL (funcional) piensa en términos de manipulación de secuencias, el ordenamiento es algo interno del lenguaje y los lazos no existen. La solución en APL es mas rápida O(M x NlogN) a pesar de que APL no es un lenguaje más eficiente que Fortran 10

Conjetura de Church e Hipótesis de Safir-Worf Hipótesis Safir-Worf: afirma que un individuo utilizando un lenguaje dado puede tener ideas o pensamientos que no pueden ser traducidas o entendidas por un individuo que usa otro lenguaje. Conjetura de Church: cualquier programa puede ser escrito por una máquina de Turing, o sea que cualquier programa puede ser escrito en cualquier lenguaje de programación. Si bien Church demuestra su conjetura, un nuevo lenguaje puede no ofrecer mayor poder de computo pero puede proveer una manera más fácil o natural para resolver cierto tipos de problemas. 11

Soluciones OO y Lenguajes OO El uso efectivo de los principios de la orientación a objetos requiere que el programador vea el mundo de una manera diferente El uso de un lenguaje orientado a objetos simplifica el desarrollo de soluciones orientadas a objetos. El uso de un lenguaje orientado a objetos no convierte al individuo en un programador orientado a objetos. programas de Fortran pueden ser escritos en cualquier lenguaje 12

Un nuevo paradigma? Paradigma = conjunto de teorías, estándares y métodos que juntos representan maneras de organizar el conocimiento y ver el mundo. En la ciencia una revolución ocurre cuando un paradigma viejo es reexaminado, rechazado y remplazado por uno nuevo Paradigma de Programación = una manera de conceptuar que significa computar y como estructurar y organizar las tareas que deben ser llevadas a cabo por una computadora 13

POO: Una nueva manera de ver el mundo Juan quiere mandar flores a su amiga Ana que vive en otra ciudad. Debido a la distancia Juan no puede llevar las flores directamente a Ana. Juan acude a Pedro, un florista local, y le da el número y tipo de flores que quiere enviarle a Ana y su dirección. Juan puede estar seguro que las flores serán entregadas a Ana. 14

Agentes, Responsabilidad, Mensajes y Métodos Juan encuentra un agente apropiado (Pedro) Y le envía un mensaje que contiene una petición. Es la responsabilidad de Pedro el satisfacer esa petición. Existe algún método (conjunto de operaciones) usadas por Pedro para entregar las flores. Juan no necesita conocer el método particular que Pedro utilizará, esa información esta oculta. 15

POO: el Principio General Un programa orientado a objetos esta estructurado como una comunidad de agentes que interactúan entre si llamados objetos. Las acciones son iniciadas por la transmisión de mensajes a un agente (un objeto). El mensaje codifica un requerimiento de acción y es acompañado por información adicional (argumentos) necesaria para llevar a cabo el requerimiento. El receptor es el agente al cual el mensajes es enviado. Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a cabo la acción solicitada. En respuesta a un mensajes el receptor ejecutará algún método para satisfacer el requerimiento. 16

Unión de Métodos y Polimorfismo Si Juan pidiera a María, otra florista, que envíe flores a Ana por su cumpleaños, ella podría usar un método diferente al usado por Pedro. El método que se ejecuta en respuesta a un mensaje depende del receptor del mensaje. Que métodos diferentes se ejecuten en respuesta al mismo mensaje se conoce como polimorfismo. 17

Enviar Mensajes vs. Llamadas a Procedimientos Un mensaje tiene un receptor designado (algún objeto) La interpretación del mensaje, ej.: el método usado en respuesta a un mensaje es determinado por el receptor y pude variar entre diferentes receptores. Muy frecuentemente el receptor real no es conocido sino hasta tiempo de ejecución. A esto se lo conoce como unión tardía o dinámica entre un mensaje y el fragmento de código (método) utilizado para responder al mensaje. 18

Responsabilidad y Abstracción Analizar un problema en términos de responsabilidades incrementa el nivel de abstracción y permite una mayor independencia entre agentes. La conjunto completo de responsabilidades asociadas con un objeto se describes con el término protocolo o interfaz. Un receptor acepta la responsabilidad de responder a un mensaje. El que envía no necesita conocer los detalles de método usado. Esta es una forma estándar y poderosa de abstracción conocida como ocultamiento de información. 19

Clases e Instancias A pesar de que Juan no conoce a Pedro muy bien, el tiene una idea aproximada de como tratar y que pedir a Pedro. Juan es capaz de hacer ciertas asunciones basado en su experiencia previa con otros floristas. El espera que Fred, siendo una instancia de la categoría de floristas, se ajuste a ese patrón. Todos los objetos son instancias de una clase. El método invocado por un objeto para responder a un mensaje es determinado por su clase. Todos los objetos de una misma clase usan el mismo método para responder al mismo mensaje. 20

Jerarquía de clases y Herencia Juan tiene más información acerca de Pedro, no necesariamente porque es un florista, sino porque Pedro es un vendedor, un humano, un mamífero, un animal y un objeto material. El principio que afirma que el conocimiento de una categoría más general es también aplicable a una categoría más específica es llamado herencia. Las clases pueden ser organizadas dentro de una estructura jerárquica. Una clase hija (o subclase) hereda los atributos de su clase padre (superclase). Una clase abstracta existe solamente para agrupar subclases. 21

Categorías de Pedro Objeto Material Animal Mamífero Humano Vendedor Florista Pedro 22

Jerarquía de la clase Objeto Material Objeto Material Animal Planta Mamífero Flores Perro Humano Ornitorrinco Tulipanes Sultán Vendedor Artista Fil Tulipán 1 Tulipán 2 Tulipán 3 Florista Pintor Pedro Luis 23

Unión de Métodos, Sobrescritura y Excepciones Fil es un ornitorrinco y por lo tanto un mamífero. Los Mamíferos dan a luz crías vivas, pero Fil no, ella pone huevos. Esta es una excepción a una regla general. La información contenida en una subclase pude sobrescribir a la información heredada de una clase padre. La búsqueda de un método en respuesta a un mensaje comienza en la clase del receptor y continua hacia arriba hacia la clase de su padre. Cuando un método con el mismo nombre esta disponible en una clase más alta en la jerarquía, se dice que el método esta sobrescrito. 24

POO y como evitar la asignación infinita En vez de procesadores procesando estructuras de datos, ahora tenemos un universo de objetos bien comportados que se preguntan cortesmente unos a otros para llevar a cabo sus diferentes deseos. En algún punto algún objeto debe llevar a cabo algún trabajo en vez de solamente pasar requerimientos a otros. Lenguajes mixtos (C++, CLOS) escriben estos métodos utilizando su lenguaje base. Lenguajes OO puros (Smalltalk, Java) tienen operaciones primitivas o nativas. 25

Resumen (por Alan Kay) Todo es un objeto El computo es llevado a cabo por objetos comunicándose entre ellos, pidiendo a los otros realizar una acción. Los objetos se comunican enviando y recibiendo mensajes. Un mensaje es una petición de una acción junto con cualquier argumento necesario para completar la tarea. Cada objeto tiene su propia memoria que consiste de otros objetos. 26

Resumen (cont) Cada objeto es una instancia de una clase. Una clase representa un agrupamiento de objetos similares. La clase es un repositorio del comportamiento asociado con un objeto. Esto es, todos los objetos que son instancias de la misma clase llevan a cabo las mismas acciones. Las clases están organizadas en una estructura de árbol llamada de herencia jerárquica. La memoria y el comportamiento asociadas con una clase son automáticamente disponibles para clases que son sus descendientes. 27

Manejando la Complejidad La complejidad de los proyectos de programación es no lineal Dos programadores no pueden hacer en un mes lo que uno puede hacer en 2 meses. Añadir más programadores a un proyecto generalmente alarga, no acorta, el cronograma. La interconexión, la dependencia de una porción de código de otra porción de código es responsable de este fenómeno. Los mecanismo de abstracción tratan de manejar esto. Las técnicas orientadas a objetos ofrecen son una avance en esta dirección. 28

Abstracción Los mecanismos de abstracción son técnicas para crear, entender y administrar sistemas complejos. La abstracción es la supresión u ocultamiento de ciertos detalles de un proceso o artefacto para mostrar más claramente otros aspectos, detalles o estructuras. A través de la abstracción uno construye un modelo del sistema real. 29

Capas de abstracción en la POO En el nivel más alto, un programa es visto como una comunidad de objetos cooperativos. Cada objeto en esta comunidad provee servicios que pueden ser usados por otros miembros. A este nivel las características importantes son los servicios proporcionados por cada objeto y las líneas de cooperación y comunicación entre ellos. El siguiente nivel de abstracción permite que grupos de objetos que trabajan juntos puedan ser agrupados en una unidad (paquetes, name spaces, unidades) permitiendo que algunos nombres sean expuestos al mundo exterior a la unidad, mientras otros permanecen ocultos. 30

Capas de abstracción en la POO Los siguientes 2 niveles de abstracción manejan la interacción entre 2 objetos individuales, donde uno (el cliente) usa los servicios de otro (el servidor) El servidor anuncia los servicios que pude proveer a los clientes a través de una interfaz, el cliente utiliza esta interfaz. El servidor provee una implementación concreta para esta interfaz. El último nivel de abstracción considera una tarea en aislamiento. Ej.: los pasos seguidos para implementar un método. 31

Mecanismos de Abstracción en los Lenguajes Procedimientos y Funciones (centrado en funciones) + ocultamiento de información por el detalle del comportamiento - Ocultamiento de información por el detalle de los datos - encapsulasión Módulos y Paquetes (centrado en datos) + ocultamiento de información + encapsulasión - La instanciación no es siempre soportada Tipo de Datos Abstractos + separa la interfase de la implementación 32

Mecanismos de Abstracción en Lenguajes OO Las clases son Tipos de Datos Abstractos centrados en servicios El paso de mensajes y la unión de métodos tienen como consecuencia el polimorfismo que lleva a un código más legible. Las Jerarquías de Clases y la Herencia llevan a la compartición de código, lo que resulta en aumento de la funcionalidad y reducción del tamaño del código. La herencia y el polimorfismo ayudan al trabajo con el código compartido. 33

Desarrollo de Software Orientado a Objetos El desarrollo de software orientado objeto NO trata sobre la sintaxis de lenguajes de programación. El desarrollo de software orientado a objetos trata sobre las técnicas de diseño basadas en la determinación y delegación de responsabilidades. Responsabilidad implica no-interferencia, corta o reduce los enlaces entre diferentes objetos que dependen en detalles de su implementación. Va más allá del ocultamiento de información y la encapsulación cuando trata de la programación de sistemas grandes. 34

Programando lo pequeño vs. Programando lo grande Código desarrollado por un solo programador o por un grupo pequeño de programadores. Cada individuo entiende todos los aspectos del proyecto. El esfuerzo principal es diseñar y desarrollar algoritmos para tratar con el problema El sistema de desarrollado por un equipo numeroso. Ningún individuo es responsable por el problema total o entiendo todos sus aspectos. El esfuerzo principal es la administración de los detalles y de la comunicación entre las diferentes porciones del proyecto. 35