Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CLASES Y OBJETOS
CLASES Y OBJETOS
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Definicin de clase.
Variables miembro o atributos.
Mtodos.
Sobrecarga de mtodos
Manejo de objetos.
Constructores.
Paso de argumentos a mtodos.
Uso de this.
Variables miembro de clase static o atributos estticos.
Variables finales.
Mtodos de clase (static).
Devolucin de objetos
Ejercicios
1. DEFINICIN DE CLASE
Una
1. DEFINICIN DE CLASE
Todas las variables y funciones de Java deben
pertenecer a una clase. No hay variables ni
funciones globales.
En un fichero se pueden definir varias clases, pero
no puede haber ms de una clase public. El
fichero debe llamarse como la clase pblica.
Slo se especifica un mtodo main en la clase que
sea punto de partida del programa.
Las
clases se pueden agrupar en paquetes
(packages). Esta agrupacin est relacionada con la
jerarqua de directorios y ficheros que guardan las
clase.
1. DEFINICIN DE CLASE
class Alumno {
//Atributos
String nombre;
int edad;
//Mtodos
void VisualizarNombre() {}
void VisualizarEdad() {}
1. DEFINICIN DE CLASE
Por defecto tenemos acceso a las clases definidas en
java.lang (que es el paquete bsico .lang de lenguajedentro del paquete java). Para utilizar clases de otros
paquetes habr que referirse a ellos explcitamente.
Por ejemplo, para importar la clase math hay que usar la
siguiente instruccin:
import java.math.*;
1. DEFINICIN DE CLASE
final: Una clase final se declara como la clase que termina una cadena de
herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math
es una clase final.
public:
synchronizable:
Las clases public son accesibles desde otras clases, bien sea
directamente o por herencia. Son accesibles dentro del mismo paquete en el
que se han declarado. Para acceder desde otros paquetes, primero tienen que
ser importadas.
Este modificador especifica que todos los mtodos
definidos en la clase son sincronizados, es decir, que no se puede acceder al
mismo tiempo a ellos desde distintos threads; el sistema se encarga de
colocar los flags necesarios para evitarlo. Este mecanismo hace que desde
7
threads diferentes se puedan modificar las mismas variables sin que haya
problemas de que se sobreescriban
long: 0L
double: 0.0d
boolean: false
nombreObjeto.nombreMtodo
Ejemplo
UT3_a_Crculo.
atributos pi y radio y
calculoLongitud, calculoArea:
class Circulo{
private float pi=3.1416;
private int radio;
Clase Circulo,
mtodos ponRadio,
Clase
Atributos
13
Hacer
PROUT3P1 Ejer4_Clase Coche
15
4. SOBRECARGA DE MTODOS
Los
4. SOBRECARGA DE MTODOS
En
17
4. SOBRECARGA DE MTODOS
18
4. SOBRECARGA DE MTODOS
Desde el main se llama a todas las versiones del mtodo test y cada una
ejecuta el cdigo del mtodo asociado a su versin, se distinguen por el
tipo de parmetros.
19
4. SOBRECARGA DE MTODOS
PROUT3P1 Ejer5_Clase
Operaciones
20
5. MANEJO DE OBJETOS
Cuando
5. MANEJO DE OBJETOS
Ejemplo UT3_a_Crculo_Contina:
Circulo c;
//c es la referencia al objeto de la clase Circulo
c= new Circulo();//new reserva, en tiempo de ejecucin,
//memoria para el objeto y retorna una
//referencia al mismo.
PI
radio
c
null
ponRadio()
calculoLongitud()
calculoArea()
22
5. MANEJO DE OBJETOS
radio
ponRadio()
cc
calculoLongitud()
calculoArea()
23
5. MANEJO DE OBJETOS
5. MANEJO DE OBJETOS
EjerPP_UT3_Rectngulo:
6. CONSTRUCTORES
El constructor es un mtodo que se llama
automticamente cuando se crea un objeto de una
clase. Es decir, cuando se hace un new.
Su nombre es el mismo que el de la clase, pero
no devuelve ningn valor.
Sintcticamente es similar a un mtodo: permite
parmetros pero no retorna ningn valor (ni
siquiera se puede especificar void).
Su funcin fundamental es inicializar el estado
interno de un objeto.
Los
constructores pueden tener tambin los
modificadores
de
acceso
public,
private,
protected y package.
26
6. CONSTRUCTORES
Una clase puede tener varios constructores
(sobrecarga).
Cuando en una clase no hay constructor, se llama
constructor por defecto al que no tiene
parmetros, no es necesario que este implementado
por el programador, ya que Java asume por defecto
que tiene esta cabecera public nombreClase()
Es decir, si el programador no disea constructor
para una clase, el compilador crea uno por defecto que
inicializa los atributos de la clase a los valores por
defecto.
Si el programador define un constructor, el por
defecto es sustituido por este o estos (si son varios).
En Java NO hay destructores; el sistema se
encarga automticamente de liberar la memoria de
los objetos que han perdido la referencia.
27
6. CONSTRUCTORES
Ejemplo UT3_a_Crculo_Contina:
class Circulo{
private float pi=3.1416;
private int radio;
public Circulo(){
radio=0;
}
public Circulo(int r){
radio=r;
}
public void ponRadio(int r) {...}
public float calculoLongitud() {...}
public float calculoArea() {...}
28
6. CONSTRUCTORES
29
30
31
Ejemplo UT3_a_Crculo_Contina:
objetos como parmetros:
Si passemos por
parmetro int radio, no
podramos modificarlo,
dentro del mtodo, solo
operar con ese valor.
Paso
de
class Circulo{
private float pi=3.1416;
private int radio;
public Circulo(){...}
public Circulo(int r){...}
public void ponRadio(int r) {...}
public float calculoLongitud() {...}
public float calculoArea() {...}
Hacer
PROUT3P1 Ejer6_7_Clase Cuadrado
32
8. USO DE THIS
this
Slo
Dentro
8. USO DE THIS
class Circulo{
private float pi=3.1416;
private int radio;
public Circulo(){
radio=0;
}
public Circulo(int r){
radio=r;
}
................................
class Circulo{
private float pi=3.1416;
private int radio;
public Circulo(){
radio=0;
}
public Circulo(int radio){
this.radio=radio;
}
.............................
34
8. USO DE THIS
EjemploThis incremento(){
i++;
return this;
}
void imprimeThis(){
System.out.println(i);
}
public static void main(String [] args ){
EjemploThis x=new EjemploThis();
x.incremento().incremento().imprimeThis();
}
35
Declaracin:
[modificador acceso] static tipo nombreVar;
Utilizacin: Nombre_clase.nombreVar
Si no se inicializan en la declaracin, se les da
valor por defecto, tanto a los tipos primitivos como a
las referencias.
Se inicializan siempre antes que cualquier objeto de la
clase.
Todos los objetos de una misma clase comparten las
variables static.
36
Ejemplo UT3_a_Crculo_Contina:
class Circulo{
private static float pi=3.1416;
private int radio;
public Circulo(){
radio=0;
}
public Circulo(int r){
radio=r;
}
public void ponRadio(int r) {...}
public float calculoLongitud() {...}
public float calculoArea() {...}
37
Ejemplo UT3_a_Crculo_Contina:
class Circulo{
private final float PI=3.1416;
private int radio;
public Circulo(){
radio=0;
}
public Circulo(int r){
radio=r;
}
public void ponRadio(int r) {...}
public float calculoLongitud() {...}
public float calculoArea() {...}
39
42
12. EJERCICIOS
EjerPP_UT3_Ejercicio1:
Dadas la siguientes clases. Identifica las sentencias no
vlidas, razonando la respuesta:
class Ejercicio1{
public final int A = 345;
public int b;
private float c;
private void metodoUno( int a ){
b= a;
}
public float metodoDos( )
{
return 23;
}
}
class Principal{
public static void main( String[] args
){
Ejercicio1 q1;
q1 = new Ejercicio1( );
q1.A = 12;
q1.B= 12;
q1.C= 12;
q1.metodoUno( );
System.out.println( q1.metodoDos( 12
) );
q1.c = q1.metodoDos( );
}
}
43
12. EJERCICIOS
EjerPP_UT3_Ejercicio2: Indica cul sera la salida del
siguiente cdigo:
class Ejercicio2{
class Principal_2{
public int contador;
public static void main( String[] args ){
public void init( ){
Ejercicio2 q3;
contador = 1;
q3 = new Ejercicio2( );
}
q3.init();
public int incrementar( ){
q3.incrementar( );
contador = contador +1;
q3.incrementar( );
return contador;
System.out.println( q3.obtenerContador( ) )
}
}
public int obtenerContador(){ }
return contador;
}
}
PROUT3P1 Ejer9_Horas
PROUT3P1 Ejer10_Polinomios
44