Está en la página 1de 8

Garca Gonzlez Daro Rubn 12590393 ISC grupo A

Constructor
Un constructor es un mtodo especial de una clase que se llama automticamente siempre que se declara un objeto de esa clase. Utilidad: Inicializar el objeto y sirve para asegurarnos que los objetos siempre contengan valores vlidos. El constructor es un tipo especfico de mtodo que siempre tiene el mismo nombre que la clase y se utiliza para construir objetos de esa clase. No tiene tipo de dato especfico de retorno, ni siquiera void. Esto se debe a que el tipo especfico que debe devolver un constructor de clase es el propio tipo de la clase.
Constructor no-args. Si no se especifica un constructor: El compilador genera un constructor predeterminado. Accesibilidad pblica. Mismo nombre que el de la clase. Sin tipo de retorno, ni siquiera null. No espera argumentos.

Inicializa todos los campos en cero, falso o nulo Si una clase no declara ningn constructor, Java incorpora un constructor por defecto (denominado constructor no-args) que no recibe ningn argumento y no hace nada. Si se declara algn constructor, entonces ya no se puede usar el constructor noargs. Es necesario usar el constructor declarado en la clase. El constructor no-args sera: class Punto { int x , y ; Punto ( ) { } }

El constructor se invoca automticamente cuando new crea un objeto de esa clase. Caractersticas: Se llama igual que la clase. No devuelve ningn valor.

Garca Gonzlez Daro Rubn 12590393 ISC grupo A

Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones. De entre los que existan, tan slo uno se ejecutar al crear un objeto de la clase. Dentro del cdigo de un constructor generalmente suele existir inicializaciones de variables y objetos, para conseguir que el objeto sea creado con dichos valores iniciales. Que podemos modificar la accesibilidad de un constructor. Constructores privados: Se utilizan para evitar que los objetos se creen a partir de una clase especfica, imaginemos que desea crear una clase que provea cierta funcionalidad, pero no desea que los usuarios de esa clase puedan crear objetos con base en ella, bueno en este caso ponemos mtodos y variables estticas dentro de la clase, en este caso ya no es necesario crear instancias de la clase (objetos), sin embargo el constructor predeterminado es public por predeterminacin, lo cual implica que SI se pueden crear instancias de esa clase, aunque dichos objetos no tendrn ningn sentido ya que la clase est compuesta nicamente de mtodos y variables estticas, para evitar esto basta con modificar la accesibilidad del constructor hacindolo private impidiendo que se creen instancias de la clase. Al declarar un constructor C# no generar ningn constructor y al hacerlo privado evita que se creen instancias de esa clase. Constructores estticos: Se emplean para asegurarse de que una clase siempre es inicializada antes de utilizarse, esto nos asegura que la clase se encuentra en un estado inicial bien definido antes de utilizarse. Declaracin (Sintaxis)

public MismoNombreQueLaClase (tipo parmetro1, tipo parmetro2 , tipo parmetro n ) { campo1 = valor o parmetro; campo2 = valor o parmetro; . . . campo n = valor o parmetro; }

Garca Gonzlez Daro Rubn 12590393 ISC grupo A

