Sie sind auf Seite 1von 10

Unidad II.

Clases y Objetos

Programacin Orientada a Objetos

II. Clases y Objetos.


2.1 Declaracin de Clases
La declaracin de una clase consta de dos partes claramente diferenciadas: cabecera y cuerpo.
La cabecera nos dar cuenta de los distintos aspectos que debern ser tenidos en cuenta para el manejo de
esta clase, mientras que el cuerpo de la clase se reserva para la declaracin de los atributos y mtodos que
sern capaces de ejecutar los objetos generados a partir de esa clase.
Clase
{
Atributos
Mtodos
}

Cabecera
Cuerpo de clase

La sintaxis general de la declaracin de una clase es la siguiente:


[modificador] class NombreClase [extends NombreSuperclase][implements listaDeInterfaces]
{
}
Todo lo que en la sintaxis de la declaracin se ha especificado dentro de corchetes, es opcional. Por lo tanto
la declaracin mnima para una clase es :
class NombreClase
{
}
Los atributos de una clase sirven para almacenar datos de los objetos que se instancian a partir de esa clase.
La sintaxis general es la siguiente:
[ModificadorDeAtributo] tipo nombreAtributo;
Modificadores de atributo: Un atributo puede tener ms de un modificador y en caso de ser as, estos se
especificarn uno detrs de otro, separados mediante un espacio en blanco.
static : Los Atributos pueden ser de instancia/objeto o de clase. Los atributos de objeto son
variables u objetos que almacenan valores distintos para objetos instanciados a partir de esa clase. Los
atributos de clase son variables u objetos que almacenan el mismo valor para todos los objetos instanciados
a partir de esa clase. Estos de definen con la palabra static.
final: La palabra reservada final, calificando a un atributo o variable sirve para declarar
constantes. Si adems es static, se puede acceder a dicha constante simplemente anteponiendo el nombre
de la clase, sin necesidad de instanciar la clase creando un objeto de la misma.
El valor de un atributo final debe ser asignado en la declaracin del mismo.
Ejemplo:
class Circulo
{
static final double PI=3.14159265;
1
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

private double radio;


/* Declaracin de Mtodo*/
}

2.2 Instanciacin de una clase


Un objeto es una instancia de una clase, por lo que los trminos objeto o instancia, son indistintos. Un
objeto se declara al definir su tipo de dato (Clase) y se crea o instancia, al reservar su espacio en memoria
(new).
Declaracin de objeto:

Nombre_de_clase Nombre_de_objeto;

Creacin de objeto:

Nombre_de_objeto = new Nombre_de_clase();

Declaracin y Creacin: Nombre_de_clase Nombre_de_objeto = new Nombre_de_clase();

2.3 Referencia al Objeto actual o Auto referencia this


Para que un mtodo conozca la identidad del objeto particular para el que ha sido invocado Java
proporciona una referencia al objeto denominada this. La referencia al objeto puede ser explcita o implcita.

Referencia al objeto con this de manera implcita


public void asigna (int valor)
{
v=valor;
}

Referencia al objeto con this de forma explcita


public void asigna (int valor)
{
this.v=valor;
}
Un uso comn de this es cuando se usa el mismo nombre para un atributo y un parmetro, como ejemplo:
public void asigna (int v)
{
this.v=v;
}

2.4 Mtodos
Los mtodos son funciones que determinan el comportamiento de los objetos. Se declaran y definen dentro
de una clase por lo que cualquier objeto de esa clase tendr disponibles a esos mtodos.
Los mtodos se pueden clasificar en tres grupos:

2
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

a) Mtodos de consulta: Sirven para extraer informacin de los objetos.


b) Mtodos modificadores: Sirven para cambiar uno o varios valores de los atributos de los objetos.
c) Mtodos de clculo: Son los que manipulan los atributos de los objetos.

Definicin y declaracin de mtodos


