You are on page 1of 20

UNIVERSIDAD NACIONAL DE HUA

NCAVELICA
FACULTAD
INGENIERIA ELECTRONICA-SISTEMAS

LENGUAJE DE PROGRAMACIN II
MTODOS

Dr. Rafael Rojas Bujaico

Mdulos de Programas en Java


Existen tres tipos de mdulos en Java: Mtodos, Clases y
Paquetes.
Para escribir programas en Java, se combinan los nuevos mtodos y
clases que usted escribe con los mtodos y clases predefinidos, que
estn disponibles en la Interfaz de Programacin de Aplicaciones de Java
(tambin conocida como la API de Java o biblioteca de clases de Java)
y en diversas bibliotecas de clases.
Por lo general, las clases relacionadas estn agrupadas en paquetes, de
Mtodos
manera que se pueden importar a los programas y reutilizarse.
Los mtodos (tambin conocidos como funciones o procedimientos en
otros lenguajes) permiten al programador dividir un programa en
mdulos, por medio de la separacin de sus tareas en unidades
autnomas. Hemos declarado mtodos en todos los programas que
hemos escrito; a estos mtodos se les conoce algunas veces como
mtodos
declarados
programador.
Las instrucciones
enpor
loselcuerpos
de los mtodos se escriben
slo una vez, y se reutilizan tal vez desde varias ubicaciones en
un programa; adems, estn ocultas de otros mtodos.

Una razn para dividir un programa en mdulos mediante los mtodos es


la metodologa divide y vencers, que hace que el desarrollo de
programas sea ms fcil de administrar, ya que se pueden construir
programas a partir de piezas pequeas y simples.
Un mtodo se invoca mediante una llamada, y cuando el mtodo que se
llam completa su tarea, devuelve un resultado, o simplemente el
control al mtodo que lo llam.
Una analoga a esta estructura de programa es la forma jerrquica de la
administracin (ver figura).
Un jefe (el solicitante) pide a un trabajador (el mtodo llamado) que
realice una tarea y que le reporte (devuelva) los resultados despus de
completar la tarea. El mtodo jefe, no sabe cmo el mtodo trabajador,
realiza sus tareas designadas. Tal vez el trabajador llame a otros
mtodos trabajadores, sin que lo sepa el jefe. Este ocultamiento de los
detalles de implementacin fomenta la buena ingeniera de software.
La siguiente figura muestra al mtodo jefe comunicndose con varios
mtodos trabajadores en forma
Jefe jerrquica. El mtodo jefe divide las
responsabilidades entre los diversos mtodos trabajadores. Observe que
trabajador1 acta como mtodo jefe de trabajador4 y trabajador5.
Trabajado
r1
Trabajado
r4

Trabajado
r5

Trabajado
r2

Trabajado
r3

Objetos
Qu son los objetos?
En informtica, un OBJETO es un conjunto de variables y de los
mtodos relacionados con esas variables.
Un poco ms sencillo: un objeto contiene en s mismo la
informacin y los mtodos o funciones necesarios para manipular esa
informacin.
Lo ms importante de los objetos es que permiten tener un control
total sobre 'quin' o 'qu puede acceder a sus miembros, es decir, los
objetos pueden tener miembros pblicos a los que podrn acceder
otros objetos o miembros privados a los que slo puede acceder l.
El problema a resolver se modela mediante componentes de cdigo
Estos miembros pueden ser tanto variables como funciones.
llamados objetos que son abstracciones de los objetos, animados e
inanimados, del mundo real.
Una abstraccin es una representacin parcial de los atributos y
comportamiento de un objeto real.
Los atributos son las caractersticas que definen al objeto y el
comportamiento representa lo que el objeto sabe hacer, su
funcionalidad.
El comportamiento de un objeto es modelado por piezas de cdigo
llamados mtodos. Los atributos y comportamiento representados
por el objeto son los que son relevantes al problema que se est

Por ejemplo, supongamos que estamos simulando el comportamiento


del consumo de
combustible de un automvil:
El objeto automvil tendr los atributos: coeficiente de arrastre,
cilindrada del motor, aceleracin, presin de las llantas, peso, etc.
Los mtodos que describen su comportamiento son: acelerar,
frenar, desplegar velocidad, desplegar nivel de gasolina, etc.
NOTA:
El color de la carrocera o el precio no sern atributos ya que no son
relevantes en el problema bajo estudio, como tampoco lo sern
obtener precio, establecer precio, obtener color, establecer color, etc.

