Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAna Martin Quiroga Modificado hace 7 años
1
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Objetos y Clases Sonia Rueda Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca
2
EN ESTA CLASE Caso de Estudio: Cuenta Corriente Bancaria
Objetos, variables y referencias Mensajes y métodos Parámetros y resultados de tipo clase Introducción a la Programación Orientada a Objetos
3
CASO DE ESTUDIO: CUENTA CORRIENTE
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
4
EL DISEÑO DE UNA CLASE CtaCteBancaria <<atributo de clase>> maxDescubierto = 1000 <<atributos de instancia>> codigo:entero saldo:real <<constructores>> CtaCteBancaria(c:entero) CtaCteBancaria(c:entero,s:float) <<comandos>> depositar(mto:real) extraer(mto:real):boolean <<consultas>> obtenerCodigo():entero obtenerSaldo():real toString():String mayorSaldo(cta:CtaCteBancaria):entero cta_mayorSaldo(cta:CtaCteBancaria):CtaCteBancaria Asegura codigo > 0 y saldo>=-maxDescubierto CtaCteBancaria(c:entero) Requiere c >0 CtaCteBancaria(c:entero,s:float) Requiere c >0 y s >= 0 depositar(mto:real) Requiere mto > 0 extraer(mto:real):boolean Requiere mto > 0 Si mto > saldo+maxDescubierto extraer retorna false y la extracción no se realiza Introducción a la Programación Orientada a Objetos
5
EL ESTADO INTERNO 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; … } El estado interno de un objeto de clase CtaCteBancaria está formado por los atributos codigo y saldo. El atributo maxDescubierto es común a todas las instancias de la clase.
6
EL ESTADO INTERNO class testUnaCtaCte { public static void main (String a[]){ CtaCteBancaria c = new CtaCteBancaria(123,1000); c.depositar(100); System.out.println(c.toString()); } } El constructor de la clase CtaCteBancaria inicializa el estado interno del objeto. public CtaCteBancaria(int c, float s) {// Requiere c >0 y s >= 0 codigo = c; saldo = s; }
7
EL ESTADO INTERNO class testUnaCtaCte { public static void main (String a[]){ CtaCteBancaria c = new CtaCteBancaria(123,1000); c.depositar(100); System.out.println(c.toString()); } } Como los atributos de la clase son privados, toda modificación del estado interno de un objeto de clase CtaCteBancaria se hace a través de un comando, en ese caso, un depósito o una extracción.
8
EL ESTADO INTERNO class testUnaCtaCte { public static void main (String a[]){ CtaCteBancaria c = new CtaCteBancaria(123,1000); c.depositar(100); System.out.println(c.toString()); } } c :CtaCteBancaria codigo=123 saldo=1000 El diagrama de objetos modela el estado interno del objeto y sus referencias.
9
EL ESTADO INTERNO class testUnaCtaCte { public static void main (String a[]){ CtaCteBancaria c = new CtaCteBancaria(123,1000); c.depositar(100); System.out.println(c.toString()); } } c :CtaCteBancaria codigo=123 saldo=1100 La ejecución de un comando modifica el estado interno del objeto que recibe el mensaje.
10
EL ESTADO INTERNO class testUnaCtaCte { public static void main (String a[]){ CtaCteBancaria c = new CtaCteBancaria(123,1000); c.depositar(100); System.out.println(c.toString()); } } c :CtaCteBancaria codigo=123 saldo=1100 El método toString genera una cadena de caracteres que representa el estado interno del objeto.
11
CLASES COMO TIPOS Una clase que especifica un conjunto de atributos y servicios, define un tipo de dato a partir del cual es posible declarar variables y crear objetos. El conjunto de valores queda determinado por los valores de los atributos. El conjunto de operaciones lo definen los servicios provistos por la clase. Introducción a la Programación Orientada a Objetos
12
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDosCtaCte { public static void main (String a[]){ CtaCteBancaria c1,c2; c1 = new CtaCteBancaria(123,1000); c2 = c1; c1.depositar(100); System.out.println(c1.toString()); System.out.println(c2.toString()); } } c1 c2
13
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDosCtaCte { public static void main (String a[]){ CtaCteBancaria c1,c2; c1 = new CtaCteBancaria(123,1000); c2 = c1; c1.depositar(100); System.out.println(c1.toString()); System.out.println(c2.toString()); } } c1 :CtaCteBancaria codigo=123 saldo =1000 c2
14
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDosCtaCte { public static void main (String a[]){ CtaCteBancaria c1,c2; c1 = new CtaCteBancaria(123,1000); c2 = c1; c1.depositar(100); System.out.println(c1.toString(); System.out.println(c2.toString(); } } Se asigna una referencia. c1 :CtaCteBancaria codigo=123 saldo =1000 c2
15
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDosCtaCte { public static void main (String a[]){ CtaCteBancaria c1,c2; c1 = new CtaCteBancaria(123,1000); c2 = c1; c1.depositar(100); System.out.println(c1.toString()); System.out.println(c2.toString()); } } c1 :CtaCteBancaria codigo=123 saldo =1100 c2
16
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDosCtaCte { public static void main (String a[]){ CtaCteBancaria c1,c2; c1 = new CtaCteBancaria(123,1000); c2 = c1; c1.depositar(100); System.out.println(c1.toString()); System.out.println(c2.toString()); } } c1 :CtaCteBancaria codigo=123 saldo =1100 c2
17
ASIGNACION DE VARIABLES DE TIPO CLASE
class testDosCtaCte { public static void main (String a[]){ CtaCteBancaria c1,c2; c1 = new CtaCteBancaria(123,1000); c2 = c1; c1.depositar(100); System.out.println(c1.toString()); System.out.println(c2.toString()); } } c1 :CtaCteBancaria codigo=123 saldo =1100 c2
18
PARÁMETROS DE TIPO CLASE
class testSaldos { public static void main (String a[]){ CtaCteBancaria c1,c2; c1 = new CtaCteBancaria(111,750); c2 = new CtaCteBancaria (112,500); int m = c1.mayorSaldo(c2); System.out.println("Codigo de Cta Mayor Saldo" +m); } m es una variable de tipo elemental. c1 y c2 son variables de tipo clase, mantienen referencias. m, c1 y c2 son locales al método main.
19
PARÁMETROS DE TIPO CLASE
:CtaCteBancaria codigo=111 saldo=750 c2 :CtaCteBancaria codigo=112 saldo=500 CtaCteBancaria c1,c2; c1 = new CtaCteBancaria(111,750); c2 = new CtaCteBancaria (112,500); Cada objeto de software modela a un objeto del problema, en este caso una cuenta corriente bancaria.
20
PARÁMETROS DE TIPO CLASE
m = c1.mayorSaldo( c2 ); Envía el mensaje mayorSaldo al objeto ligado a la variable c1. El parámetro real c2 es una variable de tipo clase, es decir una referencia a un objeto de clase CtaCteBancaria. 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
21
PARÁMETROS DE TIPO CLASE
m = c1.mayorSaldo( c2 ); Al comenzar la ejecución el valor de la variable c2 se asigna al parámetro cta. La variable cta solo va a existir durante la ejecución de mayorSaldo. 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
22
PARÁMETROS DE TIPO CLASE
m = c1.mayorSaldo( c2 ); c1 :CtaCteBancaria codigo=111 saldo=750 c2 :CtaCteBancaria codigo=112 saldo=500 m= cta Las variables c2 y cta mantienen referencias a un mismo objeto. 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
23
PARÁMETROS DE TIPO CLASE
m = c1.mayorSaldo(c2); m = c1.mayorSaldo( c2 ); c1 :CtaCteBancaria codigo=111 saldo=750 c2 :CtaCteBancaria codigo=112 saldo=500 m= cta Compara el saldo del objeto que recibe el mensaje, con el saldo del objeto que recibe como parámetro. 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
24
PARÁMETROS DE TIPO CLASE
m = c1.mayorSaldo(c2); m = c1.mayorSaldo( c2 ); c1 :CtaCteBancaria codigo=111 saldo=750 c2 :CtaCteBancaria codigo=112 saldo=500 m=111 cta En este ejemplo retorna el valor del atributo codigo del objeto que recibe el mensaje. 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
25
RESULTADOS DE TIPO CLASE
class testSaldos { public static void main (String a[]){ CtaCteBancaria c1,c2,c3; c1 = new CtaCteBancaria(111,750); c2 = new CtaCteBancaria (112,500); c3 = c1.cta_mayorSaldo(c2); System.out.println ("Cta Mayor" +c3.toString());} } c1,c2 y c3 son variables de tipo clase, mantienen referencias.
26
RESULTADOS DE TIPO CLASE
:CtaCteBancaria codigo=111 saldo=750 c2 :CtaCteBancaria codigo=112 saldo=500 c3 CtaCteBancaria c1,c2,c3; c1 = new CtaCteBancaria(111,750); c2 = new CtaCteBancaria (112,500);
27
RESULTADOS DE TIPO CLASE
c3 = c1.cta_mayorSaldo(c2); Envía el mensaje cta_mayorSaldo al objeto ligado a la variable c1. El parámetro real c2 es una variable de tipo clase, es decir una referencia aun objeto de clase CtaCteBancaria. El método cta_mayorSaldo retorna la referencia a un objeto de clase CtaCteBancaria. Introducción a la Programación Orientada a Objetos
28
RESULTADOS DE TIPO CLASE
c3 = c1.cta_mayorSaldo(c2); La ejecución del método cta_mayorSaldo compara el saldo del objeto que recibe el mensaje con el saldo del objeto que pasa como parámetro. 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; }
29
RESULTADOS DE TIPO CLASE
c3 = c1.cta_mayorSaldo(c2); m = c1.mayorSaldo(c2); c1 :CtaCteBancaria codigo=111 saldo=750 c2 :CtaCteBancaria codigo=112 saldo=500 cta c3 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; }
30
RESULTADOS DE TIPO CLASE
c3 = c1.cta_mayorSaldo(c2); c1 :CtaCteBancaria codigo=111 saldo=750 c2 :CtaCteBancaria codigo=112 saldo=500 cta c3 Cuando la ejecución del método cta_mayorSaldo termina la variable cta desaparece y el control vuelve a main. El valor que retorna se asigna a la variable c3.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.