Sunteți pe pagina 1din 8

Tarea # 2 – “Scanner”

Objetivos
 Aprender a manejar la clase Scanner para entrada y salida por consola.
 Aprender a usar el constructor de una clase.
 Aprender a generar automáticamente los métodos setters, getters, constructores y toString de una clase
 Usar las herramientas de Eclipse para generar métodos en clases.

Recursos
 El tutorial de Eclipse que está en https://www.vogella.com/tutorials/Eclipse/article.html#create-your-first-java-program .
También está publicado en Moodle.
 El video publicado en Moodle: “2020-03-19 Solucionando Tarea 1”. Este video muestra cómo se crea un proyecto Java en
Eclipse.
 Mi video sobre cómo exportar e importar proyectos. (Próximamente en salas de cine)

Creando un Proyecto en Eclipse


A. Consulte el tutorial de Eclipse, en la sección 7: Create your first Java program y siga los pasos para crear el proyecto
usingScanner. Asegúrese de seleccionar la opción “create separate folders for sources and class files”
B. Consulte el tutorial de Eclipse, en la sección 7: Create your first Java program y siga los pasos para crear un paquete con
nombre co.edu.unal.tarea2
C. Consulte el tutorial de Eclipse, en la sección 7: Create your first Java program y y siga los pasos para crear la clase pública
Profile dentro del paquete creado en el punto anterior. Asegúrese de seleccionar la opción “Generate comments”
D. Llene apropiadamente la información de @Author y en el comentario que aparece al inicio del archivo escriba simplemente la
frase “Tarea 2 de POO”.

Usando las herramientas de Eclipse


Eclipse, es uno de los IDEs especializados en java, que nos proporciona varias herramientas para facilitar la creación de cualquier
programa. A continuación veremos un poco de lo que podemos hacer con esta magia!

En informática, un Profile es algo que representa el perfil de un usuario en un sistema. Dentro de la clase Profile, vamos a declarar
algunos atributos, indicando que son privados (private), y que más adelante usaremos para guardar los datos que obtendremos desde la
consola.

Uno de los principios que rigen al paradigma de Programación Orientada a Objetos, es el de Encapsulamiento. Este principio establece
que la forma correcta de modificar el estado de un objeto (es decir, valores de los atributos), es a través de métodos definidos sobre los
atributos; de esta manera podemos considerar que cada objeto está “aislado del exterior”. Estos métodos son los setters (usados para
modificar el valor de un atributo) y getters (usados para obtener el valor de un atributo).

Para generar estos métodos con Eclipse, iremos a Source en el menú de herramientas, y seleccionamos la opción Generate Setters and
Getters. Luego seleccionamos todos los atributos de la clase Profile. (es posible seleccionar solo algunos)
Al finalizar, podremos ver los métodos getters y setters asociados a cada uno de
los atributos de la clase (ver siguiente figura)
Algo más que podemos hacer con Eclipse es generar el Constructor de la clase. Un Constructor es un método especial que se llama
automáticamente siempre que se crea un objeto de la clase. Su función es la de inicializar el objeto, es decir, asignarle valores iniciales a
los atributos.

Para crear el Constructor iremos nuevamente a la opción Source, y seleccionamos la opción Generate Constructor Using Fields. Luego,
seleccionamos todos los atributos de la clase Profile (es posible seleccionar solo algunos).
Al finalizar, podremos ver el constructor generado para esta clase:

Hay varias particularidades de los constructores:

 Una clase puede tener más de un constructor, pero siempre deben tener el mismo nombre de la clase
 Si el programador no define ningún constructor, el compilador generará uno sin parámetros de forma automática
 Si el programador define algún constructor, el compilador NO generará el constructor sin parámetros
 En los constructores no se especifica el tipo retornado
 Los constructores pueden tener como primera instrucción el llamado super(); ¿Para qué sirve esto?

La palabra clave this sirve como una referencia al objeto construido. Así por ejemplo, la instrucción this.age = age debe entenderse
como “Al atributo age de este objeto asígnele el valor del parámetro age”. Note que, en Eclipse, los atributos aparecen en azul, lo cual
facilita la lectura y entendimiento del código.

Finalmente vamos a crear el método toString() que genera una cadena de caracteres, es decir un objeto de tipo String. Esa cadena
normalmente se usa para mostrar los valores de los atributos del objeto en la consola de Java.

Para crear el método toString() iremos nuevamente a la opción Source, y seleccionamos la opción Generate toString(). Luego
seleccionamos todos los atributos porque en este caso los queremos mostrar todos.
Al finalizar, podremos ver el método toString() generado para esta clase.

La cadena @Override es una anotación (annotation) que indica que este método se está redefiniendo. En realidad, la definición original
de este método está en la clase Object, que es una clase predefinida en Java y que es superclase de todas las clases (Una especie de Eva
de todas las clases).

Usando la clase Scanner


Vamos a crear una rutina elemental para pedir datos por consola (entrada de teclado del usuario) y para ello vamos a basarnos en una
clase del API de Java: la clase Scanner (http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html). En este enlace encontrará
información de cómo usar los objetos de esta clase, sus constructores, y todos los métodos predefinidos. También puede acudir al
buscador de Google para encontrar ejemplos de uso de esta clase.

