Conceptos de Programación Orientada a Objetos

Documentos relacionados
1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque:

Universidad Salesiana de Bolivia

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Guía del Curso Analista Programador Java: Business Apps Expert

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Introducción a la Orientación a Objetos

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

UML: INTRODUCCIÓN, ORIENTACIÓN a Objetos

Derechos de Acceso: COMPOSICION

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Contenido. 1. El proceso 2. Los modelos 3. Los diagramas 4. Ejemplo

Lenguaje de Modelamiento Unificado.

Tema 6: Diagramas de Secuencia

Capítulo 16. Diagrama de Clases UML

Tema: Herramientas UML, Análisis y diseño UML

Tema: Herramientas UML, Análisis y diseño UML

Prof. Mariano Mancuso. Sistemas de información y control diagrama de clases

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET

DIAGRAMAS UML ANDRÉS ESTEBAN MARTÍNEZ HUTA CICLO DE VIDA DEL SOFTWARE GLORIA CECILIA RÍOS MUÑOZ

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET 2010

PROGRAMACION ORIENTADA A OBJETOS EN C++

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Por ejemplo, considerando la jerarquía de herencia de Figuras Geométricas de la siguiente figura, es posible hacer uso del concepto de polimorfismo.

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

UML Unifield Modeling Languaje

Java Inicial (20 horas)

Evolución de la Programación Orientada a Objetos

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Resultado de Aprendizaje:

Programación Orientada a Objetos

Curso de Java POO: Programación orientada a objetos

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Planificaciones Análisis de la Información. Docente responsable: GONZALEZ NORBERTO DANIEL. 1 de 6

FUNDAMENTOS DE INFORMÁTICA

2.- PROGRAMACIÓN ORIENTADA A OBJETOS

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema

UML (Lenguaje de Modelado Unificado) y Diagramas de Casos de Uso

2.2 Nombres, Ligado y Ámbito

Diagramas de interacción

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Desarrollador de Aplicaciones Web con Java

Introducción a la programación orientada a objetos

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto !

ESCUELA DE INFORMÁTICA

CIDE, SA. RIF: J NIT: MODELO FUNCIONAL

Introducción a la programación orientada a objetos

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:


Estructuras de Datos y Algoritmos. Primeros ejemplos de TDA

Cristian Blanco

POLIMORFISMO "una interfaz, múltiples métodos".

Lenguaje de programación con JAVA

1. Preparar al estudiante para desarrollar aplicaciones de software utilizando un enfoque orientado a objetos.

Aplicaciones de Escritorio

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Computadora y Sistema Operativo

Tema 4 Introducción a la Orientación a Objetos. Ingeniería del Software I

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Diagramas De Casos De Uso

Diseño Basado en Componentes. Curso 2008 / 09

Curso Fundamentos de Informática Lección 7. Programación Orientada a Objetos

PROYECTO FIGURAS DIAGRAMA DE FLUJO

JAVA 7 Los fundamentos del lenguaje Java

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

Requerimientos de Software

Programación Avanzada. Desarrollo Orientado a Objetos basado en UML

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

Elabore el diagrama de clases en UML y la codificación de un programa para resolver los siguientes problemas:

El Principio Abierto/Cerrado

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Descripción del Curso

JAVA -INTRODUCCIÓN AL LENGUAJE

La clase Integer y sus métodos. Los Operadores (concepto). Operadores Lógicos y a nivel de Bits. Operadores de desplazamiento. Concatenaciones. La Con

Fundamentos de programación y Bases de Datos

UML El Lenguaje Unificado de Modelado Grady Booch, Jim Rumbaugh e Ivar Jacobson

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B)

TABLA DE CONTENIDO DEL ÁREA DE MATEMÁTICAS:

IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web

Tema 2 Introducción a la Programación en C.

Ingeniería a de Software CC51A

TEMA 9: DIAGRAMA DE OBJETOS, SECUENCIA Y DESPLIEGUE EN UML

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

TEMA 8: DIAGRAMA DE CLASE EN UML

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

Transcripción:

Paradigmas de programación Prog. orientada a objetos Conceptos de Programación Orientada a Objetos Abstracción de Programación estructurada Programación imperativa 2 Programación estructurada (I) Programación estructurada (II) Abstracción de operaciones Bloque principal Valores de entrada Valores de entrada Valor(es) de salida Procedimiento Función Estructura de un módulo: Interfaz Datos de entrada Datos de salida Descripción funcionalidad Sintaxis del lenguaje: Implementación Datos locales Secuencia de instrucciones i Organización del código en bloques de instrucciones Definición de funciones y procedimientos Extensión del lenguaje con nuevas operaciones Llamadas a nuevas funciones y procedimientos 3 4 Programación estructurada: ventajas Programación estructurada: ejemplo Facilita el desarrollo Se evita la repetición del trabajo Trabajo de programación compartimentado en módulos independientes Diseño top-down: descomposición en subproblemas Facilita el mantenimiento Claridad del código Independencia de los módulos Favorece la reutilización double u1, u2, m; u1 = 4; u2 = -2; m = sqrt (u1*u1 + u2*u2); printf ( %lf, m); double modulo (double u1, double u2) double m; m = sqrt (u1*u1 + u2*u2); return m; printf ( %lf, modulo (4, -2)); 5 6

