5/9/16 Métodos Métodos constructores Métodos generales (toString, equals) Ing. Roberto Martínez Román - rmroman@itesm.mx Métodos constructores Estos son métodos especiales que tienen las siguientes características: ¡ En general, son públicos. ¡ Tienen el mismo nombre que la clase. ¡ Pueden estar sobrecargados. ¡ No tienen tipo de regreso. La función principal de estos métodos es inicializar las variables de instancia, ya sea con valores por default o con los valores que llegan como parámetros. Ing. Roberto Martínez Román - rmroman@itesm.mx Ing.RobertoMartínezRománrmroman@itesm.mx 1 5/9/16 Ejemplo public class Rectangulo { private int ancho; private int alto; public Rectangulo() { Constructores ancho = 1; alto = 1; } public Rectangulo(int ancho, int alto) { this.ancho = ancho; this.alto = alto; } } Ing. Roberto Martínez Román - rmroman@itesm.mx La clase Reloj Diseñe e implemente una clase en Java que represente un reloj de 24 hrs. ¡ La hora se almacena en tres variables de instancia ÷ hora ÷ minuto ÷ segundo ¡ Las operaciones que debe realizar son: Reloj - hora : int - minuto : int - segundo : int - Reloj() - Reloj(hora:int, minuto:int, segundo:int) - mostrarHora() : void ÷ Crear el reloj con la hora 12:00:00 por default. ÷ Crear el reloj con la hora indicada por el usuario (h,m,s). Ing. Roberto Martínez Román - rmroman@itesm.mx Ing.RobertoMartínezRománrmroman@itesm.mx 2 5/9/16 Prueba Crea una nueva clase con el método main que haga lo siguiente: ¡ ¡ ¡ ¡ Crea un reloj con la hora 8:45:05 Pide al objeto que imprima su información en la pantalla. Crea otro reloj con la hora por default. Pide al objeto que imprima su información en la pantalla. Ing. Roberto Martínez Román - rmroman@itesm.mx Métodos auxiliares/generales Los métodos definen operaciones que el objeto puede hacer con/sobre sus datos. La forma general es: public void int double String modificadorAcceso tipoRegreso nombre(listaParámetros) { instrucciones; return valor; // Opcional si el tipo es void } Ing. Roberto Martínez Román - rmroman@itesm.mx Ing.RobertoMartínezRománrmroman@itesm.mx 3 5/9/16 Ejemplos public void imprimir() { System.out.println("Hola"); } Clase b = new Clase(); public int mayor(int a, int b) { if (a>b) { return a; } else { return b; } } b.imprimir(); int mayor = b.mayor(x,y); double p = b.promediar(); public double promediar() { return (this.valor1 + this.valor2) / 2.0; } Ing. Roberto Martínez Román - rmroman@itesm.mx Variables de instancia vs. variables locales Las variables de instancia definen atributos del objeto. Se definen en la clase. Existen durante toda la vida del objeto. Normalmente, tiene modificador de acceso private. private int edad; Las variables locales son temporales, sólo existen dentro del método que las declara. Una vez que el método termina, estas variables desaparecen. No tienen modificador de acceso. NO representan atributos del objeto. Se debe declarar su tipo. Los parámetros se comportan como variables locales. double promedio; Ing. Roberto Martínez Román - rmroman@itesm.mx Ing.RobertoMartínezRománrmroman@itesm.mx 4 5/9/16 Ejemplo public class Cancion { private int duracion; // Duración en segundos Variable de instancia public void mostrarDuracionMinutos() { Variable local double durMinutos; durMinutos = duracion / 60.0; System.out.println("Duración en minutos: " + durMinutos); } public void otroMetodo() { duracion = 0; // OK durMinutos = 30; // ERROR! } } Ing. Roberto Martínez Román - rmroman@itesm.mx La clase Reloj Modifica la clase que representa un reloj de 24 hrs. ¡ La hora se almacena en tres variables de instancia ÷ hora ÷ minuto ÷ segundo ¡ Las operaciones que debe realizar son: ÷ Crear el reloj con la hora 0:00:00 por default. ÷ Crear el reloj con la hora indicada por el usuario (h,m,s). ÷ incrementar. Suma un segundo a la hora actual. (Sin convertir a segundos) ÷ get/set. Accesores y modificadores de las variables de instancia. Ing. Roberto Martínez Román - rmroman@itesm.mx Ing.RobertoMartínezRománrmroman@itesm.mx 5 5/9/16 Método toString Sirve para construir una representación del estado actual del objeto. ¡ Construye y regresa una cadena con la información del objeto. public String toString() { String cadena; // Construye la cadena con los datos del objeto cadena = "......"; return cadena; } Ing. Roberto Martínez Román - rmroman@itesm.mx El método toString Agrega a la clase Reloj, el método toString para que regrese la hora en el formato de 12 hrs. h:mm:ss am o h:mm:ss pm Ing. Roberto Martínez Román - rmroman@itesm.mx Ing.RobertoMartínezRománrmroman@itesm.mx 6 5/9/16 El método equals public boolean equals(Object obj) { Tipo t = (Tipo)obj; return this.attr==t.attr && this.x==t.x; } Por ahora usaremos esta versión de equals, más adelante la ampliaremos. Ing. Roberto Martínez Román - rmroman@itesm.mx Tarea Crear, en un nuevo proyecto, la clase Reloj como se muestra a continuación (no puedes cambiar la firma de los métodos): Reloj - segundos : int - Reloj() - Reloj(hora:int, minuto:int, segundo:int) - toString() : String - incrementar() - getHora() : int - getMinuto() : int - getSegundo() : int - setHora(hora:int) - setMinuto(minuto:int) - setSegundo(segundo:int) Ing. Roberto Martínez Román - rmroman@itesm.mx Ing.RobertoMartínezRománrmroman@itesm.mx 7