Un mtodo est compuesto por dos partes que forman su definicin; la cabecera y el cuerpo.
Sintaxis de definicin:
// Cabecera
Modificador_de_Acceso tipo_de_dato nombre _mtodo (lista de parmetros) Excepciones
{
//Cuerpo del mtodo
Sentencias;
}
La cabecera est definida por:
1) Modificador de acceso al mtodo.
2) Tipo de dato del valor de retorno, cuando el mtodo regresa un resultado, dentro de su cuerpo se
ocupa la palabra reservada return seguida del valor a devolver, siendo esta la ltima sentencia en
ejecutarse en el mtodo, si el mtodo no requiere devolver un resultado se ocupa la palabra
reservada void.
3) Nombre del mtodo, es el identificador que se invocar y se recomienda que sea descriptivo.
4) Parmetros formales: Son los valores que el mtodo recibe del exterior y que requiere para su
funcin, cada uno precedido de su tipo de dato, se escriben entre parntesis.
5) Excepciones: Si el mtodo puede lanzar excepciones se indica al final de la cabecera.
El cuerpo del mtodo se encuentra encerrado entre llaves y contiene el grupo de sentencias que indican su
funcionamiento.
Ejemplo de definicin de mtodo:
o

Sin acceso definido, con retorno de resultado y lista de parmetros:


int sumar (int a, int b)
{
return a+b;
}

Con acceso pblico, sin retorno y sin parmetros


