Control de acceso a miembros.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Control de acceso a miembros de clases En esencia hay dos tipos básicos de miembros de clase: públicos y privados. Se puede acceder libremente a un miembro público, mediante un código definido fuera de su clase. Se puede acceder a un miembro privado sólo mediante otros métodos definidos por su clas...

Control de acceso a miembros de clases En esencia hay dos tipos básicos de miembros de clase: públicos y privados. Se puede acceder libremente a un miembro público, mediante un código definido fuera de su clase. Se puede acceder a un miembro privado sólo mediante otros métodos definidos por su clase. La restricción al acceso de los miembros de una clase constituye una parte fundamental de la programación orientada a objetos porque contribuye a evitar el mal uso de un objeto. Al permitir el acceso a los datos privados solo mediante un conjunto de métodos bien definidos, se evita que se asignen valores inapropiados a esos datos (por ejemplo, al comprobar el rango). No es posible que el código fuera de la clase establezca directamente el valor de un miembro privado. Especificadores de acceso de Java El control de acceso a miembros se logra mediante el uso de 3 especificadores: public, private y protected. public define miembros públicos, aquellos a los que se puede acceder por cualquier método desde fuera de la clase; a los miembros de private solo se puede acceder por métodos de la misma clase, por lo tanto, los métodos de otras clases no pueden acceder al miembro private de otra clase. La restricción al acceso de los miembros de una clase constituye una parte fundamental de la programación orientada a objetos (POO) porque contribuye a evitar el mal uso de un objeto. Al permitir el acceso a los datos privados solo mediante un conjunto de métodos bien definidos se evita que se asignen valores inapropiados a esos datos (por ejemplo, al comprobar el rango), mientras que a los de protected se puede ingresar por aquellos de la misma clase o de clases derivadas, así como por métodos de otras clases que se encuentran en el mismo paquete. Si no se emplea un especificador de acceso, se supone que es un acceso predeterminado, que en todo caso es el mismo acceso público. En este material los únicos especificadores que se utilizaran son: public y private. No accesibles desde el Privado exterior de la clase Datos o (acceso denegado) métodos Público Accesibles desde el exterior de la clase Datos o métodos Secciones públicas y privadas de una clase  Ejemplo: A continuación, un ejemplo en el que se utilizan los especificadores de acceso public y private. Verá la forma en la que se tiene acceso a variables privadas en la clase. class Ejemplo { private int x;// acceso private public int y;// acceso public int z;//acceso predeterminado(público) //Metodos accesores para la variable private public void setX(int a) { x=a; } public int getX() { return x; } } class DemoEjemplo { public static void main(String [] args) { Ejemplo ob = new Ejemplo(); ob.setX(5); Asignándole valor a la variable x a través del método accesor // ob.x = 5 ob.y = 10; //asignando valor a y ob.z = 20; //asignando valor a z //mandando información en consola System.out.println("Valor de x es: " + ob.getX()); //se invoca el método que devuelve el valor de x System.out.println("Valor de y es: " + ob.y); System.out.println("Valor de z es: " + ob.z); } } Cuando compile y ejecute el programa verá la siguiente salida: Valor de x es: 5  NOTA: Valor de y es: 10 Puede utilizar cualquier nombre para los Valor de z es: 20 métodos accesores de las variables privadas. Pero se usa el set y get para diferenciarlos de los métodos de la clase.  Ejemplo: El siguiente ejemplo involucra captura de datos desde teclado en el método main() import java.util.*; class Rectangulo { private double base; private double altura; //métodos accesores public void setBase(double b) { base=b; } public double getBase() { return base; } public void setAltura(double a) { altura=a; } public double getAltura() { return altura; } //método que calcula el área de un rectángulo public double calculoArea() { return base * altura; } } class DemoRectangulo { public static void main(String [] args) { Rectangulo r1 = new Rectangulo(); //capturando datos desde teclado Scanner leer = new Scanner(System.in); System.out.print(“Digite la base: ”); Haciendo uso de los métodos accesores r1.setBase(leer.nextDouble()); para capturar datos de las variables System.out.print(“Digite la altura: ”); privadas. r1.setAltura(leer.nextDouble()); //Salida de información en consola Haciendo uso de System.out.println("La base es: " + r1.getBase()); los métodos System.out.println("La altura es: " + r1.getAltura()); accesores para System.out.println("El area es: " + r1.calculoArea()); mostrar los datos de las variables } privadas. } Cuando compile y ejecute el programa verá la siguiente salida: Métodos Privados En los ejemplos anteriores, se trabajó con variables privadas y se dio cuenta que para tener acceso a esas variables era necesario crear métodos accesores. En el caso de los métodos, se trabaja de manera similar, solamente que en lugar de crear 2 métodos accesores, solo se crea uno, el cual invoca al método privado.  Ejemplo: Hacer una clase con un método privado, el cual se encargará de imprimir un mensaje en pantalla. Implemente la clase. class MetodoPrivado{ private void metPriv() { Sytem.out.println(“Este es un mensaje desde un método privado”); } //método accesor para el método privado public void llamaMetPriv() { metPriv(); El nombre del método puede ser cualquiera } } class DemoMetodoPrivado { public static void main(String [] args) { MetodoPrivado obj=new MetodoPrivado(); //invocando al metodo public obj.llamaMetPriv(); } } El ejemplo anterior es bastante sencillo ya que lo que se pretende es darle a conocer la forma de trabajar con métodos privados y como se utiliza el método accesor, para tener acceso al método privado desde fuera de la clase y por lo tanto es el método público el que se invoca en el método main(). Cuando compile y ejecute el programa verá la siguiente salida: Este es un mensaje desde un método privado

Use Quizgecko on...
Browser
Browser