sábado, 25 de febrero de 2012

POO / Java Apuntes-#1

Buen día,

En esta ocasión quiero compartir una especie de tutorial que lo pueden encontrar en la documentación de Oracle para Java SE obviamente en su versión en inglés. Yo se los traigo en español para compartir un poco sobre la Programación Orientada a Objetos (POO) utilizando el lenguaje Java.


Conceptos de Programación Orientada a Objetos.


¿Que es un objeto?

Un objeto es paquete de software ligado a estados y comportamientos. Los objetos de Software son a veces usados en el modelo de objetos del mundo-real  que puedes encontrar en cada día de la vida. Esta lección explicará como el estado y comportamiento son representados a través de un objeto, introduciendo el concepto de encapsulación de datos, y explicando los beneficios de diseñar software de esta manera.

Los objetos son la clave para entender la tecnología orientada a objetos. Mira alrededor ahora y podrás ver muchos ejemplos de objetos del mundo real: tu perro, tu escritorio, tu televisión, tu bicicleta.

Los objetos del mundo real comparten dos características: Todos tienen estados y comportamientos. Los perros tienen estados (nombre, color, reproducción, hambre) y comportamientos (ladrar, buscar, moviendo la cola). Las bicicletas también tienen estados (equipo actual, ritmo de pedaleo actual, velocidad actual) y los comportamientos (cambiar el equipo actual, cambiar lel ritmo de pedaleo actual, aplicar frenos). Identificando el estado y el comportamiento de los objetos del mundo real es una buena forma de comenzar a pensar en términos de programación orientada a objetos.

Los objetos de Software son similares a los objetos del mundo real: ambos poseen estados y comportamientos relacionados. Un objeto almacena su estado en campos (variables en algunos lenguajes de programación) y expone sus comportamientos a través de métodos (funciones en algunos lenguajes de programación). Los métodos operan en el estado interior de los objetos y sirven como un mecanismo primario para la comunicacion objeto a objeto. Escondiento sus estados itnernos y requiriendo interacción para ser interpretado a través de los métodos del objeto es conocido como encapsulación de datos - Un principio fundamental de la programación orientada a objetos.

Empaquetando codigo en objetos de software individuales provee un número de beneficios, incluyendo:
  1. Modularidad: El código fuente para un objeto puede ser escrito y mantenido independientemente del código fuente para otros objetos. Una vez se ha creado, un objeto puede fácilmente pasado alrededor dentro del sistema.
  2. Escodiendo información: Interactuándo solo con métodos de objeto, el detalle de esta implementación interna se mantiene escondida del mundo exterior.
  3. Reutilización de código: Si un objeto ya existe (probablemente escrito por otro desarrollador de software), puedes usar ese objeto en tu programa. Esto permite a los especialistas implementar/probar/depurar complejas, tareas específicas de objetos, que puedes tener la seguridad que correran en tu propio código.
  4. Facilidad de Integración y depuración: Si un objeto en particular empieza a ser problematico, tu simplemente lo remueves de tu aplicación e integras en un objeto diferente como un reemplazo. Esta es una analogía para arreglar problemas mecñanicos en el mundo real. Si un cerrojo se arruina, tu lo reemplazas, no a la máquina entera.



    ¿Que es una clase?

    Una clase es diseño o prototipo de donde los objetos son creados. Esta sección define a una clase que modela el estado y el comportamiento de un objeto del mundo real.

    En el mundo real, a veces encuentras muchos objetos individuales que son del mismo tipo. Debe haber miles de bicicletas en existencia, todas del mismo fabricante y modelo. Cada bicicleta es construida del mismo conjunto de diseños y por lo tanto contienen los mismos componentes. En términos de orientación a objetos, decimos que la bicicleta es una instancia de  la clase de objetos conocida como bicicletas.

    Una clase es el modelo para el cual objetos individuales son creados. La siguiente clase bicileta puede ser una de las posibles implementaciones de una bicicleta:

      int ritmo= 0;
      int velocidad= 0;
      int equipo= 1;

      void cambiarRitmo(int newValue) {
           ritmo = newValue;
      }

      void cambiarEquipo(int newValue) {
           equipo = newValue;
      }

      void aumentarVelocidad(int increment) {
           velocidad = velocidad + increment;  
      }

      void aplicarFrenos(int decrement) {
           velocidad = velocidad - decrement;
      }

      void imprimeEstados() {
           System.out.println("Ritmo:" +
               ritmo + " Velocidad:" +
               velocidad + " Equipo:" + equipo);
      }
    }

    La sintaxis del Lenguaje de Programación Java puede verse nuevo, pero el diseño de una clase esta basado en la discusión anterior del objeto bicicleta. Los campos ritmo, velocidad y equipo representan el estado de los objetos. y los métodos (cambiarRitmo, cambiarEquipo, aumentarVelocidad) define la interacción con el mundo de afuera.

    Puede notarse que la clase Bicicleta no tiene ningún método principal. Esto es porque no es una aplicación compelta; es solamente el diseño para las biciletas que puede ser usado en una aplicación. La responsabilidad de crear y usar un nuevo objeto bicicleta pertenece a alguans clases en la aplicación.

    Aquí hay una clase BicycleDemo que creará dos objetos separados de Bicicleta e invocará  sus métodos:

    class BicycleDemo {
      public static void main(String[] args) {

          // Creando dos diferentes
          // Objetos Bicicleta
          Bicycle bike1 = new Bicycle();
          Bicycle bike2 = new Bicycle();

          // Invoke methods on
          // those objects
          bike1.cambiarRitmo(50);
          bike1.aumentarVelocidad(10);
          bike1.cambiarEquipo(2);
          bike1.imprimeEstados();

          bike2.cambiarRitmo(50);
          bike2.aumentarVelocidad(10);
          bike2.cambiarEquipo(2);
          bike2.cambiarRitmo(40);
          bike2.aumentarVelocidad(10);
          bike2.cambiarEquipo(3);
          bike2.imprimeEstados();
      }
    }

    El resultado de la prueba imprime el final del ritmo del pedal, la velocidad, y el equipo para las dos bicicletas:

    ritmo:50 velocidad:10 equipo:2
    ritmo:40 velocidad:20 equipo:3

No hay comentarios:

Publicar un comentario en la entrada