Definiciones. Orientación a Objetos

Documentos relacionados
Introducción a OOP. Programación Orientada a Objeto

Introducción al Paradigma Orientado a Objetos

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos

Cada enfoque tiene sus ventajas y desventajas Cada uno es más apropiado para ciertas cosas

Tipo de Datos Abstractos y Programación Orientada a Objetos

Universidad Salesiana de Bolivia

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

Introducción a la Orientación a Objetos

Introducción a la Orientación a Objetos

Tema: Funciones Virtuales y Polimorfismo.

Programación Orientada a Objetos

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Programación Orientada a Objetos

Ingeniería del Software Orientada a Objetos. Unidad 5: Conceptos del Paradigma Orientado a Objetos

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Edwin Andrés Cubillos Vega

PROGRAMACION ORIENTADA A OBJETOS EN C++

Programación Orientada a Objetos

Unified modeling language

Programación Orientada a Objetos. Conceptos Básicos

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA

Reutilización con Delegación y Herencia

CAPÍTULO 2: CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS. ABSTRACCIÓN. ENCAPSULAMIENTO. PRINCIPIO DE OCULTACIÓN. HERENCIA. POLIMORFISMO.

La Orientación a Objetos. Diseño de Software Avanzado Departamento de Informática

Conceptos Básicos. Programación Orientada a Objetos 2

UML Unifield Modeling Languaje

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

PNFSI. Asignatura: Desarrollo de Software. Tema 1: Programación Orientada a Objetos

Evolución de la Programación Orientada a Objetos

PROGRAMACION II. Dr. Mario Rossainz López. Fac. de Cs. de la Computación Benemérita Universidad Autónoma de Puebla Primavera de 2017

Las clases están compuestas por un conjunto de miembros. (datos y funciones) también se conocen como (atributos y métodos)

Universidad Nacional del Santa E.A.P. Sistemas e Informática Microcomputación III

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Programación Orientada a Objetos (POO)

09/01/2008. Nombre de la clase. Atributos. Métodos/Operaciones

Ingeniería de Software

Tema 3. Diagramas de Clases y Objetos C H R I STO PHER E X P Ó S I TO I Z Q U I ERDO A I R A M E X P Ó S I TO M Á R Q UEZ I S R A E L LÓ P EZ P L ATA

Unidad IV: Modelo de Diseño 4.1. Estrategias de diseño

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

Tema: Herencia en C#.

UNT INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE

Introducción al Lenguaje "C++"

MOO - Metodología y Programación Orientada a Objetos

Lenguaje de Modelamiento Unificado.

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

Programación Orientada a Objetos. Integrantes: Santiago Hernández Bolívar Edwin Alexander Bohórquez

Curso de Java POO: Programación orientada a objetos

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Clases y herencia. FJP Unidad 8. Diseño de clases

Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional

PROCESOS DE DESARROLLO DE SOFTWARE UNPA UARG (Versión 0.9)

Reutilización con delegación, herencia y polimorfismo

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

ProgramaciónDeclarativa

Tema 1. Introducción a la Programación Orientada a Objetos

Diagrama de Clases I: asociaciones

Tema 1. Introducción a UML C H R I STO PHER E X P Ó S I TO I Z Q U I ERDO A I R A M E X P Ó S I TO M Á R Q UEZ I S R A E L LÓ P EZ P L ATA M A R Í A

Contenido. 1 Qué es un diagrama de clase? 2 Elementos de un diagrama de clase. 3 Clase, atributo, método y visibilidad. 4 Agregación y composición

INGENIERÍA WEB. Dr. Mario Rossainz López Fac. de Cs. de la Computación Benemérita Universidad Autónoma de Puebla Otoño de 2017

Administración e Ingenierías Ingeniería de Sistemas


Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos

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

Herencia y Clases Abstractas

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

Programación Orientada a Objetos

Diseño estructural y propuesta de actividades. Desarrollo de software, metodología de proyectos IT, licenciatura en informática o afines

La Herencia: Teoría (1)

Programación Gráfica II. 2. Modelación de un videojuego 3D.

PROGRAMACIÓN ORIENTADA A OBJETOS. Dr. Noé Alejandro Castro Sánchez

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

