Java Básico Parte 2

Modificadores y Métodos de Acceso

Si ya conocen el paradigma orientado a objetos, ustedes sabrán el hecho que todos los atributos de una clase tienen que ser privados y que solo la misma clase podrá acceder a ellos.

Por otro lado también en algunos casos vamos a querer que alguna operaciones sean igual privadas ya que puede ser muy riesgoso para la integridad de nuestro objeto, que están sean públicas.

Para tal efecto Java posee los llamados modificadores, estos dan un grado de visibilidad a nuestro atributo y operaciones, los principales son:

Private, este modificador hace que el atributo u operación solo puedan ser vistas por la misma clase que los contiene.

Protected, este modificador hace que tanto los atributos como operaciones sean vistos por la clase que los contiene y por las clases que heredan de esta.

Public, este es el grado de mayor visibilidad que se le puede dar a un atributo u operación ya que cualquier clase podrá verlos sin ningún problema, este tipo de modificador nunca debería de ser aplicado a un atributo, pero como en todo hay excepciones, así que úsenlo con cuidado.

Entendido los grados de visibilidad de los modificadores y el hecho que ningún atributo debería de poseer un modificador public, se nos entra la duda de cómo podremos modificar o consultar estos desde fuera de la clase, para esto nacen los métodos de acceso, estos no son más que métodos públicos que nos permiten consultar o cambiar el valor del atributo, estos métodos son dos, los métodos “set” que cambian el valor y los métodos “get” que obtiene el valor del atributo.

Los métodos “set” deberían de tener una estructura similar a la siguiente:

public void set_nombreAtributo(tipoAtributo nombreParametro)

{

nombreAtributo=nombreParametro;

}

Los métodos “get” deberían de tener la siguiente estructura:

public tipoAtributo set_nombreAtributo()

{

return nombreAtributo;

}

Ahora que ya sabemos que son y para qué sirven los modificadores y métodos de acceso hagamos el siguiente ejercicio:

“Crear una clase con el nombre ‘Matematica’ que resuelva una ecuación de segundo grado y tenga los métodos llamados resolución y calculitos, el método resolución se encargara de mostrar por consola las soluciones de la ecuación y de llamar al método calculitos(..) cuando la ecuación tenga dos soluciones reales. Si la ecuación tiene al menos una solución imaginaria se mostrar por consola que la operación no pudo ser realizada. El método calculitos incializara las variables solMenor y solMayor en base a los argumentos num1 y num2 que deberá recibir este método, además deberá mostrar por consola la solución mayor, la exponencial elevada a la solución mayor, el coseno de la solución menor, el arcoseno de la solución mayor, a todo esto hay que implementar métodos de acceso al atributo correspondiente al discriminante”

Pues manos a la obra, lo primero que hacemos es crear una nueva clase con el nombre “matematicas”, con los atributos a, b, c y discriminante, debería de quedar asi:

public class Matematicas

{

double a=1.5;

double b=3.5;

double c=1.5;

double discriminante= Math.pow(b,2)-4*a*c;

double solMenor, solMayor;

}

Luego procedemos a crear la función resolución que tendrá la siguiente estructura:

public void resolucion()

{

if(discriminante>=0)

{

calculitos((-b+Math.sqrt(discriminante))/(2*a),(-b-Math.sqrt(discriminante))/(2*a));

}

else

{

System.out.println("Solucion Imaginaria");

}

}

Como se puede observer tenemos en primera instancia una estructura de control, el if y con el su respectivo else, en el if se comprueba de que el discriminante sea mayor a cero, si no lo fuera entonces tendríamos una solución imaginario ante lo cual el sistema desplegaría el mensaje de “Solucion Imaginaria” y no ejecutaria el método calculitos().

Ahora creamos la función calculitos de la siguiente manera:

private void calculitos(double num1, double num2)

{

solMayor=Math.max(num1, num2);

solMenor=Math.min(num1, num2);

System.out.println("Las soluciones son: " + solMayor + " y " + solMenor);

System.out.println("La solucion mayor es: " + solMayor);

System.out.println("La exponencial elevada a la solucion mayor vale: " +

Math.exp(solMayor));

System.out.println("El coseno de la solucion menor vale: " + Math.cos(solMenor));

System.out.println("El arcoseno de la solucion mayor en radianes: "

+Math.acos(Math.toRadians(solMayor)));

}

Aquí lo único que se hace es realizar los cálculos pedidos en el enunciado, como son cálculos meramente matematicos todo lo hacemos a través de la clase Math.

Ahora procedamos con los métodos de acceso para el atributo discriminante:

Public void set_discriminante(double nuevoDiscriminate)

{

discriminante=nuevoDiscriminante;

}

Public double get_discriminante()

{

return discriminante;

}

Como dije anteriormente los métodos de acceso tienen siempre una estructura parecida, tanto así que hay lenguajes como C# que implementan un sistema para que estos métodos se compriman en uno solo.

Creo que con el ejercicio hemos podido ver dónde y cómo implementar los modificadores y métodos de acceso con lo cual me voy despidiendo hasta una próxima.

Bye

Publicar un comentario