Está en la página 1de 3

GUIA “A” DE LABORATORIO

OBJETOS Y CLASES

Objetivo:
Introducir los conceptos de la Programación Orientada a Objetos.
Descripción:
A continuación se presenta la clase Base.java. Esta clase contiene 7 métodos de
carácter estático, se denominan “métodos de clase”. Estos métodos se han
desarrollado para ser utilizados en otras clases, sin instanciar objetos. Observar
como se invocan a estos métodos dentro de otras clases.

“Clase Base”
Es importante reconocer que dentro de una clase se encuentran varios métodos
relacionados a la FUNCIONALIDAD de la clase. Por ejemplo, si tenemos la clase
AUTO, podemos escribir los métodos “arrancarAuto()”, “aumentarVelocidadAuto()”,
“apagarAuto()”. Todos estos métodos son parte de la funcionalidad de la clase
Auto. Se leería así, “Un auto debe arrancar, para luego aumentar su
velocidad y finalmente apagar el auto”. Reitero todas estas características
(métodos) son propias del objeto Auto. Ahora, debemos reconocer que en muchos
métodos se tiene que hacer uso de LECTURA DE DATOS por consola, CONVERSION
DE TIPOS DE DATOS (String a int, String a double), CREACION DE MENUS para
escoger una de sus opciones, etc. Ante este escenario o contexto, se tienen 2
posibles soluciones: la PRIMERA indica hacer toda la programación dentro de la
clase. Esto da como resultado, que una clase, tenga en cada método CODIGO que
no le pertenece a la funcionalidad de la clase. Por ejemplo, si dentro de un método
se necesita ingresa 10 valores para 10 atributos, se tendrá que programar la
lectura de dichos valores dentro de la clase. Es en este momento en que añadimos
CODIGO no relacionado a la funcionalidad de la clase. Otro motivo es que, se
tendría que repetir lo mismo en cada clase que necesite ingresar datos por consola.
Indico esto, porque es fácil de entender que en muchas clases hay la necesidad e
ingresar datos por consola. Por todo ello, eso da como resultado un CODIGO difícil
de mantener. La SEGUNDA solución es crear una clase, que tenga todos los
métodos que NO PERTENCEN A LA FUNCIONALIDAD DE UN CLASE, pero que SI se
van a usar DENTRO DE CUALQUIER CLASE. Es en este momento, en que nos
acordamos de los métodos de carácter estático. Apoyándonos en dichos métodos se
ha creado una clase llamada Base (El nombre de la clase puede ser a gusto del
programador), con los siguientes métodos:

public static String leerDato(){ … }


public static int aEntero(String cadena){ … }
public static double aReal(String cadena){ … }
public static String ingresarDato(String mensaje){ … }
public static String convertirCadenaAMinuscula(String sPalabra){ … }
public static String convertirCadenaAMayuscula(String sPalabra){ … }
public static int pintarMenu(String[] mensaje){ … }

/**
* Clase de Apoyo llamada Base.
* @version 1.0, 09/09/08
* @author Arón Elías Herrera Ponte
*/
Algorítmica II Guía ”A” de Laboratorio – Clases y Objetos

//Nombre del paquete que agrupa a clases Java


//de utilidad general
package ClasesBase;

//Importamos clases Java para la lectura de


//Datos por consola
import java.io.BufferedReader;
import java.io.InputStreamReader;

//Implementación de la clase Base


public class Base {

//Implementación del método estático "leerDato"


//se utiliza para pedir el ingreso de datos por consola
public static String leerDato(){
String dato;
try{
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
dato = teclado.readLine();
}catch(Exception exception){
System.out.println("Error al momento de Leer el dato por consola.");
dato = "";
}
return dato;
}

//Este método recibe por parámetro una variable 'cadena' de tipo de dato String
//Se hace uso del método 'parseInt()' de la clase Integer
//Si sucede un error al momento de convertir el 'String' a 'int', se irá al bloque 'catch'
//Si todo es correcto, se retorna el entero 'dato'
public static int aEntero(String cadena){
int dato;
try{
dato = Integer.parseInt(cadena);
}catch(Exception e){
System.out.println("Error al convertir un String a Entero.");
dato = 999;
}
return dato;
}

//Este método recibe por parámetro una variable 'cadena' de tipo de dato String
//Se hace uso del método 'parseDouble()' de la clase Double
//Si sucede un error al momento de convertir el 'String' a 'double', se irá al bloque 'catch'
//Si todo es correcto, se retorna el double 'dato'
public static double aReal(String cadena){
double dato;
try{
dato = Double.parseDouble(cadena);
}catch(Exception e){
System.out.println("Error al convertir un String a Real.");
dato = 999;
}
return dato;
}

//Este método recibe por parámetro una cadena 'mensaje', la cual se va ha imprimir
//Se hace uso del método 'leerDato()'
//Se debe escribir un texto no vacio. Debido a que existe el bucle 'do-while'
//este bucle, valida si lo ingresado es vacio

Prof. Arón Elías Herrera Ponte Pág. 2


Algorítmica II Guía ”A” de Laboratorio – Clases y Objetos

//Si todo es correcto, se retorna el String 'dato'


public static String ingresarDato(String mensaje){
String dato;
do{
System.out.print(mensaje);
dato = leerDato().trim();
}while(dato.length()==0);
return dato;
}

//Método que devuelve una cadena en minúscula


public static String convertirCadenaAMinuscula(String sPalabra){
return sPalabra.toLowerCase();
}

//Método que devuelve una cadena en mayúscula


public static String convertirCadenaAMayuscula(String sPalabra){
return sPalabra.toUpperCase();
}

//Este método recibe por parámetro un arreglo de String 'mensaje'


//El método construye un ménu de opciones, usando el bucle 'for'
//Se pide al usuario ingresar su opción
//Se convierte a entero dicha opción
//Se devuelve la opcion ingresada
public static int pintarMenu(String[] mensaje){
int opcion;
do{
for(String cadena : mensaje){
System.out.println(cadena);
}
System.out.println("Ingrese su opcion:");
opcion = aEntero(leerDato());
}while(opcion<1 || opcion>mensaje.length);
return opcion;
}

Prof. Arón Elías Herrera Ponte Pág. 3

También podría gustarte