Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ejemplo:
class Factura {
// Campos
private int numero;
private double importe;
// Mtodos
public void grabar () {
...
...
}
} // Factura
Declaracin de Objetos
El operador new se utiliza para crear un objeto de un tipo de clase especfica, es
decir, que asigne memoria para el objeto.
Para utilizar el operador new tenemos dos sintaxis.
Sintaxis 1
NombreDeClase nombreDeVariable;
nombreDeVariable = new NombreDeClase ( );
Sintaxis 2
NombreDeClase nombreDeVariable = new NombreDeClase ( );
En este caso tanto la creacin de la variable y la creacin del objeto se realizan
en la misma instruccin.
Asignacin de Objetos
Cuando creamos un objeto internamente existe un puntero al que no tenemos
acceso, pero cuando asignamos objetos, lo que realmente estamos asignando
son las direcciones de memoria donde estn definidos los objetos, como se
explica en la figura 3.
Definicin
Los campos definen los datos de un objeto; cuando definimos una clase debemos
definirlos y establecer su visibilidad:
La visibilidad determina desde que parte del cdigo se puede acceder al campo.
Sintaxis:
[TipoAcceso] [ModificadorCampo] Tipo nombreCampo [= ValorInicial];
El TipoAcceso puede tomar los valores que se resume en el siguiente
cuadro:
Palabra Clave Descripcin UML
public Indica que el campo es de acceso pblico. El acceso
se realiza a travs de una instancia del objeto. +
abstract Indica que solo se puede acceder al campo desde
mtodos de la misma clase y clases derivadas
(subclases)
Final Indica que solo se puede acceder al campo desde -
mtodos de la misma clase.
Sin especificar Indica acceso de paquete1, se puede acceder al
campo a travs de una instancia, pero slo desde
clases que se encuentren en el mismo paquete.
Ejemplo:
En este ejemplo se lustra el uso de los mtodos set y get.
class Factura {
// Campos
private int numero;
// Mtodos set y get
public void setNumero (int numero) {
this.numero = numero;
}
public int getNumero ( ) {
return this.numero;
}
. . .
. . .
} // Factura
Definicin
Los mtodos definen el comportamiento de un objeto de una clase concreta y
tienen las siguientes caractersticas:
- Agrupan las responsabilidades del objeto (competencias).
- Describen sus acciones.
Las acciones realizadas por un objeto son consecuencia directa de un estmulo
externo (un mensaje enviado desde otro objeto) y dependen del estado del objeto.
El estado y comportamiento de un objeto estn relacionados. Por ejemplo, un
avin no puede aterrizar (accin) sino est en vuelo (estado).
Sintaxis:
[TipoAcceso] [ModificadorMtodo]
Tipo NombreMtodo ( [ ListaDeParmetros ] ) {
// Cuerpo de mtodo
}
El Tipo determina el tipo de dato que debe retornar el mtodo, puede ser cualquier
tipo vlido, incluso los tipos de clases creados por el programador. Si el mtodo
no retorna ningn valor se debe especificar void.
Los parmetros son opcionales, pero si son necesarios se deben
especificar de la siguiente manera:
tipol parmetro1, tipo2 parametro2, ... ;
Los parmetros son variables que reciben valores de los argumentos que se le
pasan al mtodo cuando ste es invocado.
Los mtodos que son de un tipo diferente de void, deben retornan un valor a la
instruccin que realiza la llamada mediante la instruccin return, utilizando la
siguiente sintaxis:
return expresin;
Donde expresin representa el valor que retorna el mtodo.
Sobrecarga de Mtodos
Un mtodo se identifica por su nombre, la cantidad de parmetros y el tipo de sus
parmetros; esto constituye la firma del mtodo (signature).
La sobrecarga permite tener varios mtodos con igual nombre pero con diferente
firma, o sea, con diferente cantidad de parmetros y diferentes tipos de datos de
sus parmetros. Los mtodos tendrn comportamientos diferentes segn el tipo
de dato, cantidad de parmetros o ambos. Al invocar un mtodo, el compilador
busca en la clase el mtodo que corresponda a los argumentos de la invocacin.
Un ejemplo ilustrativo lo tenemos con el mtodo valueOf de la clase String.
Ejemplo:
Supongamos que queremos un mtodo que sume dos nmeros, podras necesitar
que sume dos nmeros de tipo int o double; entonces debemos implementar dos
mtodos con el mismo nombre por que se trata de la misma operacin, podra ser
sumar, pero con diferentes tipos de datos de sus parmetros, tal como se lustra a
continuacin:
package egcc;
public class Matematica {
public int sumar (int n1, int n2) {
int suma;
suma = n1 + n2;
return suma;
}
public double sumar (double n1, doble n2
double suma;
suma = n1 + n2;
return suma;
}
} // Matemtica
Cuando usamos la clase Matemtica el IDE nos permite visualizar los diversos
mtodos que estn sobrecargados:
EJEMPLO
Una institucin financiera necesita de un programa que le permita encontrar el
importe que deben pagar sus clientes por los prstamos que realiza, se sabe que
se trata de un inters compuesto, capitalizable mensualmente. La formula que
debe aplicarse es:
M= C(1+i)n
Donde:
C : Capital
I : Tasa de inters por periodo, por ejemplo puede ser mensual
n : Nmero de periodos
M : Importe acumulado en el nmero de periodos
Abstraccin
A continuacin tenemos algunas alternativas de abstraer el problema.
Caso 01
En este caso los atributos son pblicos (visibilidad publica)
Banco
por lo tanto se puede acceder de manera directa desde + capital : double
+ interes : double
cualquier otra clase u objeto. + periodo : int
El mtodo calcularlmporte hace el clculo en funcin al
+ calcularImporte()
valor de los campos capital, inters y periodo.
Caso 02
En este caso tenemos un solo mtodo que tiene tres parmetros, a travs de los
cuales recibe los datos para hacer el clculo y retorna el resultado
correspondiente.
Banco
+ calcularImporte(capital: double, interes : double, periodos : int) : Double
Caso 03
En este caso, los atributos son privados y se accede a ellos a travs de los
mtodos set y get. Para obtener el importe se debe utilizar el mtodo getImporte,
el clculo se realiza en base a los campos respectivamente.
Banco
- capital : double
- interes : double
- periodo : int
+ setCapital(capital:double): void
+ getCapital(): double
+ setInteres(interes:double): void
+ getInteres(): double
+ setPeriodos(periodos: int): void
+ getPeriodos(): int
+ getImporte(): double
package tpagoxPrestamo;
public class Banco {
private double capital;
private double interes;
private int periodos;
//Proceso
objBanco.setCapital(capital);
objBanco.setInteres(interes);
objBanco.setPeriodos(periodos);
double importe=objBanco.getImporte();
//resultado
this.txtImporte.setText(String.valueOf(importe));
}
Referencia:
Desarrollando soluciones con Java y MySql.
Eric Gustavo Coronel.
Captulo 3