Documente Academic
Documente Profesional
Documente Cultură
Modificador
public
protectec
private
package
Visibilidad
Pblica (+)
Protegida / en la herencia(#)
Privada(-)
De paquete (~)
Mtodos.
Java como todo lenguaje de programacin orientado a objetos utiliza los llamados
mtodos. A continuacin veremos cmo se crea un mtodo y como se utilizan.
Se podra decir que existen 2 grandes tipos de mtodos, el primer tipo de mtodo son
mtodos que realizan procesos, puedes realizar cualquier operacin con ellos, sin
embargo el propsito es manipular variables existentes. El segundo tipo de mtodos
son los que realizan un proceso o clculo, y calculan una variable especfica, un
ejemplo podra ser un mtodo para obtener el valor de una multiplicacin.
Los mtodos en java pueden tener parmetros, es decir, que un mtodo puede utilizar
variables predefinidas para ser utilizadas en sus procesos.
Encapsulamiento.
Como se puede observar de los diagramas, las variables del objeto se localizan en el
centro o ncleo del objeto. Los mtodos rodean y esconden el ncleo del objeto de
otros objetos en el programa. Al empaquetamiento de las variables de un objeto con la
proteccin de sus mtodos se le llama encapsulamiento. Tpicamente, el
encapsulamiento es utilizado para esconder detalles de la puesta en prctica no
importantes de otros objetos. Entonces, los detalles de la puesta en prctica pueden
cambiar en cualquier tiempo sin afectar otras partes del programa.
El encapsulamiento de variables y mtodos en un componente de software ordenado
es, todava, una simple idea poderosa que provee dos principales beneficios a los
desarrolladores de software.
Modularidad.
esto es, el cdigo fuente de un objeto puede ser escrito, as como darle
mantenimiento, independientemente del cdigo fuente de otros objetos. As mismo, un
objeto puede ser transferido alrededor del sistema sin alterar su estado y conducta.
Ocultamiento de la informacin, es decir, un objeto tiene una "interfaz publica" que
otros objetos pueden utilizar para comunicarse con l. Pero el objeto puede mantener
informacin y mtodos privados que pueden ser cambiados en cualquier tiempo sin
afectar a los otros objetos que dependan de ello.
Los objetos proveen el beneficio de la modularidad y el ocultamiento de la
informacin. Las clases proveen el beneficio de la reutilizacin. Los programadores de
software utilizan la misma clase, y por lo tanto el mismo cdigo, una y otra vez para
crear muchos objetos.
En las implantaciones orientadas a objetos se percibe un objeto como un paquete de
datos y procedimientos que se pueden llevar a cabo con estos datos. Esto encapsula
los datos y los procedimientos. La realidad es diferente: los atributos se relacionan al
objeto o instancia y los mtodos a la clase. Por qu se hace as? Los atributos son
variables comunes en cada objeto de una clase y cada uno de ellos puede tener un
valor asociado, para cada variable, diferente al que tienen para esa misma variable los
dems objetos. Los mtodos, por su parte, pertenecen a la clase y no se almacenan
en cada objeto, puesto que sera un desperdicio almacenar el mismo procedimiento
varias veces y ello va contra el principio de reutilizacin de cdigo.
parmetros que recibe, pero en la instanciacin slo ser utilizado uno de los
constructores.
Ejemplo:
clase base
package ejemplo_de_libro;
import java.util.Scanner;
public class Main {
clase derivada
package ejemplo_de_libro;
Protected: Se comporta como un mtodo pblico para los mtodos del mismo
paquete o de las subclases y para el resto como un mtodo privado.
Ahora que hemos visto ambas formas de reescribir mtodos, revisemos las reglas y
diferencias entre ambos tipos de reescritura:
Argumentos: En un mtodo sobrecargado los argumentos deben de cambiar
mientras que en un mtodo sobreescrito NO deben cambiar.
El tipo de retorno: En un mtodo sobrecargado el tipo de retorno puede
cambiar, en un mtodo sobreescrito NO puede cambiar, excepto por subtipos del tipo
declarado originalmente.
Excepciones: En un mtodo sobrecargado las excepciones pueden cambiar,
en un mtodo sobreescrito pueden reducirse o eliminarse pero NO deben de arrojarse
excepciones nuevas o ms amplias.
Acceso: En un mtodo sobrecargado puede cambiar, en un mtodo
sobreescrito el acceso NO debe de hacerse ms restrictivo (puede ser menos
restrictivo).
Al invocar: En un mtodo sobrecargado los argumentos son los que
determinan qu mtodo es el que se invocar, en un mtodo sobreescrito el tipo de
objeto determina qu mtodo es elegido.
Ejemplo :
clase base
package sobrekarga;
public class Main {
public static void main(String[] args) {
// TODO code application logic here
articulo objarticulo=new articulo();
objarticulo.fijarprecio("70");
objarticulo.mostrarprecio();
edad objedad= new edad();
objedad.poneredad();
objedad.mostraredad();
}
}
Clase articulo
package sobrekarga;
public class articulo {
private double precio;
public void fijarprecio(){
precio=5.50;
}
public void fijarprecio(String precio){
System.out.println("No es un valor");
}
public void fijaprecio (double precio){
this.precio=precio;
}
public void mostrarprecio(){
System.out.printf("precio es %.2f",precio);
System.out.println();
}
}
Clase edad
package sobrekarga;
public class edad {
private int edad;
public void poneredad(){
edad= 22;
}
public void poneredad(String edad){
System.out.println("no es una edad");
}
Los operadores que podemos sobrecargar son los unarios, +, -, !, ~, ++, --; y los
binarios +, -, *, /, %, &, |, ^, <<, >>. Es importante decir que los operadores de
comparacin, ==, !=, <, >, <=, >=, se pueden sobrecargar pero con la condicin que
siempre se sobrecargue el complementario, es decir, si sobrecargamos el ==
debemos sobrecargar el !=
Operadores Unarios
En esta seccin se ver cmo sobrecargar los operadores unarios, es decir aquellos
que toman un solo operando, como por ejemplo a++. El prototipo de los mtodos que
van a sobrecargar operadores unarios ser:
public static Operando operator++(Operando a)
Como antes sustituyendo el ++ por cualquier operador unario. El ejemplo dentro de
nuestra clase de nmeros complejos sera:
public static ComplexNum operator++(ComplexNum a)
{
float auximg = a.Img;
float auxreal = a.Real;
return new ComplexNum(++auxreal, ++auximg);
}
Operadores binarios
Para empezar vamos a sobrecargar el operador suma('+') para que al sumar dos
objetos de la clase ComplexNum, es decir dos nmeros complejos obtengamos un
nmero complejo que ser la suma de ambas partes. Cabe destacar que los
prototipos para sobrecargar operadores sern:
public static Operando operator+(Operando a, Operando b)
Este es el prototipo para el operador +, el resto de operadores binarios van a seguir el
mismo patrn. Por tanto el cdigo del mtodo de sobrecarga ser el siguiente:
public static ComplexNum operator+(ComplexNum a, ComplexNum b)
{
return new ComplexNum(a.Real + b.Real, a.Img + b.Img);
}
Este mtodo sobrecarga el operador suma para que podamos sumar dos nmeros
complejos. Un dato a tener en cuenta es que los mtodos que sobrecargan
operadores deben ser static. Como se ve en el cdigo los operandos son 'a' y 'b', que
se reciben como parmetro y el resultado de la operacin es otro nmero complejo
que es el que retorna el mtodo. Por tanto se limita a crear un nuevo nmero complejo
con ambas partes operadas. De la misma forma podemos crear la sobrecarga del
operador resta('-') para que lleve a cabo la misma funcin:
public static ComplexNum operator-(ComplexNum a, ComplexNum b)
{
return new ComplexNum(a.Real - b.Real, a.Img - b.Img);
}
Como vemos el mtodo es idntico solo que sustituyendo los + por -. En este caso el
trabajo que hacemos dentro del mtodo es trivial pero podra ser tan complejo como
se quisiera.