Tipos abstractos de Abstracción de Abstracción de + abstracción de operaciones Un tipo abstracto de consiste en: Estructura de que almacena información para representar un a b c x y z determinado concepto Funcionalidad: conjunto de operaciones que se pueden realizar sobre el tipo de Sintaxis del lenguaje: Módulos asociados a tipos de No introduce necesariamente variaciones respecto a la programación modular 7 8 Abstracción de operaciones Ejemplo de TAD en C Entrada Entrada struct vector double x; double y; ; arg1 arg1 arg2 arg3 Salida Salida void construir (vector *u, double u1, double u2) u->x = u1; u->y = u2; double modulo (vector u) double m; m = sqrt (u.x*u.x + u.y*u.y); return m; vector u; construir (&u, 4, -2); printf ( %lf, modulo (u)); 9 10 Ejemplo de TAD: extensibilidad Tipos abstractos de : ventajas... double producto (vector u, vector v) return u.x * v.x + u.y * v.y; vector u, v; construir (&u, 4, -2); construir (&v, 1, 5); printf ( %lf, producto (u, v)); Conceptos del dominio reflejados en el código Encapsulamiento: ocultación de la complejidad interna y detalles de los y las operaciones Especificación vs. implementación: utilización del tipo de independiente de su programación interna Mayor modularidad: también los Mayor facilidad de mantenimiento, reutilización 11 12

Programación orientada a objetos Programación orientada a objetos = soporte sintáctico para los tipos abstractos de + prestaciones asociadas a las jerarquías de clases + cambio de perspectiva Programación orientada a objetos (I) Soporte sintáctico explícito para la abstracción de Cambia el punto de vista: los programas son apéndices de los Aparece un nuevo concepto: objeto Objeto = tipo abstracto de con estado (atributos) y comportamiento (operaciones) propios Aparece el concepto de jerarquía de tipos, y con él: Herencia de estructura y funcionalidad Polivalencia de los tipos Funciones Polimorfismo Objeto Sintaxis del lenguaje: Definición de clases Funciones explícitamente asociadas a clases Variables Creación de objetos Acceso a atributos, invocación de métodos 13 14 Programación orientada a objetos (II) Programación orientada a objetos: ejemplo en Java class Vector private double x; private double y; Vector (double u1, double u2) x = u1; y = u2; double modulo () return Math.sqrt (x*x x + y*y); y); class MainClass public static void main (String args []) Vector u = new Vector (4, -2); System.out.println (u.modulo ()); 15 16 Programación orientada a objetos: ejemplo en C++ class Vector private: double x; double y; public: Vector (double u1, double u2) x = u1; y = u2; double modulo () return sqrt (x*x + y*y); ; Vector u (4, -2); cout << u.modulo (); Programación orientada a objetos: ventajas Ventajas de la abstracción de + disciplina de programación Reutilización de código, mantenimiento y extensión de las aplicaciones Desarrollo e integración de software orientado a componentes Potencia del lenguaje: herencia, polimorfismo Reflejar conceptos de problemas reales? Más fácil de utilizar? 17 18

Lenguajes orientados a objetos Simula (1967) Smalltalk (1980) C++ (1983, 1990) Object Pascal (1988) Lisp CLOS (1989) Java (1995, 1997, 1998...) Lenguajes puros vs. híbridos Elementos de la programación orientada a objetos Objetos: atributos + métodos Métodos: operaciones sobre los objetos Clases: categorías de objetos con propiedades y operaciones comunes Jerarquías de clases En algunos lenguajes las clases son objetos Caso particular: paradigma prototipo-instancia Relaciones, objetos compuestos 19 20 Estructura conceptual de un objeto Propiedades: valores Relaciones con otros objetos Métodos: código Acceso al estado del objeto Cálculos sobre el estado Modificación del estado Constructores: inicialización nombre edad división sueldo bruto calcular salario neto nombre edad división sueldo bruto categoría Relaciones entre objetos Tipos de relaciones Especialización: sólo entre clases Agregación: objetos compuestos formados por partes Asociación: relaciones arbitrarias (p.e. jefe de empleado) Implementación Lenguajes con elementos específicos para relaciones Atributos que contienen referencias (punteros) a objetos 21 22 Objetos: encapsulamiento Porción visible: interfaz (protocolo) Contrato público de comportamiento Descripción de operaciones: información de entrada y de salida Porción oculta: implementación Datos Estructura de para almacenar la información Código que se ejecuta para realizar las operaciones Interfaz Métodos Ciclo de vida de los objetos Creación Reserva de memoria: x = crear ( ) Inicialización de atributos: constructores Manipulación Acceso a atributos: x. nombre Invocación de métodos: x. salario_neto ( ) Destrucción Liberar la memoria Destruir partes internas, si las hay Eliminar referencias al objeto destruido (p.e. jefe) 23 24

