Download Clases, Objetos, Métodos y variables de instancia
Document related concepts
no text concepts found
Transcript
Métodos y variables de instancia Un automóvil completo tendrá un pedal acelerador verdadero para que aumente su velocidad, pero aun así no es suficiente el automóvil no acelerará por su propia cuenta, así que el conductor debe oprimir el pedal del acelerador. Para realizar una tarea en una aplicación se requiere un método. El método describe los mecanismos que se encargan de realizar sus tareas y oculta al usuario las tareas complejas que realiza, de la misma forma que el pedal del acelerador de un automóvil oculta al conductor los complejos mecanismos para hacer que el automóvil vaya más rápido Cuando usted conduce un automóvil, sí oprime el pedal del acelerador se envía un mensaje al automóvil para que realice una tarea –hacer que el automóvil vaya más rápido. De manera similar, se envían mensajes a un objeto; cada mensaje se conoce cómo la llamada a un método, e indica a un método de objeto que realice su tarea. Clases, Objetos, Métodos y variables de instancia Para realizar una tarea en una aplicación se requiere un método. El método describe los mecanismos que se encargan de realizar sus tareas; oculta al usuario las tareas complejas que realiza, de la misma forma que el pedal del acelerador oculta al conductor los mecanismos para ir más rápido. En java, se empieza por crear una unidad de aplicación llamada clase para alojar un método (dibujos de diseño, etc.) En una clase se proporcionan uno o más métodos, los cuales están diseñados para realizar las tareas de esa clase. o Ej. Una clase que representa a una cuenta bancaria podría contener un método para depositar dinero a una cuenta, otro para retirar y un tercero para solicitar el saldo actual de la cuenta. Por lo tanto un proceso envía mensajes a un objeto; cada mensaje se conoce como la llamada a un método, e indica a un método del objeto que realice esa tarea. Un objeto tiene atributos que lleva consigo cuando se utiliza en un programa. Éstos se especifican como parte de la clase objeto. Actividades de aprendizaje: 1. Presenta una clase llamada LibroCalificaciones, con un método que muestre un mensaje de bienvenida cuando se le llama 2. Modifica al primero, al permitir que el método reciba el nombre de un curso como argumento, y al mostrar ese nombre como parte del mensaje de bienvenida. 3. Muestra cómo almacenar el nombre del curso en un objeto tipo LibroCalificaciones. 4. Demuestra como pueden inicializarse los datos en un objeto tipo LibroCalificaciones, a la hora de crear el objeto; el constructor de la clase se encarga de realizar el proceso de inicialización. Declaración de una clase con un método e instanciamiento de un objeto de una clase La clase LibroCalificaciones // LibroCalificaciones.java // Declaración de una clase con un método. public class LibroCalificaciones { // muestra un mensaje de bienvenida al usuario de LibroCalificaciones public void mostrarMensaje() { System.out.println( "Bienvenido al Libro de calificaciones!" ); } // fin del método mostrarMensaje } // fin de la clase LibroCalificaciones La declaración del método comienza con la palabra “public” para indicar que el método esta disponible al publico; es decir, los métodos de otras clases pueden llamarlo desde el exterior del cuerpo de la declaración de la clase. La palabra clave “void” indica que este método realizara una tarea pero no devolverá (regresara) información. Nota. Con el método nextInt de Scanner se recibe un valor de entrada y devuelve ese valor para utilizarlo en el programa. El método, mostrarMensaje, va después de del tipo de valor de retorno. Por convención, los nombres de los métodos comienzan con una letra minúscula, y el resto de las palabras con mayúscula. Los paréntesis después del nombre indican que este es un método. La clase LibroCalificaciones no es una aplicación, ya que no contiene a “main”. Si se trata de ejecutar se recibirá el siguiente mensaje de error: Exception in thread “main” java.lang.NoSuchMethodError: main // PruebaLibroCalificaciones.java // Crea un objeto LibroCalificaciones y llama a su método mostrarMensaje. public class PruebaLibroCalificaciones { // el método main empieza la ejecución del programa public static void main( String args[] ) { // crea un objeto LibroCalificaciones y lo asigna a miLibroCalificaciones LibroCalificaciones miLibroCalificaciones = new LibroCalificaciones(); // llama al método mostrarMensaje de miLibroCalificaciones miLibroCalificaciones.mostrarMensaje(); } // fin de main } // fin de la clase PruebaLibroCalificaciones Un método “static” es especial, ya que puede llamarse sin tener que crear primero un objeto de la cual se declara ese método. Por lo general, no podemos llamar a un método que pertenece a otra clase, sino hasta crear un objeto de esa clase, como se muestra en la siguiente línea: LibroCalificaciones miLibroCalificaciones = new LibroCalificaciones(); Cada nueva clase que creamos se convierte en un nuevo tipo, que puede usarse para declarar variables y crea objetos. Así como podemos usar el objeto System.out para llamar a los métodos print, printf, println, también podemos usar el objeto miLibroCalificaciones para llamar al método mostrarMensaje Cuando el método mostrarMensaje completa su tarea, el método main continua su ejecución. Debe ejecutar todas las clases involucradas antes de poder ejecutar la aplicación. javac LibroCalificaciones.java PruebaLibroCalificaciones.java La clase PruebaLibroCalificaciones contiene el método “main” que controlara la ejecución de la aplicación Cualquier clase que contiene el método main, puede utilizarse para ejecutar una aplicación. Una parte clave para permitir la JVM localice y llame al método “main” para empezar la ejecución de una aplicación es la palabra clave “static”, la cual indica que “main” es un método “static”. Este método es especial ya que puede llamarse sin tener que crear primero un objeto de la cual se declara ese método. Diagrama de clases UML, el cual indica que la clase LibroCalificaciones tiene una operación public llamada mostrarMensaje. LibroCalificaciones +mostrarMensaje() El signo ( + ) que va antes del nombre de la operación indica mostrarMensaje es unaoperación public en UML (es decir, un método “public” en Java) Declaración de un método con un parámetro. Un método puede requerir uno o más parámetros que representan la información adicional que necesita para realizar su tarea. La llamada a un método proporciona valores (llamados argumentos) para cada uno de los parámetros de ese método. Ej. El método System.out.println requiere un argumento que especifica los datos a mostrar en una ventana de comandos. En el siguiente ejemplo se declara la clase LibroCalificaciones, con un método mostrarMensaje que muestra el nombre del curso como parte del mensaje de bienvenida. El nuevo método mostrarMensaje requiere un parámetro que representa el nombre del curso a imprimir en pantalla. // LibroCalificaciones // Declaración de una clase con un método que tiene un parámetro. public class LibroCalificaciones { // muestra un mensaje de bienvenida al usuario de LibroCalificaciones public void mostrarMensaje( String nombreDelCurso ) { System.out.printf( "Bienvenido al libro de calificaciones para\n%s!\n", nombreDelCurso ); } // fin del método mostrarMensaje } // fin de la clase LibroCalificaciones El usuario escribe el nombre del curso y oprime “enter” para enviarlo al programa. Con el “enter” se introduce un carácter de una nueva línea, y después devuelve un objeto “string” que contiene los caracteres hasta, pero sin incluir, la nueva línea. Cuando el usuario oprime “enter” después de escribir la entrada, el método next lee caracteres hasta encontrar un carácter de espacio en blanco y después devuelve un objeto string que contiene los caracteres hasta, pero sin incluir, el carácter de espacio en blanco Nota. No se pierde toda la información que va después del primer carácter de espacio en blanco; estará disponible para que lean otras instrucciones que llamen a los métodos Scanner, más adelante en el programa. // PruebaLibroCalificaciones.java // Crea un objeto LibroCalificaciones y pasa un objeto String // a su método mostrarMensaje. import java.util.Scanner; // el programa usa la clase Scanner public class PruebaLibroCalificaciones { // el método main empieza la ejecución del programa public static void main( String args[] ) { // crea un objeto Scanner para obtener la entrada de la ventana de comandos Scanner entrada = new Scanner( System.in ); // crea un objeto LibroCalificaciones y lo asigna a miLibroCalificaciones LibroCalificaciones miLibroCalificaciones = new LibroCalificaciones(); // pide y recibe el nombre del curso como entrada System.out.println( "Escriba el nombre del curso:" ); String nombreDelCurso = entrada.nextLine(); // lee una línea de texto System.out.println(); // imprime una línea en blanco // llama al método mostrarMensaje de miLibroCalificaciones // y pasa nombreDelCurso como argumento miLibroCalificaciones.mostrarMensaje( nombreDelCurso ); } // fin de main } // fin de la clase PruebaLibroCalificaciones Diagrama de clases de UML, que indica la clase LibroCalificaciones tiene una operación llamada mostrarMensaje, con un parámetro llamado nombreDelCurso de tipo String de UML. LibroCalificaciones +mostrarMensaje(NombreDelCurso : String ) Variables de instancia, métodos establecer y métodos obtener // LibroCalificaciones.java public class LibroCalificaciones { private String nombreDelCurso; // nombre del curso para este LibroCalificaciones // método para establecer el nombre del curso public void establecerNombreDelCurso( String nombre ) { nombreDelCurso = nombre; // almacena el nombre del curso } // fin del método establecerNombreDelCurso // método para obtener el nombre del curso public String obtenerNombreDelCurso() { return nombreDelCurso; } // fin del método obtenerNombreDelCurso // muestra un mensaje de bienvenida al usuario de LibroCalificaciones public void mostrarMensaje() { // esta instrucción llama a obtenerNombreDelCurso para obtener el // nombre del curso que representa este LibroCalificaciones System.out.printf( "Bienvenido al libro de calificaciones para\n%s!\n", obtenerNombreDelCurso() ); } // fn del método mostrarMensaje } // fin de la clase LibroCalificaciones // PruebaLibroCalificaciones.java // Crea y manipula un objeto LibroCalificaciones. import java.util.Scanner; // el programa usa la clase Scanner public class PruebaLibroCalificaciones { // el método main empieza la ejecución del programa public static void main( String args[] ) { // crea un objeto Scanner para obtener la entrada de la ventana de comandos Scanner entrada = new Scanner( System.in ); // crea un objeto LibroCalificaciones y lo asigna a miLibroCalificaciones LibroCalificaciones miLibroCalificaciones = new LibroCalificaciones(); // muestra el valor inicial de nombreDelCurso System.out.printf( "El nombre inicial del curso es: %s\n\n", miLibroCalificaciones.obtenerNombreDelCurso() ); // pide y recibe el nombre del curso System.out.println( "Escriba el nombre del curso:" ); String elNombre = entrada.nextLine(); // lee una línea de texto miLibroCalificaciones.establecerNombreDelCurso( elNombre ); // establece el nombre del curso System.out.println(); // imprime una línea en blanco // muestra el mensaje de bienvenida después de especificar el nombre del curso miLibroCalificaciones.mostrarMensaje(); } // fin de main } // fin de la clase PruebaLibroCalificaciones Diagrama de clases UML, en el que se indica que la clase LibroCalificaciones tiene un atributo nombreDelCurso de tipo String en UML, y tres operaciones: establecerNombreDelCurso (con un parámetro nombre de tipo String de UML), obtenerNombreDelCurso (que devuelve el tipo String de UML) y mostrarMensaje. LibroCalificaciones -NombreDelCurso : String +establecerNombreDelCurso( nombre : String +obtenerNombreDelCurso( ) : String +mostrarMensaje(NombreDelCurso : String )