Documentos de Académico
Documentos de Profesional
Documentos de Cultura
~1~
La lista de argumentos es opcional, tanto en Java como en C++, y en los dos casos puede limitarse a su mnima
expresin consistente en dos parntesis, sin parmetro alguno en su interior. Opcionalmente, C++ permite
utilizar la palabra void para indicar que la lista de argumentos est vaca, en Java no se usa. Los parmetros, o
argumentos, se utilizan para pasar informacin al cuerpo del mtodo.
La sintaxis de la declaracin completa de un mtodo es la que se muestra a continuacin con los items
opcionales en itlica y los items requeridos en negrilla:
especificadorAcceso static abstract
final native synchronized tipoRetorno nombreMetodo( lista_de_argumentos )
throws listaExcepciones
especificadorAcceso, determina si otros objetos pueden acceder al mtodo y cmo pueden hacerlo. Est
soportado en Java y en C++, pero la sintaxis e interpretacin es considerablemente diferente.
static, indica que los mtodos pueden ser accedidos sin necesidad de instanciar un objeto del tipo que
determina la clase. C++ y Java son similares en el soporte de esta caracterstica.
abstract, indica que el mtodo no est definido en la clase, sino que se encuentra declarado ah para ser
definido en una subclase (sobreescrito). C++ tambin soporta esta capacidad con una sintaxis diferente a Java,
pero con similar interpretacin.
final, evita que un mtodo pueda ser sobreescrito.
native, son mtodos escritos es otro lenguaje. Java soporta actualmente C y C++.
synchronized, se usa en el soporte de multithreading.
lista_de_argumentos, es la lista opcional de parmentros que se pueden pasar al mtodo
throws listaExcepciones, indica las excepciones que puede generar y manipular el mtodo.
Valor de Retorno de un Mtodo
En Java es imprescindible que a la hora de la declaracin de un mtodo, se indique el tipo de dato que ha de
devolver. Si no devuelve ningn valor, se indicar el tipo void como retorno.
Todos los tipos primitivos en Java se devuelven por valor y todos los objetos se devuelven por referencia. El
retorno de la referencia a un objeto en Java es similar a devolver un puntero a un objeto situado en memoria
dinmica en C++, excepto que la sintaxis es mucho ms simple en Java, en donde el tem que se devuelve es la
direccin de la posicin en memoria dinmica donde se encuentra almacenado el objeto.
Para devolver un valor se utiliza la palabra clave return. La palabra clave return va seguida de una expresin
que ser evaluada para saber el valor de retorno. Esta expresin puede ser compleja o puede ser simplemente
el nombre de un objeto, una variable de tipo primitivo o una constante.
El ejemplo siguiente ilustra el retorno por valor y por referencia.
// Un objeto de esta clase ser devuelto por referencia
class miClase {
int varInstancia = 10;
}
~2~
Si un programa Java devuelve una referencia a un objeto y esa referencia no es asignada a ninguna variable, o
utilizada en una expresin, el objeto se marca inmediatamente para que el reciclador de memoria en su
siguiente ejecucin devuelve la memoria ocupada por el objeto al sistema, asumiendo que la direccin no se
encuentra ya almacenada en ninguna otra variable.
Tanto en Java como en C++ el tipo del valor de retorno debe coincidir con el tipo de retorno que se ha indicado
en la declaracin del mtodo; aunque en Java, el tipo actual de retorno puede ser una subclase del tipo que se
ha indicado en la declaracin del mtodo, lo cual no se permite en C++. En Java esto es posible porque todas
las clases heredan desde un objeto raz comn a todos ellos: Object.
En general, se permite almacenar una referencia a un objeto en una variable de referencia que sea una
superclase de ese objeto. Tambin se puede utilizar un interfaz como tipo de retorno, en cuyo caso, el objeto
retornado debe implementar dicho interfaz.
~3~
Cuando se invoca un mtodo de instancia a travs de un objeto determinado, si este mtodo referencia a
variables de instancia de la clase, en realidad se estn referenciando variables de instancia especficas del objeto
especfico que se est invocando.
La llamada a los mtodos de instancia en Java se realiza utilizando el nombre del objeto, el operador punto y el
nombre del mtodo.
miObjeto.miMetodoDeInstancia();
Los mtodos de instancia tienen acceso tanto a las variables de instancia como a las variables de clase, tanto en
Java como en C++.
MTODOS ESTTICOS
Cuando una funcin es incluida en una definicin de clase C++, o un mtodo e incluso en una definicin de una
clase Java, y se utiliza la palabra static, se obtiene un mtodo esttico o mtodo de clase.
Lo ms significativo de los mtodos de clase es que pueden ser invocados sin necesidad de que haya que
instanciar ningn objeto de la clase. En Java se puede invocar un mtodo de clase utilizando el nombre de la
clase, el operador punto y el nombre del mtodo.
MiClase.miMetodoDeClase();
En Java, los mtodos de clase operan solamente como variables de clase; no tienen acceso a variables de
instancia de la clase, a no ser que se cree un nuevo objeto y se acceda a las variables de instancia a travs de
ese objeto.
Si se observa el siguiente trozo de cdigo de ejemplo:
class Documento extends Pagina {
static int version = 10;
int numero_de_capitulos;
static void annade_un_capitulo() {
numero_de_capitulos++; // esto no funciona
}
static void modifica_version( int i ) {
version++;
// esto si funciona
}
}
la modificacin de la variable numero_de_capitulos no funciona porque se est violando una de las reglas de
acceso al intentar acceder desde un mtodo esttico a una variable no esttica.
Todas las clases que se derivan, cuando se declaran estticas, comparten la misma pgina de variables; es
decir, todos los objetos que se generen comparten la misma zona de memoria. Los mtodos estticos se usan
para acceder solamente a variables estticas.
class UnaClase {
int var;
Docente: Ing. Pedro Beltrn Canessa
Ronceros
~4~
UnaClase() {
var = 5;
}
unMetodo() {
var += 5;
}
}
En el cdigo anterior, si se llama al mtodo unMetodo() a travs de un puntero a funcin, no se podra acceder
a var, porque al utilizar un puntero a funcin no se pasa implcitamente el puntero al propio objeto (this). Sin
embargo, s se podra acceder a var si fuese esttica, porque siempre estara en la misma posicin de memoria
para todos los objetos que se creasen de la clase UnaClase.
PASO DE PARMETROS
En C++, se puede declarar un mtodo en una clase y definirlo luego dentro de la clase (bajo ciertas
condiciones) o definirlo fuera de la clase. A la hora de declararlo, es necesario indicar el tipo de argumentos que
necesita, pero no se requiere indicar sus nombres (aunque pueda hacerse). A la hora de definir el mtodo s
tiene que indicarse el nombre de los argumentos que necesita el mtodo.
En Java, todos los mtodos deben estar declarados y definidos dentro de la clase, y hay que indicar el tipo y
nombre de los argumentos o parmetros que acepta. Los argumentos son como variables locales declaradas en
el cuerpo del mtodo que estn inicializadas al valor que se pasa como parmetro en la invocacin del mtodo.
En Java, todos los argumentos de tipos primitivos deben pasarse por valor, mientras que los objetos deben
pasarse por referencia. Cuando se pasa un objeto por referencia, se est pasando la direccin de memoria en la
que se encuentra almacenado el objeto.
Si se modifica una variable que haya sido pasada por valor, no se modificar la variable original que se haya
utilizado para invocar al mtodo, mientras que si se modifica una variable pasada por referencia, la variable
original del mtodo de llamada se ver afectada de los cambios que se produzcan en el mtodo al que se le ha
pasado como argumento.
El ejemplo siguiente ilustra el paso de parmetros de tipo primitivo y tambin el paso de objetos, por valor y por
referencia, respectivamente.
// Clase principal
class javaejemplo {
~5~
~6~
CONSTRUCTORES
Una vez que se tiene definida la clase a partir de la cual se crearn los objetos se est en la posibilidad de
instanciar los objetos requeridos.
Para la clase Usuario del ejemplo anterior podemos crear un objeto de la siguiente manera:
Usuario usr1;
boolean si_no;
~7~
~8~
Ejemplo
Se Desea crear un objeto del tipo Coordenadas, que indique, la posicin de un punto en el plano cartesiano, y
permita calcular la distancia existente con otro punto, adems del punto medio entre ellos.
1 /*Archivo Coordenadas.java*/
2
3 public class Coordenadas {
4
private int x,y;//Atributos
5
public Coordenadas (int x1 , int y1)//constructor
6
{
7
//asignamos esos valores
8
x=x1;
9
y=y1;
10
}
11
public double Distancia (int x1, int y1)
12
{
13
//este mtodo recibe como parmetros
14
//las coordenadas del segundo punto
15
double D;
16
D=Math.sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
17
return D;//Retornamops el valor de la distancia
18
}
19
public void Pmedio(int x1, int y1)
20
{
21
double p1, p2;
22
p1=(x+x1)/2;
23
p2=(y+y1)/2;
24
System.out.println("El puntomedio es: "+p1+","+p2);
25
}
26
}
1 /*Archivo UsaCoordenadas.java*/
2 public class UsaCoordenadas {
3 public static void main (String args []){
4
Coordenadas P=new Coordenadas (10,20);
5
//calculamos la Distancia:
6
System.out.println("La Distancia es: "+P.Distancia(5,6));
7
//Punto Medio
8
P.Pmedio(5,6);
9
10 }
Explicacin:
Un mtodo, si va a devolver algn valor, ste debe especificarse cuando se hace la definicin del mismo, para el
caso, el mtodo Distancia, devuelve el valor de la distancia, es por ello que lo especificamos como public
double. Adems que, cuando realizamos la llamada de ese mtodo, es en ese preciso lugar que aparecer el
valor que devuelve. Por otra parte,
los atributos, son de acceso privado, lo cual implica que, slo podemos
~9~