lunes, 14 de mayo de 2012

Conceptos Generales (Comparación entre objetos)


El operador ==

      Este operador esta sobrecargado para operar con objetos. Se utiliza para saber si dos punteros apuntan al mismo objeto, es decir que son dos referencias de la misma instancia de objeto. Retorna true o false según el resultado de la comparación.
      Ejemplo:

         String c1 = new String (“Juan”);
         String c2 = c1;
        
         if (c1==c2){
         System.out.println(“c1 y c2 apuntan al mismo objeto”);
         }

En este caso se va a informar que apuntan al mismo objeto ya que el resultado de la comparación es true.

El método equals()

      Se utiliza para saber si dos objetos son iguales, si el contenido es igual. Esta redefinido por la subclase que lo utiliza. En la clase String se utiliza para saber si dos objetos String son iguales.
      En la clase Integer se utiliza para saber si dos objetos Integer son iguales. Retorna true  o false según el resultado de la comparación.
      Ejemplo:

         String c1 = new String (“Juan”);
         String c2 = new String (“Pedro”);

         if(c1.equals(c2)){
         System.out.println(“c1 y c2 son iguales”);
         }


En este caso no se va a informar nada ya que no es true el resultado de la comparación.

Conceptos Generales (Wrappers de tipos de dato primitivos)


Definición

      Es la representación de los valores primitivos como objetos, son utilizados para envolver los tipos de datos primitivos. En general tienen dos constructores:

      - Con los valores primitivos como parámetros.
      - Con los valores primitivos como cadena de caracteres, como parámetro.

Tienen un método estático valueOf() que retorna un objeto Wrapper(Integer, Long, Double, Float, etc). 

La clase Integer

      Utilizada para envolver el tipo de dato prmitivo int. Es una subclase de java.lang.Number.

      Ejemplo en Java:

         Integer miEntero = new Integer(50);
         Integer miOtroEntero = Integer.valueOf(“50”);

La clase Float

      Utilizada para envolver el tipo de dato primitivo float. Es una subclase de java.lang.Number.

      Ejemplo en Java:

         Float miPuntoFlotante = new Float(45.67);
         Float miOtroPuntoFlotante = Float.valueOf(“45.67”);

La clase Number

      Representa el concepto abstracto de un numero en Java. Tiene como objetivo ser la superclase de los Wrappers de los tipos de datos numéricos primitivos. Es una clase abstracta, es decir no se puede instanciar.

Conceptos Generales (La clase System)

Definición:
     
      La clase System representa al sistema donde se esta ejecutando el programa Java. Por lo tanto se la puede utilizar para interactuar con el entorno en el que corre, y utilizar las propiedades del entorno, sistema operativo, usuario y demás.

Donde utilizarla:

      Puede accederse a la salida estándar del proceso, a la salida de error del proceso y a la entrada estándar del proceso mediante, System.out, System.err, System.in respectivamente, de modo de poder interactuar con el sistema operativo. También permite obtener el tiempo en milisegundos llamando al sistema operativo para lograr este objetivo.
      Otra cosa muy útil de la clase System es que permite cargar librerías externas en una línea de ejecución con el método load (), mediante esta operación se logra cargar librerías en tiempo de corrida del programa y suma así funcionalidades a nuestros programas.
      Posee atributos y métodos de uso general, y son todos estáticos, es decir atributos y métodos de clase. No es una clase instanciable.

Entre los métodos mas conocidos están:

 ü  exit() à termina la ejecución de la JVM

 ü  gc() à invoca al Garbage Collector

 ü  getProperties() à trae todas las propiedades del sistema

 ü  getProperty() à trae una propiedad en particular del sistema

Conceptos Generales (La clase String)


Definición
     
      La clase String es utilizada para manejar cadenas de caracteres. El operador + se utiliza para concatenar Strings.
      Entre los métodos mas conocidos esan charAt(), equals(), length(), replaceAll().

