El proceso de desarrollo de software

Slides:



Advertisements
Presentaciones similares
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Advertisements

Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Programación Orientada a Objetos
El proceso de desarrollo de software
El Proceso de desarrollo de software
Problema abstracción DATOS ACCIONES Problemas y Programas Programa.
Abstracciones y Modelos
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
El proceso de desarrollo de software
Tipo de Dato Abstracto Tipos de datos:
Aplicación del paradigma orientado a objetos
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
PROGRAMACION ORIENTADA A OBJETOS
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Evaluación de Productos
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
POO Java Módulo 3 Elementos de programas Identificadores
Lic. Rosemary Torrico Bascopé
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Viviana Poblete López Módulo: Modelo de Datos
Fundamentos de programación
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
DEFINICIÓN  Es una forma de entender un problema identificando las entidades principales que se encuentran en el.  Es una forma de desarrollar un sistema.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de ahorro bancaria definimos.
TEMA 9: DIAGRAMA DE CLASE EN UML
PROGRAMACION ORIENTADA A OBJETOS
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Términos algoritmo diseñar algoritmo implementar algoritmo
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
Elaboración de algoritmos usando lógica de programación
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Introducción a la Programación Orientada a Objetos Sonia Rueda
UNIDAD 2: “Características del Modelado UML” CONTENDIDO Elaborado por: Ingeniero Harold Cabrera Meza Actualizado por: Ingeniero Nilson Albeiro Ferreira.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Diferencia entre implementar en RPA e IPOO - Diseño En.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Transcripción de la presentación:

El proceso de desarrollo de software Los sistemas de software actuales suelen resolver problemas complejos que requieren soluciones dinámicas y capaces de adaptarse a situaciones imprevisibles. El desarrollo de estos sistemas de software es un proceso que abarca distintas etapas y requiere la participación de un equipo de profesionales con diferentes capacidades y roles. Uno de los modelos más populares y simples para el proceso de desarrollo de software es el modelo en cascada. svr 8/25/2008 En las aplicaciones de mediana y gran escala con frecuencia hay varias alternativas de diseño La implementación es en cambio menos creativa, consiste en general código que pueda ser ejecutado por la computadora. Puede haber varios algoritmos alternativos para cada servicio Introducción a la Programación Orientada a Objetos 1

El proceso de desarrollo de software Estudio de Factibilidad D O C U M E N T A I Especificación de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

El proceso de desarrollo de software El producto final de este proceso es un sistema de software documentado que resuelve el problema planteado por la especificación de requerimientos. En los problemas de mediana y gran escala este proceso requiere de creatividad, capacidad de abstracción y también de un principio y una metodología que sirvan de guía, orienten y sistematicen las actividades en cada etapa. Con frecuencia una parte del desarrollo consiste en adaptar un sistema existente a nuevos requerimientos. La metodología debe facilitar los cambios. Introducción a la Programación Orientada a Objetos

El proceso de desarrollo de software Principio Describe propiedades generales que se aplican a todo el proceso de desarrollo Metodología Conjunto integrado de métodos, estrategias y técnicas Métodos, estrategias y técnicas Reglas específicas que guían las actividades de cada etapa Introducción a la Programación Orientada a Objetos

Programación Orientada a Objetos La programación orientada a objetos brinda un principio, una metodología y herramientas que apoyan al proceso de desarrollo de software en todas sus etapas. Las principales herramientas son el lenguaje de modelado y el lenguaje de programación. Estas herramientas deben brindar mecanismos adecuados para aplicar la metodología y favorecer la calidad y productividad. El mecanismo de abstracción sigue siendo dividir el problema en subproblemas para reducir la complejidad. La metodología nos indica cómo dividir. Introducción a la Programación Orientada a Objetos

Especificación de Requerimientos El ajedrez es un juego de mesa para dos personas. Es uno de los juegos más populares del mundo. Se considera no sólo un juego, sino un arte, una ciencia y un deporte mental. Cada bando posee 16 piezas, con diferentes capacidades de movimiento, que se mueven en un tablero cuadrado de 8×8 casillas, alternativamente claras y oscuras. Las piezas de cada jugador al principio de la partida son un rey, una dama o reina, dos alfiles, dos caballos, dos torres y ocho peones. … Introducción a la Programación Orientada a Objetos

