martes, 24 de marzo de 2015

Separación de los momentos de instanciación y uso de objetos

En la programación orientada a objetos, los objetos son los agentes y también el universo de un programa, igualmente se debe prestar atención a la estructura de los datos. Cuando se diseña una clase, se piensa en los objetos que serán creados por esa clase es decir en las cosas que podrán hacer ese objeto, y las características que lo definen. Una clase es como la definición de un objeto, pero no es el objeto en sí, del modo como una idea no es una cosa física, si imaginamos una silla, para sentarnos necesitaremos convertir esa idea en algo, en un objeto real; a ese objeto lo llamamos instancia. 

El estilo de programación funcional que se usa por ejemplo en el lenguaje C es usado para programar. En este tipo de programación, hay que centrarse en los pasos para realizar la tarea, y debemos olvidar de cómo se manejan los datos. 
A continuación se estará tratando como es la creación y uso de objetos en java, así como también las definiciones de diversos conceptos como constructores y programas que especifican cada una de sus clasificaciones.

1.1 Objeto

Un objeto es un contenedor de datos, que a su vez controla el acceso a dichos datos. Asociados a los objetos está una serie de variables que lo definen estas variable son sus atributos. Por otra parte un conjunto de funciones que crean un interfaz para interactuar con el objeto son el método. Si dice que Un objeto es una combinación de estado y de métodos que cambian ese estado.

1.1.1 Instancia de una clase

Unidad atómica que encapsula estado y comportamiento.
Es de resaltar lo siguiente:
-Un objeto puede caracterizar una entidad física (un teléfono, un interruptor, un cliente) o una entidad abstracta (un número, una fecha, una ecuación matemática).
-Todos los objetos son instancias de una clase esto quiere decir que los objetos se crean por instanciación de las clases.
-Todos los objetos de una misma clase (p.ej. coches) comparten ciertas características: sus atributos (tamaño, peso, color, potencia del motor…) y el comportamiento que exhiben (aceleran, frenan, curvan…).
-Todo objeto tiene: Identidad (puede distinguirse de otros objetos), Estado (datos asociados a él), Comportamiento (puede hacer cosas).
Las diferentes instancias de cada clase difieren entre sí por los valores de los datos que encapsulan (sus atributos). Dos objetos con los mismos valores en sus atributos pueden ser diferentes. Todos los objetos de una misma clase usan el mismo algoritmo como respuesta a mensajes similares. El algoritmo empleado como respuesta a un mensaje (esto es, el método invocado) viene determinado por la clase del receptor. Una clase es una descripción de un conjunto de objetos similares. Al programar, definimos una clase para especificar cómo se comportan y mantienen su estado los objetos de esa clase. A partir de la definición de la clase, se crean tantos objetos de esa clase como nos haga falta.

1.2 Clase

Una clase es usada para construir un objeto. Una clase es como un molde para objetos. Y un objeto, una instancia de la clase. Por ejemplo, se puede usar la clase Button para hacer docenas de botones, cada botón con su propio color, tamaño, forma.

1.3 Creación de objetos

Antes de poder usar un objeto hemos de crearlo
Ejemplo:
A)    El operador new nos permite crear objetos en java.
Tipo identificador = new Tipo () ;
Si escribimos un programa como el siguente:
Public class Ingreso
{
Public static void main (String args []  )
{
Cuenta cuenta;   //Error
Cuenta.ingresar (100.00);   }    }
El compilador nos da el siguiente error:
Ingreso.java:7:
Variable cuenta might not have been initializaed
Cuenta.ingresar(100.00) ;
            Hemos declarado una variable que, inicialmente, no tiene ningún valor. Antes de utilizarla, deberíamos haberla inicializado (con un objeto del tipo adecuado): 
  Cuenta cuenta = new Cuenta ().
            Observaciones: Se suele crear una clase aparte, que únicamente contenga un método main, como punto de entrada de la aplicación. En la implementación del método main se crean los objetos que sean necesarios y se les envían mensajes para indicarles lo que deseamos que hagan

1.3.1 Constructores

            Cuando utilizamos el operador new acompañado del nombre de una clase, se crea un objeto del tipo especificado (una instancia de la clase cuyo nombre aparece al lado de new). Al crear un objeto de una clase concreta, se invoca a un método especial de esa clase, denominado constructor, que es el que se encarga de inicializar el estado del objeto.

  •    Constructor por defecto

            Por defecto, Java crea automáticamente un constructor sin parámetros para cualquier clase que definamos.
 public class Cuenta
{
 // Constante
 public static final double LIMITE_NORMAL = 300.00;
// Variables de instancia
 private double balance = 0;
private double limit = LIMITE_NORMAL;
// Métodos  ... }
            Al crear un objeto de tipo Cuenta con new Cuenta (), se llama al constructor por defecto de la clase Cuenta, con lo cual se crea un objeto de tipo Cuenta cuyo estado inicial será el indicado en la inicialización de las variables de instancia balance y limit.

  •    Constructores definidos por el usuario

            Los lenguajes de programación nos permiten definir constructores para especificar cómo ha de inicializarse un objeto al crearlo. El nombre del constructor ha de coincidir con el nombre de la clase.
            Podemos definir un constructor para inicializar las variables de instancia de una clase, en vez de hacerlo en la propia declaración de las variables de instancia:
public class Cuenta
 {
 // Constante public static final double LIMITE_NORMAL = 300.00;
// Variables de instancia
private double balance;
private double limit;
// Constructor sin parámetros public Cuenta ()
 {
this.balance = 0;
this.limit = LIMITE_NORMAL;
}
// Métodos  ...  }
La palabra reservada this hace referencia al objeto que realiza la operación cuya implementación especifica el método.