PROGRAMACIÓN EN JAVA

ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS

ANALISTA PROGRAMADOR

Unidad I: Introducción a las estructuras de datos

Programación orientada por objetos Semestre 6 Fascículo No. 1

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

Diagramas De Casos De Uso

CLASE 3: UML DIAGRAMAS CASOS DE USO. Universidad Simón Bolívar. Ingeniería de Software. Prof. Ivette Martínez

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN.

UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez

Enfoque de Desarrollo de software OO

Elementos Diagramas de Clases Clase:

Programación Orientada a Objetos

obtenidos a partir de los objetos que manipula. un nuevo paradigma de programación, La POO es Clases su forma de módulo.

Herencia. Proceso mediante el cual una clase adquiere las propiedades (atributos) y comportamiento (métodos) de otra.

Modelo de Casos de Uso y Representación en UML. Análisis y Diseño de Sistemas de Información UNIDAD 5

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

CONCEPTOS BÁSICOS. Prof. Ing. M.Sc. Fulbia Torres

Análisis y Diseño de Sistemas

Desarrollo Orientado a Objetos basado en UML

CLA. Diagramas de clases en Métrica V3

Programación Orientada a Objetos con Java

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

Metodologías para Sistemas Multi-agente

Fundamentos de Programación Orientada a Objetos ( POO ) Parte 2 Desarrollo de Software

Programación orientada a objetos I

Tema 4e: Proceso Unificado: Análisis

Transcripción:

Definiciones en Orientación a Objetos Dr. Oldemar Rodríguez Rojas Escuela de Informática Paradigma Funcional Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado en descomposición en funciones y sub-funciones. 1

Paradigma Lógico Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado en el uso directo del Lenguaje de la Lógica de Primer Orden p q q r.: p r Paradigma Estructurado Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado en: PE = Procedimientos + Estructuras de Datos + Diccionario de Datos. 2

Paradigma Basado en Objetos Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado en: BO = Objetos + Atributos + TDAs Paradigma Orientación a Objetos Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado: OO = Objetos + Métodos + Asociaciones + Herencia + Polimorfismo 3

Objeto [Booch] Un objeto es una entidad tangible que exhibe algunas conductas bien definidas. Un objeto tiene estado, conducta e identidad; la estructura y la conducta de objetos similares se definen en clases comunes; los términos instancia y objeto son intercambiables Objeto [Wegner] Un objeto enmarca el estado de la computación en forma encapsulada. Cada objeto tiene una interfaz de operaciones que controla el acceso al estado encapsulado. Las operaciones determinan la conducta del objeto 4

Objeto [Lécluse] Un objeto O es un triplete (i,v,m) donde i es un identificador, v es un conjunto de valores (que puede ser vacío) y m es un conjunto de métodos (que puede ser vacío). Clase vrs Objeto 5

Clase [Booch]: Una clase es un conjunto de objetos que comparten una estructura común y una conducta común. Es decir, los objetos similares son agrupados en clases, las cuales reúnen los atributos y operaciones comunes a todas sus instancias. Clase 6

Clase vrs Objeto (Instancia) Algunos autores usan instancia, instancia de clase o entidad, para referirse a un objeto. En todas las definiciones anteriores se menciona que un objeto tiene un estado, una conducta, tiene operaciones o servicios y que de alguna manera están ubicados dentro de clases. Estado de un objeto [Booch]: El estado de un objeto abarca todas las propiedades (usualmente estáticas) del objetos más los valores. Se puede decir entonces, en términos muy orientados a la programación, que el estado de un objeto lo determina el valor (en un tiempo dado) de las variables o datos del objeto 7

Conducta de un objeto [Booch]: La conducta es: cómo un objeto actúa y reacciona, en términos de los cambios de su estado y el paso de mensajes Se puede decir que la conducta de un objeto está determinada por sus métodos (funciones miembro, operaciones o servicios). Qué es un método? [Snyder]: Un método es un procedimiento que ejecuta los servicios. Típicamente un objeto tiene un método para cada operación que soporta. Los métodos son frecuentemente definidos en la implementación del objeto permitiendo que las variables de estado sean leídas y escritas. 8

