INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Slides:



Advertisements
Presentaciones similares
El proceso de desarrollo de software
Advertisements

El Proceso de desarrollo de software
Relaciones entre Clases
El proceso de desarrollo de software
El proceso de desarrollo de software
Lección 1 Introducción a la POO
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.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
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 Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
Introducción a la Programación Orientada a Objetos Sonia Rueda Encapsulamiento y Abstracción Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
Introducción a la Programación Orientada a Objetos Sonia Rueda Encapsulamiento y Abstracción Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Clases y Objetos en Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2015 Departamento de Ciencias e Ingeniería
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
EL MUNDO DE LOS OBJETOS PROGRAMANDO EN JAVA.
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
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Sonia Rueda Herencia y Polimorfismo
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
String, random y stream en java
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
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 Clases Sonia Rueda Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca

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

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

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

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.

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

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.

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.

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.

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 123 1100 El método toString genera una cadena de caracteres que representa el estado interno del objeto.

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

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

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

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

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

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 123 1100 c2

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 123 1100 c2

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.

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.

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

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

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

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

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

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.

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

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

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

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

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.