  • Constructores con parámetros:


public class Cuenta
 {
// Constante public static final double LIMITE_NORMAL = 300.00;
// Variables de instancia private double balance; private double limit;
// Constructor con parámetros public Cuenta (double limit)
{
 this.balance = 0; this.limit = limit;
 }
 // Métodos  ... }
            Ahora, para crear un objeto de tipo Cuenta, hemos de especificar los parámetros adecuados para su constructor:
Cuenta cuenta = new Cuenta(Cuenta.LIMITE_NORMAL);                            O bien
Cuenta cuentaVIP = new Cuenta(6000.00);
La cuenta VIP tendrá un límite de 6000 e en vez del limite normal.
            En cuanto definimos un constructor, ya no podemos utilizar el constructor por defecto de la clase (el constructor sin parámetros que Java crea automáticamente si no especificamos ninguno)
Si sólo está definido el constructor anterior
public Cuenta (double limit)
al crear un objeto con
Cuenta cuenta = new Cuenta();
el compilador de Java nos da el siguiente error:
CuentaTest.java:5: cannot find symbol
 symbol : constructor Cuenta()
location: class Cuenta
Cuenta cuenta = new Cuenta();
^
 1 error porque no existe ningún constructor sin parámetros definido para la clase Cuenta.
            Para facilitarnos la creación de objetos, Java nos permite definir varios constructores para una misma clase (siempre y cuando tengan parámetros diferentes). De forma que podemos incluir los dos constructores en la implementación de la clase Cuenta y escribir lo siguiente:
public class CuentaTest
{
public static void main (String args[])
{
Cuenta cuentaNormal = new Cuenta(); Cuenta cuentaVIP = new Cuenta(6000.00); … } }

1.4 Uso de objetos

El operador.  (punto) en Java nos permite acceder a los distintos miembros de una clase: objeto.miembro. Cuando tenemos un objeto de un tipo determinado y queremos acceder a uno de sus miembros sólo tenemos que poner el identificador asociado al objeto (esto es, el identificador de una de las variables de nuestro programa) seguido por un punto y por el identificador que hace referencia a un miembro concreto de la clase a la que pertenece el objeto.
 ¿Cómo se comprueba el estado de un objeto? Accediendo a las variables de instancia del objeto objeto.atributo
Por ejemplo, cuenta.balance nos permitiría acceder al valor numérico correspondiente al saldo de una cuenta, siempre y cuando cuenta fuese una instancia de la clase Cuenta.
¿Cómo se le envía un mensaje a un objeto? Invocando a uno de sus métodos. objeto.método (lista de parámetros) La llamada al método hace que el objeto realice la tarea especificada en la implementación del método, tal como esté definida en la definición de la clase a la que pertenece el objeto.

Ejemplos

       cuenta.ingresar(150.00);

- Si cuenta es el identificador asociado a una variable de tipo Cuenta, se invoca al método ingresar definido en la clase Cuenta para depositar una cantidad de dinero en la cuenta.
- La implementación del método ingresar se encarga de actualizar el saldo de la cuenta, sin que nosotros nos tengamos que preocupar de cómo se realiza esta operación.

       System.out.println(“Mensaje”);

 - System es el nombre de una clase incluida en la biblioteca de clases estándar de Java.
 - System.out es un miembro de la clase System que hace referencia al objeto que representa la salida estándar de una aplicación Java.
 - println() es un método definido en la clase a la que pertenece el objeto System.out.
 - La implementación del método println() se encarga de mostrar el mensaje que le pasamos como parámetro y hace avanzar el cursor hasta la siguiente línea (como si pulsásemos la tecla ).
 - System.out.println() es una llamada a un método, el método println() del objeto System.out

- La línea completa forma una sentencia (terminada con un punto y coma) que delega en el método println() para que éste se encargue de mostrar una línea en pantalla.

Conclusión


La programación Orientada a Objetos es una metodología que basa la estructura de los programas en torno a los objetos. 
 Los lenguajes de POO ofrecen medios y herramientas para describir los objetos manipulados por un programa. Más que describir cada objeto individualmente, estos lenguajes proveen una construcción (Clase) que describe a un conjunto de objetos que poseen las mismas propiedades 
Todo objeto tiene Identidad puede distinguirse de otros objetos tiene estado que son los datos asociados a él y además lleva un  Comportamiento donde puede hacer cosas. 
Antes de poder usar un objeto debemos de crearlo y cuando se crea un objeto de una clase concreta, se invoca a un método especial de esa clase, denominado constructor, que es el que se encarga de inicializar el estado del objeto. 
La tarea de crear nuevos objetos sólo la puede hacer la clase; los objetos no pueden crearse a sí mismos. 
Se puede comprobar el estado de un objeto accediendo a las variables de instancia del objeto objeto.atributo 
Al programar, definimos una clase para especificar cómo se comportan y mantienen su estado los objetos de esa clase. 

REFERENCIAS BIBLIOGRÁFICAS 

Documento en línea. Disponible en: http://rubytutorial.wikidot.com/clases-objetos 
Documento en línea. Disponible en: file:///C:/Users/marycarmen/Desktop/3B-Clases.pdf 






0 comentarios:

Publicar un comentario