tema 1: introduccion a la p.o.o paradigma …

37
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:

Upload: others

Post on 14-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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:

Page 2: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 3: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 4: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 5: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 6: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 7: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

Complejidad Inherente al Software

JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR

Introducción a La Programación Orientada a Objetos

Page 8: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 9: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.”

Page 10: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 11: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 12: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 13: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 14: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 15: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 16: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 17: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 18: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 19: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 20: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 21: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

ABSTRACCION

JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR

Paradigma Orientado a Objetos

Page 22: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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 …

Page 23: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 24: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

ABSTRACCION

JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR

Paradigma Orientado a Objetos

ATRIBUTOS ACCIONES

ATRIBUTOS ACCIONES

Page 25: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

ABSTRACCION

JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR

Paradigma Orientado a Objetos

ATRIBUTOS ACCIONES

ATRIBUTOS ACCIONES

Page 26: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 27: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 28: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 29: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 30: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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.

Page 31: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 32: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 33: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

JERARQUIA

JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR

Paradigma Orientado a Objetos

Animal

Computador

Page 34: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

JERARQUIA

JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR

Paradigma Orientado a Objetos

Medio de Transporte

Reloj

XBOX

Page 35: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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

Page 36: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

CLASES y OBJETOS

JAIRO F. SEOANES LEON – PROGRAMACION II – UNIVERSIDAD POPULAR DEL CESAR

Paradigma Orientado a Objetos

Page 37: Tema 1: INTRODUCCION A LA P.O.O PARADIGMA …

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 …