Inicialización de un String

      Las formas de declarar e inicializar un objeto de la clase String son las siguientes:

         String cadena1 = “Soy una cadena de caracteres”;
         String cadena2 = new String (“Soy una cadena de caracteres”);

         char [] caracteres  = {‘h’, ‘o’, ‘l’, ‘a’};
         String cadena3 = new String (caracteres);


      Todos los objetos en Java heredan de la clase Object, y la clase Object tiene un método toString() que nos retorna la representación del objeto en un String.
      Este método se puede sobrescribir de modo tal que la información que se retorne en el String resultado sea propia de la instancia de la clase.

      Ejemplo:

         public class Auto{

                prívate String patente;
                prívate String marca;
                prívate String modelo;

                //Aca van los constructores

                //Aca van los setters y getters

                //El método siguiente es el retorna el objeto Auto como un String
                @Override
                public String toString(){
                return “Patente: ” + this.patente + “\nMarca: ” + this.marca + “\nModelo: ” + this.modelo;
                }
         }


Métodos mas importantes

La clase String también tiene los siguientes métodos:

 ü  compareTo(String) à compara un String con otro por igualdad.

 ü  concat(String) à concatena un String con otro.

 ü  contains() à evalua si una cadena de caracteres esta contenida en el String

 ü  startsWith(String prefijo) à evalua si el String comienza con el prefijo

 ü  endsWith(String sufijo) à evalua si el String termina con el sufijo

 ü  valueOf() à convierte cualquier tipo básico, boolean, long, doublé, int, en un String.

 ü  Split (String expresionRegular) à separa en partes según la expresión regular.

 ü  subString(int comienzo, int fin) à retorna un bloque desde comienzo y hasta fin.

 ü  Matches(String expresionRegular) à evalua si el String contiene la expresión regular. 

Accesibilidad


Acceso privado, palabra clave “private”

      Al definir un atributo, método o clase como privado, se le esta dando acceso solo desde la clase donde fue definido. Por ejemplo, en el caso de velocidad de un Auto:

         public class Auto{

               private int velocidad;

               public void acelerar(){
               this.velocidad += 10;
               }
        
         }

      Por lo tanto el único modo de acceder a modificar la velocidad es a través del método acelerar. Esta propiedad no esta accesible desde ningún otro alcance sino el de la clase.
      Para poder acceder al atributo velocidad, solo podrán hacerlo los métodos de la misma clase.

Acceso por defecto, “default” o “package”

      En el caso del acceso por defecto, que es el acceso cuadno no se declara la accesibilidad a un atributo, método o clase, el acceso es dentro del mismo paquete o directorio. Por ejemplo si tengo dos clases Auto y Camion, y auto tiene un conductor sin definir su accesibilidad, es decir:

         package vehículos;
        
               public class Auto extends Vehiculo{
        
                               Conductor getConductor(){
                               //Acá se retorna el conductor
                               }
         }
   
Luego en la clase Camion que esta en el mismo package:

      package vehículos;
     
      public class Camion extends Vehiculo{
        
         public void comunicar(Vehiculo v){
         v.getConductor().conversar(); //Se tiene acceso a getConductor por estar ambas clases en el mismo package.
         }

      }


Para poder acceder al método getConductor() podrán hacerlo únicamente las clases ubicadas en el mismo package o directorio.

Acceso protegido, palabra clave “protected”

      Al definir un atributo o método como protegido estamos dejándolo disponible para las clases que heredan de esta clase, ejemplo:

         public class Vehiculo{
               protected int cantidadDeRuedas = 4;
         }

      Luego en la clase Auto, tendremos acceso a cantidadDeRuedas:

         public class Auto extends Vehiculo{
               
                public int getCantidadDeRuedas(){
                return this.cantidadDeRuedas;
                }
         }


      Para poder acceder al atributo cantidadDeRuedas, solo podrán hacerlo las clases que heredan de Vehiculo, es decir la familia de clases.

Acceso publico, palabra clave public

      Definiendo un atributo o método o clase como público permite que se tenga acceso a estos desde cualquier alcance, desde todos lados.
      Acceder a los atributos públicos, todos podrán hacerlo.

Resumen de accesibilidad

Accesibilidad
Acceso en la misma clase
Acceso en el mismo package
Acceso en el árbol de herencia
Acceso desde todas las clases
private
Si
No
No
No
default o package
Si
Si
No
No
protected
Si
Si
Si
No
public
Si
Si
Si
Si