Análisis orientado a objetos A partir de la especificación de requerimientos se identifican los objetos relevantes del problema, sus atributos y su comportamiento Introducción a la Programación Orientada a Objetos

Diseño orientado a objetos Los objetos se agrupan en clases de acuerdo a atributos y comportamiento compartido En resultado de esta etapa es un conjunto de diagramas elaborados usando un lenguaje de modelado. Entre ellos un diagrama de clases que especifica la colección de clases y sus relaciones. Tablero Pieza Peon Introducción a la Programación Orientada a Objetos

Diseño orientado a objetos El diseño de cada clase especifica los siguientes elementos: Nombre Atributos Servicios Responsabilidades Introducción a la Programación Orientada a Objetos

Diseño orientado a objetos El nombre de una clase representa la abstracción del conjunto de instancias Un atributo representa a una propiedad o cualidad relevante y que caracteriza a todos los objetos de una clase. Un servicio representa a una operación que todas las instancias de una clase pueden realizar. El conjunto de servicios modela el comportamiento de los objetos de la clase. Introducción a la Programación Orientada a Objetos

Diseño orientado a objetos Las responsabilidades especifican informalmente las obligaciones y compromisos de cada clase Los casos de prueba establecen conjuntos de valores para verificar si cada servicio satisface su funcionalidad y si en conjunto la clase cumple con sus responsabilidades Introducción a la Programación Orientada a Objetos

Implementación En esta etapa se escribe el código de cada clase en un lenguaje de programación, manteniendo las relaciones especificadas en el diagrama de clases. class Tablero { } class Pieza { } class Peon extends Pieza { } La implementación de cada servicio puede constituir en sí mismo un problema y demandar el diseño de un algoritmo que lo resuelva. Introducción a la Programación Orientada a Objetos

Verificación La verificación consiste en probar que cada servicio brinda la funcionalidad adecuada, cada clase cumple con sus responsabilidades y que la colección de clases en conjunto satisfacen los requerimientos. Si la clase Tablero usa los servicios provistos por la clase Peon, verificaremos cada servicio de la clase Peon y luego los servicios de la clase Tablero. Introducción a la Programación Orientada a Objetos

El modelo computacional Objetos del problema Objetos de Software abstracción Cada objeto relevante del problema está asociado a un objeto de software que lo modela. Los objetos se comunica a través de mensajes. Por ejemplo un objeto de clase Jugador puede enviar un mensaje al objeto de clase Tablero, quien a su vez envía un mensaje a un objeto de clase Peon. Introducción a la Programación Orientada a Objetos

El concepto de Objeto El término objeto se utiliza entonces para referirse a dos conceptos relacionados pero diferentes. En la etapa de análisis de un sistema se identifican los objetos del problema. Durante la ejecución de un programa se crean objetos de software. Introducción a la Programación Orientada a Objetos

El concepto de Clase Los objetos se caracterizan a través de atributos y comportamiento. Un atributo es una propiedad o cualidad El comportamiento queda determinado por un conjunto de servicios. Los objetos se agrupan en clases de acuerdo a los atributos y el comportamiento compartido. Una clase es un patrón o esquema que especifica los atributos y servicios compartidos por todos los objetos que pertenecen a ella. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Cuenta Bancaria Se desea modelar un cajero que brinde opciones para Depositar, Extraer y Mostrar el saldo de una cuenta Bancaria. Una cuenta cancaria tiene un código y un saldo. El código identifica unívocamente a la cuenta y es fijo. El saldo aumenta cuando el titular de la cuenta efectúa un depósito y disminuye cuando realiza una extracción. En condiciones normales el saldo debe ser un valor no negativo, pero eventualmente es posible que el titular extraiga más dinero que el que tiene disponible y en es caso decimos que la cuenta está “en descubierto”. El banco tiene establecido un monto máximo para los saldos en descubierto. Este monto es común para todas las cuentas. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Cuenta Bancaria Se desea modelar un cajero que brinde opciones para Depositar, Extraer y Mostrar el saldo de una cuenta bancaria. El cajero tiene asociada una interfaz gráfica. CuentaBancaria GUI_Cta_Bancaria Cajero Introducción a la Programación Orientada a Objetos