Los constructores tienen el mismo nombre que la clase en la que son definidos y nunca tienen tipo de retorno, ni especificado ni void. Tenemos aqu un aspecto que nos permite diferenciar constructores de mtodos: un constructor nunca tiene tipo de retorno mientras que un mtodo siempre lo tiene. Es recomendable que en un constructor se inicialicen todos los atributos de la clase aunque su valor vaya a ser nulo o vaco. Si un atributo se quiere inicializar a cero (valores numricos) siempre lo declararemos especficamente: nombreAtributo = 0;. Si un atributo se quiere inicializar a contenido nulo (atributos que son objetos) siempre lo declararemos especficamente: nombreAtributo = null;. Si un atributo tipo texto se quiere inicializar vaco siempre lo declararemos especficamente: nombreAtributo = ;. El motivo para actuar de esta manera es que declarando los atributos como nulos o vacos, dejamos claro que esa es nuestra decisin como programadores. Si dejamos de incluir uno o varios campos en el constructor puede quedar la duda de si hemos olvidado inicializar ese campo o inducir a pensar que trabajamos con malas prcticas de programacin. Ejemplo: public class Taxi { //El nombre de la clase

String ciudad; //Ciudad de cada objeto taxi String matricula; //Matrcula de cada objeto taxi String distrito; //Distrito asignado a cada objeto taxi int tipoMotor; //Tipo de motor asignado a cada objeto taxi. 0 = desconocido, 1 = gasolina, 2 = diesel

//Constructor: cuando se cree un objeto taxi se ejecutar el cdigo que incluyamos en el constructor public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) { ciudad = "Mxico D.F."; matricula = valorMatricula; distrito = valorDistrito; tipoMotor = valorTipoMotor; } //Cierre del constructor

//Mtodo para obtener la matrcula del objeto taxi

Garca Gonzlez Daro Rubn 12590393 ISC grupo A

public String getMatricula () { return matricula; } //Cierre del mtodo

//Mtodo para obtener el distrito del objeto taxi public String getDistrito () { return distrito; } //Cierre del mtodo

//Mtodo para obtener el tipo de motor del objeto taxi public int getTipoMotor () { return tipoMotor; } //Cierre del mtodo

} //Cierre de la clase

Un constructor sirve para crear un objeto a partir de la clase

Existen tres tipos de constructores: Constructor por defecto Si no se define ningn constructor de una clase, el compilador generar un constructor por defecto. El constructor por defecto no tiene argumentos y simplemente sita ceros en cada byte de las variables instancia de un objeto. Si se definen constructores para una clase, el constructor por defecto no se genera. Constructor de copia El constructor de copia se utiliza para inicializar un objeto con otro objeto de la misma clase. Constructor comn El constructor comn es aquel que recibe parmetros para asignarles como valores inciales a los datos miembros, o sea que al crear la instancia, se pas unos parmetros para inicializar

Destructor
Un destructor es un mtodo cuyo objetivo es el de eliminar toda la memoria que ocup un objeto. En java no es necesaria la definicin de destructores, pues el mismo lenguaje se encarga de la eliminacin y liberacin de la memoria ocupada por un objeto, esto se realiza cada vez que un objeto pierde todas sus referencias.

Garca Gonzlez Daro Rubn 12590393 ISC grupo A

Existen dos tipos de destructores Pueden ser pblicos o privados, segn si se declaran: Si es pblico se llama desde cualquier parte del programa para destruir el objeto. Si es privado no se permite la destruccin del objeto por el usuario.

La sobrecarga de mtodos
En qu consiste? La creacin de varios mtodos con el mismo nombre pero con diferentes firmas y definiciones. Java utiliza el nmero y tipo de argumentos para seleccionar cul definicin de mtodo ejecutar. Para qu sirve? Java diferencia los mtodos sobrecargados con base en el nmero y tipo de argumentos que tiene el mtodo y no por el tipo que devuelve. Un mtodo sobrecargado se utiliza para reutilizar el nombre de un mtodo pero con diferentes argumentos (opcionalmente un tipo diferente de retorno). Las reglas para sobrecargar un mtodo son las siguientes:

Los mtodos sobrecargados deben de cambiar la lista de argumentos. Pueden cambiar el tipo de retorno. Pueden cambiar el modificador de acceso. Pueden declarar nuevas o ms amplias excepciones. Un mtodo puede ser sobrecargado en la misma clase o en una subclase. Ejemplo mtodo que se desea sobrecargar:

public void cambiarTamano(int tamano, String nombre, float patron){ } Los siguientes mtodos son sobrecargas legales del mtodo cambiarTamano(): public void cambiarTamano(int tamano, String nombre){} public int cambiarTamano(int tamano, float patron){} public void cambiarTamano(float patron, String nombre) throws IOException{}

Sobrecarga de operadores

Garca Gonzlez Daro Rubn 12590393 ISC grupo A