Identificacin de los Objetos que Modelan un Problema


El primer paso para modelar un problema usando la POO es la
identificacin de los objetos que son relevantes para representar el
problema.
No todos los posibles objetos que podamos hallar son necesarios en
nuestro modelo. Los primeros candidatos a ser objetos son los
sustantivos (nombres comunes) en el enunciado de un problema.
Por ejemplo considere el siguiente problema:
Un amante de la msica y del cine desea catalogar su coleccin de
msica y pelculas. Desea realizar consultas de msica por ttulo,
autor, gnero, lbum, intrprete y perodo; mientras que para sus
pelculas desea hacer consultas por ttulo, gnero, actor, directo y
En este problema, los objetos ms obvios son cada una de las
perodo.
canciones y pelculas que el amante de la msica y el cine posee.
Los atributos de cada cancin son: ttulo, gnero, intrprete, autor
de letra, autor de msica, lbum, disquera, duracin y fecha; los de
cada pelcula son: el ttulo, gnero, actores principales, director,
compaa productora, duracin y fecha. Los mtodos de cada una
de esas canciones y pelculas nos deben permitir obtener y
establecer
losen
valores
de cada podra,
atributo,depor
establece
Sin embargo
este problema
serejemplo,
necesario,
otros
nombre,
obtnlos
nombre,
establece
gnero,
obtn
gnero, etc.
objetos como
intrpretes,
autores,
actores,
directores,
gneros,
fechas, e inclusive objetos compuestos de objetos como lista de
canciones, o listas de actores.

Clases
El segundo paso para modelar un problema usando la POO, es la
clasificacin de los objetos que son relevantes para representar el
problema en grupos de objetos que compartan el mismo tipo
de atributos y mtodos.
La lista de atributos y mtodos de cada grupo de objetos (un grupo
podra estar formada por un slo objeto) se conoce como una
clase, esto es, una clase son los atributos y mtodos
comunes a un grupo de objetos.
Una
constituye
unaelplantilla con la que se construyen objetos,
En elclase
superior
aparece
se
crean de
instancias
esa
nombre
la clase,deen
el clase.
central los atributos y en
el inferior sus mtodos.
Por ejemplo, las clases
Cancion y Pelicula del
problema
anterior
estaran
representados
por los diagramas de la
figura 1.1. Tambin se
agrega la clase Genero
utilizada para representar
los
gneros
de
las

Una CLASE es un proyecto, o prototipo, que define las variables y los


mtodos comunes a un cierto tipo de objetos.
Un poco ms sencillo: las clases son las matrices de las que luego se
pueden crear mltiples objetos del mismo tipo. La clase define las
variables y los mtodos comunes a los objetos de ese tipo, pero
luego, cada objeto tendr sus propios valores y compartirn las
mismas funciones.
Primero deberemos crear una clase antes de poder crear objetos o
ejemplares
de esa
clase.
Qu son los
mensajes?
Para poder crear una aplicacin necesitars ms de un objeto, y
estos objetos no pueden estar aislados unos de otros, pues bien,
para comunicarse esos objetos se envan mensajes.
Los mensajes son simples llamadas a las funciones o mtodos del
objeto con el se quiere comunicar para decirle que haga cualquier
cosa.

Principios de la Programacin Orientada a Objetos


Encapsulado
Uno de los principios de la POO es la encapsulacin (los otros dos
son la herencia y el polimorfismo). La encapsulacin es un
mecanismo que permite agrupar los datos (atributos) y el cdigo
(mtodos) que los manipulan y los mantiene alejados de posibles
interferencias y usos indebidos.
El acceso a los datos y mtodos es en forma controlada a travs de
una interfaz bien definida.
La base del encapsulado es la clase.

todos static, campos static y la clase Math

Toda clase proporciona mtodos que realizan tareas comunes en objetos