En C++ la clase esfera se puede declarar como sigue: class Esfera { float r; // dato o atributo para el radio de la esfera float x, y, z; // dato o atributo para el centro de la esfera public: Esfera(float coorx. float coory, float coorz, float radio); // constructor ~Esfera(); // destructor float volumen(); // método para calcular el volumen float area_superficial(); // método para calcular el área superficial }; Herencia: La herencia es uno de los mecanismos fundamentales en los lenguajes de programación orientados a objetos, además, es el principal mecanismo mediante el cual se permite la reutilización de código, algunos autores incluso dicen que un lenguaje que no soporte la herencia no es orientado a objetos, sino que es basado en objetos. 9

Herencia [Wegner]: La herencia es un mecanismo para compartir el código o la conducta comunes de una colección de clases. Las propiedades compartidas se ubican en superclases y éstas se reutilizan en la definición de subclases. Los programadores pueden especificar cambios incrementales en la conducta de las subclases sin modificar la clase ya especificada. Las subclases heredan el código de la superclase y ellas pueden agregar nuevas operaciones y nuevas variables de instancia Herencia [Snyder]: La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación de un objeto se define en términos de la implementación de otro objeto. La nueva implementación puede ser extendida agregando datos a la nueva representación del objeto, agregando g nuevas operaciones, y cambiando o extendiendo la definición de operaciones ya existentes. 10

Herencia Sinónimos de Herencia Para el término herencia otros autores utilizan jerarquía de clases, jerarquía de tipos, o jerarquía de interfaces; para el término superclase también se utilizan los términos clase base o super tipo y para el término subclase se utiliza comúnmente clase derivada o subtipo. 11

Herencia simple y múltiple: Laherenciasedivideenherencia simple y herencia múltiple, se dice que la herencia es simple cuando una clase "hereda" de una clase única, y que es múltiple cuando una clase hereda de varias (más de una) clases. Encapsulación: La encapsulación es uno de los conceptos fundamentales de la Orientación a Objetos, en la que es un mecanismo que permite a los programadores utilizar clases sin conocer los detalles de implementación de éstas, permitiendo que futuras mejoras o cambios en la clase no impliquen cambios en los demás módulos que utilizan tal instancia de esta clase. Además, es el concepto que marca una diferencia sustancial entre un Tipo de Dato Abstracto (TDA) y un objeto. 12

Encapsulación [Booch]: La encapsulación es un proceso mediante el cual se ocultan todos los detalles de un objeto que no contribuyen a sus características escenciales. Encapsulación: 13

Abstracción [Booch]: La abstracción denota las características esenciales de un objeto que lo distinguen de todos los otros tipos de objetos y provee una clara definición de las fronteras conceptuales, relativas a las perspectivas del usuario. Abstracción: 14

Modularidad: La modularidad es un concepto que tampoco es nuevo en la Orientación a Objetos j y se utiliza ampliamente en lenguajes como Modula-2. Un módulo agrupa un conjunto de procedimientos relacionados, así como los datos que ellos manipulan. Este es un principio importante que permite en buena medida la reutilización del código, g, además,, la modularidad pretende p dividir un programa o sistema en subsistemas o subprogramas lo cual contribuye ampliamente a disminuir la complejidad del software. Modularidad: 15

Ligamento Tardío y Temprano los lenguajes de programación estructurados parten del hecho incuestionable del ligamento (binding) temprano, es decir, que el tipo de los parámetros se determina a priori, en términos de lenguajes de programación, en tiempo de compilación. Este enfoque, aún cuando simplifica los lenguajes, limita mucho el poder de modelación de la realidad, es por esto que la Orientación a Objetos incluye la posibilidad del ligamento tardío, y lenguajes como SmallTalk y C++ ya lo han implementado. Polimorfismo: El concepto de polimorfismo está íntimamente ligado al concepto de ligamento tardío. En orientación a objetos tiene que ver con el hecho de que existen funciones (funciones virtuales) que pueden tener diferente implementación en clases distintas, lo que permite que en tiempo de ejecución el sistema determine cuál utilizar, de acuerdo con el tipo de parámetro con que es invocada. 16

Polimorfismo [Snyder]: Una operación genérica tiene diferente implementación para diferentes objetos, con conductas observables diferentes". Qué es Orientado a Objetos y qué no lo es? Dave Thomas en su artículo "What is an Object? define cuatro conceptos fundamentales en la Orientación a Objetos; estos son: Encapsulación. Paso de mensajes (solicitud de operaciones genéricas). Herencia de clases, y Ligamento tardío y temprano. 17

Qué es Orientado a Objetos y qué no lo es? Mientras que para Peter Wegner es suficiente tener: Objetos. Clases, y Herencia de clases. Qué es Orientado a Objetos y qué no lo es? Pero para Booch, según lo expresa en existen cuatro conceptos fundamentales en la Orientación a Objetos, los cual son: Abstracción. Encapsulación. Modularidad y Herencia. 18

Notación gráfica de la Herencia en UML Clase Base Clase Derivada 1 Clase Derivada 2 Notación gráfica de Com-Com en UML Clase Compuesta 1..* 1..* 1 1 Clase Componente 1 Clase Componente 2 19

Ejemplo 1 UML Compra Tarjeta dueño 1 1..* Cliente CompraColones posee 1 0..* Nacional Internacional posee 0..* 1 CompraDolares Clasica Casca Dorada 1 ETAPA Encontrar las clases 20

Notación Gráfica en UML Clase Ejemplo 1. Usted ha sido contratado en una empresa de tarjetas de crédito como analista de sistemas. Esta empresa desea crear un nuevo sistema de cómputo Orientado a Objetos utilizando UML y C++ para el control de estados de cuenta de sus clientes. Esta empresa tiene 4 tipos de tarjetas, esta son: La tarjeta t nacional, esta tarjeta t tiene los siguientes i aspectos: nombre del cliente, número de cuenta (número de tarjeta), límite de crédito en colones, número de pin (para los cajeros), fecha de corte, dirección del cliente, fecha límite de pago, un pago de contado (todo el saldo), pago mínimo (que es el 25% del pago de contado), además tiene una lista de todas las compras efectuadas en el mes y los montos respectivos en colones. La tarjeta internacional, esta tiene los mismos datos que la tarjeta nacional, pero todos se maneja en dólares, es decir, todos los montos son en dólares, así por ejemplo la lista de compras efectuadas viene en dólares, aunque la compras se hagan en colones, córdobas o cualquier otro tipo de moneda. La tarjeta clásica, este tipo de tarjeta es a la vez una tarjeta nacional e internacional, esto quiere decir que tiene todos los datos de las anteriores, manejando un pago de contado en colones y otro en dólares, un pago mínimo en colones y otro en dólares, además tiene dos listas de compras, una en colones y la otra en dólares. En este tipo de tarjeta todo lo que el cliente compre en el país se incluye en la lista de compras en colones, mientras que todo lo que compre en el extranjero se incluye en la lista de compras en dólares. La tarjeta dorada, este tipo de tarjeta es la mejor que ofrece la empresa, pues es equivalente a una tarjeta clásica, pero además incluye un monto de extrafinanciamiento en colones y en dólares. 21

Cómo crear clases en Rational Rose? 1. Dé click derecho sobre Logical View. 2. Selecione New Class y escriba nombre adecuado para la clase. 3. Dé click sobre el botón class del toolbar vertical, luego en alguna parte de la ventana Class Diagram y escoja la clase deseada. Compra Tarjeta Cliente CompraColones Nacional Internacional CompraDolares Clasica Resultado de la ETAPA N 1 en UML Dorada 22

2 ETAPA Identificar las Estructuras (Herencia y Com-Com) Notación gráfica de Herencia en UML Clase Base Clase Derivada 1 Clase Derivada 2 23

Cómo crear herencia en Rational Rose? 1. Dé click derecho sobre el botón Generalization del toolbar vertical. 2. Selecione la clase derivada (subclase) y arrastre el mouse hasta la clase base. 3. Para otra subclase, que es parte de un árbol de herencia, seleccionela y arrastre el mouse hasta el triángulo de herencia. Notación gráfica de Com-Com en UML Clase Compuesta 1..* 1..* 1 1 Clase Componente 1 Clase Componente 2 24

Cómo crear relaciones Com-Com (agregación) en Rational Rose? 1. Dé click derecho sobre el toolbar vertical, selecione customize y agregue g el botón Aggregation. 2. Dé click derecho sobre el botón Aggregation del toolbar vertical. 3. Selecione la clase compuesta ( whole ) y arrastre el mouse hasta la clase componente ( part ). 4. Con un doble click sobre la agregación se pueden colocar las cardinalidades y el nombre de esta. Ejemplo 1 Compra Tarjeta dueño 1 1..* Cliente CompraColones posee 1 0..* Nacional Internacional posee 0..* 1 CompraDolares Resultado de la ETAPA N 2 en UML Clasica Dorada 25

3 ETAPA Identificando los Módulos Package en UML Notación Gráfica en UML Paquete 1 Paquete 2 26

Cómo crear Temas ( Package ) en Rational Rose? 1. Dé click derecho sobre Logical View. 2. Selecione New Package y escriba nombre adecuado para el paquete (Tema). 3. Arrastre el paquete para alguna parte de la ventana Class Diagram. 4. Para cada una de las clases, arrastrela hasta el paquete a cual pertenece. Ejemplo 1 Compra (f rom Compras) Tarjeta dueño 1 1..* Cliente CompraColones (from Compras) posee 1 0..* Nacional (f rom Tarjetas) Internacional posee 0..* 1 CompraDolares (from Compras) Clasica Compras Tarjetas Dorada Resultado de la ETAPA N 3 en UML 27

4 ETAPA Definiendo los Atributos Notación Gráfica en UML Clase Atributo1 Atributo2 28

Cómo crear atributos en Rational Rose? 1. Dé click derecho sobre la clase deseada. 2. Selecione New Attribute y escriba nombre adecuado del atributo. Ejemplo 1 Compra (from Compras) NombreTienda Fecha Tarjeta Cl iente NumeroCuenta Nombre NumeroPin Cedula FechaCorte 1 dueño 1..* FechaPago Direccion CompraColones (from Compras) Monto posee 1 0..* Nacional PagoContado LimiteCredito Internacional PagoContado LimiteCredito posee 0..* 1 CompraDolares (from Compras) Monto Compras Tarjetas Cl asi ca Dorada ExtraFi nanciam ientocol ExtraFi nanciam ientodol Resultado de la ETAPA N 4 en UML 29

Relaciones de Asociación Notación Gráfica en UML Clase 1 nombre 0..* 1 Clase 2 Ejemplo en UML Curso Profesor 0..4 1 Significa que: Un objeto Curso está relacionado exactamente con un profesor (que lo va a impartir). Ej. El curso MA125, grupo 01, será impartido por el profesor Araya. Un objeto Profesor está relacionado con de 0 a 4 cursos (los cursos que el profesor va a impartir). 30

Cómo crear una asociación en Rational Rose? 1. Dé click derecho sobre el toolbar vertical, selecione customize y agregue g el botón Association. 2. Dé click derecho sobre el botón Association del toolbar vertical. 3. Selecione la primera clase de la asociación y luego la segunda clase. 4. Con un doble click sobre la asociación se pueden colocar las cardinalidades y el nombre de esta. 5 ETAPA Definiendo los Métodos 31

Notación Gráfica en UML Clase Método1() Método2() Método3() Cómo crear métodos en Rational Rose? 1. Dé click derecho sobre la clase deseada. 2. Selecione New Operation y escriba nombre adecuado del método. 32

Ejemplo 1 Compra (from Compras) NombreTienda Fecha Tarjeta NumeroCuenta NumeroPin FechaCorte FechaPago 1 dueño 1..* Cliente Nombre Cedula Direccion CompraColones (from Compras) Monto posee 1 0..* Nacional PagoContado LimiteCredito CalculaPagoMinimo() ImprimeEstadoCuenta() Internacional PagoContado posee LimiteCredito 0..* 1 CalculaPagoMinimo() ImprimeEstadoCuenta() CompraDolares (from Compras) Monto Compras Tarjetas Clasica ImprimeEstadoCuenta() Dorada ExtraFinanciamientoCol ExtraFinanciamientoDol ImprimeEstadoCuenta() Resultado de la ETAPA N 5 en UML Gracias 33