JAVA 2 Programación Orientada a LI & MSC OSCAR RAMIREZ CORTES Objetos Fundamentos del desarrollo de software orientado a objetos Hasta algunos años atrás, el desarrollo de software tenía como base el modelo procedural. El MP tiene como base la ejecución secuencial de rutinas o funciones, ordenadas de acuerdo con la manera en que se desea que funcione la aplicación. La Orientación a Objetos es una técnica más simple y natural para el proceso de análisis de problemas y construcción de aplicaciones. LI & MSC OSCAR RAMÍREZ CORTÉS Modelo Procedural vs Orientado a Objetos <<datos>> <<datos>> Cliente Pedido NuevoPedido Cliente_id Nombre Dir Tel Pedido_id Cliente_id Recibo Total IVA CrearPedido() AgregarProd() EliminarProd() FinalizarPedido() MP: Áreas de memoria y estructuras diferentes, código secuencial OO: Basado en la ejecución de métodos, todo organizado (funciones y datos en la misma área) <<inteligencia>> <<datos>> <<datos>> Cliente Pedido Cliente_id Nombre Dir Tel Pedido_id Cliente_id Recibo Total IVA CrearPedido() FinalizarPedido() <<inteligencia>> AgregarProducto() EliminarProducto() <<inteligencia>> LI & MSC OSCAR RAMÍREZ CORTÉS Abstracción para Modelar El proceso de abstracción consiste en comprender un sistema concreto, físico o no, y crear un modelo documentado y estandarizado que refleja su comportamiento, en éste caso, para el área de desarrollo de software. LI & MSC OSCAR RAMÍREZ CORTÉS Definiendo la Abstracción Proceso de modelado de sistemas concretos o no, que extrae de su contexto los principales objetos, y los describe por medio de la discriminación de sus propiedades y funcionalidades. LI & MSC OSCAR RAMÍREZ CORTÉS Los Objetos del Sistema Son elementos conceptuales destacados por medio del proceso de abstracción, sus características son: A) Propiedades (atributos): describen el objeto, sus posibles estados y la función que desempeña en el sistema. B) Funcionalidades (métodos): describen la acción del objeto y representan su comportamiento dentro del sistema. Al definir un objeto, en realidad se crean Clases. LI & MSC OSCAR RAMÍREZ CORTÉS Clases Modelos conceptuales a partir de los cuales se generan instancias (copias) u objetos con la característica de pasar a éste toda su descripción y funcionalidad. Una Clases también es una “superclase” y los objetos “subclases”. LI & MSC OSCAR RAMÍREZ CORTÉS Ejemplos CLASE: Atributos Tipo Tamaño Color Material Código Etc… Atributos Saldo Límite Intereses Vencimiento Etc… Camisa CLASE: Funcionalidades CubrirCuerpo Lavarla Plancharla Venderse Regalarse Etc… Cuenta Bancaria Funcionalidades Débito Crédito Consulta de saldo Retiro Etc… LI & MSC OSCAR RAMÍREZ CORTÉS Elementos de la POO Clase modelo para la creación de objetos. Atributos Características. Métodos Funcionalidades. Objetos Instancias de la clase. UMLNotación para documentar aplicaciones POO. Diagramas de claseModelos a programarse. LI & MSC OSCAR RAMÍREZ CORTÉS UML, Unified Modeling Language Lenguaje de Modelado Unificado Define modelos, una representación simplificada de la realidad. Es visual, toda su expresividad se basa en gráficos. Lo componen un conjunto de diagramas cada uno destinado a cubrir algún aspecto del software. LI & MSC OSCAR RAMÍREZ CORTÉS Diagramas de Clase Nombre clase Nombre +/-Atributos Atributos (privados -) +/-Métodos Métodos (públicos + ) LI & MSC OSCAR RAMÍREZ CORTÉS Tipos de Accesos a Clases, Atributos y Métodos +Públicos. Con acceso total a los componentes. -Privados. Limitado únicamente al área del componente. LI & MSC OSCAR RAMÍREZ CORTÉS Tipos de Métodos get consulta (Accesor) set intercambio/mutación (Mutator) Operaciones o funciones (Worker) Constructores (Constructor) LI & MSC OSCAR RAMÍREZ CORTÉS Construyendo la primer aplicación Cuenta Nombre clase -numero: int Atributos -saldo: double (privados) -interes: double -vencimiento: Date + + Métodos + + (públicos ) + + + + + + getInteres( ):double getNumero( ): int getSaldo( ): double getVencimiento ( ): Date setSaldo(in saldoE:double): void setInteres(in intes:double): void setNumero(in num: int): void setVencimiento(in Fecha: Date): void debito (in valor:double): void credito(in valor: double):void get consulta (Accesor) set intercambio/mutación (Mutator) de operaciones o funciones (Worker) Constructores (Constructor) LI & MSC OSCAR RAMÍREZ CORTÉS