martes, 29 de octubre de 2013

Programación Orientada a Objetos: Ejemplo Encapsulación.

En los post anteriores habíamos revisado los 3 grandes paradigmas y bases de la POO: encapsulación, herencia y polimorfísmo.

Ahora continuaremos con un ejemplo, para dejar en claro el mecanismo de encapsulación, que en palabras simples permite ocultar código/estados de un objeto al resto de los objetos (clases).

Pasos:
1.- Con el IDE que trabajen creen un nuevo proyecto java. En eclipse es File --> New --> Java Proyect
luego, creen dos clases, quedando la estructura de la siguiente manera:


















2.-
En la clase Manzana.java, creen dos atributos:
nombre de tipo String
cantidad de tipo in

En la Clase Encapsulacion.java, se crea el método static void main(String [] args), que permite hacer debug en cualquier clase java y dentro del método, se crea un objeto de tipo Manzana, con la sentencia
new y se define el tipo.



3.- Ahora agregaremos los métodos set/get dependiendo de lo que queramos probar en nuestro ejemplo

3.1.- Modificaremos la clase Manzana.java, verificando que todos sus atributos sean private (privados) y creamos sus accesores gets/sets:
 
En este caso, en la clase Encapsulacion.java al crear el objeto man de tipo Manzana, si intentamos ver las opciones del objeto, no podemos ni accesar ni settear un objeto de dicha clase. Está completamente oculto en nuestro ámbito.


3.2.- Segunda prueba, modificaremos la clase Manzana.java, verificando que todos sus atributos sean public (públicos) y creamos sus accesores gets/sets:

En este caso, nos damos cuenta al establecer como públicos los atributos del objeto Manzana, al crear un nuevo objeto en una clase externa, como en Encapsulacion.java se puede acceder a los accesores sin problema, pudiendo settear u obtener cualquier atributo, en cualquier momento durante la ejecución de un programa.


3.3.- Última opción, modificaremos la clase Manzana.java, verificando que todos sus atributos sean private (privados) y creamos sus accesores gets/sets. Sólo debes modificar cualquier gets dejandolo como público:

Al hacer esto, nos damos cuenta que sólo podemos acceder al valor de un atributo del objeto sin modificarlo. Esta es la gran ventaja de la encapsulación, puedes dar "acceso" a los atributos de tus objetos según los permisos que otros objetos merezcan. Es mucho mejor restringir el acceso a todos y brindarlo de a poco que viceversa. Así evitas que "alguien" cambie el valor de un objeto mientras está en ejecución un programa y obtengas un error no manejado.

Eso ha sido todo por hoy, espero haber aclararo las dudas y haber sido lo más claro posible.
Saludos...







lunes, 28 de octubre de 2013

Conceptos básicos de JAVA2: POLIMORFISMO Y HERENCIA.

Continuamos leyendo el libro de JAVA7. El el turno de definir conceptos básicos de JAVA. Antes de construir la casa, debes tener buenos cimientos :)

Primero, definamos que, Java se basa en la programación orientada a objetos (object-oriented programming, OOP)

¿Qué es OPP?
OPP es un enfoque de programación.
Desde un punto de vista general, un programa se puede organizar de dos formas: sobre su código (lo que sucede) o sobre sus datos (lo que se ve afectado). La OOP organiza el programa en torno a los datos y el principio clave es el control del acceso al código por parte de los datos.
Se definen los datos y las rutinas que permiten actuar sobre los mismos. Así, un tipo de datos define el tipo de operaciones que se pueden aplicar sobre los datos.


Rasgos comunes de la programación orientada a objetos (OOP)

1.- Encapsulación. (Pincha sobre el enlace para más información.)


2.- Polimorfismo.
Palabra que tiene su origen en el idioma griego, que significa multiples formas. Un ejemplo sencillo, lo vemos en el volante de un coche, el volante (la interfaz) es el mismo independiente del mecanismo de control empleado. Es decir, funciona igual en todos los coches, por lo tanto si sabes manejar el volante, puedes conducir cualquier coche.
El concepto de polimorfismo suele expresarse como "una interfaz, múltiples métodos". Puedes diseñar una interfaz genérica para un grupo de actividades relacionadas.