Jerarquías de objetos Herencia de estructura Jerarquía de tipos nombre edad x Cliente y = crear z = crear x = y división sueldo bruto Cliente nombre empresa teléfono de contacto x = z categoría 25 26 Herencia de funcionalidad Facilidad de extensión Reutilización especialización especialización calcular salario neto Cliente Modularidad calcular salario neto Cliente herencia calcular salario neto Administrativo 27 28 Herencia múltiple Herencia múltiple Resolución de la ambigüedad curso asignaturas matricularse (asignatura) Estudiante Licenciado año promoción especialidad nota media x A Alumno doctorado año promoción especialidad nota media curso asignaturas matricularse (asignatura) y t B D x y z t C y z Dobj=crearD D obj. x obj. y 29 30

Polimorfismo Ligadura dinámica (II) Sobrecarga Recta r1 = crear Recta Recta r2 = crear Recta Vector v = crear Vector r1.paralela (r2) r1.paralela (v) Sobreescritura (especialización) x = crear persona y = crear x._ ( ) y._ ( ) Ligadura dinámica x y = crear x = y x._ ( ) y._ ( ) Calcular área de figura seleccionada área ( ) Figura Triángulo Rectángulo Elipse área ( ) área ( ) área ( ) 31 32 Ligadura dinámica de argumentos Ligadura dinámica de argumentos: ambigüedad (I) Calcular área de la intersección de figuras seleccionadas Triángulo double intersección (Triángulo t) double intersección (Elipse e) double intersección (Rectángulo r) A C f (A x, B y) f (B x, A y) Rectángulo double intersección (Triángulo t) double intersección (Elipse e) double intersección (Rectángulo r) Elipse double intersección (Triángulo t) double intersección (Elipse e) double intersección (Rectángulo r) B B b 1 = crear B B b 2 = crear B C c = crear C c. f (b 1, b 2 )? 33 34 Ligadura dinámica de argumentos: ambigüedad (II) Ligadura dinámica de argumentos: ambigüedad (III) A f (B x) A B D f (A x) f (B x) B b = crear B B f (A x)? b. f (b) C? C c = crear C D d = crear D d. f (c) 35 36

Análisis y Diseño Orientado a Objetos Unified Modeling Language (UML) Lenguaje gráfico estándar para visualizar, especificar, construir y documentar las partes de un sistema de software Con cualquier proceso de desarrollo A lo largo de todo el ciclo de vida Con distintas tecnologías de implementación Herramientas para generar código Partes de un modelo en UML El modelo de clases El modelo de casos de uso El modelo de interacción El modelo de estados El modelo de implementación El modelo de instalación (deployment) 37 Diagramas UML Estructurales De comportamiento Clases Casos de uso Objetos Secuencia Componentes Colaboración Instalación Estados Actividad 38 Diagramas UML Estructurales De comportamiento Clases Casos de uso Objetos Secuencia Componentes Colaboración Instalación Estados Actividad Diagramas de clases y objetos Clase Atributos Operaciones Objeto Atributos Operaciones Interfaz Dependencia Generalización Asociación Agregación Composición 39 40 Diagrama de clases nombre : String edad : Integer 1..* Utiliza 0..* Ordenador nombre : String memoria : Integer Formado por Figura abstract * posición : Punto * Formado por Canvas Usuario1 : Servidor7 : Ordenador draw ( ) abstract area ( ) : Integer abstract s Diagrama de objetos nombre ="Juan" fecha nac. = 21/07/76 Usuario2 : nombre = "Luis fecha nac. = 21/07/85 nombre ="Andromeda" memoria = 256 PC12 : Ordenador nombre = "Anubis" memoria = 128 Grupo draw ( ) area ( ) : Integer Círculo centro : Punto radio : Integer draw ( ) area ( ) : Integer Polígono draw ( ) area ( ) : Integer Formado por * Punto x : Integer y : Integer 41 42

Casos de uso Casos de uso Cancel appointment Comunicación Cancel appointment Caso de uso Comunicación Actor Make appointment Scheduler Actor Caso de uso Make appointment Scheduler Patient Request medication Doctor Patient Caso de uso Request medication Actor Doctor Caso de uso Actor Pay bill Clerk Pay bill Clerk 43 44 Secuencia Secuencia Objetos caller exchange receiver lift receiver caller exchange receiver lift receiver dial tone dial digit dial tone dial digit Mensajes...... ringing tone phone rings ringing tone phone rings answer phone answer phone stop tone stop ringing stop tone stop ringing 45 Focos de control 46 Estados Estados Inicio Estados Fin start digit(n) Partial dial start digit(n) Partial dial digit(n) digit(n) Transiciones 47 48