de esa clase. Por ejemplo, para introducir datos mediante el
teclado, hemos llamado mtodos en un objeto Scanner que se
inicializ en su constructor para obtener la entrada del flujo de entrada
estndar (System.in). Archivos y flujos, puede inicializar un objeto
Scanner que reciba informacin del flujo de entrada estndar, y un
segundo objeto Scanner que reciba informacin de un archivo. Cada
mtodo de entrada que se llame en el objeto Scanner del flujo de
entrada estndar obtendra su entrada del teclado, y cada mtodo de
entrada que se llame en el objeto Scanner del archivo obtendra su
entrada del archivo especificado en el disco.
Aunque la mayora de los mtodos se ejecutan en respuesta a las
llamadas a mtodos en objetos especficos, ste no es siempre el caso.
Algunas veces un mtodo realiza una tarea que no depende del
contenido de ningn objeto. Dicho mtodo se aplica a la clase en la que
est declarado como un todo, y se conoce como mtodo static o mtodo
de clase. Es comn que las clases contengan mtodos static
convenientes para realizar tareas comunes.
Por ejemplo, el mtodo static pow de la clase Math para elevar un valor
a una potencia. Para declarar un mtodo como static, coloque la palabra
clave static antes del tipo de
Math.sqrt( 900.0 )
ombreClase.nombreMtodo (argumentos)
valor de retorno en la declaracin del mtodo. Puede llamar a cualquier
System.out.println( Math.sqrt( 900.0 ) );
mtodo static especificando el nombre de la clase en la que est

Por qu el mtodo main se declara


como
Cuandostatic?
se ejecuta la Mquina Virtual de Java (JVM)

con el comando
java, la JVM trata de invocar al mtodo main de la clase que usted le
especifica; cuando no se han creado objetos de esa clase. Al declarar
a main como static, la JVM puede invocar a main sin tener que crear
una instancia de la clase. El mtodo main se declara con el siguiente
public static void main( String args[ ] )
encabezado:

Declaracin de Mtodos con


La
aplicacin Parmetros
de las figuras 6.3 y 6.4
Mltiples

utiliza el mtodo maximo,


declarado por el programador, para determinar y devolver el mayor de
tres valores double que introduce el usuario. Cuando la aplicacin
empieza
a
ejecutarse,
el
mtodo
main
de
la
clase
PruebaBuscadorMaximo (lneas 7 a 11 de la figura 6.4) crea un objeto de
la clase BuscadorMaximo (lnea 9) y llama al mtodo determinarMaximo
del objeto (lnea 10) para producir los resultados del programa. En la
clase BuscadorMaximo (figura 6.3), las lneas 14 a18 del mtodo
determinarMaximo piden al usuario que introduzca tres valores double,
y despus los leen. La lnea 21 llama al mtodo mximo (declarado en
las lneas 28 a 41) para determinar el mayor de los tres valores double
que se pasan como argumentos para el mtodo. Cuando el mtodo
maximo devuelve el resultado a la lnea 21, el programa asigna el valor
de retorno de maximo a la variable local resultado. Despus, la lnea 24

1
2
3
5
6

// Fig. 6.3: BuscadorMaximo.java