3.- Herencia:
En palabras simples, es el proceso mediante el que un objeto puede adquirir las propiedades de otro objeto.
Pasamos a un ejemplo:
    Una manzana reineta es parte de la clasificación manzana, que a su vez forma parte de la clasificación fruta, que depende de la clase alimento. Lo quiere decir que la clase alimento tiene determinadas cualidades que aplican logicamente a su subclase fruta. Ademas de las cualidades "heredadas de su clase padre" (clase desde la cual extiende), define cualidades propias (jugoza, dulce, etc). La clase manzana define las cualidades concretas de una manzana (crece en los árboles, no es tropical). Una manzana reineta hereda todas las cualidades de las clases anteriores y define sus características propias.
    Sin el uso de jerarquías, cada objeto debería explicitamente definir cada una de sus cualidades, incluso, las que se repiten entre objetos u entre clases, que fácilmente podrían ser agrupadas jerarquicamente.
    :) Gracias a la herencia solo debes definir las cualidades que lo hacen único dentro de la clase.





domingo, 27 de octubre de 2013

Conceptos básicos de JAVA: ENCAPSULACIÓN.

Continuamos leyendo el libro de JAVA7. El el turno de definir conceptos básicos de JAVA. Antes de construir la casa, debes tener buenos cimientos :)

Primero, definamos que, Java se basa en la programación orientada a objetos (object-oriented programming, OOP)

¿Qué es OPP?
OPP es un enfoque de programación.
Desde un punto de vista general, un programa se puede organizar de dos formas: sobre su código (lo que sucede) o sobre sus datos (lo que se ve afectado). La OOP organiza el programa en torno a los datos y el principio clave es el control del acceso al código por parte de los datos.
Se definen los datos y las rutinas que permiten actuar sobre los mismos. Así, un tipo de datos define el tipo de operaciones que se pueden aplicar sobre los datos.


Rasgos comunes de la programación orientada a objetos (OOP)

1.- Encapsulación:
Es un mecanismo de programación que combina dos cosas: el código con los datos que manipula, a tiempo que los protegen de interfaces externas. Al vincularlos, tanto el código como los datos, se crea OBJETO.

En un objeto, el codigo y/o los datos pueden ser privados o públicos.
- privados: el código o los datos privados son conocidos y sólo se accede a los mismos desde otra parte del objeto.
- públicos: cuando el código o los datos son públicos, otras partes del programa pueden acceder aunque se definan en un objeto.

*** Por lo general, las partes públicas de un objeto se usan para proporcionar una interfaz controlada a los elementos privados de un objeto.

Definiciones que debes tener siempre claras:
La unidad básica de encapsulación de java es la clase.
Una clase define la forma de un objeto (especificando los datos y el código que actúa sobre ellos).
Java usa una especificacion de clase para crear objetos. Los objetos son instancias de una clase.
El código y los datos que forman una clase se denominan miembros de la misma.
Los datos definidos de la clase se denominan variables miembros o variables de instancia.
El código que actúa sobre los datos se denominan  métodos miembros o métodos.

sábado, 26 de octubre de 2013

Hola, primer post, primeras ideas...
El blog que les presento, es para comentar las experiencias que vaya adquiriendo con el lenguaje JAVA, en particular con el libro JAVA7, adquirido para profundizar en los conocimientos de desarrollador.

Introducción al Libro JAVA7, Herbert Schildt...
La ultima versión oficial de java es java7 y su kit de desarrollo se denomina JDK7. Ésta es la primera vesión de Java desde que "Sun Microsystem" fue adquirido por Oracle (proceso que comenzó en abril del 2009 y finalizó en enero del 2010).

En cuanto al libro, las principales novedades añadidas a JAVA SE 7, aunque son denominadas "menores" por los genios de ORACLE, son:
1.- String puede ahora controlar la instrucción switch.
2.- Literales enteros binarios.
3.- Instrucción try ampliada, denominada try con recursos, que permite la gestión automática de recursos (Por ejemplo, ahora se puede cerrar automaticamente un flujo de datos cuando deje de ser necesario). En lo personal, a primera vista, me parece muy similar a la clausula "finally", mas adelante veremos de qué se trata.
4.- Interfaz de tipos (a través del operador de rombo) al crear una instancia genérica.
5.- Control mejorado de excepciones en el que dos o más excepciones se pueden capturar por una misma instrucción catch (denominada captura múltiple)

Espero aprender y ahondar mucho más en conocimientos...
Comenzamos.