La sobrecarga de operadores es uno de los mecanismos que nos permite ampliar las capacidades de los lenguajes de programacin orientados a objetos. En C++, la declaracin y definicin de una sobrecarga de operador es muy similar a la declaracin y definicin de una funcin cualquiera. El ejemplo ms sencillo de una sobrecarga de operadores nos lo da el lenguaje mismo, es decir, en una operacin aritmtica (por ejemplo, una suma ) el compilador determina el tipo de operacin requerida de acuerdo con el tipo de datos involucrados. Vamos a suponer que se tienen las variables: int A, B; double X, Y; int R; y las siguientes instrucciones: R = A + B; R = A + X; R = X + Y; Ahora bien: en el primer caso el compilador determina que el tipo de operacin requerida es una suma de enteros debido a que los dos miembros ( A y B ) de la suma son del tipo entero. en el segundo caso parece ser que las cosas no son tan claras, ya que en este los miembros involucrados en la suma son de tipos diferentes, sin embargo el compilador determinar el tipo de operacin requerida y depositar en el resultado ( R )el valor resultante redondeado. en el tercero y ltimo de los casos el compilador determina que el tipo de operacin requerida es una suma de reales debido a que los dos miembros ( X e Y ) de la suma son del tipo double. Tambin en este caso el resultado de la suma se redondea antes de ponerlo en R. En qu consiste? Redefinir ciertos operadores, como "+" y "-", para usarlos con las clases que hemos definido. Se llama sobrecarga de operadores porque estamos reutilizando el mismo operador con un nmero de usos diferentes, y el compilador decide cmo usar ese operador dependiendo sobre qu opera. La sobrecarga de operadores slo se puede utilizar con clases, no se pueden redefinir los operadores para los tipos simples predefinidos. Los operadores lgicos && y || pueden ser sobrecargados para las clases definidas por el programador, pero no funcionarn como operadores de short circuit. Todos los miembros de la construccin lgica sern evaluados sin ningn problema en lo que se refiere a la salida. Naturalmente los operadores lgicos predefinidos continuarn siendo operadores de short circuit como era de esperar, pero no los sobrecargados. Para qu sirve? Cara concadenar datos ejemplos: "+" y "-". Los operadores de java son muy parecidos en estilo y funcionamiento a los de C. Tanto c, como c++, como java, proporcionan un conjunto de operadores para poder realizar acciones sobre uno o dos operando. Un operador que acta sobre

Garca Gonzlez Daro Rubn 12590393 ISC grupo A

un solo operando es un operador unario, y un operador que acta sobre dos operando es un operador binario. Por qu java no soporta el sobre carga de operadores? Java no soporta Sobrecarga de operadores, aunque el sistema internamente la utiliza, pero est ocultada al programador, por ejemplo al hacer un Int ejemplo=2+1; En java eso es vlido y le asigna un 3 a la variable ejemplo la funcionalidad fue sumar, sin embargo en este: String ejemplo="hola"+"mundo"; El operador + se utiliza con otra finalidad: Concatenar, Java si usa la sobrecarga de operadores, pero esta oculta para el programador, sea no te permite usarla. Porque? Bsicamente para no llevar a confusin , imagina que defines una clase llamada "sobrescribe" en la cual sobrecargaras el operador suma y le asignaras tu propia forma de trabajar por ejemplo sumar fracciones y ms tarde defines la clase "fracciones" heredando la clase "sobrescribe" el resultado sera que en la clase "fracciones" el operador suma cambiara su comportamiento. Si llegase ahora un programador externo y revisara la clase fracciones podra confundirse y creer que este operador mantiene el comportamiento normal, para saber que tiene el comportamiento actual tendra que ir a revisar "sobrescribe", ahora imagina que esta herencia se realiza entre varias clases, sera muy difcil saber si realmente se est cambiando el comportamiento del operador suma o no. Esta es una de las razones ms fuertes por las cuales Java no soporta la sobrecarga de operadores bsicamente para no llevar a confusin y al fin y al cabo no es necesaria, puedes utilizar tus propios mtodos.

Garca Gonzlez Daro Rubn 12590393 ISC grupo A

Bibliografa
C/C++ CMO PROGRAMAR Y JAVA AUTOR/ES: Deitel, Harvey M. AO: 2004

JAVA PARA ESTUDIANTES AUTOR/ES: Bell, Douglas ; Parr, Mike AO: 2003

A DISCIPLINE OF JAVA PROGRAMMING (PDF) AUTOR/ES: SIMONE SANTINI - Publi. Universi. Autnoma Madrid