0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.

Slides:



Advertisements
Presentaciones similares
Clases en C++.
Advertisements

Lenguaje de programación Java
Entendiendo la definición de clases
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.
El proceso de desarrollo de software
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
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.
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.
POO Java Módulo 3 Elementos de programas Identificadores
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.
El lenguaje de programación Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Colección.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Introducción a la Programación Orientada a Objetos Sonia Rueda
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 GUI.
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.
Prof. Manuel B. Sánchez. La parte ingenieril de un proceso de desarrollo de software, comprende realizar un diseño del sistema antes de empezar a escribir.
Diferencia entre implementar en RPA e IPOO - Diseño En.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
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 Asociación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Transcripción de la presentación:

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos y referencias Dr. Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2016

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Repaso. La clase tester con valores fijos Variables, objetos y referencias. Alternativas de diseño. Cambios en los requerimientos. Objetos, parámetros y resultados.

EL PROCESO DE DESARROLLO DE SOFTWARE Durante el desarrollo de requerimientos y el diseño del sistema se identifican los objetos del problema y se los agrupa en clases en base a sus atributos y su comportamiento. Introducción a la Programación Orientada a Objetos IPOO Estudio de Factibilidad Desarrollo de Requerimientos Diseño del Sistema Implementación Verificación Mantenimiento

EL PROCESO DE DESARROLLO DE SOFTWARE La implementación consiste en escribir el código de cada clase usando un lenguaje de programación. Introducción a la Programación Orientada a Objetos IPOO Estudio de Factibilidad Desarrollo de Requerimientos Diseño del Sistema Implementación Verificación Mantenimiento

EL PROCESO DE DESARROLLO DE SOFTWARE En la etapa de verificación se chequea que el comportamiento de cada clase sea correcto para un conjunto de casos de prueba y que el sistema satisfaga los requerimientos. Introducción a la Programación Orientada a Objetos IPOO Estudio de Factibilidad Desarrollo de Requerimientos Diseño del Sistema Implementación Verificación Mantenimiento

