tema 1: introduccion a la p.o.o paradigma …
TRANSCRIPT
PROGRAMACION II
JAIRO FRANCISCO SEOANES LEON
UNIVERSIDAD POPULAR DEL CESAR
Ing. Sistemas – Universidad Popular del Cesar Aspirante a Magister en Ingeniería de Sistemas y Computación
Universidad nacional de Colombia – Universidad Popular del Cesar
Docente
INTRODUCCION A LA P.O.O PARADIGMA ORIENTADO A OBJETOS
Tema 1:
Agenda
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
REPASO DE CONCEPTOS BASICOS
LA COMPLEJIDAD DEL SOFTWARE
EL DOMINIO DEL PROBLEMA
EL PROCESO DE DESARROLLO
LA FLEXIBILIDAD
HISTORIA DE LA P.O.O
RAZONES FUNDAMENTALES PARA UTILIZAR LA P.O.O
ABSTRACCION
ENCAPSULAMIENTO
MODULARIDAD
JERARQUIA
CLASES Y OBJETOS
MENSAJES Y METODOS
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
¿ Porque Aprender Lenguajes y Técnicas de Programación ?
Que es un problema ? Se tiene un problema cuando se desea encontrar uno o varios objetos desconocidos (ya sean estos números, símbolos, diagramas, figuras, u otras cosas), que cumplen condiciones o relaciones, previamente definidas, respecto a uno o varios objetos conocidos.
Pasos Para Solucionar un Problema ? 1 - Análisis del problema y Especificación del problema 2 - Diseño del algoritmo 3 - Prueba del algoritmo y refinamiento 4 - Codificación 5 - Ejecución y validación del Programa
Para poder utilizar el ordenador como una herramienta para resolver problemas eficazmente.
Introducción a La Programación Orientada a Objetos
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
¿ Conceptos a Tener en Cuenta ?
Que es un Lenguaje de Programación? Conjunto de Palabras, símbolos y reglas utilizadas para controlar las operaciones a realizar en una computadora (ej., C/C++, Java, Php, C#).
Que es Un Algoritmo ? Series de pasos a seguir para solucionar un Problema
Que es Un Programa ? Secuencias de Instrucciones escritas en un lenguaje de programación, que resuelven un problema.
Que es Una Instrucción ? Orden dada al computador para que ejecute una operación.
Introducción a La Programación Orientada a Objetos
Evolución de las técnicas de programación
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
Toda la evolución de los lenguajes y técnicas de programación se ha
desarrollado en base a una sola idea conductora: hacer que la tarea de realizar programas para ordenadores sea cada vez lo más simple, flexible y portable posible.
Lineal
Estructurada
Modular
Orientada a Objetos
utiliza saltos y rutinas entremezcladas.
Técnica Insostenible
Dificultad para
mantenimiento y depuración
utilización de estructuras de control básicas
claramente un inicio y un
final en los grog.
Ejecución de arriba hacia Abajo
la idea “Divide y Vencerás ”
Descomposición del programa en subprogramas
Se facilita la corrección,
modificación y actualización de código
Paradigma orientado a objetos
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Técnica de programación mas utilizada en la actualidad.
• Problemas del Mundo real expresados de modo fácil y natural
• Construir software complejos a partir de unidades de software modularizado y
reutilizable
• Capaz de manipular tanto sistemas grandes como pequeños
• Crear sistemas fiables que sean flexibles, mantenibles y capaces de
evolucionar para cumplir las necesidades de cambio.
• Reducción de hasta el 40% de líneas de código, en comparación con los
métodos tradicionales en desarrollos de gran magnitud.
Introducción a La Programación Orientada a Objetos
Complejidad Inherente al Software
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
Complejidad Inherente al Software
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
Complejidad del
Software
El dominio del problema
Gestionar el Proceso de Desarrollo
La Flexibilidad
del Software
Difíciles interacciones entre los usuarios y sus desarrolladores
diferentes perspectivas de la
naturaleza del problema y de la solución.
Los requisitos de un sistema software cambian durante su
desarrollo
Se exige el uso de un equipo de desarrolladores
se producen comunicaciones entre ellos
complejas
Difícil coordinación del grupo de trabajo
El equipo está disperso geográficamente
Las necesidades cambian con el tiempo, aun cuando el software se este
desarrollando, entonces es importante poder hacer cambios posteriores al
software
La P.O.O y la complejidad del Software
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
Los sistemas orientados a objetos proporcionan el rendimiento, la flexibilidad y funcionalidad requerida para implementaciones prácticas.
“La programación orientada a objetos permite una representación más directa del modelo de Mundo real en el código. El resultado es que la transformación radical normal de los requisitos del sistema (definido en términos de usuario) a la especificación del sistema (definido en términos de computador) se reduce considerablemente. “
Ledbetter y Cox (1985)
“La Programación Orientada a Objetos (P.O.O) pretende llevar a la Programación, la filosofía de los objetos en la vida cotidiana.”
Historia de la Programación Orientada a Objetos – P.O.O
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
Simula y Simula 67
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
La Programación Orientado a Objetos comienza a finales de los años sesenta (60’s), durante los cuales aparecieron los primeros lenguajes de este tipo: Simula y Simula 67, desarrollados por Ole-Johan Dhal y Krysten Nygaard en la Universidad de Oslo y el Centro de Computación Noruego.
Simula y Simula 67
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
A mediados de los años 60 se empezó a vislumbrar el uso de las computadoras para la simulación de problemas del mundo real. Aunque pensado como un lenguaje de propósito general, Simula tuvo su mayor éxito en las aplicaciones de simulación. Un lenguaje que contiene el embrión de lo que hoy se conoce como la P.O.O. El objetivo inicial era definir un lenguaje de propósito específico para aplicaciones de simulación. Uno de sus objetivos ahorrar esfuerzo de programación. Con el comenzaron a introducir ABSTRACCIONES DE DATOS en la programación. Además pensaron en la posibilidad de comenzar a reutilizar código, así se comenzó a formar la idea de Jerarquías de HERENCIA DE CLASES. Fueron ellos también los que introdujeron el concepto de POLIMORFISMO.
Historia de la Programación Orientada a Objetos – P.O.O
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
SmallTalk
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
Dio el paso definitivo y se debe considerar como el primer lenguaje de programación orientado a objetos. Smalltalk fue diseñado en el Palo Alto Research Center (PARC) de Xerox Corporation's, en California, Su desarrollo se basa en gran parte en las ideas de Alan Kay.
SmallTalk
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
Lo que había empezado como un proyecto de desarrollo de un lenguaje de propósito general acabó siendo mucho más que eso, convirtiéndose en el origen de la, hasta ahora, última y más importante revolución en el desarrollo de software. Smalltalk incluye no solo un lenguaje para el desarrollo de aplicaciones, sino que además incorpora herramientas de ayuda al desarrollo (p.ej. manejadores de árboles de clases, examinadores de objetos, etc.) y un completo interfaz gráfico de usuario. En Smalltalk todo es un objeto, incluidos los números reales o el propio entorno Smalltalk. Como lenguaje tiene las siguientes características: • Orientación a Objetos Pura • Tipado dinámico • Interacción entre objetos mediante envío de mensajes • Herencia simple y con raíz común • Recolección de basura • Compilación en tiempo de ejecución o Interpretado
Historia de la Programación Orientada a Objetos – P.O.O
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
Lenguaje C++, Eiffel, Java
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
El último gran paso lo dio Bjarne Stroustrup con la creación del C++, (1985), quizás el lenguaje de programación orientado a objetos más usado en su momento, debido a que ha conseguido darle una gran potencia y flexibilidad al más famoso lenguaje, el C.
La POO fue la metodología de programación dominante a mediados de los años 80’s, en gran parte debido a la influencia de C++., gracias principalmente al auge de las Interfaces gráficas de usuario, para las cuales la P.O.O está particularmente bien adaptada.
Posteriormente fue reemplazado por Java, en gran parte debido a la aparición de Internet, y a la implementación de la máquina virtual de Java en la mayoría de navegadores.
En 1985 también nace el lenguaje Eiffel, desarrollado originalmente por Eiffel Software. Su objetivo es permitir a los programadores crear módulos de software fiables y reutilizables.
Razones Fundamentales Que Están Influyendo En La Importancia de la POO .
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Introducción a La Programación Orientada a Objetos
La 00 (Orientación a Objetos) es especialmente adecuada para realizar determinadas aplicaciones, sobre todo realización de prototipos y simulación de programas.
Los mecanismos de encapsulación de POO soportan un alto grado de reutilización de código, que se incrementa por sus mecanismos de herencia.
En el entorno de las bases de datos, la OO se adjunta bien a los modelos semánticos de datos para solucionar las limitaciones de los modelos tradicionales, incluido el modelo relacional.
Aumento espectacular de L.POO (Lenguajes de Programación Orientados a Objetos).
La necesidad de Interfaces de usuario gráficos y visuales.
Elementos o propiedades del paradigma orientado a objetos
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
Los conceptos y herramientas orientados a objetos son tecnologías que permiten que los problemas del mundo real sean expresados de modo fácil y natural
Las técnicas orientadas a objetos proporcionan mejoras y metodologías
para construir sistemas de software complejos a partir de unidades de software modularizado y reutilizable
Los cuatro elementos (propiedades) más importantes de este modelo de
programación son:
Abstracción – Encapsulación – Modularidad - Jerarquía
Si alguno de estos elementos no existe, se dice que el modelo no es orientado a objetos.
ABSTRACCION
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
La abstracción es la propiedad que permite representar las características esenciales de un objeto, sin preocuparse de las restantes características (no esenciales).
Definir una abstracción significa describir una entidad del mundo real, no importa lo compleja que pueda ser, y a continuación utilizar esta descripción en un programa.
Color, Velocidad, Motor, Valor, etc.
Abstracción
ABSTRACCION
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
ABSTRACCION
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
Atributos Color Velocidad Motor Ruedas …
Acciones Arrancar Frenar Doblar Apagar …
Tipos Abstractos de Datos
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
Un tipo abstracto de datos (TAD) es un tipo de dato definido por el programador que se puede manipular de un modo similar a los tipos de datos definidos por el sistema. Al igual que los tipos definidos por el sistema, un tipo de dato abstracto corresponde a un conjunto (puede ser de tamaño indefinido) de valores legales de datos y un número de operaciones primitivas que se pueden realizar sobre esos valores.
Fraccionario Int numerador Int denominador Sumar() Restar() Multiplicar()
8 5
TAD
ABSTRACCION
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
ATRIBUTOS ACCIONES
ATRIBUTOS ACCIONES
ABSTRACCION
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
ATRIBUTOS ACCIONES
ATRIBUTOS ACCIONES
ENCAPSULAMIENTO
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
La encapsulación o encapsulamiento es la propiedad que permite asegurar que el contenido de la información de un objeto está oculta al mundo exterior: El objeto A no conoce lo que hace el objeto B, y viceversa.(también se conoce como ocultación de la información)
Ocultación de Información
ENCAPSULAMIENTO
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
La encapsulación permite la división de un programa en módulos, los cuales se implementan mediante CLASES.
En la practica la encapsulación da lugar a que las clases se dividan en dos partes: Interface: captura la visión externa de una clase, abarcando la abstracción del comportamiento común a los ejemplos de esa clase. Implementación: comprende la representación de la abstracción, así como los mecanismos que conducen al comportamiento deseado.
MODULARIDAD
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
La modularidad es la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes.
Débilmente Acoplados y Altamente cohesivos
MODULARIDAD
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
El Acoplamiento es una medida del grado de interdependencia entre módulos, es decir, el modo en que un módulo está siendo afectado por la estructura interna de otro módulo.
El objetivo es minimizar el acoplamiento entre módulos
Un módulo cohesivo ejecuta una tarea sencilla de un procedimiento de software y requiere poca interacción con procedimientos que ejecutan otras partes de un programa.
En otras palabras, un módulo cohesivo sólo hace (idealmente) una cosa
Los módulos deben ser generalmente independientes de cada uno de los restantes y se pueden ensamblar fácilmente para construir la aplicación completa.
JERARQUIA
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
La jerarquía es una propiedad que permite una ordenación de las abstracciones. Las mas importantes son:
Estructura de clases (generalización/especialización) Estructura de objetos (agregación)
Las jerarquías de generalización/especialización se conocen como herencia y básicamente define una relación entre clases, en donde una clase comparte la estructura o comportamiento definido en una o más clases.
La agregación es el concepto que permite el agrupamiento físico de estructuras relacionadas lógicamente. Así, un camión se compone de ruedas, motor, sistema de transmisión y chasis; en consecuencia, camión es una agregación, y ruedas, motor, transmisión y chasis son agregados de camión.
JERARQUIA
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
Las jerarquías de generalización/especialización se conocen como HERENCIA la cual define una relación entre clases, en donde una clase comparte la estructura o comportamiento definido en una o más clases.
CARRO
Esp
eci
aliz
ació
n
Ge
ne
raliz
ació
n
JERARQUIA
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
La agregación es el concepto que permite el agrupamiento físico de estructuras relacionadas lógicamente
Agregados de un camión
JERARQUIA
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
Animal
Computador
JERARQUIA
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
Medio de Transporte
Reloj
XBOX
CLASES
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
Una clase es la descripción de un conjunto de objetos; consta de métodos y datos que resumen características comunes de un conjunto de objetos. Dicho de otro modo, una clase es la declaración de un tipo de objeto o una plantilla que define las variables y los métodos que son comunes para todos los objetos de un cierto tipo.
Cada objeto es un ejemplar de una CLASE. Cada vez que se construye un objeto de una clase, se crea una instancia de esa clase.
OBJETO
AUTO Marca Modelo Precio Matricula
Clase Objetos
CLASES y OBJETOS
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
METODOS Y MENSAJES
JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR
Paradigma Orientado a Objetos
Un programa orientado a objetos consiste en un número de objetos que se comunican unos con otros invocando a sus métodos.
Un método es el procedimiento o funcion que se invoca para actuar sobre un objeto.
Un mensaje es la acción que debe hacer un objeto
Atributos Color Velocidad Motor Ruedas …
Acciones Arrancar Frenar Doblar Apagar …