// Mtodo maximo, declarado por el programador.
import java.util.Scanner;
public class BuscadorMaximo
{
7 // obtiene tres valores de punto flotante y determina el valor mximo
8 public void determinarMaximo()
9{
10 // crea objeto Scanner para introducir datos desde la ventana de comandos
11 Scanner entrada = new Scanner( System.in );
13 // pide y recibe como entrada tres valores de punto flotante
14 System.out.print( "Escriba tres valores de punto flotante, separados por espacios:
" );
16 double numero1 = entrada.nextDouble(); // lee el primer valor double
17 double numero2 = entrada.nextDouble(); // lee el segundo valor double
18 double numero3 = entrada.nextDouble(); // lee el tercer valor double
20 // determina el valor mximo
21 double resultado = maximo( numero1, numero2, numero3 );
23 // muestra el valor mximo
24 System.out.println( "El maximo es: " + resultado );
25 } // fin del mtodo determinarMaximo
27 // devuelve el mximo de sus tres parmetros double
28 public double maximo( double x, double y, double z )
29 {
30 double valorMaximo = x; // asume que x es el mayor para empezar
32 // determina si y es mayor que valorMaximo
33 if ( y > valorMaximo ) valorMaximo = y;
36 // determina si z es mayor que valorMaximo
37 if ( z > valorMaximo ) valorMaximo = z;
40 return valorMaximo;
41 } // fin del mtodo maximo

1
2
4
5

// Fig. 6.4: PruebaBuscadorMaximo.java


// Aplicacin para evaluar la clase BuscadorMaximo.
public class PruebaBuscadorMaximo
{
6 // punto de inicio de la aplicacin
7 public static void main( String args[] )
8{
9 BuscadorMaximo buscadorMaximo = new BuscadorMaximo();
10 buscadorMaximo.determinarMaximo();
11 } // fin de main
12 } // fin de la clase PruebaBuscadorMaximo
Considere la declaracin del mtodo maximo (lneas 28 a 41). La lnea 28
indica que el mtodo devuelve un valor double, que el nombre del mtodo es
maximo y que el mtodo requiere tres parmetros double (x, y y z) para
realizar su tarea. Cuando un mtodo tiene ms de un parmetro, stos se
especifican como una lista separada por comas. Cuando se hace la llamada a
maximo en la linea 21, el parametro x se inicializa con el valor del argumento
numero1, el parametro y se inicializa con el valor del argumento numero2 y el
parametro z se inicializa con el valor del argumento numero3.
Debe haber un argumento en la llamada al metodo para cada parametro
(algunas veces conocido como parametro formal) en la declaracion del
metodo.
Ademas, cada argumento debe ser consistente con el tipo del parametro
correspondiente.

Para determinar el valor mximo, comenzamos con la suposicin de


que el parmetro x contiene el valor ms grande, por lo que la lnea 30
declara la variable local valorMaximo y la inicializa con el valor del
parmetro x. Desde luego, es posible que el parmetro y o z contenga
el valor ms grande, por lo que debemos comparar cada uno de estos
valores con valorMaximo. La instruccin if en las lneas 33 y 34
determina si y es mayor que valorMaximo. De ser as, la lnea 34 asigna
y a valorMaximo. La instruccin if en las lneas 37 y 38 determina si z
es mayor que valorMaximo. De ser as, la lnea 38 asigna z a
valorMaximo. En este punto, el mayor de los tres valores reside en
valorMaximo, por lo que la lnea 40 devuelve ese valor a la lnea 21.
Cuando el control del programa regresa al punto en donde se llam al
mtodo maximo, los parmetros x, y y z de maximo ya no estn
accesibles en la memoria. Observe que los mtodos pueden devolver a
lo mximo un valor, pero el valor devuelto puede ser una referencia a
un objeto que contenga muchos valores.
Observe que resultado es una variable local en el mtodo
determinarMaximo, ya que se declara en el bloque que representa el
cuerpo del mtodo. Las variables deben declararse como campos de
una clase slo si se requiere su uso en ms de un mtodo de la clase, o
si el programa debe almacenar sus valores entre las llamadas a los
mtodos de la clase.

Notas acerca de cmo Declarar y Utilizar los


Mtodos
ay tres
formas de llamar a un mtodo:
1. Utilizando el nombre de un mtodo por si solo para llamar a otro
mtodo de la misma clase, como maximo( numero1, numero2,
numero3 ) en la lnea 21 de la figura 6.3.
2. Utilizando una variable que contiene una referencia a un objeto,
seguida de un punto (.) y del nombre del mtodo para llamar a
un mtodo del objeto al que se hace referencia, como en la lnea
10 de la figura 6.4, buscadorMaximo.determinarMaximo(), con lo
cual se llama a un mtodo de la clase Buscador-Maximo desde el
metodo main de PruebaBuscadorMaximo.
3. Utilizando el nombre de la clase y un punto (.) para llamar a un
mtodo
static
de una
como llamar
Math.sqrt(
900.0 ) aen
la
Observe
que un
mtodo
staticclase,
slo puede
directamente
otros
seccin
6.3.de la misma clase (es decir, usando el nombre del
mtodos
static
mtodo por s solo) y solamente puede manipular de manera directa
campos static en la misma clase.
Para acceder a los miembros no static de la clase, un
metodo static debe usar una referencia a un objeto de esa
clase. Recuerde que los metodos static se relacionan con
una clase como un todo, mientras que los metodos no
static se asocian con una instancia especifica (objeto) de la
clase y pueden manipular las variables de instancia de ese
objeto.

Suponga que un mtodo static invoca a un mtodo no static en forma


directa. Cmo sabra el mtodo qu variables de instancia manipular de
cul objeto? Qu ocurrira si no existieran objetos de la clase en el
momento en el que se invocara el mtodo no static? Es evidente que tal
situacin sera problemtica. Por lo tanto, Java no permite que un
mtodo
static
acceda
a los miembros
no static
la misma
Existen tres
formas
dedirectamente
regresar el control
a la instruccin
quedellama
a un
clase.
mtodo. Si el mtodo no devuelve un resultado, el control regresa
cuando el flujo del programa llega a la llave derecha de terminacin del
mtodo, o cuando se ejecuta la instruccin
return;
si el mtodo devuelve un resultado, la instruccin
return expresin;
evala
la expresin
y despus Aleatorios
devuelve el resultado al mtodo que hizo
Generacin
de Nmeros
la
Esllamada.
el elemento de azar, la posibilidad de que la suerte convierta un
bolsillo lleno de dinero en una montaa de riquezas. El elemento de
azar puede introducirse en un programa mediante un objeto de la clase
Random (paquete java.util), o mediante el mtodo static llamado
random, de la clase Math. Los objetos de la clase Random pueden
producir valores aleatorios de tipo boolean, byte, float, double, int, long
y gaussianos, mientras que el mtodo random de la clase Math puede
producir slo valores de tipo double en el rango 0.0 x < 1.0, donde x
es el valor regresado por el mtodo random.
En los siguientes ejemplos, usamos objetos de tipo Random para
producir valores aleatorios.
R an d om n u m erosA leatorios = n ew
Se puede crear un nuevo objeto generador de nmeros aleatorios de la

Despus, el objeto generador de nmeros aleatorios puede usarse para


generar valores boolean, byte, float, double, int, long y gaussianos;
aqu slo hablaremos sobre los valores int aleatorios. Para obtener ms
informacin
sobre
la
clase
Random,
vaya
a
java.sun.com/javase/6/docs/api/java/util/Random.html.
int valorAleatorio
=
Considere
la siguiente instruccin:
numerosAleatorios.nextInt();
Por ejemplo,
para simular el lanzamiento de monedas, podra utilizar
la instruccin
int valorAleatorio = numerosAleatorios.nextInt( 2 );
que
devuelve
o 1. lados
Tirar
un
dado de0 seis
Para demostrar los nmeros aleatorios, desarrollaremos un programa
que simula 20 tiros de un dado de seis lados, y que muestra el valor de
cada tiro. Para empezar, usaremos nextInt para producir valores
aleatorios en el rango de 0 a 5, como se muestra a continuacin:
cara = numerosAleatorios.nextInt( 6 );
El argumento 6 (que se conoce como el factor de escala) representa
el numero de valores nicos que nextInt debe producir (en este caso,
seis: 0, 1, 2, 3, 4 y 5). A esta manipulacin se le conoce como escalar
el rango de valores producidos por el mtodo nextInt de Random.
Un dado de seis lados tiene los nmeros del 1 al 6 en sus caras, no del
0 al 5. Por lo tanto, desplazamos el rango de nmeros producidos
sumando un valor de desplazamiento (en este caso, 1) a nuestro
resultado anterior, como en
cara = 1 + numerosAleatorios.nextInt( 6 );

El valor de desplazamiento (1) especifica el primer valor en el


conjunto deseado de enteros aleatorios. La instruccin anterior
asigna a cara un entero aleatorio en el rango de 1 a 6.
1
2
3
5
6

// Fig. 6.7: EnterosAleatorios.java


// Enteros aleatorios desplazados y escalados.
import java.util.Random; // el programa usa la clase Random
public class EnterosAleatorios
{
7 public static void main( String args[] )
8{
9 Random numerosAleatorios = new Random(); // generador de
nmeros aleatorios
10 int cara; // almacena cada entero aleatorio generado
12 // itera 20 veces
13 for ( int contador = 1; contador <= 20; contador++ )
14 {
15 // elige entero aleatorio del 1 al 6
16 cara = 1 + numerosAleatorios.nextInt( 6 );
18 System.out.printf( "%d ", cara ); // muestra el valor generado
20 // si contador es divisible entre 5, empieza una nueva lnea de
salida
21 if ( contador % 5 == 0 )
22 System.out.println();
23 } // fin de for

Sobrecarga de Mtodos
Pueden declararse mtodos con el mismo nombre en la misma clase,
siempre y cuando tengan distintos conjuntos de parmetros
(determinados en base al nmero, tipos y orden de los parmetros).
A esto se le conoce como sobrecarga de mtodos. Cuando se hace
una llamada a un mtodo sobrecargado, el compilador de Java
selecciona el mtodo apropiado mediante un anlisis del nmero,
tipos y orden de los argumentos en la llamada. Por lo general, la
sobrecarga de mtodos se utiliza para crear varios mtodos con el
mismo
nombre
realicen
misma
tarea
o tareas
similares,enpero
Por ejemplo,
los que
mtodos
abs,lamin
y max
de Math
(sintetizados
la
con distintos
tipos
o distintoscon
nmeros
argumentos.
seccin
6.3) se
sobrecargan
cuatrode
versiones
cada uno:
1. Uno con dos parmetros double.
2. Uno con dos parmetros float.
3. Uno con dos parmetros int.
4. Uno con dos parmetros long.

You might also like