CASO DE ESTUDIO: CUENTA CORRIENTE La especificación de requerimientos Un banco ofrece cajeros automáticos a través de los cuales los clientes pueden realizar: –depósitos, –extracciones y –consultar el saldo de su cuenta corriente. En el momento que se crea una cuenta corriente se establece su código y el saldo se inicializa en 0. También es posible crear una cuenta corriente estableciendo su código y saldo inicial. Una cuenta bancaria puede tener un saldo negativo hasta un máximo establecido por el banco. El código no se modifica, el saldo cambia con cada depósito o extracción. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: CUENTA CORRIENTE El diseño Introducción a la Programación Orientada a Objetos IPOO CtaCteBancaria > maxDescubierto = 1000 > codigo: entero saldo: real > CtaCteBancaria(c:entero) CtaCteBancaria(c:entero,s:float) > depositar(mto:real) extraer(mto:real):boolean > obtenerCodigo():entero obtenerSaldo():entero toString():String Asegura codigo > 0 y Saldo >= -maxDescubierto Si mto > saldo+maxDescubierto extraer retorna false y la extracción no se realiza Requieren mto > 0 Requiere c >0 y s >= 0

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java class CtaCteBancaria{ //Asegura código > 0 y saldo >= -maxDescubierto //Atributos de clase private static final int maxDescubierto=1000; //Atributos de Instancia /*El código se establece al crear la cuenta corriente bancaria y no cambia */ private int codigo; private float saldo; … } Introducción a la Programación Orientada a Objetos IPOO Las variables codigo y saldo son los atributos de instancia de la clase y pueden ser usados en cualquiera de los servicios provistos por la clase CtaCteBancaria.

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java class CtaCteBancaria{ //Asegura código > 0 y saldo >= -maxDescubierto //Atributos de clase private static final int maxDescubierto=1000; //Atributos de Instancia /*El código se establece al crear la cuenta corriente bancaria y no cambia */ private int codigo; private float saldo; … } Introducción a la Programación Orientada a Objetos IPOO Como se declaran privados, sus valores sólo pueden ser accedidos desde el exterior por los servicios públicos que brinda la clase.

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java class CtaCteBancaria{ //Asegura código > 0 y saldo >= -maxDescubierto //Atributos de clase private static final int maxDescubierto=1000; //Atributos de Instancia /*El código se establece al crear la cuenta corriente bancaria y no cambia */ private int codigo; private float saldo; … } Introducción a la Programación Orientada a Objetos IPOO La variable maxDescubierto es un atributo de clase privado, solo es visible en la clase.

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java // Constructores public CtaCteBancaria(int cod) { codigo = cod; saldo = 0; } public CtaCteBancaria(int cod, float sal) { codigo = cod; saldo = sal; } … } Introducción a la Programación Orientada a Objetos IPOO La clase CtaCteBancaria no lee ni muestra datos, toda la entrada y salida la hacen las clases que usan a CtaCteBancaria.

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java // Comandos public void depositar(float mto){ //Requiere mto > 0 saldo+=mto; } … } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java public boolean extraer(float mto){ /*si el mto es mayor a 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; } Introducción a la Programación Orientada a Objetos IPOO La variable puede se crea cuando se inicia la ejecución del método y solo puede ser accedida en ese bloque de código.

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java public boolean extraer(float mto){ /*si el mto es mayor a 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; } Introducción a la Programación Orientada a Objetos IPOO La variable mto es un parámetro formal. Cuando se inicia la ejecución del método se crea una nueva variable y se inicializa con el valor del parámetro actual.

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java public boolean extraer(float mto){ /*si el mto es mayor a 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; } Introducción a la Programación Orientada a Objetos IPOO Al terminar la ejecución de extraer las variables puede y mto se destruyen.

CASO DE ESTUDIO: CUENTA CORRIENTE La implementación en Java // Consultas public int obtenerCodigo(){ return codigo; } public float obtenerSaldo(){ return saldo; } public String toString(){ return codigo+" "+saldo; } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: CUENTA CORRIENTE La verificación de una clase class testCtaCteBancaria { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); if(!cb.extraer(500)) System.out.println(“No pudo extraer “+500); if(!cb.extraer(1500)) System.out.println(“No pudo extraer “+1500); System.out.println(cb.toString()); cb.depositar(100); System.out.println(cb.toString()); } 17

CASO DE ESTUDIO: CUENTA CORRIENTE La verificación de una clase class testCtaCteBancaria { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); if(!cb.extraer(500)) System.out.println(“No pudo extraer “+500); if(!cb.extraer(1500)) System.out.println(“No pudo extraer “+1500); System.out.println(cb.toString()); cb.depositar(100); System.out.println(cb.toString()); } 18

CASO DE ESTUDIO: CUENTA CORRIENTE La verificación de una clase class testCtaCteBancaria { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); if(!cb.extraer(500)) System.out.println(“No pudo extraer “+500); if(!cb.extraer(1500)) System.out.println(“No pudo extraer “+1500); System.out.println(cb.toString()); cb.depositar(100); System.out.println(cb.toString()); } 19

CASO DE ESTUDIO: CUENTA CORRIENTE La verificación de una clase class testCtaCteBancaria { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); if(!cb.extraer(500)) System.out.println(“No pudo extraer “+500); if(!cb.extraer(1500)) System.out.println(“No pudo extraer “+1500); System.out.println(cb.toString()); cb.depositar(100); System.out.println(cb.toString()); } 20

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Repaso. La clase tester con valores fijos Variables, objetos y referencias. Alternativas de diseño. Cambios en los requerimientos. Objetos, parámetros y resultados.

LA CLASE TESTER Las clases tester son responsables de verificar los servicios provistos por cada una de las clases que implementemos. Los casos de prueba pueden ser: –Fijos. –Leídos de un archivo. –Ingresados por el usuario por consola o a través de una interfaz gráfica. –Generados al azar. Introducción a la Programación Orientada a Objetos IPOO

LA CLASE TESTER class testUnaCuenta { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); … 23 Se crea un objeto de software ligado a la variable cb de clase CtaCteBancaria. El constructor inicializa el codigo con el valor 123 y el saldo con 600.

LA CLASE TESTER class testUnaCuenta { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); … 24 Se envía el mensaje depositar al objeto ligado a la variable cb. El objeto ejecuta el método depositar y su saldo se incrementa en 100.

LA CLASE TESTER class testUnaCuenta { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); if(!cb.extraer(500)) System.out.println(“No pudo extraer “+500); … 25 Se envía el mensaje extraer al objeto ligado a la variable cb con parámetro 500. El objeto ejecuta el método extraer, el saldo pasa a ser y retorna true.

LA CLASE TESTER class testUnaCuenta { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); if(!cb.extraer(500)) System.out.println(“No pudo extraer “+500); if(!cb.extraer(1500)) System.out.println(“No pudo extraer “+1500); … 26 Se envía el mensaje extraer al objeto ligado a la variable cb con parámetro El objeto ejecuta el método extraer, el saldo no se modifica y retorna false.

LA CLASE TESTER class testUnaCuenta { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); if(!cb.extraer(500)) System.out.println(“No pudo extraer “+500); if(!cb.extraer(1500)) System.out.println(“No pudo extraer “+1500); System.out.println(cb.toString()); 27

LA CLASE TESTER class testUnaCuenta { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria(123,600); cb.depositar(100); if(!cb.extraer(500)) System.out.println(“No pudo extraer “+500); if(!cb.extraer(1500)) System.out.println(“No pudo extraer “+1500); System.out.println(cb.toString()); cb.depositar(100); System.out.println(cb.toString()); } 28

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Repaso. La clase tester con valores fijos Variables, objetos y referencias. Alternativas de diseño. Cambios en los requerimientos. Objetos, parámetros y resultados.

VARIABLES, OBJETOS y REFERENCIAS La instrucción: Es equivalente al segemento: El significado es: –Declara la variable cb. –Crea un objeto de clase CtaCteBancaria. –Ejecuta al constructor con dos parámetros. –Liga el objeto a la variable. Introducción a la Programación Orientada a Objetos IPOO CtaCteBancaria cb = new CtaCteBancaria(123, 600); CtaCteBancaria cb; cb = new CtaCteBancaria(123, 600);

VARIABLES, OBJETOS y REFERENCIAS La instrucción: Es equivalente al segemento: Y se puede graficar a través de un diagrama de objetos: Introducción a la Programación Orientada a Objetos IPOO CtaCteBancaria cb = new CtaCteBancaria(123, 600); CtaCteBancaria cb; cb = new CtaCteBancaria(123, 600); cb :CtaCteBancaria codigo=123 saldo=600

VARIABLES, OBJETOS y REFERENCIAS El valor de la variable cb es una referencia a un objeto de clase CtaCteBancaria. El estado interno del objeto almacena los valores de dos variables que corresponden a los atributos de instancia del objeto, determinados por su clase. Introducción a la Programación Orientada a Objetos IPOO cb :CtaCteBancaria codigo=123 saldo=600

VARIABLES, OBJETOS y REFERENCIAS class testDosCuentas { public static void main (String a[]){ CtaCteBancaria cb1 = new CtaCteBancaria(123,600); CtaCteBancaria cb2 = new CtaCteBancaria(124); cb1.depositar(100); … } 33 // Constructores public CtaCteBancaria(int cod) { codigo = cod; saldo = 0; } public CtaCteBancaria(int cod, float sal) { codigo = cod; saldo = sal; } … }

VARIABLES, OBJETOS y REFERENCIAS class testDosCuentas { public static void main (String a[]){ CtaCteBancaria cb1 = new CtaCteBancaria(123,600); CtaCteBancaria cb2 = new CtaCteBancaria(124); cb1.depositar(100); … } 34 // Constructores public CtaCteBancaria(int cod) { codigo = cod; saldo = 0; } public CtaCteBancaria(int cod, float sal) { codigo = cod; saldo = sal; } … }

VARIABLES, OBJETOS y REFERENCIAS class testDosCuentas { public static void main (String a[]){ CtaCteBancaria cb1 = new CtaCteBancaria(123,600); CtaCteBancaria cb2 = new CtaCteBancaria(124); cb1.depositar(100); … } 35 cb1 :CtaCteBancaria codigo=123 saldo=600

VARIABLES, OBJETOS y REFERENCIAS class testDosCuentas { public static void main (String a[]){ CtaCteBancaria cb1 = new CtaCteBancaria(123,600); CtaCteBancaria cb2 = new CtaCteBancaria(124); cb1.depositar(100); … } 36 cb1 :CtaCteBancaria codigo=123 saldo=600 cb2 :CtaCteBancaria codigo=124 saldo=0 La estructura del estado interno de los objetos de clase CtaCteBancaria está conformada por las variables codigo y saldo.

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Repaso. La clase tester con valores fijos Variables, objetos y referencias. Alternativas de diseño. Cambios en los requerimientos. Objetos, parámetros y resultados.

ALTERNATIVAS DE DISEÑO 38 CtaCteBancaria > maxDescubierto = 1000 > codigo: entero saldo: real > CtaCteBancaria(c:entero) CtaCteBancaria(c:entero,s:float) > depositar(mto:real) extraer(mto:real) > puedeExtraer(mto:real):boolean obtenerCodigo():entero obtenerSaldo():entero toString():String Asegura codigo > 0 y Saldo >= -maxDescubierto Requiere que se haya controlado si se puede extraer Requieren mto > 0 Requiere c >0 y s >= 0

ALTERNATIVAS DE DISEÑO Introducción a la Programación Orientada a Objetos IPOO public void extraer(float mto){ /*Requiere que se haya controlado si se puede extraer*/ saldo=saldo-mto; } public boolean puedeExtraer(float mto){ /*retorna true sí y solo si el mto es menor o igual a saldo+maxDescubierto */ return mto <= saldo+maxDescubierto; }

ALTERNATIVAS DE DISEÑO Introducción a la Programación Orientada a Objetos IPOO class testUnaCuenta { //Verifica los servicios de la clase CtaCteBancaria public static void main (String a[]){ CtaCteBancaria cb = new CtaCteBancaria (123,600); cb.depositar(100); if(!cb.puedeExtraer(500)) System.out.println(“No pueda extraer “+500); else cb.extraer(500); cb.depositar(100); System.out.println (cb.toString()); } }

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Repaso. La clase tester con valores fijos Variables, objetos y referencias. Alternativas de diseño. Cambios en los requerimientos. Objetos, parámetros y resultados.

LOS CAMBIOS EN LOS REQUERIMIENTOS Un banco ofrece cajeros automáticos a través de los cuales los clientes pueden realizar depósitos, extracciones y consultar el saldo de su cuenta corriente. En el momento que se crea una cuenta corriente se establece su código y el saldo se inicializa en 0. También es posible crear una cuenta corriente estableciendo su código y saldo inicial. Una cuenta bancaria puede tener un saldo negativo hasta un máximo establecido por el banco. El código no se modifica, el saldo cambia con cada depósito o extracción. La clase brinda servicios para determinar el código de la cuenta con menor saldo entre dos cuentas y cuál es la cuenta con menor saldo, entre dos cuentas. Introducción a la Programación Orientada a Objetos IPOO

LOS CAMBIOS EN LOS REQUERIMIENTOS 43 CtaCteBancaria > maxDescubierto = 1000 > codigo: entero saldo: real > CtaCteBancaria(c:entero) CtaCteBancaria(c:entero,s:float) > depositar(mto:real) extraer(mto:real):boolean > obtenerCodigo():entero obtenerSaldo():entero toString():String mayorSaldo(cta:CtaCteBancaria):entero cta_mayorSaldo(cta:CtaCteBancaria):CtaCteBancaria Asegura codigo > 0 y Saldo >= -maxDescubierto Si mto > saldo+maxDescubierto extraer retorna false y la extracción no se realiza Requieren mto > 0 Requiere c >0 y s >= 0

LOS CAMBIOS EN LA IMPLEMENTACIÓN // Consultas … public int mayorSaldo(CtaCteBancaria cta){ /*Retorna el código de la cuenta corriente bancaria que tiene mayor saldo. Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return codigo; else return cta.obtenerCodigo(); } Introducción a la Programación Orientada a Objetos IPOO El método mayorSaldo recibe como parámetro a un objeto de clase CtaCteBancaria.

LOS CAMBIOS EN LA IMPLEMENTACIÓN // Consultas … public int mayorSaldo(CtaCteBancaria cta){ /*Retorna el código de la cuenta corriente bancaria que tiene mayor saldo. Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return codigo; else return cta.obtenerCodigo(); } 45 Compara el saldo del objeto que recibe el mensaje con el saldo del objeto recibido como parámetro. Retorna el código de la cuenta corriente bancaria con mayor saldo.

LOS CAMBIOS EN LA IMPLEMENTACIÓN // Consultas … public CtaCteBancaria cta_mayorSaldo(CtaCteBancaria cta){ /*Retorna la cuenta corriente bancaria que tiene mayor saldo. Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return this; else return cta; } Introducción a la Programación Orientada a Objetos IPOO El método cta_mayorSaldo recibe como parámetro y retorna como resultado un objeto de clase CtaCteBancaria.

LOS CAMBIOS EN LA IMPLEMENTACIÓN // Consultas … public CtaCteBancaria cta_mayorSaldo(CtaCteBancaria cta){ /*Retorna la cuenta corriente bancaria que tiene mayor saldo. Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return this; else return cta; } Introducción a la Programación Orientada a Objetos IPOO La palabra reserva this permite nombrar al objeto que recibe el mensaje.

Introducción a la Programación Orientada a Objetos IPOO TEMARIO Repaso. La clase tester con valores fijos Variables, objetos y referencias. Alternativas de diseño. Cambios en los requerimientos. Objetos, parámetros y resultados.

OBJETOS, PARÁMETROS Y RESULTADOS Envía el mensaje mayorSaldo al objeto ligado a la variable cb. El parámetro actual es una variable que referencia a un objeto de clase CtaCteBancaria. La consulta retorna un valor compatible con el tipo del resultado, que se asigna a la variable m. 49 class testParametros { public static void main (String a[]){ CtaCteBancaria cb, sm; cb = new CtaCteBancaria(111,1000) sm = new CtaCteBancaria (112,500); int m = cb.mayorSaldo(sm); System.out.println (" Codigo de la Cta Mayor Saldo " + m); } }

OBJETOS, PARÁMETROS Y RESULTADOS public int mayorSaldo(CtaCteBancaria cta){ /*Retorna el código de la cuenta corriente bancaria que tiene mayor saldo. Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return codigo; else return cta.obtenerCodigo(); } 50 El método mayorSaldo recibe como parámetro a un objeto de clase CtaCteBancaria y retorna un entero. int m = cb.mayorSaldo(sm);

OBJETOS, PARÁMETROS Y RESULTADOS Envía el mensaje cta_mayorSaldo al objeto ligado a la variable cb. El parámetro actual es una variable que referencia a un objeto de clase CtaCteBancaria. La consulta retorna un objeto de clase compatible con la variable cm. 51 class testParametros { public static void main (String a[]){ CtaCteBancaria cb, sm; cb = new CtaCteBancaria(111,1000) sm = new CtaCteBancaria (112,500); CtaCteBancaria cm = cb.cta_mayorSaldo(sm); System.out.println (cm.toString()); } }

OBJETOS, PARÁMETROS Y RESULTADOS public CtaCteBancaria cta_mayorSaldo(CtaCteBancaria cta){ /*Retorna la cuenta corriente bancaria que tiene mayor saldo. Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return this; else return cta; } 52 El método mayorSaldo recibe como parámetro y retorna como resultado un objeto de clase CtaCteBancaria. CtaCteBancaria cm = cb.cta_mayorSaldo(sm);

OBJETOS, PARÁMETROS Y RESULTADOS public CtaCteBancaria cta_mayorSaldo(CtaCteBancaria cta){ /*Retorna la cuenta corriente bancaria que tiene mayor saldo. Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return this; else return cta; } 53 La variable cta solo es visible y puede ser usada durante la ejecución de cta_mayorSaldo. Cuando el método termina, la variable se destruye. Si el método envía un mensaje a un objeto, mientras se ejecuta el método ligado a este último mensaje, cta no es visible.

OBJETOS, PARÁMETROS Y RESULTADOS public CtaCteBancaria cta_mayorSaldo(CtaCteBancaria cta){ /*Retorna la cuenta corriente bancaria que tiene mayor saldo. Requiere cta ligada*/ if (saldo > cta.obtenerSaldo()) return this; else return cta; } 54 Si el objeto ligado al parámetro tiene mayor saldo, el resultado es justamente este objeto. Si el objeto que recibe el mensaje tiene mayor saldo, el resultado es ese mismo objeto.

OBJETOS, PARÁMETROS Y RESULTADOS Envía el mensaje toString al objeto ligado a la variable cm. La variable cm está ligada al objeto que retornó como resultado en respuesta al mensaje cta_mayorSaldo enviado en la instrucción anterior. El método toString retorna la concatenación de los valores de los atributos del objeto ligado a la variable cm. 55 System.out.println (cm.toString()); Introducción a la Programación Orientada a Objetos IPOO

EN LA PRÓXIMA CLASE Asumiremos que –Pueden implementar en Java una clase con atributos de tipo elemental, partiendo de un diagrama que incluye atributos de clase y de instancia, constructores, comandos y consultas. –Pueden verificar los servicios provistos por una clase para un conjunto de casos de prueba. –Han completado el práctico 2 y comenzado el 3 Introducción a la Programación Orientada a Objetos IPOO