El primer paso es crear una nueva clase dentro del mismo Package llamada TestingScannner, donde se definirá el método main.
Debemos importar también la clase Scanner que se encuentra en el paquete java.util. Cuando lo haga, su clase tendrá una definición del
estilo:
Ahora, dentro del método main de esta clase vamos a crear un objeto tipo Scanner, (se llamará myScanner) que nos servirá para recibir
datos del usuario por teclado. Note que el argumento del constructor es System.in. La clase System pertenece al paquete java.lang y
tiene tres variables estáticas que podemos usar directamente, las cuales son: in, out y err.

 in es una variable que representa un flujo (en inglés, stream) de entrada de datos para nuestros programas. En este ejercicio,
recibiremos datos por el teclado.
 out es una variable que representa un flujo de salida de datos para nuestros programas. Por eso escribimos instrucciones como
System.out.println(“Hola Mundo”);
 err es una variable que representa un flujo para reportar errores de nuestro programa.

Entonces, la creación del objeto de tipo Scanner es del estilo:

En este ejercicio vamos a usar el objeto myScanner para solicitarle al usuario valores para los atributos de la clase Profile. En general,
para leer datos desde consola usaremos el método nextX() de la clase Scanner, donde X indica el tipo de lectura que esperamos, por
ejemplo, nextInt() si queremos leer un entero, nextLine() si queremos leer una línea completa, nextDouble() si queremos leer un double,
next() si queremos leer el siguiente token, etc. Puede consultar todos los métodos disponibles en la Documentación de API de Java en
internet.

Entonces, para guardar los datos recibidos del usuario, usamos algunas variables auxiliares, como se muestra enseguida:

NOTA: Si quiere leer varios nombre o varios apellidos, revise el método nextLine() de la clase Scanner.

Si ejecutamos el programa y damos los datos que nos pide, saldrá algo como lo siguiente en la Consola de Eclipse:

Nota. Puede llamar a Pepito para confirmar los datos


Ahora que tenemos los datos ingresados por el usuario de nuestras variables locales, crearemos un objeto de tipo Profile dentro de
nuestra aplicación con los valores obtenidos.

Es importante colocar las variables en orden correcto dentro de la declaración del objeto, es decir, tal como lo especifica la definición del
constructor de la clase Profile.

Ya tenemos una instancia de la clase Profile. Hemos creado nuestro primer objeto de esta clase. Ahora invoquemos el método toString()
de este objeto para ver el estado de sus atributos:

La salida en la consola de Eclipse será del estilo:

En este punto, es muy importante que verifique que su programa funciona correctamente. Ejecútelo varias veces.

Solicitud de Modificaciones
Ahora suponga que un analista experto ha revisado el programa y solicita cambiar lo siguiente:

1. El tipo del atributo phoneNumber de la clase Profile debe ser de tipo String. La razón es que el usuario debe poder escribir
teléfonos en los cuales se especifiquen los códigos de área. Por ejemplo, si Pepito vive en Bogotá Colombia, su teléfono debería
guardarse como (57-1) 6784312.
2. Por otra parte, para ahorrar memoria, también solicita que el atributo age sea de tipo short, y el atributo weight de tipo float.
La razón es que estos números serán siempre cifras pequeñas por lo cual vale la pena usar tipos más pequeños que int y doble.
A propósito, ¿cuál es la mayor cifra que se puede almacenar en un atributo de tipo short? ¡Averígüelo!
3. El l perfil del usuario debe incluir un atributo adicional que sirva para guardar el correo electrónico del usuario. Agregue este
atributo, junto con su método setter y getter correspondientes. Note que también debe cambiar los métodos toString y el
constructor.

Verifique que su programa compila y funciona correctamente, después de realizadas estas modificaciones.

Finalmente, aunque usted no tiene que hacerlo, vale la pena aclarar mediante un diagrama de clases la estructura del el proyecto
usingScanner que hemos construido hasta este momento (el programa para hacer estos diagramas es Violet UML Editor):

Note que en este diagrama de clases:


 No se ponen los métodos constructores, getters, setters, y toString porque se consideran parte estándar de cualquier clase.
 Los tipos de los atributos sí se escriben.
 En general, las clases de Java como Scanner no se representan.
 La flecha indica que la clase TestingScanner “usa” o “depende de” la clase Profile.

Envío del Programa

A. Consulte el tutorial de Eclipse, en la sección 10: Exporting and importing projects y siga los pasos para crear archivo Tarea2.zip
que contenga los archivos .java y .class del proyecto usingScanner. Note que cuando usted exporta un proyecto, debe
especificar la carpeta en la cual quedan guardados esos archivos .zip. Se sugiere crear una carpeta para este tipo de archivos, en
la cual Eclipse pondrá este y futuros proyectos exportados.
B. Suba a Moodle el archivo Tarea2.zip. Encontrará en Moodle la tarea correspondiente.

S-ar putea să vă placă și