You are on page 1of 116

Unidad 5: Clases y Objetos

1
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Unidad 5:
Clases y Objetos
CLASES Y OBJETOS. CONCEPTOS
OBJETO: representa una entidad, ya sea fsica, conceptual o de software.
p.e. Avin (fsico)
reaccin nuclear (conceptual)
lista anidada (software)
objeto: una manifestacin concreta de una abstraccin
CLASE: es la definicin abstracta de un objeto
p.e. Automvil o vehculo
clase: descripcin de un conjunto de objetos que manifiestan los mismos
atributos, operaciones y la misma semntica
Unidad 5: Clases y Objetos
2
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
CLASES Y OBJETOS. CONCEPTOS
Supongamos el dominio de una oficina de una empresa y su modelo conceptual
Unidad 5: Clases y Objetos
3
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
CLASES Y OBJETOS. CONCEPTOS
Equivalencia entre el mundo real y la orientacin a objetos
Operacin, mtodo iteracin
Clase Concepto
Objeto Cosa
Orientacin a objetos Mundo real
Unidad 5: Clases y Objetos
4
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
CLASES Y OBJETOS. CONCEPTOS
Transformamos el modelo conceptual a un modelo conceptual orientado a
objetos, donde los conceptos se han transformado en clases, en algo genrico
Unidad 5: Clases y Objetos
5
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
CLASES Y OBJETOS. CONCEPTOS
Transformamos el modelo conceptual orientado a objetos en un modelo
software, donde se indican como debern ser las clases:
Que atributos tiene
Que mtodos utiliza
Unidad 5: Clases y Objetos
6
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
CLASES Y OBJETOS. CONCEPTOS
Ejemplo de la clase Empleado y 3 objetos (instancias) de esa clase
Unidad 5: Clases y Objetos
7
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
CLASES Y OBJETOS. CONCEPTOS
Las tres etapas de la orientacin a objetos
Unidad 5: Clases y Objetos
8
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
CARACTERISTICAS DE LA POO
Abstraccin: generalizacin de los atributos y comportamientos de un grupo
de objetos
Encapsulacin: Un objeto se comporta como una caja negra. Sabemos que
operaciones realiza y no necesitamos conocer como las realiza.
Herencia: Un objeto puede adquirir las propiedades y comportamientos de
otro
Polimorfismo: Permite implantar un mismo mtodo de distintas formas. (Ej.
Definir el mismo mtodo con nmero de parmetros distintos, realizando cada
uno de ellos acciones distintas)
Unidad 5: Clases y Objetos
9
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
DEFINICIN DE CLASES EN JAVA
La implementacin de una clase java debe ir en un fichero con
la extensin *.java y con el nombre idntico a la clase
implementada
Se realiza mediante la clusula Class seguida del nombre de
la clase
Class siempre va precedida de un modificador de acceso:
public, protected, private o default (nada)
Unidad 5: Clases y Objetos
10
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
EJERCICIOS
Crear un proyecto llamado ut5.
Crear una clase que permita escribir en pantalla HOLA
MUNDO. Dibujar su diagrama UML. Comprobar el nmero de
atributos y de mtodos que tiene
Unidad 5: Clases y Objetos
11
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
CLASES y PROGRAMAS JAVA
Todos los programas J ava son realmente CLASES. Pueden ser de
varios tipos:
Programas que definen CLASES para uso de otras clases o
programas.
Programas aplicacin (que se pueden ejecutar). En este caso, el
programa es una clase que contiene un mtodo main() que se
ejecuta y donde se definen objetos a partir de otras CLASES e
interactan entre s.
Unidad 5: Clases y Objetos
12
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
CLASES y PROGRAMAS JAVA
// mtodos de la clase
public static void main(String[] args) {
System.out.println("Hola Mundo");
}
}
// atributos de la clase. en este caso no existen
public class Ejemplo1 {
Unidad 5: Clases y Objetos
13
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
EJERCICIOS
Dentro de ut5 disear el diagrama UML de una clase llamada
Libro que contenga 3 caractersticas tpicas de un libro
(atributos) y dos mtodos. Crear la clase en java
Unidad 5: Clases y Objetos
14
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
CLASES y PROGRAMAS JAVA
//metodos de la clase
public void prestar(){
prestado =true;
}
public void devolver(){
prestado =false;
}
}
//atributos de la clase
String titulo;
String autor;
boolean prestado;
public class Libro {
Unidad 5: Clases y Objetos
15
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
EJERCICIOS
main(){
Libro lib1;
lib1 =newLibro();
..
}
Libreria
main(){
Libro lib1;
lib1 =newLibro();
..
lib1.prestar();
}
Biblioteca
Unidad 5: Clases y Objetos
16
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
ESTRUCTURA DE UNA CLASE. Definir una clase Java
La estructura de una clase suele seguir el siguiente esquema:
[modificador] class NombreClase {
}
// declaracin de los atributos de la clase
// declaracin de los mtodos de la clase
// el mtodo main() que indica donde empieza la ejecucin
public static void main ( String[ ] args) {
// declaracin de las variables del mtodo
// sentencias de ejecucin del mtodo
}
Unidad 5: Clases y Objetos
17
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
ESTRUCTURA DE UNA CLASE
En caso de ser una clase distinta a la clase principal ejecutable, el
mtodo main() no aparece
Un programa se compone de un conjunto de clases que crean
objetos que interactan entre s
Por convenio, la primera letra del nombre de la clase va en
maysculas.
Una vez creada una clase, el programador podr crear objetos o
instancias de esa clase, simplemente para ello debe definir una
variable objeto/instancia de ese tipo de clase y crear despus el
objeto (con la instruccin new)
Unidad 5: Clases y Objetos
18
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
ESTRUCTURA DE UNA CLASE
Ejemplo:
Alumno.java
Una vez definida la clase la puedo utilizar en otro programa J ava para
definir variables objetode ese tipo
AplicacionCurso.java
publicclassAlumno {
....
}
........
Alumno alum1; // declaro la variable de ese tipo de clase
......
alum1 =new Alumno( ); // creo el objeto con el operador new
Unidad 5: Clases y Objetos
19
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MODIFICADORES DE ACCESO EN LAS CLASES
El modificador indica la forma de acceder a la clase:
public: cualquier otra clase puede acceder a ella
final: la clase no puede tener hijos, no va a poder crear herencia
abstract: no se pueden instanciar objetos a partir de ella
Si no se indica public, se entiende que la clase es amistosa y solo
podrn acceder a ella las que estn en el mismo paquete
[modificador] class NombreClase {
<con junto atributos>
<conjunto de mtodos
}
Unidad 5: Clases y Objetos
20
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MODIFICADORES DE ACCESO EN LAS CLASES
Unidad 5: Clases y Objetos
21
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
ATRIBUTOS
La implementacin de una clase consiste en una serie de atributos que
permiten guardar la informacin o las caractersticas de un objeto
Atributos
Mtodos
Unidad 5: Clases y Objetos
22
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
ATRIBUTOS. ejercicio
En UML, disear para una clase Alumno los atributos que se
consideren oportunos. Crear a continuacin la clase en java
Unidad 5: Clases y Objetos
23
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
ATRIBUTOS
Ejemplo
enumHorario {MAANA, TARDE} // Posibles horarios
class Alumno {
private String nombre;
private String apellidos;
private int ao_nacimiento;
private int num_matricula;
private String grupo;
private Horario horario = Horario.MAANA; // atributo con valor inicial
}
atributos
Unidad 5: Clases y Objetos
24
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
COMO DEFINIR ATRIBUTOS EN UNA CLASE
Ej. private static int cantidad =0;
private String nombre;
Los atributos son variables de tipo primitivo o pertenecientes a otras
clases
Se definen dentro del cuerpo de la clase, y normalmente antes de los
mtodos
[modificador] tipo nom_atributo [=valorInicial];
Unidad 5: Clases y Objetos
25
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
COMO DEFINIR ATRIBUTOS EN UNA CLASE
Si se indica un modificador, podr ser:
public: cualquier otra clase puede acceder a el atributo
protected: Solo la propia clase y sus hijas pueden acceder al atributo
private: Solo la propia clase puede acceder al atributo
Si no se indica modificador, solo las clases del paquete pueden acceder
al atributo.
Adems, junto con los anteriores se pueden indicar
static : el valor del atributo ser el mismo para todas las instancias
(objeto) de la clase. Si un objeto cambia todos los objetos instanciados
por la misma clase cambiarn tambin.
final : se utiliza para indicar que la propiedad es una constante. Una vez
inicializada no se podr modificar. No es una constante al uso, sino que
es inicializada en el momento de crear el objeto por lo tanto puede ser
distinta para cada objeto.
Ej. private static int cantidad = 0;
Unidad 5: Clases y Objetos
26
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
METODOS
La implementacin de una clase contiene adems de los atributos,
mtodos que permiten definir el comportamiento de un objeto en sus
interacciones con otros objetos :
Atributos
Mtodos
Unidad 5: Clases y Objetos
27
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS
Para la clase Alumno, aadir en el diagrama UML algunos mtodos a
modo de ejemplo que permitan entre otras cosas, obtener el valor de
un atributo, asignar un valor a un atributo. A continuacin modificar la
clase diseada anteriormente incorporando estos mtodos.
Unidad 5: Clases y Objetos
28
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS. ejercicio
Permiten definir el comportamiento de un objeto en sus interacciones
con otros objetos
enumHorario {MAANA, TARDE} // Posibles horarios
class Alumno {
private String nombre;
private String apellidos;
private int ao_nacimiento;
private int num_matricula;
private String grupo;
private Horario horario =Horario.MAANA; // atributo con valor inicial
public String devuelveGrupo ( ) { ......}
public void setGrupo (String nuevoGrupo) {......}
public void setGrupo (String nuevoGrupo, Horario turno) {......}
}
atributos
mtodos
Unidad 5: Clases y Objetos
29
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS
En java todo cdigo que realiza una accin se agrupa en mtodos
Un mtodo es:
Un bloque de cdigo que tiene un nombre (funcin)
Recibe unos parmetros o argumentos opcionalmente
Contiene instrucciones o sentencias para realizar algo
Devuelve un valor de algn tipo o clase conocido
Para definir un mtodo:
[modificador] tipoDevuelto nomMetodo ( [ tipo param1, .] ){
<bloque de cdigo>
return<expresion>
}
Unidad 5: Clases y Objetos
30
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS
Ejemplo:
public int sumar (int a, int b) {
int c;
c =a+b;
return c;
}
Nombre del mtodo : sumar
Modificadores: public es accesible para cualquier otra clase
La funcin devolver un valor entero (int)
Recibe dos parmetros, tambin de tipo entero
Realiza la suma de los 2 parmetros
Devueltve (return) dicha suma
Unidad 5: Clases y Objetos
31
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MODIFICADORES DE UN MTODO
Si se indica un modificador, podr ser:
public: cualquier otra clase puede acceder al mtodo
protected: Solo la propia clase y sus hijas pueden acceder al mtodo
private: Solo la propia clase puede acceder al mtodo
Si no se indica modificador, ser un mtodo amistoso, al que podrn
acceder todas las clases del mismo paquete
Adems, junto con los anteriores modificadores se pueden indicar
static : Para poder utilizar el mtodo, no es necesario crear una instancia
del objeto. Los mtodos static, solo pueden acceder a propiedades
static.
final : Ninguna clase que herede el mtodo podr sobrescribirlo.
Si el mtodo no devuelve ningn valor, el tipo de mtodo se definir
void
Unidad 5: Clases y Objetos
32
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
USANDO LOS ATRIBUTOS Y LOS MTODOS
Para acceder a un atributo o un mtodo de un objeto se utiliza el .
entre el nombre del objeto y el atributo o mtodo a utilizar
nombre_objeto . atributo
nombre_objeto . metodo ([param1,param2....])
Unidad 5: Clases y Objetos
33
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
USANDO LOS ATRIBUTOS Y LOS MTODOS
enumHorario {MAANA, TARDE} // Posibles horarios
class Alumno {
private String nombre;
private String apellidos;
private int ao_nacimiento;
private int num_matricula;
private Stringgrupo;
private Horario horario =Horario.MAANA; // atributo con valor inicial
public String getGrupo ( ) { ......}
public void setGrupo (String nuevoGrupo) {......}
public void setGrupo (String nuevoGrupo, Horario turno) {......}
}
En el ejemplo anterior
Alumno alum1; // declaramos la variable del tipo clase Alumno
Alumno alum2;
alum1 =newAlumno(); // creamos el objeto
alum2 =newAlumno();
.....
System.out.println(El nombre del alumno es+alum1.getNombre());
....
alum1.setGrupo( DAI2 );
.....
System.out.println (El alumno est en el grupo +alum1.getGrupo ( ) );
Unidad 5: Clases y Objetos
34
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
THIS
AUTOREFERENCIA this : se utiliza para referirse a los atributos
desde un mtodo del propio objeto. Se utiliza cuando existe
ambigedad entre los nombres de los parmetros de un mtodo y los
atributos del objeto
public String getGrupo ( ) {
return grupo;
}
public void setGrupo (String grupo) {
this.grupo = grupo; // el primer grupo hace referencia al atributo
} // el 2 grupo hace referencia al parmetro
Unidad 5: Clases y Objetos
35
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS
enumHorario {MAANA, TARDE} // Posibles horarios
class Alumno {
private String nombre;
private String apellidos;
private int ao_nacimiento;
private int num_matricula;
private String grupo;
private Horario horario =Horario.MAANA; // atributo con valor inicial
// metodos de la clase
public String getGrupo ( ) {
return grupo;
}
public void setGrupo (String grupo) {
this.grupo =grupo; // el primer grupo hace referencia al atributo
} // el 2 grupo hace referencia al parmetro
}
atributos
mtodos
Unidad 5: Clases y Objetos
36
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS GETTER Y SETTER
Getter y Setter son mtodos que se suelen definir normalmente para
obtener o asignar valores a los atributos de la clase. Normalmente
existe un mtodo getter y un setter para cada atributo.
Ejemplo:
public void setGrupo( String param_grupo){
grupo =param_grupo;
}
public void setNombre( String param_nom){
nombre =param_nom;
}
..
}
class Alumno {
private String nombre;
private String grupo;
.
public String getNombre(){
return nombre;
}
public String getGrupo (){
return grupo;
}
Unidad 5: Clases y Objetos
37
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS
Para la clase Alumno, aadir todos los mtodos getter y setter de los
atributos
Unidad 5: Clases y Objetos
38
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MAS SOBRE MTODOS
SOBRECARGA: en una clase pueden existir varios mtodos con el
mismo nombre pero con distinto nmero de parmetros. Segn los
parmetros que se pasen se invocar a un mtodo o a otro.
public void setGrupo (String grupo) {
this.grupo =grupo; // el primer grupo hace referencia al atributo
} // el 2 grupo hace referencia al parmetro
public void setGrupo (String grupo, Horario turno) {
this.grupo =grupo;
horario =turno;
}
.......
alumn1.setGrupo( DAI2 , TARDE);
Unidad 5: Clases y Objetos
39
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
EJERCICIOS
Crear una clase llamada animal (Animal.java) con:
los siguientes atributos:
nombre de tipo String
edad de tipo int
Los siguientes mtodos:
nace: funcin que visualiza el mensaje Hola mundo, he nacido
getNombre: funcin que devuelve el nombre
getEdad: funcin que devuelve la edad
setNombre y setEdad que permiten asignar un nombre y una edad que se
pasa como parmetro en el atributo correspondiente
Definir los atributos de forma que solo se puedan acceder desde la propia
clase y los mtodos para que puedan ser accedidos desde cualquier clase
Unidad 5: Clases y Objetos
40
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
BIBLIOTECA DE LA API DE JAVA
Con cada una de las versiones que Sun lanza del J DK, se acompaa de
una serie de bibliotecas con clases estndar que valen como referencia
para todos los programadores en J ava.
Estas clases se pueden incluir en los programas J ava, sin temor a fallos
de portabilidad. Adems, estn bien documentadas (mediante pginas
Web), y organizadas en paquetes y en un gran rbol de herencia.
A este conjunto de paquetes (o bibliotecas) se le conoce como la API de
Java (Application Programming Interface)
Unidad 5: Clases y Objetos
41
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
BIBLIOTECA DE LA API DE JAVA
Paquete de utilidades
java.lang: Fundamental para el lenguaje. Incluye clases como String o
StringBuffer.
java.io: Para la entrada y salida a travs de flujos de datos, y ficheros del
sistema
java.util: Contiene colecciones de datos y clases, el modelo de eventos,
facilidades horarias, generacin aleatoria de nmeros, y otras clases de
utilidad.
java.math: Clases para realizar aritmtica con la precisin que se desee.
java.text: Clases e interfaces para manejo de texto, fechas, nmeros y
mensajes de una manera independiente a los lenguajes naturales.
java.security: Clases e interfaces para seguridad en Java: Encriptacin
RSA...
Unidad 5: Clases y Objetos
42
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
BIBLIOTECA DE LA API DE JAVA
Paquete de desarrollo grafico
java.applet: Para crear applets y clases que las applets utilizan para
comunicarse con su contexto.
java.awt: Para crear interfaces con el usuario, y para dibujar imgenes y
grficos.
javax.swing: Conjunto de componentes grficos que funcionan igual en
todas las plataformas que Java soporta.
javax.accesibility: Da soporte a clases de accesibilidad para personas
discapacitadas.
java.beans: Para el desarrollo de JavaBeans.
Unidad 5: Clases y Objetos
43
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
BIBLIOTECA DE LA API DE JAVA
Paquete de desarrollo para internet
java.net: Clases para aplicaciones de red.
java.sql: Paquete que contiene el JDBC, para conexin de programas
Java con Bases de datos.

Unidad 5: Clases y Objetos
44
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS CONSTRUCTORES
Son mtodos utilizados para instanciar/crear los objetos.
Son mtodos que se emplean para:
inicializar los valores de los atributos de los objetos
realizar las operaciones que sean necesarias para la generacin de este
objeto
p.e: crear otros objetos contenidos dentro de este objeto, abrir un archivo,...
Se definen con el mismo nombre que la clase, es decir, con la primera letra
en mayscula
NombreClase(); //Constructor por defecto de la clase si no se define ninguno
NombreClase(param1);
NombreClase(param1,.., paramN);
Unidad 5: Clases y Objetos
45
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS CONSTRUCTORES
Si no se define un mtodo constructor en la clase, esta crea automticamente un
constructor por defecto
NombreClase ( );
Ejemplo
Alumno alum1; // declaro la variable del tipo de la clase Alumno
alum1 =newAlumno(); // creo el objeto alum1
IMPORTANTE: En el momento que se defina un constructor, est mtodo
desaparece a menos que el programador lo incorpore tambin como otro
mtodo constructor.
NombreClase(param1) {} al definir un constructor en la clase, el
constructor por defecto desaparece
Unidad 5: Clases y Objetos
46
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS CONSTRUCTORES
Ej: Si en la clase alumno se define el constructor
Alumno (String nombre) {
this.nombre =nombre;
}
A partir de ese momento en una aplicacin si es necesario instanciar/crear un
objeto de tipo alumno se tendr que hacer con el constructor definido en la
clase.
Alumno al1 =new Alumno (Armando Guerra Constante);
Ojo !!!! Alumno al1 =newAlumno(); producira un error a menos que se
defina tambin en la clase dicho constructor
Unidad 5: Clases y Objetos
47
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS CONSTRUCTORES
Para el ejemplo de la clase Animal, tena 5 mtodos
nace()
getNombre () setNombre(String nombre)
getEdad() setEdad(int edad)
Al no definir ningn mtodo constructor, para crear un objeto se utiliza el
constructor es Animal() . As si queremos crear un objeto tipo animal
deberemos de:
Animal mascota; //declaro la variable mascota de tipo clase Animal
mascota = newAnimal(); // creo el objeto, a partir de este momento Animal
tendr dos atributos y podr ejecutar los mtodos
mascota.nace(), mascota.getNombre(), mascota.getEdad(),
mascota.setNombre(TOR) y el mtodo mascota.setEdad(3)
Unidad 5: Clases y Objetos
48
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
EJERCICIOS
Crear una clase llamada TestAnimal1 que contenga un mtodo main y que
permita crear un objeto llamado animal1. Asignarle un nombre cualquiera y
una edad. A continuacin visualizar el mtodo nace() y sus atributos
Modificar la clase Animal de forma que cada vez que se cree un objeto de tipo
animal se pasar como parmetro el nombre y se le asignara como edad = 0,
visualizando adems el mtodo nace().
Crear una clase llamada TestAnimal2 con un mtodo main que permita crear
un objeto llamado animal2 utilizando el constructor diseado y visualizando
los datos del animal2
Unidad 5: Clases y Objetos
49
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
SOBRECARGA DE MTODOS CONSTRUCTORES
Lo normal es escribir uno o ms constructores (sobrecarga) permitiendo dar flexibilidad a la
hora de inicializar un objeto
Ejemplo
class Alumno{
Alumno (String nombre, String apellidos, int ao){ // mtodo constructor
this.nombre =nombre;
this.apellidos =apellidos;
this.ao_nacimiento =ao;
}
Alumno (String nombre, String apellidos, int ao, String grupo, Horario turno){
//metodo constructor
this.nombre =nombre;
this.apellidos =apellidos;
this.ao_nacimiento =ao;
this.grupo =grupo;
this.horario =turno;
}
//resto de la clase igual
}
Unidad 5: Clases y Objetos
50
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
SOBRECARGA DE MTODOS CONSTRUCTORES
A partir de la clase entonces podramos utilizar cualquiera de los
dos constructores
Si queremos crear objetos de tipo clase Alumno, deberemos utilizar los mtodos
constructores definidos en la clase
Alumno alum2 =newAlumno(Aitor, Menta, 1980);
Alumno alum3 =newAllumno(Maria Camino,Mechilles, 1982,DAI2,Horario.TARDE)
No podramos utilizar:
Alumno alum1 =newAlumno(); //producir un error pues la clase no tiene definido dicho
constructor.
Unidad 5: Clases y Objetos
51
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS CONSTRUCTORES
El uso de constructores permite comprobar que los objetos se
construyen con los valores apropiados, en caso contrario se puede
lanzar una EXCEPTION y no se creara el objeto
class Nom_clase {
Nom_clase (tipo param1, tipo param2,...) throws Exception {
sentencias para comprobar los parmetros
}
......
}
Unidad 5: Clases y Objetos
52
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODOS CONSTRUCTORES
class Alumno {
Alumno (String nombre, String apellidos, int ao) throws Exception {
if (nombre==null) || ( apellidos == null)
throw new Exception ( Nombre o apellidos null );
if (ao < 0)
throw new Exception ( Ao incorrecto );
this.nombre = nombre;
this.apellido = apellidos;
this.ao_nacimiento = ao;
}
......
}
Unidad 5: Clases y Objetos
53
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
PASO DE PARAMETROS A UN METODO
Cuando se invoca un mtodo de un objeto :
El nmero, el tipo y el orden de parmetros de la llamada debe de
coincidir con lo definido en el mtodo de la clase.
En J ava todos los parmetros se pasan por:
Si son parmetros simples por VALOR, es decir se hace una copia del valor
en el parmetro
Si son OBJETOS se pasan por referencia, es decir se produce una nueva
referencia apuntando al mismo sitio
Unidad 5: Clases y Objetos
54
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
PASO DE OBJETOS COMO PARAMETROS
Si en un mtodo se pasa como parmetro un objeto (referencia a una zona de
memoria donde estn los datos), se produce una nueva referencia apuntando
al mismo sitio para el parmetro del mtodo
Alumno alum1 =newAlumno();
ponerNotas(alum1);
public void ponerNotas(Alumno p_alum){

}
El objeto p_alumest apuntando a la misma zona de memoria que el objeto
alum1, luego podr modificar sus propiedades.
Unidad 5: Clases y Objetos
55
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
PASO DE OBJETOS COMO PARAMETROS
public class TestAlumno {
public static void modificarAlumno(Alumno unAlumno){
unAlumno.nombre ="Pepe";
}
public static void main(String[] args) {
Alumno al;
al =newAlumno();
al.nombre ="J ose";
System.out.println ("El nombre del alumno es "+al.nombre);
modificarAlumno(al);
System.out.println ("El nombre del alumno es "+al.nombre);
}
}
Primero se mostrara J ose y
despus aunque se modifica
dentro del mtodo, al salir y
retornar al programa ppal. se
mantiene la modificacin hecha
en el mtodo
Unidad 5: Clases y Objetos
56
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
EJERCICIOS
Definir una clase que represente un Coche. En la definicin se debe
incluir:
marca
modelo
color
si pintura_metalizada o no
matrcula
tipo de coche( SIN_CARNET, UTILITARIO, FAMILIAR, DEPORTIVO)
ao_fabricacion
modalidad_seguro (A_TERCEROS, A_TODO_RIESGO)
Unidad 5: Clases y Objetos
57
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
EJERCICIOS.
Definir dentro de la clase Coche los siguientes mtodos:
Modificar la clase coche para que los atributos estn protegidos
y solo puedan ser accedidos desde la propia clase
definir un constructor que permita inicializar solo la matricula del
coche
definir un constructor que permita inicializar la marca, modelo,
color, matricula y tipo de seguro
Definir los mtodos getter y setter para cada atributo.
Definir un mtodo llamado imprimeCoche que visualice el
mensaje :
Tiene un coche marca:(marca).modelo: .(modelo).. de color: (color).
Unidad 5: Clases y Objetos
58
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODO MAIN
Las clases solo se pueden ejecutar si alguna de ellas incluye un mtodo
main donde se definan las variables y los objetos para que
interacten entre s.
Para crear un programa que se pueda ejecutar, necesitamos definir una
clase que sea pblica y que contenga un mtodo main
public class EjemploClaseEjecutabo{
public static void main( String[] args){
..
}
}
Unidad 5: Clases y Objetos
59
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases
MTODO MAIN
Las instrucciones del mtodo main son el punto de comienzo del
programa cuando se ejecute
Normalmente se suele crea una clase aparte, en la que solamente se
incluye el mtodo main con las instrucciones para que comience el
programa.
Unidad 5: Clases y Objetos
60
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Objetos
OBJETOS
Los objetos en J ava no son ms que variables de tipo complejo
El tipo de dato de un objeto es el de la clase de la que se ha
instanciado
La declaracin de un objeto es idntica a la de una variable, donde
tipo_identificador ser el nombre de la clase que posteriormente
crear el objeto
tipo_identificador nombre_objeto;
Ejemplo:
Coche cocheAlanBrito; //creo una variable objeto de tipo Coche
que tendr todos los atributos y mtodos
de la clase Coche
Unidad 5: Clases y Objetos
61
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Objetos
OBJETOS
El valor por defecto de un objeto sin inicializar es null
Para la inicializacin de un objeto se utiliza uno de los
mtodos constructores definidos en la clase, o en su caso del
constructor por defecto, precedido del operador new.
Si la clase no tiene definidos mtodos constructores, por
defecto existe el constructor
NombreClase nomObjeto = new nombreClase();
Unidad 5: Clases y Objetos
62
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Objetos
OBJETOS
Ejemplo
Coche cocheAlanBrito;
cocheAlanBrito = newCoche(); //si no esta definido ningn
// mtodo constructor
cocheAlanBrito = newCoche(5555 KKK); //si existe constructor
Tipo de la variable
Nombre de la variable
Creo el objeto
Creo el objeto
Unidad 5: Clases y Objetos
63
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Objetos
MANEJO DE OBJETOS Y METODOS
El trabajo con un objeto consiste en acceder a:
Sus atributos
Sus mtodos
El acceso a uno de estos elementos se realiza mediante:
Objeto.atributo
Objeto.metodo( param1, param2,...);
Ejemplo:
cocheAlanBrito.getMatricula();
cocheAlanBrito setMarca(Nissan);
Unidad 5: Clases y Objetos
64
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS.
Definida la clase, crear una nueva clase ejecutable llamada
EmpresaPepitoPerez , donde:
Definir dos objetos llamado cocheEmpresaVentas y
cocheEmpresaDireccion
Crear el objeto asignando en dicho momento los valores a los atributos
marca (Seat), modelo (Panda), color (Rojo), matrcula (5555 KKK) y
Seguro (A_TERCEROS) al cocheEmpresaVentas
Crear el objeto y asignar como matrcula 0000BBB al coche del jefe
A continuacin se invocar al mtodo imprimeCoche para que visualice
los datos del coche del departamento de ventas
Por ltimo se invocar al mtodo para que visualice la matricula de los
dos coches
Unidad 5: Clases y Objetos
65
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
MAS SOBRE MTODOS
varargs: J 2SE 5.0 aadi una novedad a la definicin de un mtodo mediante la
caracterstica varargs
Permite definir un nmero indefinido de parmetros del mismo tipo mediante: ...
Lo que se recibe es un array del tipo definido
Ejemplo:
public int suma( int ... params);
{
int acum=0;
for (int num: params)
acum+=num;
return acum;
}
Indica que se espera un nmero
indeterminado de valores separados por ,
params.length: Contiene la cantidad de
parmetros recibidos
Unidad 5: Clases y Objetos
66
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
MAS SOBRE MTODOS
public class Suma {
public static int sumTotal ( int ... numeros){
int suma=0;
for (int i: numeros)
suma+=i;
System.out.println("Numero de elementos: "+numeros.length);
return suma;
}
public static void main(String[] args) {
int valor_suma1, valor_suma2;
valor_suma1=sumTotal(2,5,7);
System.out.println("la suma de 2+5+7 =" +valor_suma1);
valor_suma2=sumTotal(1,2,3,4,5,6);
System.out.println("la suma de 1+2+3+4+5+6 ="+valor_suma2);
}
}
Unidad 5: Clases y Objetos
67
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Escribir un mtodo llamado mediaAritmtica que, dada una lista de
nmeros reales, calcule y devuelva su media aritmtica. Escribir a
continuacin una clase llamada MediaAritmtica que contenga a ese
mtodo y utilizndolo determine la media de los nmeros -10, 5, 3.4,
7.75
Unidad 5: Clases y Objetos
68
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
public class MediaAritmetica {
public static double mediaAritmetica(double ... numeros){
double suma =0.0;
for (double num: numeros){
suma+=num;
}
System.out.println("El nmero de elementos a calcular la media es:"+numeros.length);
return suma/numeros.length;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
double media;
media=mediaAritmetica(-10, 5, 3.4, 7.75);
System.out.println("la media de -10, 5, 3.4, 7.75 es: "+media);
}
}
Unidad 5: Clases y Objetos
69
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Crear una clase llamada Cuenta con las siguientes caractersticas:
Como atributos: titular y saldo
Definir los mtodos constructores para los posibles casos de
apertura de cuenta nueva sin ingreso alguno o con un ingreso de
xxxx,xx , pero en ambos caso siempre se introducir el titular
Definir los siguientes mtodos para operar con los objeto de tipo
cuenta creados:
mtodo para realizar reintegros de xxxx,xx
Mtodo para realizar ingresos de xxx,xx
Metodos getter y setter de todos los atributos
Mtodo datosCuenta para visualizar el titular y el saldo
Unidad 5: Clases y Objetos
70
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Crear una clase llamada BancoDeValliniello que permita crear una
cuenta para el cliente Alan Brito. En un principio la cuenta se abrir
con un saldo nulo y posteriormente se hace un ingreso de 1000. Se
carga a dicha cuenta el importe de 375 de la hipoteca. Realizar
todos los procesos y visualizar despus de cada uno el saldo. Al final
visualizar toda la informacin de la cuenta de Alan Brito
Unidad 5: Clases y Objetos
71
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Modificar la clase llamada BancoDeValliniello que permita crear una
cuenta para el cliente Alan Brito y crear adems dos cuentas para los
clientes Lola Mento y Paco Merbien, la primera abrir la cuenta con
1000 y el segundo con 500. As mismo adems de los
movimientos de Alan Brito, Lola Mento retira 375 y Paco Merbien
ingresa 2000. Visualizar los datos de cada cuenta y calcular el saldo
medio de todos los clientes del Banco, as como el importe total de
dinero que hay actualmente ingresado en el Banco. Visualizar estos
valores.
Unidad 5: Clases y Objetos
72
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
ENTRADA DE DATOS DE USUARIO
import java.util.*;
public class Entrada {
public static void main(String[] args) {
String cad;
Scanner teclado;
teclado = new Scanner(System.in);
System.out.print("introduce una cadena: ");
cad= teclado.nextLine();
System.out.println("\n has introducido : "+ cad);
}
}
Mtodos de la clase Scanner
Unidad 5: Clases y Objetos
73
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
ENTRADA DE DATOS DE USUARIO. Otra forma
import java.io.InputStreamReader;
public class LecturaTeclado2 {
public static void main(String[] args) {
// Crear el buffer de lectura del teclado
BufferedReader br =new BufferedReader(newInputStreamReader (System.in));
//cadena almacenar lo que teclee el usuario
String cadena =newString("");
//Lanzar el controlador de excepciones por si se produce algn error de sistema al leer el teclado
System.out.print("Introduce tu nombre: ");
try {
cadena =br.readLine();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Tu nombre es "+cadena);
}
}
Unidad 5: Clases y Objetos
74
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Modificar el ejercicio del BancoDeValliniello para que el usuario pueda
introducir el nombre del titular y las cantidades que el quiera por teclado. En el
caso de la apertura de cuenta se le preguntar la cantidad con la que va a
abrir la cuenta si la cantidad es 0 se abrir la cuenta asignando solo el
nombre del titular y si la cantidad es distinta de cero se al correspondiente
constructor.
Despus solicitar que introduzca por teclado una cantidad a ingresar por
teclado y visualizar el estado de la cuenta
Realizar el mismo proceso para retirar una cantidad que se introduce por
teclado
Unidad 5: Clases y Objetos
75
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Disear un pequeo programa que permita visualizar el siguiente
men y gestionar cada una de las opciones
BANCO DE VALLINIELLO
1. Abrir cuenta sin ingreso:
2. Abrir cuenta con ingreso
3. Realizar ingreso en cuenta
4. Realizar reintegro en cuenta
5. Ver saldo de cuenta
6. Salir
Elegir opcin (1-6):
Unidad 5: Clases y Objetos
76
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIO
Disear una clase java llamada Marciano con los siguientes atributos:
Vivo de tipo boolean y false por defecto
Nombre de tipo String
Num_marcianos que permitir contabilizar el nmero de marcianos vivos
que hay en cada momento
Una constante llamada Soy y cuyo valor ser marciano
Para los mtodos tendremos
Un mtodo constructor que pasar como parmetro el nombre del
marciano y se encargar de realizar las siguientes acciones:
Cambiar el estado del atributo vivo y ponerlo a true
Asignar el nombre al atributo nombre
Incrementar el nmero de marcianos
Invocar al mtodo nace.
Un mtodo llamado nace que realizar las siguientes acciones:
Visualizar el siguiente mensaje: Hola, he nacido y soy el marciano xxxxxxx
Unidad 5: Clases y Objetos
77
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Ms mtodos
Un mtodo llamado muere que pasado como parmetro el nombre del
marciano realiza las siguientes acciones:
Si el marciano esta vivo: cambiar el valor del atributo vivo, actualizar el valor
del atributo numero de marcianos y visualizar el mensaje el marciano xxxxx
ha muerto
Un mtodo llamado esta_vivo que pasado como parmetro el nombre del
marciano nos indica si esta vivo o no
Incluir las funciones getter y setter necesarias.
Unidad 5: Clases y Objetos
78
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Disear una aplicacin llamada MARTE que permita crear y matar marcianos.
Deber de crear a 3 marcianos et1, et2, et3
Matar al segundo marciano et2
Crear a un nuevo marciano et4.
Cada vez que se cree un marciano deber de aparecer el mensaje Hola he
nacido y soy el marciano y mostrar el nmero de marcianos vivos en
ese momento
Al final se deber de mostrar la situacin en la que est cada uno de los
marcianos
Unidad 5: Clases y Objetos
79
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Objetos
DESTRUCTORES
Son los mtodos encargados de eliminar los objetos de memoria,
liberando el espacio ocupado por los mismos.
J ava no tiene un mtodo destructor propiamente dicho, existe lo que se
denomina Garbage Collector: proceso de la J VM que se encarga de
buscar aquellos objetos no utilizados por la aplicacin para su
eliminacin. Los objetos no utilizados son los que no son
referenciados por ninguna variable y esto se puede dar cuando:
Un objeto se iguala a null
Un objeto se iguala a otro objeto
Se termina el mbito del objeto
Unidad 5: Clases y Objetos
80
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Objetos
LIMPIEZA: Finalizacin y recoleccin de basura
El recolector de J ava solo libera memoria asignada con new, no memoria
asignada de forma especial
Si se quiere garantizar la limpieza ser necesario definir el mtodo finalize(),
que permite llevar a cabo la limpieza a la vez que la recoleccin de basura.
Ej: Creacin de un objeto que se dibuja a si mismo en pantalla, si este no se
borra a si mismo esa imagen en pantalla, podra ser que no se elimine
nunca y siempre se ver. Si se pone alguna funcionalidad eliminadora
dentro del propio objeto en finalize(), si un objeto es eliminado por el
recolector, la imagen ser eliminada
El recolector comprobar siempre si existe el mtodo finalize().
Unidad 5: Clases y Objetos
81
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Objetos
LIMPIEZA: Finalizacin y recoleccin de basura
La recoleccin de basura no garantiza la destruccin
Los objetos podran no ser eliminados por el recolector de basura, en
cuyo caso para garantizar dicha eliminacin finalize()
Solo utilizar el mtodo finalize() para que sea utilizado por el
recolector
Unidad 5: Clases y Objetos
82
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Resumen Modificadores
No se aplica Es un mtodo de la
clase, solo puede usar
las variables de clase.
Se puede invocar con
el nombre de la clase
Es una variable de la clase,
solo hay una para todos los
objetos de la clase y por lo
tanto en todos los objetos
tiene el mismo valor
No se aplica
static
No se aplica No se puede
sobrescribir
Su valor no se puede
cambiar
No pueden crearse
subclases
final
Todas las interfaces
son abstractas
aunque no se
declaren as
No hay
implementacin solo
se da el encabezado
No se aplica La clase tiene
mtodos no
implementados
abstract
Visible solo en su
clase
Visible solo en su
clase
Visible solo en su clase No se aplica
private
Visible en el
paquete de su clase
Visible en el paquete
de su clase
Visible en el paquete de su
clase
Visible solo en su
paquete
ninguno
Visible en el mismo
paquete y en todas
las subclases
Visible en el mismo
paquete y en todas las
subclases
Visible en el mismo paquete
y en todas las subclases
No se aplica a
clases protected
Visible donde su
clase lo sea
Visible donde su clase
lo sea
Visible donde su clase lo
sea
Visible en todas
partes
public
interfaces Metodos Variables clases modificador
Unidad 5: Clases y Objetos
83
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Crearemos la clase Punto
Dos atributos private de tipo double
Un constructor con dos parmetros de tipo double que inicialicen los
atributos
Un constructor por defecto sin parmetros que inicialice a 0
Los setter y getter correspondientes
Un mtodo calcularDistanciaDesde(Punto param_punto), que reciba un
objeto Punto como parmetro y devuelva un double que sea la distancia
a dicho punto
La distancia entre dos puntos se calcula como:
raiz_cuadrada((p1.x-p2.x)+(p1.y-p2.y))
Mtodo para calcular la raiz cuadrada Math.sqrt(num)
Unidad 5: Clases y Objetos
84
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Crear una clase Triangulo que permita calcular el rea y el permetro.
Se supone que ser un triangulo rectngulo para facilitar el calcular
el rea. Analizar cuales seran los atributos, sus mtodos
constructores. Reutilizar alguna clase diseada anteriormente
Crear una clase Circulo que permita calcular el rea y el permetro.
Analizar cuales seran los atributos necesarios y sus mtodos.
Reutilizar alguna clase
Unidad 5: Clases y Objetos
85
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Crear una clase llamada TestFiguras, que en su mtodo main, haga
lo siguiente:
Cree e inicialice dos objetos de la clase punto y muestre la
distancia entre ellos
Cree un objeto de la clase Circulo, calcule su rea y su permetro
y muestre la distancia hasta el primero de los puntos creados
anteriormente
Cree un objeto de la clase Triangulo, calcule su rea y su
permetro
Unidad 5: Clases y Objetos
86
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Desarrollar una clase llamada Asignatura que tenga:
dos atributos el nombre de la asignatura y la calificacin
Crear los constructores que se crean oportunos, sabiendo que siempre
que se cree una asignatura a la fuerza es necesario asignarle un
nombre, no as la calificacin que no tiene que ser obligatoria
Crear los getter para los dos atributos y setter para la calificacin
Una clase llamada Profesor con:
un mtodo llamado ponerNotas que recibe un parmetro de tipo Alumno
y permitir poner una calificacin aleatoria a cada una de las asignaturas
que tenga el alumno
un mtodo que recibido un alumno permita calcular y devolver su media
Unidad 5: Clases y Objetos
87
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Clases y Objetos
EJERCICIOS
Desarrollar una clase llamada GestionProfesor que:
Cree e inicialice tres Asignaturas cualesquiera
Cree un alumno con las tres asignaturas
Cree un profesor que le ponga las calificaciones al alumno y
muestre en pantalla la media del alumno.
Unidad 5: Clases y Objetos
88
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.String
Permite la manipulacin de cadenas.
Una vez creado un objeto tipo String no se puede modificar.
Existen distintos constructores para crear objetos tipo String
String cadena = newString(); //se inicializa a
String cadena = newString (Hola);
String cadena= Hola; // nica excepcin al uso de new
Para un String la primera posicin de la cadena es la 0
Unidad 5: Clases y Objetos
89
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.String
Implementa una serie de mtodos para el manejo de las
cadenas de caracteres:
public char charAt(int i) : devuelve el carcter que ocupa la posicin i
public String concat (String s1): devuelve la cadena concatenando al
final s1 (igual que +)
public int indexOf (int carcter) : devuelve la primera posicin donde
aparece el carcter (-1 si no existe)
public int compareTo(String s1) : Compara la cadena con s1 y
devuelve 0 si son iguales, <1 si es menos y >1 si es mayor
public String replace (char oldChar, char newChar) : reemplaza el
carcter viejo por el nuevo
Unidad 5: Clases y Objetos
90
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.String
public int length() : devuelve la longitud de una cadena de caracteres
public String substring (int i) : devuelve la cadena desde la posicin i
hasta el final
public String substring (int i, int j) : devuelve la cadena desde la
posicin i hasta la posicion j
public String toLowerCase() : devuelve la cadena en minsculas
public String trim() : devuelve la cadena sin espacios en blanco ni por
delante ni por detrs
Unidad 5: Clases y Objetos
91
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.String
La clase String sobrescribe el mtodo equals de la clase
java.lang.Object, de esta forma podemos saber si dos objetos String
distintos representan la misma cadena o no
String s1= newString(abc);
String s2 = newString (abc);
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
Unidad 5: Clases y Objetos
92
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
Ejercicios
Leer una cadena por teclado:
Pasarla a maysculas y visualizarla
Pasarla a minsculas y visualizarla
Contar cuantas vocales hay
Cuantas consonantes
En que posicin esta la primera vocal y en cual la ltima
Visualizar su longitud
Remplazar todas las a por un *
Unidad 5: Clases y Objetos
93
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.StringBuffer
Es otra clase relacionada con la cadena de caracteres y
similar a la clase String, con la ventaja de que los objetos de
esta clase s se pueden alterar despus de haberlos creado
Al igual que esta la primera posicin es la 0
Existen distintos constructores para crear objetos tipo
StringBuffer
StringBuffer cadena = newStringBuffer(); //se inicializa a
StringBuffer cadena = newStringBuffer (Hola);
StringBuffer s= newSrtingBuffer(3); //tamao inicial
Unidad 5: Clases y Objetos
94
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.StringBuffer
Implementa una serie de mtodos para el manejo de las
cadenas de caracteres:
public StringBuffer append(char c) : aade el carcter c al
StringBuffer. Es un mtodo sobrecargado que permite recibir otros
tipos de parmentros
public char charAt(int i) : devuelve el carcter que ocupa la posicin i
public String concat (String s1): devuelve la cadena concatenando al
final s1 (igual que +)
public int indexOf (int carcter) : devuelve la primera posicin donde
aparece el carcter (-1 si no existe)
Unidad 5: Clases y Objetos
95
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.StringBuffer
public int length() : devuelve la longitud de una cadena de caracteres
public String substring (int i) : devuelve la cadena desde la posicin i
hasta el final
public String toString (): devuelve el String representado por
StringBuffer
public StringBuffer reverse() : devuelve la cadena al revs
Unidad 5: Clases y Objetos
96
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.StringBuffer
public void setCharAt(int i, char c) : reemplaza el carcter de la
posicin i por el carcter que aparece en c
public StringBuffer replace(int i, int j, String s1) : reemplaza la cadena
entre la posicin i y la posicin j por s1
public StringBuffer insert (int i, char c) : inserta c en la posicin i
public StringBuffer delate (int i, int j): elimina los caracteres entre la
posicin i y la posicin j
Unidad 5: Clases y Objetos
97
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE String vs. StringBuffer
la sentencia:
String s = " Qu" + " tal ?" ;
es interpretada por el compilador como:
String s = new StringBuffer().append( " Qu" ).append( " tal ?" ).toString();
y se marcara el StringBuffer para borrarlo ya que el contenido pasa al objeto
String. Tambin, la sentencia:
s += " por ah!" ;
sera interpretada por el sistema como:
String s = new StringBuffer().append( s ).append( " por ah!" ).toString();
y volvera a marcar para borrar el nuevo StringBuffer.
Unidad 5: Clases y Objetos
98
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.System
Contiene utilidades genricas del sistema
Todos sus atributos y mtodos son estticos
Tiene tres atributos muy utilizados:
public static final PrintStreamout;
representa por defecto el streamde salida por pantalla
public static final InputStreamin;
representa por defecto el streamde entrada por teclado
public static final PrintStreamerr;
representa por defecto el streamde salida de errores
Unidad 5: Clases y Objetos
99
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.Math
Es una clase con utilidades matemticas
Todos sus atributos y mtodos son estticos
public static final double PI: atributo que representa el nmero PI
public static final double E : atributo que representa el nmero E
Otros mtodos:
public static double abs(double a) : devuelve el valor absoluto. Est
sobrecargado para otros tipos de datos
public int max(int a, int b) : devuelve el mayor entre a y b. Esta
sobrecargado
public int min(int a, int b) : devuelve el menor entre a y b. Esta
sobrecargado
Unidad 5: Clases y Objetos
100
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE java.lang.Math
public static double pow(double a,double b) : calcula a
b
public static double random() : devuelve nmero aleatorio entre [0.0 y
1.0)
public static long round(double a) : redondea al nmero entero mas
cercano. Mtodo sobrecargado para otros tipos de datos
public static double sqrt(double a) : calcula la raz cuadrada
Unidad 5: Clases y Objetos
101
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
OTRAS CLASES
Para manejar fechas
java.util.Date y java.util.Calendar
Para formatear fechas y nmeros
J ava.text.DateFormat y java.text.Number.Format
Para dividir una cadena en tokens
J ava.util.StringTokenizer
Unidad 5: Clases y Objetos
102
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE Date esta descatalogada
Pertenece al paquete java.util y se utiliza principalmente para obtener
la fecha y hora del sistema en un instante. Suele utilizarse junto a
otras clases que veremos a continuacin
Algunos mtodos:
boolean after(Date) Si la fecha es posterior a la del parmetro
boolean before(Date) Si la fecha es anterior a la del parmetro
long getTime() Obtiene el nmero de milisegundos que han pasado
desde el 1 de enero de 1970
void setTime(long) Establece la fecha sin indicamos los
milisegundos
int getDay(): nmero de da de la semana
int getDate(): nmero de da del mes
Unidad 5: Clases y Objetos
103
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE Date
int getMonth(): nmero de da de la semana
int getYear(): ao
int getHour(): hora
int getMinutes(): minutos
int getSeconds(): segundos
String toString(): visualizar toda la fecha
Date d = new Date(); //asigna fecha sistema
Date d = new Date(System.currentTimeMillis()); /asigna fecha sistema
d.getMonth() nmero del mes
Unidad 5: Clases y Objetos
104
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE Calendar y GregorianCalendar
Calendar es una clase abstracta que contiene mtodos para
convertir objetos de la clase Date a enteros que representen
fechas y horas concretas
La clase GregorianCalendar hereda de Calendar y es la que se
utiliza normalmente
Date d = newDate();
GregorianCalendar gc = newGregorianCalendar();
gc.setTime(d); // asigno una fecha al objeto gc
Unidad 5: Clases y Objetos
105
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE GregorianCalendar
Se aplica siempre sobre un objeto de tipo GregorianCalendar
gc.metodo(.);
setTime(objetoDate) : asigna una fecha
get(Calendar.YEAR) : muestra el ao
get(Calendar.MONTH) : muestra el nmero de mes. En el calendario Gregoriano el
mes empieza en 0
get(Calendar.DAY_OF_MONTH) : muestra el dia del mes
get(Calendar.DAY_OF_WEEK_IN_MONTH) : muestra el n de da de la semana
get(Calendar.DATE) : coge el dia
get(Calendar.HOUR_OF_DAY) : coge la hora
get(Calendar.MINUTE) : coge el minuto
get(Calendar.SECOND) : coge el segundo
add(Calendar.DATE, entero): incrementara la fecha x das, actualizando mes, y ao si
es necesario y almacena la fecha nueva en el propio objeto. Si en vez de Calendar.DATE
se utiliza Calendar.MINUTE actualiza la hora, y as con todos los tipos Calendar
Unidad 5: Clases y Objetos
106
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE GregorianCalendar
GregorianCalendar var_fecha = new GregorianCalendar (yy, MM, DD);
GregorianCalendar var_fecha= newGregorianCalendar (yy,MM,DD, hh,mm);
IMPORTANTE: La numeracin de los meses y de los dias de la semana empieza desde 0,
es decir Enero = 0, Febrero = 1, y domingo = 0, lunes = 1,
Ejemplo:
GregorianCalendar gc =newGregorianCalendar(); //creamos objeto fecha
gc.setTime(newDate()); //asignamos la fecha del sistema
System.out.println(Mes :+gc.(Calendar.MONTH)+1); //cogemos el mes
Unidad 5: Clases y Objetos
107
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
Ejercicios
Crear un programa que muestre la fecha y hora actual que tiene el
sistema
public class TestFechaSistema{
public static void main(String[] args) {
Date d =new Date(System.currentTimeMillis());
System.out.println("La fecha del sistema es: "+d.toString());
System.out.println("Otra forma de ver la fecha es " +d);
GregorianCalendar fecha =new GregorianCalendar();
System.out.println("Otra forma con el GregorianCalendar es: "+fecha.getTime());
}
Unidad 5: Clases y Objetos
108
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
Ejercicios
Modificar el ejercicio anterior para que visualice:
Dia: .
Mes: ENERO/FEBRERO/.
Ao: ..
Hora: ..
Minutos: ..
Segundos: ..
Unidad 5: Clases y Objetos
109
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
Ejercicios

}
System.out.println("Mes:"+mes +" que corresponde
al mes de " +cad);
System.out.println("Ao:"+
fecha.get(Calendar.YEAR));
System.out.println("Hora: "+
fecha.get(Calendar.HOUR_OF_DAY)+":"+fecha.get(C
alendar.MINUTE)+":"+fecha.get(Calendar.SECOND));
}
import java.util.*;
public class TestFechaSistema2 {
public static void main(String[] args) {
String cad="";
GregorianCalendar fecha =newGregorianCalendar();
System.out.println("Dia:"+fecha.get(Calendar.DATE) +
", "+fecha.get(Calendar.DAY_OF_WEEK)+" dia de la
semana");
int mes =fecha.get(Calendar.MONTH)+1;
switch (mes){
case 1: cad="ENERO";
break;
case 2: cad=FEBRERO";
break;
Unidad 5: Clases y Objetos
110
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
CLASE DateFormat y SimpleDateFormat
DateFormat es una clase abstracta que permite dar formato a fechas
y horas. Proporciona mtodos para convertir a Strings en objetos de
la clase Date y viceversa
SimpleDateFormat hereda de la anterior y es la que se utiliza
normalmente. Para utilizarla es necesario pasarle en el constructor el
formato de fecha a utilizar
Ejemplo
SimpleDateFormat formatoFecha =new SimpleDateFormat("dd/MM/yy hh:mm");
Date fecha2 =formatoFecha.parse("13/12/2007 20:30");
String cadenaFecha =formatoFecha.format(fecha2);
System.out.println(cadenaFecha);
Stringque
convierto a fecha
Fecha que
convierto a String
Unidad 5: Clases y Objetos
111
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
Ejercicios
Crear un programa que pida una fecha de nacimiento por teclado y
muestre los siguientes datos
La edad de la persona
En qu da de la semana naci
En qu mes (en letra)
Si el ao era bisiesto
Unidad 5: Clases y Objetos
112
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
Ejercicios
int diaNto =fechaNto.get(Calendar.DATE);
System.out.println("fecha actual :" +
diaActual+"/"+mesActual+"/"+anioActual);
System.out.println("fecha Nto :" +
diaNto+"/"+mesNto+"/"+anioNto);
if (anioNto <anioActual)
{
if ( mesActual <mesNto)
edad =anioActual-anioNto-1;
else {
if (diaActual <diaNto)
edad =anioActual-anioNto-1;
else
edad =anioActual-anioNto;
}
}
else
edad =0;
import java.util.*;
public class TestFecha4 {
public static boolean bisiesto(int anio)
{
return ((anio % 4 ==0) && (anio % 100 !=0) || (anio %
400 ==0));
}
public static void main(String[] args) {
GregorianCalendar fechaActual =
newGregorianCalendar();
GregorianCalendar fechaNto =
newGregorianCalendar(2000,4,28);
int edad;
int anioActual=fechaActual.get(Calendar.YEAR);
int mesActual=fechaActual.get(Calendar.MONTH)+1;
int diaActual =fechaActual.get(Calendar.DATE);
int anioNto =fechaNto.get(Calendar.YEAR);
int mesNto=fechaNto.get(Calendar.MONTH)+1;
Unidad 5: Clases y Objetos
113
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
Ejercicios
System.out.println("Edad : "+ edad);
System.out.println("Dia de la semana en que nacio: "+
fechaNto.get(Calendar.DAY_OF_WEEK));
System.out.println("Nombre del mes en que nacio:
"+(fechaNto.get(Calendar.MONTH)+1));
System.out.print("El ao de nacimiento : "+fechaNto.get(Calendar.YEAR));
if (bisiesto(fechaNto.get(Calendar.YEAR)))
System.out.println(" fue bisiesto");
else
System.out.println(" no fue bisiesto");
}
Unidad 5: Clases y Objetos
114
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
Ejercicios
Disear una clase llamada Fecha con un atributo llamado fecha de tipo
GregorianCalendar
Dispondr de 3 constructores:
Si no se pasa ningn parmetro se coger la fecha del sistema
Podr recibir 3 parmetros dia, mes,anio con el que se construir la
fecha new GregorianCalendar(yy,MM,dd);
Podr recibir directamente un parmetro de tipo GregorianCalendar
Disear los mtodos siguientes:
Un mtodo para comprobar si la fecha es vlida
Un mtodo que devuelva el nombre del mes
Un mtodo que devuelva el nombre del da de la semana
Un mtodo que devuelva el nmero de da
Un mtodo que devuelva el numero de mes
Un mtodo que devuelva el ao
Un mtodo que devuelva un String con la fecha en formato dd/mm/yy
Un mtodo que devuelva un String con la fecha en Hoy es martes, 25
de abril de 2007
Unidad 5: Clases y Objetos
115
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
WRAPPERS DE TIPOS PRIMITIVOS
Un wrapper permite convertir un dato de tipo primitivo (int, double,
float,...) en un OBJ ETO (tipo completo).
En el paquete java.lang.* existe un wrapper para cada tipo primitivo
(Boolean, Char, Byte, Short, Long, Integer, Float, Double)
Casi siempre suelen tener los siguientes mtodos:
Integer a = newInteger(3);
Integer b = integer.valueOf(3); //convertidores al tipo complejo
int c= Integer.parseInt(3); //convertidores al tipo primitivo
String d= Integer.toString(c); //convertidores de tipo primitivo a String
int e= b.intValue(); //extractores del tipo primitivo (b es un objeto Integer)
Unidad 5: Clases y Objetos
116
programacin en java
R
o
b
e
r
t
o

P
o
r
t
a
b
a
l
e
s
2
0
0
7

Algunas Clases de Java
INSTANCEOF
Es un operador especial del lenguaje java que permite comprobar si
un objeto es una instancia de una clase o no. Devuelve un valor tipo
boolean
objeto instanceof Clase // devuelve boolean
Ejemplo:
num instanceof Integer //comprobara si num es un objeto de tipo Integer
//devolviendo true o false
alum1 instanceof Alumno //

You might also like