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 )