La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

1 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 y referencias Dr. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2016

2 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 IPOO - 2016 2 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.

3 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 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 - 2016 3 Estudio de Factibilidad Desarrollo de Requerimientos Diseño del Sistema Implementación Verificación Mantenimiento

4 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 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 - 2016 4 Estudio de Factibilidad Desarrollo de Requerimientos Diseño del Sistema Implementación Verificación Mantenimiento

5 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 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 - 2016 5 Estudio de Factibilidad Desarrollo de Requerimientos Diseño del Sistema Implementación Verificación Mantenimiento

6 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 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 - 2016 6

7 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 CASO DE ESTUDIO: CUENTA CORRIENTE El diseño Introducción a la Programación Orientada a Objetos IPOO - 2016 7 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

8 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 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 - 2016 8 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.

9 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 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 - 2016 9 Como se declaran privados, sus valores sólo pueden ser accedidos desde el exterior por los servicios públicos que brinda la clase.

10 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 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 - 2016 10 La variable maxDescubierto es un atributo de clase privado, solo es visible en la clase.

11 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 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 - 2016 11 La clase CtaCteBancaria no lee ni muestra datos, toda la entrada y salida la hacen las clases que usan a CtaCteBancaria.

12 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 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 - 2016 12

13 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 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 - 2016 13 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.

14 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 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 - 2016 14 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.

15 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 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 - 2016 15 Al terminar la ejecución de extraer las variables puede y mto se destruyen.

16 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 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 - 2016 16

17 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 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

18 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 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

19 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 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

20 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 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

21 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 IPOO - 2016 21 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.

22 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 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 - 2016 22

23 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 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.

24 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 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.

25 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 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 - 200 y retorna true.

26 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 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 1500. El objeto ejecuta el método extraer, el saldo no se modifica y retorna false.

27 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 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

28 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 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

29 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 IPOO - 2016 29 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.

30 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 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 - 2016 30 CtaCteBancaria cb = new CtaCteBancaria(123, 600); CtaCteBancaria cb; cb = new CtaCteBancaria(123, 600);

31 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 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 - 2016 31 CtaCteBancaria cb = new CtaCteBancaria(123, 600); CtaCteBancaria cb; cb = new CtaCteBancaria(123, 600); cb :CtaCteBancaria codigo=123 saldo=600

32 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 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 - 2016 32 cb :CtaCteBancaria codigo=123 saldo=600

33 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 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; } … }

34 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 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; } … }

35 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 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

36 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 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.

37 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 IPOO - 2016 37 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.

38 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 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

39 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 ALTERNATIVAS DE DISEÑO Introducción a la Programación Orientada a Objetos IPOO - 2016 39 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; }

40 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 ALTERNATIVAS DE DISEÑO Introducción a la Programación Orientada a Objetos IPOO - 2016 40 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()); } }

41 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 IPOO - 2016 41 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.

42 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 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 - 2016 42

43 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 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

44 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 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 - 2016 44 El método mayorSaldo recibe como parámetro a un objeto de clase CtaCteBancaria.

45 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 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.

46 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 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 - 2016 46 El método cta_mayorSaldo recibe como parámetro y retorna como resultado un objeto de clase CtaCteBancaria.

47 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 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 - 2016 47 La palabra reserva this permite nombrar al objeto que recibe el mensaje.

48 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 IPOO - 2016 48 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.

49 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 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); } }

50 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 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);

51 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 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()); } }

52 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 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);

53 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 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.

54 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 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.

55 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 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 - 2016

56 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 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 - 2016 56


Descargar ppt "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."

Presentaciones similares


Anuncios Google