Diagrama de Clases Atributos de Clase CuentaBancaria <<atributos de la clase>> max_descubierto: real El atributo max_descubierto es compartido por todas las instancias de la clase CuentaBancaria. Sólo usaremos como atributos de clase valores constantes. Introducción a la Programación Orientada a Objetos

Atributos de Instancia Diagrama de Clases Atributos de Instancia CuentaBancaria <<atributos de la clase>> max_descubierto: real <<atributos de la instancia>> codigo : entero saldo : real El código se establece en la creación de la Cuenta Bancaria y no cambia. Introducción a la Programación Orientada a Objetos

Diagrama de Clases Constructores CuentaBancaria <<atributos de la clase>> max_descubierto: real <<atributos de la instancia>> codigo : entero saldo : real <<constructor>> CuentaBancaria (cod : entero) CuentaBancaria (cod: entero, sal:real) Introducción a la Programación Orientada a Objetos

Diagrama de Clases Comandos CuentaBancaria <<atributos de la clase>> max_descubierto: real <<atributos de la instancia>> codigo : entero saldo : real La operación solo se realiza si no se supera el máximo autorizado para extraer en descubierto <<comandos>> depositar (mto : real) extraer (mto : real) establecerSaldo (mto : real) En todos los casos se asume mto>0 Introducción a la Programación Orientada a Objetos

Diagrama de Clases Consultas CuentaBancaria <<atributos de la clase>> max_descubierto: real <<atributos de la instancia>> codigo : entero saldo : real … <<consultas>> obtenerCodigo () : int obtenerSaldo () : real obtenerMax_Descubierto(): real descubierto () : boolean La cuenta está en descubierto cuando el saldo es negativo Introducción a la Programación Orientada a Objetos

Implementación en Java La unidad básica de programación en Java es la clase. Un programa en Java está constituido por una colección de clases . La implementación de una clase consiste en definir sus miembros: Atributos: variables de instancia y de clase Servicios: constructores y métodos Cuando hablamos de programa tenemos que distinguir entre el TEXTO que especifica el modelo de la EJECUCIÓN del programa. Cuando pensamos en el texto un programa en Java es una colección de clases. Cuando pensamos en la ejecución del programa pensamos en objetos comunicándose a través de mensajes. Introducción a la Programación Orientada a Objetos

