introducción a la programación orientada a objetos el desarrollo de software es un proceso que...
TRANSCRIPT
![Page 1: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/1.jpg)
Introducción a la Programación Orientada a Objetos
El desarrollo de software es un proceso que permite construir un modelo de la resoluciónde un problemaLa construcción de un modelo requiere de la aplicación de un principio, una metodología y un conjunto de herramientas.Una metodología propone un conjunto de métodos, estrategias y técnicas.
El proceso de desarrollo de software
![Page 2: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/2.jpg)
Herramientas
Introducción a la Programación Orientada a Objetos
DISEÑO Lenguaje de Modelado
IMPLEMENTACIÓN Lenguaje de Programación
IDE
El proceso de desarrollo de software
![Page 3: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/3.jpg)
Introducción a la Programación Orientada a Objetos
Programa
ABSTRACCIÓN
DATOS
ACCIONES
En los problemas de gran escala el proceso de abstracción es mayor
Métodos+Técnicas+Estrategias
Resolución de un Problema
Herramientas
El proceso de desarrollo de software
![Page 4: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/4.jpg)
DATOS ACCIONES +
Introducción a la Programación Orientada a Objetos
Dividir y Conquistar
El proceso de desarrollo de software
![Page 5: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/5.jpg)
Introducción a la Programación Orientada a Objetos
Problema
Subproblema 1 Módulo 1
ProgramaSubproblema 2
Subproblema 3
Módulo 2
Módulo 3
DISEÑO IMPLEMENTACIÓN
El proceso de desarrollo de software
![Page 6: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/6.jpg)
Introducción a la Programación Orientada a Objetos
HOSPITAL
Internar Internar
SISTEMAHOSPITAL
Descomposición a partir de las ACCIONES
Facturar
Operar
Facturar
Operar
DISEÑO IMPLEMENTACIÓN
El proceso de desarrollo de software
![Page 7: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/7.jpg)
Introducción a la Programación Orientada a Objetos
HOSPITAL
Paciente
SISTEMAHOSPITAL
Descomposición a partir de los DATOS
Médico
Factura Factura
DISEÑO IMPLEMENTACIÓN
Internacion
Paciente
Médico
Internacion
El proceso de desarrollo de software
![Page 8: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/8.jpg)
La programación orientada a objetos brinda un principio simple y una metodología que guía el proceso de desarrollo de software.La metodología propone identificar en la etapa de análisis los objetos relevantes del problema.En ejecución cada uno de los objetos relevantes del problema quedará asociado a un objeto de software.
Introducción a la Programación Orientada a Objetos
La programación orientada a objetos
![Page 9: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/9.jpg)
Introducción a la Programación Orientada a Objetos
La programación orientada a objetosAnálisis
![Page 10: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/10.jpg)
Paciente
Médico
Factura
Introducción a la Programación Orientada a Objetos
Internado
Planta Contratado
Internación
La programación orientada a objetosDiseño
![Page 11: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/11.jpg)
APLICACIÓN
class Paciente class Médico
class Factura class Internación
Introducción a la Programación Orientada a Objetos
class Internadoclass Planta
class Contratado
La programación orientada a objetosImplementación
![Page 12: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/12.jpg)
Durante la ejecución de un software desarrollado usando la metodología de orientación a objetos, se crean en memoria los objetos de software que mantienen un representación de los objetos del problema.
Introducción a la Programación Orientada a Objetos
}
}
La programación orientada a objetosEjecución
![Page 13: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/13.jpg)
Introducción a la Programación Orientada a Objetos
Internación
Médico
InternadoFactura
El modelo computacional de la programación orientada a objetos es un mundo poblado de objetos comunicándose a través de mensajes. Cada objeto que recibe un mensaje ejecuta un servicio determinado por su clase.
La programación orientada a objetosModelo computacional
![Page 14: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/14.jpg)
Durante la etapa de diseño se escriben diagramas de clases usando un lenguaje de modelado.
Introducción a la Programación Orientada a Objetos
NombreAtributos de claseAtributos de instanciaConstructoresComandosConsultas
Responsabilidades
La diagrama de una clase
![Page 15: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/15.jpg)
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
La diagrama de una clase
![Page 16: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/16.jpg)
Las responsabilidades especifican informalmente las obligaciones y compromisos de cada clase
Introducción a la Programación Orientada a Objetos
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.
Un mismo problema puede modelarse de formas diferentes, dependiendo de las decisiones de diseño.
La diagrama de una clase
![Page 17: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/17.jpg)
C<<atributos de clase>>
<<atributos de instancia>><<constructores>>
<<comandos>>
<<consultas>>
La diagrama de una clase
Un cambio en los requerimientos provoca una modificación de diseño.
![Page 18: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/18.jpg)
La implementación de una Clase en Java
Desde el punto de vista estático un programa en Java es una colección de clases relacionadas.
Desde el punto de vista dinámico un programa en Java es un conjunto de objetos comunicándose a través de mensajes.
![Page 19: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/19.jpg)
La implementación de una Clase en Java
Los miembros de una clase son atributos y servicios. Manteniendo la misma clasificación que la propuesta por el lenguaje de modelado, los atributos de una clase pueden ser atributos de clase o atributos de instancia. Los servicios provistos por una clase pueden ser constructores o métodosLos métodos pueden ser comandos o consultas.
![Page 20: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/20.jpg)
Introducción a la Programación Orientada a Objetos
class C {//atributos de la clase//atributos de instancia//Constructores//Comandos//Consultas}
Estructura de una clase
La implementación de una Clase en Java
Adoptamos algunas convenciones para organizar los miembros, retener la estructura del diagrama y favorecer la legibilidad.
![Page 21: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/21.jpg)
La implementación de una Clase en Java
Cada atributo queda ligado a una variable. La variable tiene un tipo y un alcance. En este caso el tipo de ambos atributos es elemental. La palabra reservada private es un modificador, indica que el alcance de la variable es la clase. Fuera de la clase los atributos privados no son visibles. Los modificadores static y final se utilizan para definir atributos de clase constantes.
Atributos
![Page 22: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/22.jpg)
La implementación de una Clase en Java
En la declaración de atributos, el tipo precede al nombre. Un tipo elemental determina un conjunto de valores y un conjunto de operaciones que se aplican sobre estos valores. Java brinda siete tipos de datos elementales.En ejecución, un atributo de un tipo elemental mantiene un valor que corresponde al tipo y participa en las operaciones establecidas por su tipo.
Atributos
![Page 23: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/23.jpg)
La implementación de una Clase en Java
Un constructor es un servicio provisto por la clase y se caracteriza porque recibe el mismo nombre que la clase. El constructor se invoca cuando se crea un objeto y habitualmente se usa para inicializar los valores de los atributos de instancia. Una clase puede brindar varios constructores, siempre que tengan diferente número o tipo de parámetros.
Constructores
![Page 24: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/24.jpg)
La implementación de una Clase en Java
Si en una clase no se define explícitamente un constructor, el compilador crea automáticamente uno. Si la clase incluye uno o más constructores, el compilador no agrega ningún otro implícitamente.En este caso de estudio la clase brinda un único constructor que establece los valores de los atributos de instancia de acuerdo a los parámetros.
Constructores
![Page 25: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/25.jpg)
La implementación de una Clase en Java
Sintaxis de un Constructor
< Identificador de la clase >
( [< Parámetros Formales > ]* )
{ < bloque constructor > }
El bloque no incluye una instrucción para retornar un valor
![Page 26: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/26.jpg)
La implementación de una Clase en Java
Comandos
Un comando brinda un servicio sin retornar necesariamente un valor. Si no retorna un valor el método se define de tipo void. La instrucción return en este caso es opcional.
![Page 27: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/27.jpg)
La implementación de una Clase en Java
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.
Consultas
![Page 28: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/28.jpg)
La implementación de una Clase en Java
Sintaxis de Comandos y Consultas
[< instruccion > ]* < bloque> ::=
[ < Modificador > ]* < Tipo del Resultado >
< Identificador > ( [< Parámetros Formales > ]* )
{ < bloque > }
![Page 29: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/29.jpg)
[ < Idetificador > ] . < Identificador > ( [< Lista de parámetros >] )
Introducción a la Programación Orientada a Objetos
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:
La implementación de una Clase en Java
Mensajes
![Page 30: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/30.jpg)
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.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.
Ambiente de Referenciamiento
La implementación de una Clase en Java
![Page 31: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/31.jpg)
La declaración de una variable establece su nombre, alcance y tipo. En Java el tipo de una variable puede ser elemental o una clase.
Variables, alcance y tipo
La implementación de una Clase en Java
![Page 32: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/32.jpg)
Una variable declarada en una clase como atributo de clase o de instancia, es visible en toda la clase. Si se declara como privada, solo puede ser usada dentro de la clase, esto es, el alcance es la clase completa. Por el momento, adoptaremos la convención de declarar los atributos, de instancia y de clase, como privados. Solo usaremos atributos de clase para representar valores constantes.
Variables, alcance y tipo
La implementación de una Clase en Java
![Page 33: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/33.jpg)
Una variable declarada local a un bloque se crea en el momento que se ejecuta la instrucción de declaración y se destruye cuando termina el bloque que corresponde a la declaración. Solo es visible en el bloque, el alcance de una variable local es entonces el bloque en el que se declara.
Variables, alcance y tipo
La implementación de una Clase en Java
![Page 34: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/34.jpg)
Una variable declarada como parámetro formal de un servicio se trata como una variable local que se crea en el momento que comienza la ejecución del servicio y se destruye cuando termina. Se inicializa con el valor del argumento o parámetro real. El pasaje de parámetros es entonces por valor.
parámetro
argumento
parámetro formal
parámetro real
Variables, alcance y tipo
La implementación de una Clase en Java
![Page 35: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/35.jpg)
Un tipo elemental determina el conjunto de valores al que una variable de ese tipo pueden quedar asociada. En ejecución variable de tipo elemental mantiene un valor atómico, indivisible, dentro del conjunto de valores establecidos por su tipo. El valor se almacena en memoria, en una celda que se ocupa en el momento que se ejecuta la declaración.
Variables, alcance y tipo
La implementación de una Clase en Java
![Page 36: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/36.jpg)
Una expresión computa un valor aplicando operadores a operandos. Los operandos pueden ser constantes, atributos, variables locales y parámetros. Java brinda un mecanismo de conversión implícito para los tipos elementales que permite escribir expresiones mixtas, esto es, con operandos de distinto tipo. Si un método retorna un valor, la instrucción return estará seguida por una expresión del mismo tipo que aparece en el encabezamiento.
Expresiones
La implementación de una Clase en Java
![Page 37: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/37.jpg)
La verificación de una clase en Java
Un sistema de software orientado a objetos va a estar constituido por una colección de clases relacionadas entre sí. En Java una de las clases contiene un método llamado main que inicia la ejecución. Cada clase debería ser testeada individualmente antes de integrarse con el resto de las clases que conforman la colección.
![Page 38: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/38.jpg)
La verificación de una clase en Java
Una alternativa es escribir una clase tester que verifique los servicios provistos utilizando un conjunto de casos de prueba. El objetivo es verificar que la clase cumple con sus responsabilidades y cada servicio brinda la funcionalidad establecida en la especificación de requerimientos.La clase tester contendrá el método main que inicia la ejecución.
![Page 39: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/39.jpg)
La verificación de una clase en Java
Los casos de prueba pueden ser:• Valores fijos establecidos como caso de prueba.• Valores ingresados por el usuario desde la
consola, desde un archivo o a través de una interfaz gráfica.
• Valores generados al azar.
![Page 40: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/40.jpg)
Una variable de un tipo clase permite nombrar a un objeto de software. En ejecución, el valor de una variable de tipo clase es una referencia. Una referencia puede ser nula o ligada. En el momento que se ejecuta la declaración de una variable se ocupa una locación de memoria, pero no para mantener el objeto mismo, sino una referencia.
Objetos y Referencias
![Page 41: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/41.jpg)
La referencia es la dirección de la celda de memoria en donde efectivamente se va a almacenar el estado interno del objeto. Cada objeto de software tiene una identidad, una propiedad que lo distingue de los demás. La referencia a un objeto puede ser usada como propiedad para identificarlo.
Objetos y Referencias
![Page 42: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/42.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Un banco ofrece cajeros automáticos a través de los cuales los clientes pueden realizar depósitos, extracciones y consultar el saldo de cuenta corriente. En el momento que se crea una cuenta corriente bancaria se establece su código y el saldo es 0. También es posible crear una cuenta estableciendo su código y saldo inicial. El código no se modifica, el saldo cambia con cada depósito o extracción. Cada cliente puede extraer en descubierto hasta un monto máximo.
Especificación de Requerimientos
![Page 43: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/43.jpg)
CuentaBancaria
<<atributos de clase>>maxDescubierto = 1000<<atributos de instancia>>codigo:enterosaldo:real
<<consultas>>obtenerCodigo():enteroobtenerSaldo():enteroenDescubierto():booleanmayorSaldo():enteroctaMayorSaldo():CuentaBancariaclone():CuentaBancariaequals(c: Cta. Cte. Bancaria):boolean
Requiere código > 0 y saldo > -maxDescubierto
Retorna el código de la cuenta con mayor saldo
Retorna la cuenta con mayor saldo
Los servicios provistos por la clase determinan los mensajes que un objeto puede recibir.
Caso de Estudio: Cta. Cte. Bancaria
Una cuenta está en descubierto si saldo<0
![Page 44: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/44.jpg)
Una cuenta corriente permite al cliente extraer un monto mayor al que corresponde a su saldo.El atributo de clase maxDescubierto establece un valor constante compartido por todas los objetos de la clase CuentaBancaria.Todos los objetos tendrán atributos de instancia codigo y saldo, pero cada objeto tendrá valores diferentes para estos atributos.Por supuesto, dos cuentas pueden tener el mismo saldo, pero en general no habrá dos objetos con un mismo código, salvo que representen a una misma cuenta en dos momentos diferentes.
Caso de Estudio: Cta. Cte. Bancaria
![Page 45: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/45.jpg)
Notemos que la clase CuentaBancaria no brinda métodos que permitan ingresar valores o mostrar valores.Toda la entrada y salida queda fuera de la clase.Adoptamos la convención de modular separando la entrada y salida de datos de la clase que encapsula los atributos y el comportamiento.
Caso de Estudio: Cta. Cte. Bancaria
![Page 46: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/46.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Todos los objetos de una misma clase están caracterizados por un conjunto de atributos.
Atributos
class CuentaBancaria{//Atributos de claseprivate static final maxDescubierto =1000;//Atributos de Instancia/*El codigo se establece al crear la cuenta y no cambia*/private int codigo;private float saldo;
Cuenta Bancaria<<atributos de clase>>maxDescubierto = 1000<<atributos de instancia>>codigo:enterosaldo:real
![Page 47: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/47.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Las variables codigo y saldo pueden usarse en cualquiera de los servicios provistos por la clase.La variable maxDescubierto puede ser usada en una expresión, pero no puede ser modificada.Desde el exterior de la clase ninguno de los atributos es visible, solo pueden ser accedidos a través de los servicios.
Atributos
![Page 48: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/48.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Constructores
// Constructorespublic CuentaBancaria(int cod) {
codigo = cod; saldo = 0;}public CuentaBancaria(int cod, float sal) {
codigo = cod; saldo = sal;}
Cuenta Bancaria<<constructores>>CuentaBancaria(c:entero)CuentaBancaria(c:entero,s:float)
![Page 49: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/49.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Comandos
Cuenta Bancaria<<comandos>> depositar(mto:real)
// Comandospublic void depositar(float mto){//Requiere mto > 0 saldo+=mto; }
![Page 50: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/50.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Comandos
La variable puede es local al método.Se crea e inicializa en la declaración y se destruye al terminar la ejecución del comando. La variable mto es un parámetro del método extraer. Al comenzar la ejecución se crea una nueva variable, local al método, que se inicializa con el valor del parámetro real. Al terminar la ejecución el parámetro se destruye.
![Page 51: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/51.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ComandosCuenta Bancaria<<comandos>> extraer(mto:real):boolean
public boolean extraer(float mto){/*si el mto es mayor al saldo+maxDescubierto retorna false y la extracción no se realiza*/ boolean puede = true; if (saldo+maxDescubierto >= mto) saldo=saldo-mto; else puede = false; return puede;}
![Page 52: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/52.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Comandos
El método incluye una expresión lógica y dos asignaciones.Cada expresión evalúa a sus operandos que pueden ser atributos, variables locales o parámetros.
![Page 53: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/53.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ComandosCuenta Bancaria<<comandos>> extraer(mto:real):boolean
public void copy(CuentaBancaria cta){ codigo = cta.obtenerCodigo(); saldo = cta.obtenerSaldo();}
![Page 54: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/54.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ConsultasCuenta Bancaria<<consultas>>obtenerCodigo():enteroobtenerSaldo():entero
// Consultaspublic int obtenerCodigo(){ return codigo;}public float obtenerSaldo(){ return saldo; }
![Page 55: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/55.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ConsultasCuenta Bancaria<<consultas>>enDescubierto():boolean
public boolean enDescubierto(){ return saldo < 0;}
![Page 56: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/56.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ConsultasCuenta Bancaria<<consultas>>mayorSaldo():entero
public int mayorSaldo(CuentaBancaria cta){/*Retorna el CODIGO de la cuenta que tiene mayor saldo Requiere cta ligada */ if (saldo > cta.obtenerSaldo()) return codigo; else return cta.obtenerCodigo();}
![Page 57: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/57.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Consultas
public int mayorSaldo(CuentaBancaria cta){/*Retorna el CODIGO de la cuenta que tiene mayor saldo Requiere cta ligada */ if (saldo > cta.obtenerSaldo()) return codigo; else return cta.obtenerCodigo();}
La consulta recibe un parámetro de clase CuentaBancaria. El parámetro es un objeto.El condicional compara el saldo de la cuenta que recibe el mensaje con el saldo de la cuenta que se recibe como parámetro.
![Page 58: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/58.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ConsultasCuenta Bancaria<<consultas>>ctaMayorSaldo():CuentaBancaria
public CuentaBancaria cta_mayorSaldo(CuentaBancaria cta){/*Retorna la CUENTA que tiene mayor saldo Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return this; else return cta;}
![Page 59: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/59.jpg)
Caso de Estudio: Cta. Cte. Bancaria
Consultas
public CuentaBancaria cta_mayorSaldo(CuentaBancaria cta){/*Retorna la CUENTA que tiene mayor saldo Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return this; else return cta;}
En este caso el resultado de la consulta es un objeto de clase CuentaBancaria.La instrucción return tiene que estar seguida de un objeto.La palabra this se refiere al objeto que recibió el mensaje.
![Page 60: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/60.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ConsultasCuenta Bancaria<<consultas>>clone():CuentaBancaria
public CuentaBancaria clone(){ CuentaBancaria aux = new CuentaBancaria (codigo,saldo); return aux;}
![Page 61: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/61.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ConsultasCuenta Bancaria<<consultas>>clone():CuentaBancaria
public CuentaBancaria clone(){ return new CuentaBancaria (codigo,saldo);}
![Page 62: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/62.jpg)
Caso de Estudio: Cta. Cte. Bancaria
ConsultasCuenta Bancaria<<consultas>>toString()
public String toString(){ return codigo+" "+saldo;}
![Page 63: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/63.jpg)
CuentaBancaria cb1; cb1 = new CuentaBancaria(111,1000);
CuentaBancaria cb1 = new CuentaBancaria(111,1000);
Es equivalente a:
En el primer caso la declaración de la variable se separa de la creación del objeto. En el segundo caso, una única instrucción provoca la declaración de la variable y la creación del objeto.En ambos la variable cb1 queda ligada al objeto porque mantiene una referencia a su estado interno.
Objetos y referencias
Caso de Estudio: Cta. Cte. Bancaria
![Page 64: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/64.jpg)
Una declaración como:CuentaBancaria cb1,cb2,cb3;Reserva tres celdas de memoria que por el momento mantienen referencias nulas.Cuando una referencia está ligada mantiene la dirección del área de memoria en donde se almacena el estado interno del objeto. La estructura de este bloque de memoria, esto es, la estructura del estado interno, depende de las variables de instancia de la clase.
Objetos y referencias
Caso de Estudio: Cta. Cte. Bancaria
![Page 65: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/65.jpg)
cb1
CuentaBancaria cb1,cb2,cb3;
cb2
cb3
Objetos y referencias
Caso de Estudio: Cta. Cte. Bancaria
![Page 66: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/66.jpg)
cb1
CuentaBancaria cb1,cb2,cb3;cb1 = new Cuenta_Bancaria(101);
:CuentaBancariacodigo = 101saldo=0
cb2
cb3
Objetos y referencias
Caso de Estudio: Cta. Cte. Bancaria
![Page 67: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/67.jpg)
CuentaBancaria cb1,cb2,cb3;
• Reserva una celda en memoria para mantener el estado interno un objeto de software de clase CuentaBancaria.
• Almacena la dirección de la celda en la variable cb1.
• Invoca al constructor e inicializa el atributo codigo con el valor del parámetro real.
cb1 = new Cuenta_Bancaria(101);
Objetos y referencias
Caso de Estudio: Cta. Cte. Bancaria
Observemos que aunque se invoca el constructor con un parámetro, el estado interno del objeto incluye a los dos atributos de instancia de la clase.
![Page 68: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/68.jpg)
cb1
CuentaBancaria cb1,cb2,cb3;cb1 = new Cuenta_Bancaria(101);
:CuentaBancariacodigo = 101saldo=0
cb2:CuentaBancariacodigo = 101saldo=0
cb3
cb2 = new Cuenta_Bancaria(101);
Objetos y referencias
Caso de Estudio: Cta. Cte. Bancaria
![Page 69: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/69.jpg)
cb1
CuentaBancaria cb1,cb2,cb3;cb1 = new Cuenta_Bancaria(101);
:CuentaBancariacodigo = 101saldo=0
cb2:CuentaBancariacodigo = 101saldo=0
cb3
cb2 = new Cuenta_Bancaria(101);cb3 = cb2;
Objetos y referencias
Caso de Estudio: Cta. Cte. Bancaria
![Page 70: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/70.jpg)
La referencia a un objeto puede ser usada para distinguir identidad. Si varias variables están ligadas a un mismo objeto, todas mantienen una misma referencia, esto es, comparten una misma identidad. Las cb2 y cb3 referencian a un mismo objeto, tienen entonces una misma identidad. El operador relacional aplicado a variables de tipo clase, compara por identidad.
Identidad, igualdad y equivalencia
Caso de Estudio: Cta. Cte. Bancaria
![Page 71: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/71.jpg)
cb1
boolean b1,b2;
b1 = cb1 == cb2;
b2 = cb1 == cb3;
:CuentaBancariacodigo = 101saldo=0
cb2:CuentaBancariacodigo = 101saldo=0
cb3
Identidad, igualdad y equivalencia
Caso de Estudio: Cta. Cte. Bancaria
false
true
![Page 72: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/72.jpg)
public boolean equals(CuentaBancaria cta){ return codigo == cta.obtenerCodigo() &&
saldo == cta.obtenerSaldo();}
El método equals compara el estado interno del objeto que recibe el mensaje, con el estado interno del objeto que pasa como parámetro. El estado del objeto que recibe el mensaje se accede directamente a través de las variables de instancia. El estado del objeto que pasa como parámetro se accede indirectamente a través de las operaciones obtener provistas por la clase.
Identidad, igualdad y equivalencia
Caso de Estudio: Cta. Cte. Bancaria
![Page 73: Introducción a la Programación Orientada a Objetos El desarrollo de software es un proceso que permite construir un modelo de la resolución de un problema](https://reader033.vdocuments.site/reader033/viewer/2022061222/54c1df8e4979595c308b4965/html5/thumbnails/73.jpg)
if (cb1.equals(cb2))
Es una operación binaria, un operando es el objeto que recibe el mensaje, el otro operando es el objeto que pasa como parámetro.
Los objetos ligados cb1 y cb2 tienen distinta identidad pero pueden considerarse equivalentes, en el sentido de que modelan a un mismo objeto del problema. El operador relacional == decide si dos objetos tienen la misma identidad.
El servicio equals provisto por la clase CuentaBancaria decide si dos objetos son equivalentes.
Identidad, igualdad y equivalencia
Caso de Estudio: Cta. Cte. Bancaria