martes, 14 de junio de 2016

Modificadores de Acceso Java: Protected

Los modificadores de acceso permiten determinar quién tiene acceso a las variables y métodos miembros de una clase.

Características:
  • Se aplica a campos, métodos y constructores
  • Es preferible que no sea utilizado en campos para no debilitar el encapsulamiento.
  • Suele usarse cuando se trabaja con herencia.
  • Permite el acceso a los componentes desde la misma clase, clases del mismo paquete, y clases que hereden de ella (aunque sean de diferentes paquetes)
  • Tomar en cuenta que el modificador protected nos permite acceder al atributo heredado desde la clase hija, pero no directamente (no sé puede acceder al valor que constituye el atributo de la clase padre)


A continuación tenemos nuestra clase principal, la cual contiene un método y una variable protegida. 

package com.kateledrod.java.acceso.modificador;

/**
 *
 * @author Kateledrod
 */
public class ClaseEjemplo {
   
    protected String variableProtegida = "Variable Protegida Clase Ejemplo";
   
    protected void metodoProtegido(){
        System.out.println("Método protected. " +variableProtegida);
    }
}


Si aplicamos la herencia para nuestro método anterior, las variables y métodos que tengan como modificador de acceso protected, podrán visualizarse y utilizarse desde la subclase. 

package com.kateledrod.java.acceso.modificador;

/**
 *
 * @author Kateledrod
 */
public class SubClaseEjemplo extends ClaseEjemplo{
   
    //nos permite acceder al atributo heredado, pero no directamente
    private void llamadaMetodosClaseEjemplo(){
        variableProtegida = "Acceso a variable protected";
        metodoProtegido();       
    }   
   
    public static void main(String[] args) {
        SubClaseEjemplo subClaseEjemplo = new SubClaseEjemplo();
        subClaseEjemplo.llamadaMetodosClaseEjemplo();
    }
}


De igual manera si agregamos una clase al paquete asignado a nuestra ClaseEjemplo, cualquier clase dentro de este paquete tendrá acceso a métodos y variables protected. Como se visualiza a continuación.

package com.kateledrod.java.acceso.modificador;

/**
 *
 * @author Kateledrod
 */
public class ClaseEjemploMismoPaquete {
   
    private void llamadaMetodoClaseEjemplo(){
        ClaseEjemplo claseEjemplo = new ClaseEjemplo();
        claseEjemplo.variableProtegida = "Acceso a variable protected";// se tiene acceso por paquete
        claseEjemplo.metodoProtegido();//se tiene acceso por paquete   
    }
}


Sin embargo si creamos un paquete distinto y agregamos una clase, desde la cual deseamos accesar a los métodos y variables protected de nuestra clase ejemplo. El acceso al mismo no será posible. 

package com.kateledrod.java.acceso.modificador.otro;

import com.kateledrod.java.acceso.modificador.ClaseEjemplo;

/**
 *
 * @author Kateledrod
 */
public class ClaseEjemploDifPaquete {
   
    private void llamadaMetodosClaseEjemplo(){
        //variableProtegida = "Acceso a variable protected";// no se tiene acceso desde paquete diferente
        //metodoProtegido(); // no se tiene acceso desde un paquete diferente  
       
        ClaseEjemplo claseEjemplo = new ClaseEjemplo();
        //claseEjemplo.variableProtegida = "Acceso a variable protected";// no se tiene acceso desde paquete diferente
        //claseEjemplo.metodoProtegido(); // no se tiene acceso desde un paquete diferente
    }
   
}


Ahora que si, agregamos una subclase a un paquete distinto al que se encuentra nuestra ClaseEjemplo, tendremos acceso a métodos y variables protected por medio de herencia.

package com.kateledrod.java.acceso.modificador.otro;

import com.kateledrod.java.acceso.modificador.ClaseEjemplo;

/**
 *
 * @author Kateledrod
 */
public class SubClaseEjemploDifPaquete extends ClaseEjemplo{
   
    private void llamadaMetodoClaseEjemplo(){
        variableProtegida = "Acceso a variable protected";// se tiene acceso desde un paquete diferente por herencia
        metodoProtegido(); // se tiene acceso desde un paquete diferente por herencia     
    }
}


lunes, 30 de mayo de 2016

Cómo convertir una dirección de archivo en una URL para un POM en Maven

Cuando manejamos la dirección de una carpeta desde nuestro código fuente, podemos convertir esta en una dirección URL para que sea reconocida por Maven en la configuración del su archivo pom.xml. 

En el caso de maven, se puede tomar como ejemplo el caso de una configuración de webservice a partir de un archivo wsdl que se encuentra en nuestro dirección local. 

El archivo wsdl se encuentra en la ruta "src/main/resources/com/empresa/sis/seguridad/archivo.wsdl", así que lo único que necesitamos para que esta dirección sea vista como una URL, es agregarle file:/ al principio de la dirección. 

En cuanto a ${basedir} lo que nos da es la dirección base de nuestro proyecto. De esta manera podemos tener el archivo wsdl descargado localmente y reconstruir nuestro webservice con base en el mismo.


            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>axistools-maven-plugin</artifactId>
                <version>1.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <urls>                        <url>file:/${basedir}/src/main/resources/com/empresa/sis/seguridad/archivo.wsdl</url>
                    </urls>
                    <packageSpace>com.empresa.sis.seguridad.cliente</packageSpace>
                    <sourceDirectory>src/main/resources/META-INF/wsdl</sourceDirectory>
                    <outputDirectory>target/generated-sources/wsdl2java</outputDirectory>     
                    <debug>false</debug>   
               </configuration>
            </plugin>

martes, 3 de mayo de 2016

Imports y Package en Java

Package

  1. Son opcionales
  2. Sólo puede haber uno por archivo de código
  3. Convención indica que se debe tomar el nombre del dominio de la empresa o grupo por ejemplo www.empresa.com, el nombre del paquete sería com.empresa.utilidades
  4. El nombre de los paquetes debe ser igual al de la estructura de carpetas en Java, com/empresa/utilidades, de lo contrario las clases no pueden utilizarse
  5. Los nombres java.* y javax.* son reservados por lo que no pueden utilizarse.
  6. Los nombres deben ser en minúscula y separados por guiones

Imports

Los static imports permite importar miembros static. (Esto es para la versión Java SE 5.0 en adelante)

package com.kateledrod.oca.basic;// uno por archivo
import static java.util.Locale.ITALY; //permite utilizar miembros estáticos
//import static java.util.Locale.*; // si se comenta con CANADA no compila
/**
 *
 * @author Katherine
 */
public class Test {
public static void main(String[] args){
System.out.println("Imprimiendo miembro static de clase java " +ITALY);
//System.out.println("Imprimiendo miembro static de clase java " +CANADA); // si no es estático no compila
}

}


Los imports pueden ser Implicítos o Explicítos.

El import implícito permite importar todas las clases del paquete

import java.io; //Import implícito


El import explícito permite importar solamente la clase o interface de un paquete.

import java.io.File; //Import explícito




lunes, 2 de mayo de 2016

Inicio

Este blog incluye contenido referente a la programación en Java. Se incluye a su vez conocimientos sobre Maven, PL-SQL