Implementación en Java class CuentaBancaria { //atributos de la clase //atributos de instancia //Constructores //Comandos //Consultas } Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Atributos de Clase Cada atributo compartido por todas las instancias de una clase, esto es, cada atributo de clase queda asociado la declaración de una variable. CuentaBancaria <<atributos de la clase>> max_descubierto: real class CuentaBancaria { //atributos de la clase private static final int max_descubierto=1000; … } Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Atributos de Instancia CuentaBancaria … <<atributos de la instancia>> codigo : entero saldo : real class CuentaBancaria { … private int codigo; private float saldo; } Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Modificadores de Acceso Dentro de la definición de una clase cada declaración de atributo de instancia y cada definición de un método puede ser precedida por el modificador de acceso public o private. Si un atributo de instancia se declara como privado solo puede ser usado dentro de la clase, esto es, es visible en los métodos definidos en la misma clase. Si se declara como público puede accederse desde el exterior de la clase. Adoptaremos la convención de declarar los atributos de instancia como privados. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Modificadores de Acceso Un método que se declara privado sólo puede ser invocado por métodos de la misma clase. Si un método se define como público es visible desde el exterior de la clase. Declararemos como públicos los métodos que estén especificados en el diagrama de clases. Los métodos auxiliares los definiremos como privados. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java class CuentaBancaria { //atributos de clase private static final float max_descubierto=1000; //atributos de instancia private int codigo; private float saldo; … } Cuando hablamos de programa tenemos que distinguir entre el TEXTO que especifica el modelo de la EJECUCIÓN del programa. Cuando pensamos en el texto un programa en Java es una colección de clases. Cuando pensamos en la ejecución del programa pensamos en objetos comunicándose a través de mensajes. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Servicios En la implementación cada constructor, comando o consulta tiene encabezamiento y un bloque. Un bloque define un nuevo ambiente de referenciamiento. Las variables declaradas dentro de un bloque son locales y no son visibles fuera de él. Un mismo nombre no puede ligarse a dos variables en el mismo bloque ni en bloques anidados. Una variable puede ser usada a partir de la instrucción que sigue a su declaración. Adoptaremos la convención de declarar las variables de un bloque al principio. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Un servicio recibe información desde el exterior a través de sus parámetros. En Java el pasaje de parámetros es por valor. parámetro parámetro formal argumento parámetro real Cada variable tiene asociado un tipo. Los tipos int y float son tipos elementales. Un tipo elemental determina un conjunto de valores y un conjunto de operaciones que se aplican sobre estos valores. En ejecución, una variable de un tipo elemental mantiene un valor que corresponde al tipo y participa en las operaciones establecidas por su tipo. El mismo identificador puede ligarse a servicios diferentes, siempre que el tipo o número de parámetros sea también distinto. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Constructores < Identificador de la clase > ( [< Parámetros Formales > ]* ) { < bloque constructor > } El bloque no incluye una instrucción para retornar un valor Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Constructores CuentaBancaria <<constructores>> CuentaBancaria (cod : entero) CuentaBancaria (cod: entero, sal:real) public CuentaBancaria(int cod) { codigo = cod; saldo = 0 ; } El Un constructor es un servicio provisto por la clase y se caracteriza porque reciben el mismo nombre que la clase. constructor va a invocarse cuando se cree un objeto de clase CuentaBancaria y se desee establecer únicamente su código. El constructor recibe un parámetro. El pasaje de parámetros en Java es por valor. El valor de la variable cod se asigna a la variable codigo, que es un atributo de instancia. La segunda asignación es innecesaria, por omisión la variable se inicializa en 0. Se realiza además una conversión implícita. El constructor va a invocarse cuando se cree un objeto de clase CuentaBancaria y se establezcan los valores iniciales de los dos atributos de instancia. El constructor recibe dos parámetros. El nombre CuentaBancaria está sobrecargado. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Constructores CuentaBancaria <<constructores>> CuentaBancaria (cod : entero) CuentaBancaria (cod: entero, sal:real) public CuentaBancaria(int cod , float sal) { codigo = cod; saldo = sal ; } El Un constructor es un servicio provisto por la clase y se caracteriza porque reciben el mismo nombre que la clase. constructor va a invocarse cuando se cree un objeto de clase CuentaBancaria y se desee establecer únicamente su código. El constructor recibe un parámetro. El pasaje de parámetros en Java es por valor. El valor de la variable cod se asigna a la variable codigo, que es un atributo de instancia. La segunda asignación es innecesaria, por omisión la variable se inicializa en 0. Se realiza además una conversión implícita. El constructor va a invocarse cuando se cree un objeto de clase CuentaBancaria y se establezcan los valores iniciales de los dos atributos de instancia. El constructor recibe dos parámetros. El nombre CuentaBancaria está sobrecargado. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Comandos y Consultas [ < Modificador > ]* < Tipo del Resultado > < Identificador > ( [< Parámetros Formales > ]* ) { < bloque > } [< instruccion > ]* < bloque> ::= Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Comandos Un comando es un servicio que modifica el estado interno del objeto y en algunos casos retorna un valor. Si no retorna un valor el método se define de tipo void. La instrucción return en este caso es opcional. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Comandos CuentaBancaria … <<comandos>> establecerSaldo (mto : real) depositar (mto : real) Se asume mto>0 public void establecerSaldo (float mto) { saldo = mto ; } Los comandos son métodos que en general afectan el estado interno (setter o mutators) public void depositar (float m) { saldo += m ; } Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Comandos CuentaBancaria La operación solo se realiza si no se supera el máximo autorizado para extraer en descubierto … <<comandos>> … extraer (mto : real) Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Comandos public void extraer(float m) { /*La operación solo se realiza si no se supera el máximo autorizado a extraer en descubierto */ if puedeExtraer(m) saldo = saldo – m; } Las consultas son métodos que computan un valor y devuelven un resultado (getter). La inversa no es necesariamente válida, es decir que un método devuelva un resultado no lo convierte en una consulta. Incluimos los comentarios en el diagrama como comentarios en el programa Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Consultas Una consulta es un método que retorna un valor de un tipo establecido. La definición establece el tipo del resultado y el bloque incluye una o más instrucciones para retornar un valor. Una invocación a una consulta aparece, en general, en una expresión. Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Consultas private boolean puedeExtraer(float m) { if (saldo – m > -max_descubierto) return true; else return false; } Las consultas son métodos que computan un valor y devuelven un resultado (getter). La inversa no es necesariamente válida, es decir que un método devuelva un resultado no lo convierte en una consulta. Escribimos dos instrucciones de retorno porque la legibilidad del código no se compromete. Introducción a la Programación Orientada a Objetos 42

Implementación de una Clase en Java Consultas private boolean puedeExtraer(float m) { return (saldo – m > -max_descubierto); } Las consultas son métodos que computan un valor y devuelven un resultado (getter). La inversa no es necesariamente válida, es decir que un método devuelva un resultado no lo convierte en una consulta. Introducción a la Programación Orientada a Objetos 43

Implementación de una Clase en Java Consultas CuentaBancaria … <<consultas>> obtenerSaldo(): real public float obtenerSaldo (){ return saldo; } Introducción a la Programación Orientada a Objetos

Implementación de una Clase en Java Consultas CuentaBancaria … <<consultas>> descubierto(): boolean public boolean descubierto(){ return saldo<0; } Introducción a la Programación Orientada a Objetos

Creación de Objetos La definición de una clase permite la creación de objetos en ejecución, dentro de la misma clase o en otra. Una vez definida la clase Cuenta_Bancaria podemos definir otra clase Cajero, que brinda el método main que crea un objeto de clase Cuenta_Bancaria. class Cajero { public static void main (String args[]) { ... CuentaBancaria cta = new CuentaBancaria(1555,1000); } Introducción a la Programación Orientada a Objetos

Comunicación entre Objetos Mensajes La comunicación entre objetos se realiza a través de mensajes. Cuando un objeto recibe un mensaje ejecuta un método. La clase del objeto determina el método que se ejecuta en respuesta al mensaje. La sintaxis de un mensaje es: [ < Idetificador > ] . < Identificador > ( [< Lista de parámetros >] ) Un método puede modificar los valores de los atributos de instancia, computar un valor o provocar algún otro tipo de efecto. Introducción a la Programación Orientada a Objetos

Comunicación entre Objetos Mensajes Un objeto de clase CuentaBancaria va a ejecutar un método cuando reciba un mensaje requiriendo ese servicio: class Cajero { public static void main (String args[]) { ... CuentaBancaria cta = new CuentaBancaria(1555,1000); cta.depositar(550); } Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Durante la implementación de un sistema, una clase puede pensarse como una pieza, una componente de la colección de clases que en conjunto va a constituir el sistema. Antes de que la clase se integre en la colección y pueda ser usada por otras clases, es muy importante verificar que actúa de acuerdo a su especificación. La verificación puede hacerse en forma interactiva desde el ambiente. Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Testers Una alternativa más natural es verificar inicialmente la clase usando un tester o driver. La clase tester puede verificar los servicios provistos por CuentaBancaria con valores fijos, establecidos adecuadamente. Por ejemplo podríamos testear la clase creando una cuenta con saldo inicial 100 y luego alternar depósitos y extracciones (150,-60,150,500,-160). Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Testers Para definir un tester implementamos una clase que incluye un método definido como: class tester_CuentaBancaria { public static void main (String args[]) { } Todo programa en Java debe incluir un método con esta especificación. Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Testers class tester_CuentaBancaria { public static void main (String args[]) { CuentaBancaria cb; } Declara una variable llamada cb de tipo clase CuentaBancaria Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Testers class tester_CuentaBancaria { public static void main (String args[]) { CuentaBancaria cb; cb = new CuentaBancaria (125,100); } Crea un objeto de clase CuentaBancaria, lo liga a la variable cb e invoca al constructor. Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Testers El tipo de la variable cb es CuentaBancaria La instrucción new crea un objeto, una instancia de esta clase, y lo liga a la variable. El objeto está caracterizados por dos atributos de instancia. Los atributos de instancia de un objeto de clase CuentaBancaria son privados, de modo que sus valores sólo pueden ser accedidos desde el exterior por los servicios públicos que brinda la clase. Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Testers class tester_CuentaBancaria { public static void main (String args[]) { CuentaBancaria cb; cb = new CuentaBancaria (125,100); cb.depositar(150); } Le envía el mensaje depositar(150) al objeto ligado a la variable cb. Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Testers class tester_CuentaBancaria { public static void main (String args[]) { CuentaBancaria cb; cb = new CuentaBancaria (125,100); cb.depositar(150); cb.extraer(60); } Le envía el mensaje extraer(60) al objeto ligado a la variable cb. Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Testers Cuando una instancia de la clase CuentaBancaria recibe el mensaje depositar (150) se ejecuta el método del mismo nombre. Es decir, la ejecución de cb.depositar (150); modifica el atributo de instancia saldo incrementando su valor en 150. Introducción a la Programación Orientada a Objetos

Verificación de una Clase en Java Tester con valores generados al azar Otra alternativa para verificar la clase CuentaBancaria es usar una clase tester que no use valores fijos sino valores generados al azar. Para obtener una secuencia de valores al azar podemos usar la clase Random provista por Java. Esta alternativa se desarrollará en una clase práctica de laboratorio. Introducción a la Programación Orientada a Objetos

Alternativas de Diseño El diseñador de la aplicación había decidido que era responsabilidad de la clase CuentaBancaria controlar si es posible hacer una extracción Otra decisión posible es que la clase CuentaBancaria asuma que la verificación la hace la clase que usa el servicio. Asume que antes de ser invocado se ha controlado que no se superará el máximo autorizado para extraer en descubierto <<comandos>> depositar (mto : real) extraer (mto : real) establecerSaldo (mto : real) Introducción a la Programación Orientada a Objetos

Alternativas de Diseño public void extraer(float m) { /*Asume que antes de ser invocado se ha controlado que no se superará el máximo autorizado para extraer en descubierto */ saldo -= m; } Introducción a la Programación Orientada a Objetos

Alternativas de Diseño int i = 0; int monto; int saldo; int azar; while (i<50) { i++; azar = gen.nextInt(2)+1; monto = gen.nextInt(500)+10; if (azar==1)… else { if (puedeExtraer(m){ cb.extraer(monto); System.out.println (i+" extraer " + monto+" Saldo "+cb.obtenerSaldo());} else … } Introducción a la Programación Orientada a Objetos

Alternativas de Diseño public boolean puedeExtraer(float m) { return (saldo – m > -max_descubierto); } Las consultas son métodos que computan un valor y devuelven un resultado (getter). La inversa no es necesariamente válida, es decir que un método devuelva un resultado no lo convierte en una consulta. Introducción a la Programación Orientada a Objetos 62

Recomendaciones Declarar las variables al principio del bloque. Usar identificadores significativos e indentar adecuadamente. Incluir comentarios que describan la funcionalidad de cada método y las responsabilidades establecidas en el diseño. NO escribir comentario que expliquen características del lenguaje No exagerar con los comentarios oscureciendo la lógica de la resolución. Introducción a la Programación Orientada a Objetos

Recomendaciones Si el método produce un resultado incluye una única instrucción de retorno al final, excepto si todo el código del método es un if-else con instrucciones simples. Los atributos de instancia son privados Los atributos de clase son privados y constantes Introducción a la Programación Orientada a Objetos

Contenido de la clase Objetos y Clases Atributos de instancia y de clase Servicios. Constructores, Comandos y Consultas Modificadores de acceso Creación y comunicación entre objetos. Implementación y Verificación de una Clase en Java Tester con valores establecidos Alternativas de diseño para Cuenta Bancaria Introducción a la Programación Orientada a Objetos

Contenido de la próxima clase Lenguaje de modelado y lenguaje de programación El modelo computacional de la POO La clase Cliente y la clase Proveedor Responsabilidades Diagramas de memoria Introducción a la Programación Orientada a Objetos