public void sumar ()
{
c=a+b; /* En este caso las variables estn declaradas como atributos
}

Llamada a un mtodo (Mensaje)

3
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

La llamada o la invocacin a un mtodo son conocidas como mensaje. El Mensaje es la forma en que un
programa se comunica con un objeto, ejecutando un mtodo especfico. Existen 3 tipos de mecanismos para
enviar mensajes:
1) Fuera de la clase donde se define el mtodo por medio de un mensaje compuesto por el objeto, el
mtodo y los parmetros actuales o argumentos.
Sintaxis:
Ejemplos:

Objeto.Mtodo(Argumentos)
obj_persona.leer()
ob.sumar(a,b)

2) Si es un mtodo esttico o de clase la llamada indica el nombre de la clase del mtodo y los
argumentos.
Sintaxis:
Ejemplo:

NombreClase.Mtodo(Argumentos)
persona.metodo_esttico()

3) Cuando el mtodo es utilizado en la misma clase que lo define, slo se escribe el nombre del
mtodo.
Ejemplo:

public void desplegar()


{
leer();
}

Atributos y Mtodos de tipo static


Un atributo o mtodo definido como static no es atributo o mtodo de un objeto, sino que es un miembro
de la clase, es decir en el caso del atributo, si existen objetos creados solo hay una copia que comparten
todos los objetos de la clase. Un atributo o mtodo static existe y puede ser utilizado aunque no exista
ningn objeto de la clase.

Modificadores de Acceso
Para controlar el acceso a los miembros de una clase, Java provee las palabras reservadas private, protected,
public, aunque tambin se pueden omitir convirtiendo el acceso en predeterminado o de paquete.
Los modificadores de acceso son utilizados para indicar el tipo de acceso permitido a cada miembro de la
clase, es decir el mbito desde el cual se podr acceder a l. Los modificadores son los siguientes:
o

Acceso Predeterminado (de paquete).- Cuando no se especifica ningn tipo de modificador de


acceso, el miembro de la clase puede ser accedido por cualquier clase que pertenezca al mismo
paquete, ninguna otra clase o subclase, fuera de ese paquete tendr acceso a los miembros.

Acceso pblico (public).- Un miembro declarado public, esta accesible para cualquier otra clase o
subclase que necesita utilizarlo. La interfaz de una clase est formada por todos los miembros
pblicos de la misma. Los atributos static generalmente son declarados pblicos.

4
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

Acceso Privado (private).- Un miembro declarado private es accesible solamente por los mtodos
de su propia clase. Esto significa que no puede ser accedido por los mtodos de cualquier otra clase,
ni por subclases.

Acceso Protegido (protected).- El modificador protected permite que la propia clase, las subclases y
las clases del mismo paquete accedan a los miembros.

Modificador

Clase

Predeterminado
Public

*
*

Prvate
Protected

Mtodo

Atributo

*
*
*
*

*
*
*
*

Descripcin
Visibles en todo paquete.
Visibles en todos los paquetes.
Visibles en la propia clase.
Visibles en el paquete y en subclases
de esta clase en otro paquete.

Paso de parmetros y Devolucin de valores desde mtodos


Un mtodo puede devolver un resultado al mbito donde fue llamado si as es necesario. Para hacerlo se
ocupa la palabra reservada return seguida del valor a regresar. El tipo de dato de ese valor debe coincidir
con el tipo indicado en la cabecera del mtodo.
Ejemplo:

public float suma( float x, int y)


{
float z= x+y;
return z;
}
La llamada ser:
Int A, B; float res;
A=5; B=10;
res = Ob.suma (A, B);

La cabecera de un mtodo especifica el nmero y tipo de los parmetros requeridos, existen dos formas de
pasar parmetros desde el mensaje, por valor y por referencia.

Parmetros por valor


Todos los tipos de datos primitivos se pasan a los mtodos por valor, es decir sus valores se copian a nuevas
posiciones de memoria, por lo que si un argumento se cambia dentro del mtodo, ste no cambiar en el
mbito donde fue llamado.
Ejemplo: // En la clase

// En la llamada
5

Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

public int suma (int A, int B)


{
A= A+B;
return A;
}

int A=10;
int B=20;
C=ob.suma(A,B);

Aunque en el mtodo cambi el valor de A con el resultado de 10 +20, en el mbito de la llamada A sigue
teniendo el valor de 10.

Paso de parmetros por referencia


Todos los objetos incluyendo a los arreglos se llaman tipos referencia. El paso de un objeto significa que la
referencia de ste es decir su direccin de memoria se pasa a un parmetro. Por lo tanto cualquier cambio
al objeto local que suceda dentro del mtodo afectar al objeto original.
Ejemplo:

public void suma(circulo ob)


{
ob.radio=ob.radio+radio;

}
La llamada CIRCULO1.suma (CIRCULO2) causar que el radio del objeto CIRCULO2, se modifique con la
suma del radio del objeto CIRCULO1.

2.5 Constructores y Destructores


Un constructor es un tipo especial de mtodo que inicializa el objeto con valores definidos. El constructor es
llamado automticamente siempre que se crea un objeto. Cuando se crea un objeto sucede lo siguiente:
a) Se asigna memoria para el objeto por medio del operador new.
b) Se inicializan los atributos del objeto con los valores predeterminados por el sistema, los atributos
numricos con ceros y los alfanumricos y las referencias con nulos.
c) Se llama al constructor de la clase que puede ser uno entre varios y se encarga de inicializar los
atributos con los valores indicados en este.
As como existe un mtodo que se ejecuta automticamente cada vez que se construye un objeto, existe un
mtodo que se invoca automticamente cada vez que se destruye. Este mtodo recibe el nombre genrico
de destructor y en java corresponde al mtodo finalize().
Cuando un objeto es destruido ocurren varias cosas:
a) Se llama al mtodo finalize.
b) El recolector de basura de java se encarga de eliminar al objeto, lo que conlleva a:
c) Que se liberen los recursos que el objeto tuviera adjudicados (su espacio en memoria).
Un objeto es destruido automticamente cuando se eliminan todas las referencias al mismo. Una referencia
a un objeto puede ser eliminada:
1) Porque el flujo de la ejecucin salga fuera del mbito donde la referencia fue declarada
2) Porque de manera explcita se le asigne a la referencia un valor nulo.

6
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

Declaracin de mtodos Constructor y Destructor


El constructor es un mtodo de acceso pblico, que no tiene valor de retorno y que lleva el mismo nombre
de la clase, seguido de la lista de parmetros si son requeridos. Su declaracin tiene la siguiente sintaxis.
Declaracin de un constructor:
public nombre_clase(Parmetros)
{
sentencias
}
Ejemplo:
public circulo()
{
Radio = 10
}
Un destructor se ejecuta antes de que un objeto sea eliminado fsicamente de la memoria. Si una clase no
proporciona la definicin de un destructor el compilador proporciona uno a travs de la clase object con la
siguiente sintaxis:
protected void finalize()throws Throwable
{
//Sin cdigo.
}

Si se desea declarar un destructor en una clase se reescribe el mtodo anterior. En una clase solo se puede
definir un mtodo destructor a diferencia del constructor para el que puede haber varias definiciones.
Para forzar la completa recoleccin de basura se llama al mtodo gc (garbaje collector) de la clase system,
escribiendo el siguiente segmento de codigo:
Ob_A=null
Runtime runtime=Runtime.getruntime():
runtime.gc();
runtime.runFinalization();

Tipos de constructores
Existen diversos tipos de constructores entre los que se distinguen:
a) Constructores por omisin o por defecto: Es un constructor sin parmetros que inicializa los
atributos del objeto con los valores predeterminados del sistema (ceros y nulos). Si una clase no
especifica ningn constructor el compilador agrega automticamente un constructor por defecto.
Ejemplo:
public circulo ()
{
radio=0;
}
7
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

b) Constructor por parmetros: Este requiere del paso de un argumento que ser utilizado para
inicializar los atributos del objeto. Puede existir ms de un constructor con paso de parmetros
siempre y cuando sean diferentes en el tipo o la cantidad de parmetros utilizados.
Ejemplo:
public arreglo (int L)
{
A=new int[L]
}
La ejecucin del constructor es cuando se crea el objeto:
arreglo ARREGLO1 = new arreglo(10);
c) Constructor por copia: Es el que asigna otro objeto de su misma clase en el momento de la creacin.
Acepta como argumento una referencia al objeto que se va a copiar para despus asignar elemento
por elemento al objeto construido.
Ejemplo:
public fecha (fecha Ob)
{
This.d=Ob.d;
This.m=Ob.m;
This.a=Ob.a;
}
La ejecucin del constructor es:
fecha FECHA2=new fecha(FECHA1);
Con lo que se crea una copia del objeto FECHA1, en el objeto FECHA2.

2.6 Sobrecarga de Mtodos


La sobrecarga es la caracterstica de permitir que existan varios mtodos con el mismo nombre, pero con
diferente cantidad y tipo de parmetros.
La funcin de la sobrecarga es la de eliminar la necesidad de definir mtodos deferentes que en esencia
hacen lo mismo. La definicin de varios constructores es un ejemplo de Sobrecarga.
Ejemplo. Escribir la clase Fecha, con dia, mes y ao como atributos con un mtodo sobrecargado para la
asignacin de datos.
class fecha
{
int dd, mm, aa;
public fecha() {
//Constructor por defecto
dd=0;
mm=0;
aa=0;
}
public void setFecha(int dd,int mm,int aa) {
8
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

// metodo sobrecargado
this.dd=dd;
this.mm=mm;
this.aa=aa;
}
public void setFecha(int dd,int mm) {
//metodo sobrecargado
this.dd=dd;
this.mm=mm;
}
.
.
.
}

La forma en que se invoque el mtodo indica cual se ejecutar, los llamados pueden ser de la manera
siguiente:
int di=9, me=6, an=2006;
fecha ob1=new fecha();
fecha ob2=new fecha();
ob1.setFecha(di,me,an);
ob2.setFecha(di,me);

2.7 Sobrecarga de Operadores


El trmino operador sobrecargado se refiere a un operador que es capaz de desarrollar su funcin en varios
contextos sin necesidad de otras operaciones adicionales.
La sobrecarga de operadores permite dar un nuevo significado al smbolo de un operador.
En algunos lenguajes existen formas para la sobre carga de operadores.
El lenguaje Java, a diferencia de C++, no soporta la sobrecarga de operadores, esto significa que no es
posible predefinir el entorno en el que acta un operador con respecto a los objetos de un tipo que el
programador haya definido como propio.
Sin embargo, Java sobrecarga internamente el operador +, ya que se puede utilizar para realizar una suma
aritmtica, o para concatenar (juntar) elementos, es decir, su funcin depende del entorno exterior.
Ejemplo de la Sobrecarga de operador ++ en lenguaje c++, que define un mtodo llamado operator,
seguido del smbolo del operador a sobrecargar:
class coordenada
{
int x,y;
void operator ++()
9
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad II. Clases y Objetos

Programacin Orientada a Objetos

{
x++;
y++;
}

}
El objeto se puede incrementar ahora de la siguiente forma:
ob1++;
Ejemplo de la Sobrecarga interna en Java:
A=B+C;
System.out.println( El resultado es + A);

10
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Das könnte Ihnen auch gefallen