Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clases Campos Metodos Gui
Clases Campos Metodos Gui
Ejemplo:
class Factura {
// Campos
private int numero;
private double importe;
// Métodos
public void grabar (…) {
...
...
}
} // Factura
Declaración de Objetos
El operador new se utiliza para crear un objeto de un tipo de clase específica, 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 creación de la variable y la creación del objeto se realizan
en la misma instrucción.
Asignación 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 están definidos los objetos, como se
explica en la figura 3.
Definición
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 código 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 Descripción UML
public Indica que el campo es de acceso público. El acceso
se realiza a través de una instancia del objeto. +
abstract Indica que solo se puede acceder al campo desde
métodos de la misma clase y clases derivadas
(subclases)
Final Indica que solo se puede acceder al campo desde -
métodos de la misma clase.
Sin especificar Indica acceso de paquete1, se puede acceder al
campo a través de una instancia, pero sólo desde
clases que se encuentren en el mismo paquete.
Ejemplo:
En este ejemplo se ¡lustra el uso de los métodos set y get.
class Factura {
// Campos
private int numero;
// Métodos set y get
public void setNumero (int numero) {
this.numero = numero;
}
public int getNumero ( ) {
return this.numero;
}
. . .
. . .
} // Factura
Definición
Los métodos definen el comportamiento de un objeto de una clase concreta y
tienen las siguientes características:
- Agrupan las responsabilidades del objeto (competencias).
- Describen sus acciones.
Las acciones realizadas por un objeto son consecuencia directa de un estímulo
externo (un mensaje enviado desde otro objeto) y dependen del estado del objeto.
El estado y comportamiento de un objeto están relacionados. Por ejemplo, un
avión no puede aterrizar (acción) sino está en vuelo (estado).
Sintaxis:
[TipoAcceso] [ModificadorMétodo]
Tipo NombreMétodo ( [ ListaDeParámetros ] ) {
// Cuerpo de método
}
El Tipo determina el tipo de dato que debe retornar el método, puede ser cualquier
tipo válido, incluso los tipos de clases creados por el programador. Si el método
no retorna ningún valor se debe especificar void.
Los parámetros son opcionales, pero si son necesarios se deben
especificar de la siguiente manera:
tipol parámetro1, tipo2 parametro2, ... ;
Los parámetros son variables que reciben valores de los argumentos que se le
pasan al método cuando éste es invocado.
Los métodos que son de un tipo diferente de void, deben retornan un valor a la
instrucción que realiza la llamada mediante la instrucción return, utilizando la
siguiente sintaxis:
return expresión;
Donde expresión representa el valor que retorna el método.
Sobrecarga de Métodos
Un método se identifica por su nombre, la cantidad de parámetros y el tipo de sus
parámetros; esto constituye la firma del método (signature).
La sobrecarga permite tener varios métodos con igual nombre pero con diferente
firma, o sea, con diferente cantidad de parámetros y diferentes tipos de datos de
sus parámetros. Los métodos tendrán comportamientos diferentes según el tipo
de dato, cantidad de parámetros o ambos. Al invocar un método, el compilador
busca en la clase el método que corresponda a los argumentos de la invocación.
Un ejemplo ilustrativo lo tenemos con el método valueOf de la clase String.
Ejemplo:
Supongamos que queremos un método que sume dos números, podrías necesitar
que sume dos números de tipo int o double; entonces debemos implementar dos
métodos con el mismo nombre por que se trata de la misma operación, podría ser
sumar, pero con diferentes tipos de datos de sus parámetros, tal como se ¡lustra a
continuación:
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;
}
} // Matemática
Cuando usamos la clase Matemática el IDE nos permite visualizar los diversos
métodos que están sobrecargados:
EJEMPLO
Una institución financiera necesita de un programa que le permita encontrar el
importe que deben pagar sus clientes por los préstamos que realiza, se sabe que
se trata de un interés compuesto, capitalizable mensualmente. La formula que
debe aplicarse es:
M= C(1+i)n
Donde:
C : Capital
I : Tasa de interés por periodo, por ejemplo puede ser mensual
n : Número de periodos
M : Importe acumulado en el número de periodos
Abstracción
A continuación tenemos algunas alternativas de abstraer el problema.
Caso 01
En este caso los atributos son públicos (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 método calcularlmporte hace el cálculo en función al
+ calcularImporte()
valor de los campos capital, interés y periodo.
Caso 02
En este caso tenemos un solo método que tiene tres parámetros, a través de los
cuales recibe los datos para hacer el cálculo 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 través de los
métodos set y get. Para obtener el importe se debe utilizar el método getImporte,
el cálculo 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.
Capítulo 3