est contenido en los mtodos. El conjunto de los mtodos y las variables definidos, dentro de
una clase se denominan miembros de una clase. Los mtodos definidos acceden y actan
sobre las variables de instancia, los mtodos determinan cmo se deben utilizar los datos de una
clase.
Las variables definidas en una clase se llaman variables de instancia porque cada instancia de
la clase, cada objeto de la clase, contiene su propia copia de estas variables. Adems, los datos
de un objeto son distintos de los de otro.
Todos los mtodos tienen el mismo formato general que el mtodo main(). La mayor parte de los
mtodos no se especifican como static o public. Las clases de java no tienen necesariamente
un mtodo main(). Solamente se especifica un mtodo main() si esa clase es el punto de
comienzo del programa.
UNA CLASE SENCILLA
Esta clase denominada Caja, define tres variables de instancia: ancho, alto y largo. En ste caso
Caja no contiene mtodo alguno.
class Caja{
double ancho;
double alto;
double largo;
}
Es importante recordar que la declaracin de una clase solamente crea un modelo o patrn y no
un objeto real. Una clase define un nuevo tipo de datos. El nuevo tipo se denomina Caja.
Utilizaremos este nombre para declarar objetos de la clase Caja. El cdigo anterior no crea
ningn objeto
la clase Caja.
Para ello
habr
que utilizar una sentencia como la siguiente:
/* unde
programa
que utiliza
la clase
Caja
El nombre de este fichero es CajaDemo.Java
propia copia de cada variable de instancia definida por la clase. Por lo tanto, cada objeto Caja
contendr//Esta
sus propias
copias de
variables
de instancia ancho, alto y largo. Para acceder a
clase declara
un las
objeto
de la ClaseCaja
estas variables,
utilizaremos el operador variable de instancia(). Este operador liga el nombre del
Class CajaDemo{
publicde
static
main
args) {
objeto con el nombre
una void
variable
de(String[]
instancia.
Caja
miCaja
=
new
Caja();
La siguiente sentencia sirve para asignar a la variable ancho de miCaja el valor 100.
double vol;
//asignacin =
de100;
valores a las valores de instancia de
miCaja.ancho
miCaja
miCaja.ancho = 10;
Esta sentencia indica
al compilador
miCaja.alto
= 20; que debe asignar a la copia de ancho que est contenida en
el objeto miCajamiCaja.largo
el valor 100.=
El15;
operador punto se usa para acceder tanto a las variables de
tenemos dos objetos Caja, cada uno tiene sus propias copias de largo, ancho y alto. Es
importante
tener
endeclara
cuenta que
cambios
las variables de instancia de un objeto no afectan
//Esta
clase
dos los
objeto
de laen
ClaseCaja
Class
CajaDemo2{
a las variables del otro.
public static void main (String[] args) {
Caja miCaja1
= new
Caja(); Caja
El siguiente programa
declara
dos objetos
Caja miCaja2 = new Caja();
double vol;
Declaracin de objetos
Cuando se crea una clase, se est creando un nuevo tipo de datos que se utilizar para declarar
objetos de ese tipo. La obtencin de objetos de una clase es un proceso que consta de dos
etapas:
En primer lugar: se debe declarar una variable del tipo de la clase, tal variable no define un
objeto, sino que simplemente es una referencia a un objeto.
En segundo lugar: se debe obtener una copia fsica del objeto y asignarla a esa variable. Para
ello se utiliza
/* unelprograma
operador new.
que utiliza
Dondelanew
clase
asigna
Triangulo
dinmicamente
para calcular
-durante
el
el tiempo de
de unatringulo.
ejecucin-rea
memoria
un objeto y devuelve una referencia al mismo.
El nombre de este fichero es AreaTriangulo */
Ejemplo de un programa
con
una void
clase
y un(String
objeto:[]args) {
public
static
main
Triangulo miTriangulo = new Triangulo();
area;
Crea una clase con lasdouble
variables
necesarias para calcular el rea de un tringulo, define el objeto
miTriangulo1, asignas los valores de instancia a miTriangulo1, y calculas el rea del triangulo
//asignacin de valores a las valores de instancia de
miTriangulo
miTriangulo.base = 20;
miTriangulo.altura = 18;
// clculo del rea de miTriangulo
area= (miTriangulo.base * miTriangulo.altura)/2;
System.out.println("El rea del tringulo es " + area);
}
}
Si
NO
De manera
correcta
Observacin
2. Crea una clase con las variables para calcular el rea de un tringulo, define 2 objetos,
asigna los valores de instancia a los 2 objetos, y calcula el rea de cada uno de los
tringulos.
OPERADOR NEW
El operador new reserva memoria dinmicamente para un objeto. Su forma general es:
variable = new nombre_de
clase( );
Siendo variable una variable del mismo tipo de la clase creada, y el nombre_de clase, el
nombre de la clase que est siendo instanciada. El constructor de la clase viene especificado
por el nombre de la clase seguido por parntesis.
Un constructor define lo que ocurre cuando se crea un objeto de la clase. Los constructores son
una parte importante de todas las clases y tienen muchos atributos significativos.
La mayora de las clases definen explcitamente sus propios constructores en la definicin de la
clase. Cuando no se definen explcitamente, Java suministra automticamente el constructor por
defecto.
Los objetos tienen muchas caractersticas y atributos que obligan a Java a tratarlos de forma
diferente a la que utiliza con los tipos sencillos.
Es importante tener en cuenta que el operador new reserva memoria para un objeto durante el
tiempo de ejecucin. Cuando se declara un objeto de una clase, se est creando una instancia
de esa clase. Por lo tanto, una clase es una construccin lgica, mientras que un objeto tiene
una realidad fsica, esto es, un objeto ocupa un espacio de memoria.
METODOS
Un mtodo en Java es un procedimiento o conjunto de instrucciones que tiende a repetirse, y
que se separan del programa principal con un nombre especfico, que ser llamado cada vez que
sea necesario sealando su nombre.
La forma general de un mtodo es la siguiente:
Tipo nombre_de mtodo(lista de
parmetros){
//cuerpo del mtodo
Donde tipo}especifica el tipo de dato que devuelve el mtodo, que puede ser cualquier tipo
vlido, incluyendo los tipos de clases creadas por el programador. El nombre del mtodo puede
ser cualquier identificador vlido que sea distinto de los que ya estn siendo utilizados por otros
elementos del programa. Cuando el mtodo no devuelve ningn valor, el tipo devuelto debe ser
void. La lista de parmetros es una sucesin de pares de tipo de identificador separados por
comas. Los parmetros son variables que reciben los valores de los argumentos que se pasa a
los mtodos cuando se les llama. Si el mtodo no tiene parmetros, la lista de parmetros
estar vaca.
Adicin de un mtodo a la clase Caja
Los mtodos permitirn acceder a las variables de instancia definidas por la clase, definen la
interfaz para la mayor parte de las clases. Esto permite que la clase oculte la estructura interna
de los datos detrs de las abstracciones de un conjunto de mtodos.
El siguiente ejemplo define un mtodo, que no devuelve ningn valor, slo se presenta el
mtodo que imprimir lo que su procedimiento seale.
lo hace directamente, sin referencia explcita a un objeto sin utilizar el operador punto. Siempre
que se llama a un mtodo, este est relacionado con algn objeto de su clase. Una vez que la
llamada tiene lugar, el objeto es conocido. Por lo tanto, en un mtodo no es necesario especificar
el objeto dos veces. Esto significa que ancho, alto y largo dentro de volumen() se refieren
implcitamente a las copias de esas variables que estn en el objeto que se llama a volumen().
Ejercicio:
Elabora un programa con un mtodo que te permita calcular el rea de un tringulo en 2 objetos
Devolucin de un valor
La implementacin del mtodo volumen() realiza el clculo del volumen de una caja dentro de la
// Ahora volumen ( ) devuelve el volumen de una Caja
clase Caja a la que pertenece, esto puede ser un problema si en otra parte del programa se
necesita elclass
valorCaja{
del volumen de la caja.
double ancho;
double alto;
double largo;
// Mtodo que calcula y devuelve un valor
double volumen( ){
return ancho*alto*largo;
}
}
class CajaDemo4 {
public static void main (String [ ] args){
Caja miCaja1 = new Caja();
Caja miCaja2 = new Caja();
double vol;
// Se asignan valores a mi Caja1
miCaja1.ancho = 10;
miCaja1.alto = 20;
miCaja1.largo = 15;
// Asigna diferentes valores a las variables de instancia de mi
Caja2
miCaja2.ancho = 3;
miCaja2.alto = 6;
miCaja2.largo = 9;
//Se obtiene el volumen de la Primera Caja
vol = miCaja1.volumen( );
System.out.println("El volumen es "+vol);
//Se obtiene el volumen de la Segunda Caja
vol = miCaja2.volumen( );
System.out.println("El volumen es "+vol);
}
}
Ejercicio:
Elabora un programa con un mtodo que devuelva el resultado del rea de un tringulo, en dos
objetos.
Constructores
El proceso de inicializar todas las variables en una clase cada vez que se crea una instancia
puede resultar tedioso. El proceso de inicializacin es tan comn que Java permite que los
objetos se inicialicen cuando son creados. Esta inicializacin automtica se lleva a cabo
mediante un constructor.
Un constructor inicializa un objeto inmediatamente despus de su creacin. Tiene el mismo
nombre que la clase en la que reside y, sintcticamente, es similar a un mtodo. Una vez
definido, se llama automticamente al constructor despus de crear el objeto y antes de que
termine el operador new. La tarea del constructor es inicializar el estado interno de un objeto.
Aunque el constructor de Caja() en los ejemplos previos inicializa un objeto Caja, no es muy til
que todas las cajas tengan las mismas dimensiones. La solucin ms sencilla es aadir
parmetros al constructor.
// Este programa usa un constructor parametrizado
class Caja{
double ancho;
double alto;
double largo;
// Constructor de Caja con parmetros
Caja (double w, double h, double d){
ancho = w;
alto = h;
largo = d;
// Mtodo que calcula y devuelve un valor
double volumen( ){
return ancho*alto*largo;
}
}
class CajaDemo7{
public static void main (String [ ] args){
// declara, reserva memoria, e inicializa los objetos de
Caja
Caja miCaja1 = new Caja(10,20,15);
Caja miCaja2 = new Caja(3,6,9);
double vol;
// Calcula el volumen de la Primera Caja
vol = miCaja1.volumen( );
System.out.println("El volumen es "+vol);
// Calcula el volumen de la Segunda Caja
vol = un
miCaja2.volumen(
Ejercicio: Elabora
programa que te );
permita agregar parmetros y calcular el rea de un
System.out.println("El volumen es "+vol);
crculo en }2 objetos
EJERCICIOS
con mtodos REPASO:
}
POLIMORFISMO
En Java es posible definir dos o ms mtodos que compartan el mismo nombre, dentro de la
misma clase, aunque la declaracin de sus parmetros sea diferente. Cuando se produce esta
situacin se dice que los mtodos estn sobrecargados, y que el proceso es una sobrecarga de
mtodo. La sobrecarga de mtodos e una de las formas en que JAva implementa el
class RetOb {
public static void main(String[] args){
Test ob1 = new Test (2)
Devolucin de objetos
Test ob2;
ob1 = ob1.increnDiez();
Un objeto puede devolver cualquier tipo de datos, incluyendo los tipos de clase definidos por el
System.out.println("ob1.a: "+ob1.a);
programador.
Por ejemplo, en el siguiente
programa el mtodo increnDiez( ) devuelve un objeto
System.out.println("ob2.a:
"+ob2.a);
en el que el valor de a es diez unidades mayor que en el objeto que llama al mtodo.
ob2 = ob2.increnDiez();
System.out.println("ob2.a despus del segundo incremento:
"+ob2.a);b
}
}
ENCAPSULAMIENTO
La encapsulacin relaciona datos con el cdigo que opera sobre los mismos, proporciona el
control de acceso, ya que se puede controlar el acceso de los miembros de una clase a las
diferentes
partes de un
programa
e impedir entre
un malpblico
uso delymismo.
//Este programa
muestra
la diferencia
privadoSi slo se permite el acceso a
class
Test
{
los datos a travs de mtodos bien definidos, se impide una mala utilizacin de los datos.
int a; // acceso
por defecto
Los especificadores
de acceso
de Java son public, private y protected. El especificador
public
int
b;
//
acceso
protected se aplica solamente enpblico
el caso de que se trabaje con herencia.
privado
Cuando seprivate
aplica aintunc;//acceso
miembro de
una clase el especificacor public, se puede acceder a ese
miembro por
cualquierpara
cdigo
del programa.
Cuando
// mtodos
acceder
a la variable
c se especifica un miembro de una clase
como private,
puede
a ese miembro
void slo
setcse
(int
i) { acceder
// se establece
el valordesde
de c otros miembros de su clase. Ahora
c = i; porqu main( ) siempre ha sido precedido por el especificador public,
resulta sencillo entender
}
permitiendo el acceso al mismo desde fuera del programa, es decir, desde el intrprete de Java.
int getc( ) { // se obtiene el valor de c
Cuando no se utiliza
un c;
especificador
de acceso, por defecto, se considera que el miembro de la
return
}
clase
} es pblico dentro de su propio paquete, pero se puede acceder al mismo desde fuera de su
class TestDeAcceso
{ de acceso precede al resto de especificaciones de tipo de un
paquete.
Un especificador
public
static
void
main (String
]args)
{
miembro, es decir, se debe comenzar
con [una
sentencia
de declaracin del miembro.
Test ob = new Test ( );
con acceso pblico, y la tercera con acceso privado, asgnales valores a cada una y al final
imprime la multiplicacin
de(cada
void mostrarij
) { una de las variables.
System.out.println("i + j: " + i + " " + j);
// suma las 2
variables
}
HERENCIA
} una de las piedras angulares de la programacin orientada a objetos, ya que
La herencia es
// Creacin
dede
las
subclases porjerrquicas.
extensin de
la clasela herencia se puede crear una clase
permite
la creacin
clasificaciones
Mediante
class B extends A {
general que define
int k; rasgos generales para un conjunto de trminos relacionados. En la
terminologa de Java, una clase que es heredada se denomina superclase (es la clase que se va
void
mostrark
( ) { se denomina subclase (la que recibe la herencia). Por lo tanto,
a heredar). La
clase
que hereda
System.out.println("k:
+ una
k); superclase,
} //que
slohereda
imprime
k las variables de
una subclase es una versin especializada"de
todas
instancia y mtodos
definidos
por la superclase y aade los suyos propios. Para heredar una
void sum(
){
clase, simplementeSystem.out.println("i+j+k:
se incorpora la definicin de" una
clase dentro }
de //lasuma
otra usando
+ (i+j+k));
las 3 la palabra
variables
clave extends.
}
class HerenciaSimple {
public static void main (String[ ] args) {
A superOb = new A( );
B subOb = new B( );
// Se puede utilizar la superclase independientemente
superOb.i = 10;
superOb.j = 20;
System.out.println("Contenido de superOb: ");
superOb.mostrarij( ) ;
System.out.println( );
// La subclase accede a todos los miembros pblicos de su superclase
subOb.i = 7;
subOb.j = 8;
subOb.k = 9;
System.out.println ("Contenido de subOB: ");
subOb.mostrarij ( );
subOb.mostrark( );
System.out.println( );
System.out.println("Suma de i, j y k en subOb: ");
subOb.sum();
}
}
Ejercicio: Crea un programa con 2 clases: una SuperClase con 2 variables y una subclase con 2
variables, crea un mtodo que multiplique las 4 variables. Asigna valores a la clase
independiente, y luego a la subclase. Toma como base el ejemplo anterior.
clase independiente, y luego a la subclase, imprime los resultados de cada promedio para cada
clase.
CONDICIONES DE ENTREGA
1. Portada
2. Introduccin
3. El cdigo de Todos los programas y la pantalla donde se muestra que el programa si CORRE o si
FUNCIONA
4. Conclusin