Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Tutoriales > Lenguajes orientados a objeto > Java > J2SE > TutorJava Nivel Básico
-Tutoriales

TutorJava Nivel Básico


Métodos Accesores

class ReverseString {
    public static String reverseIt(String source) {
        int i, len = source.length();
        StringBuffer dest = new StringBuffer(len);

        for (i = (len - 1); i >= 0; i--) {
            dest.append(source.charAt(i));
        }
        return dest.toString();
    }
}

Las variables de ejemplar de un objeto están encapsuladas dentro del objeto, ocultas en su interior, seguras frente a la inspección y manipulación por otros objetos. Con ciertas excepciones bien definidas, los métodos del objeto no son los únicos a través de los cuales un objeto puede inspeccionar o alterar las variables de otro objeto. La encapsulación de los datos de un objeto lo protege de la corrupción de otros objetos y oculta los detalles de implementación a los objetos extraños. Esta encapsulación de datos detrás de los métodos de un objeto es una de las piedras angulares de la programación orientada a objetos.

Los métodos utilizados para obtener información de un objeto son conocidos como métodos accesores. El método reverseIt() utiliza dos métodos accesores de String para obtener información sobre el string source.

Primero utiliza el método accesor: length() para obtener la longitud de la cadena source.

int len = source.length();

Observa que a reverseIt() no le importa si el String mantiene su longitud como un entero, como un número en coma flotante o incluso si calcula la longitud al vuelo. reverseIt() simplemente utiliza el interface público del método length() que devuelve la longitud del String como un entero. Es todo lo que necesita saber reverseIt().

Segundo, utiliza el método accesor: charAt() que devuelve el carácter que está situado en la posición indicada en su argumento.

source.charAt(i)

El carácter devuelto por charAt() es el que se añade al StringBuffer dest. Como la variable del bucle i empieza al final de source y avanza hasta el principio de la cadena, los caracteres se añaden en orden inverso al StringBuffer.

. Más Métodos Accesores

Además de length() y charAt(), String soporta otros métodos accesores que proporcionan acceso a subcadenas y que indican la posición de caracteres específicos en la cadena. StringBuffer tiene sus propios métodos accesores similares.

. Para la Clase String

Además de los accesores length() y charAt() que hemos visto antes, la clase String proporciona dos accesores que devuelven la posición dentro de una cadena de un carácter específico: indexOf() y lastIndexOf(). El método indexOf() busca empezando desde el principio de la cadena y lastIndexOf() busca empezando desde el final.

Los métodos indexOf() y lastIndexOf() se utilizan frecuentemente con substring(), que devuelve una subcadena de una cadena. La siguiente clase ilustra el uso de lastIndexOf() y substring() para aislar diferentes partes de un nombre de fichero.

Nota: Estos métodos no dan ningún error de chequeo y asumen que el argumento contiene un path completo con nombres de directorios y un nombre de fichero con extensión. Si estos métodos se utilizaran en algún programa deberían comprobar que los argumentos estuvieran construidos de forma apropiada.

class NombreFichero {
    String path;
    char separador;

    NombreFichero(String str, char sep) {
        path = str;
        separador = sep;
    }

    String extension() {
        int punto = path.lastIndexOf('.');
        return path.substring(punto + 1);
    }

    String NombreFichero() {
        int punto = path.lastIndexOf('.');
        int sep = path.lastIndexOf(separador);
        return path.substring(sep + 1, punto);
    }

    String path() {
        int sep = path.lastIndexOf(separador);
        return path.substring(0, sep);
    }
}

Aquí hay un pequeño programa que construye un objeto NombreFichero y llama a todos sus métodos.

class NombreFicheroTest {
    public static void main(String[] args) {
        NombreFichero miHomePage = new NombreFichero("/home/index.html", '/');
        System.out.println("Extension = " + miHomePage.extension());
        System.out.println("Nombre de Fichero = " + miHomePage.NombreFichero());
        System.out.println("Path = " + miHomePage.path());
    }
}

Aquí tienes la salida del programa.

Extension = html
NombreFichero = index
Path = /home

El método extension() utiliza lastIndexOf() para localizar la última aparición de un punto ('.') en el nombre del fichero. Luego substring() utiliza el valor devuelto por lastIndexOf() para extraer la extensión del fichero--esto es, una subcadena desde el punto ('.') hasta el final de la cadena. Este código asume que el nombre del fichero tiene realmente un puno ('.'), si no lo tiene lastIndexOf() devuelve -1, y el método substring() lanzará una StringIndexOutOfBoundsException.

Observa, también que extension() utiliza dot + 1 como el argumento para substring(). Si el punto es el último carácter de la cadena, dot + 1 es igual a la longitud de la cadena que es uno más que la longitud del texto de la cadena (porque los indices empiezan en 0). Sin embargo, substring() accepta un índice igual (pero no mayor) que la longitud de la cadena y lo interpreta como "el final de la cadena".

Intenta esto: Inspeccione los otros métodos utilizados en la clase NombreFichero y observa cómo los métodos lastIndexOf() y substring() trabajan juntos para aislar diferentes partes de un nombre de fichero.

Mientras los méodos del ejemplo anterior sólo utilizan una versión del método lastIndexOf(), la clase String realmente soporta cuatro diferentes versiones de los métodos indexOf() y lastIndexOf(). Las cuatro versiones trabajan de la siguiente forma.

indexOf(int character)
lastIndexOf(int character)
Devuelve el índice de la primera (o última) ocurrencia del carácter especificado.
indexOf(int character, int from)
lastIndexOf(int character, int from)
Devuelve el índice de la primera (o última) ocurrencia del carácter escpecificado desde el índice especificado.
indexOf(String string)
lastIndexOf(String string)
Devuelve el índice de la primera (o última) ocurrencia de la Cadena especificada.
indexOf(String string, int from)
lastIndexOf(String string, int from)
Devuelve el índice de la primera (o última) ocurrencia de la cadena escpecificada desde el índice especificado.

. Para la Clase StringBuffer

Al igual que String, StringBuffer porporciona los métodos accesores length() y charAt(). Además de estos dos, accesores, StringBuffer también tiene un método llamado capacity(). Este método es diferente de length() en que devuelve la cantidad de espacio asignado actualmente para el StringBuffer en vez de la cantidad de espacio utilizado. Por ejemplo, la capacidad del StringBuffer de reverseIt() no cambia nunca, aunque la longitud del StringBuffer se incremente en cada vuelta del bucle.

class ReverseString {
    public static String reverseIt(String source) {
        int i, len = source.length();
        StringBuffer dest = new StringBuffer(len);

        for (i = (len - 1); i >= 0; i--) {
            dest.append(source.charAt(i));
        }
        return dest.toString();
    }
}
 
Patrocinados
 

Copyright © 1999-2010 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

diseño y desarrollo web por Color Vivo Internet. Un proyecto de los Hermanos Carrero