de Telecomunicacin
Objetos y clases
Juan Carlos Cruellas
cruellas@ac.upc.es
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Objetos y clases
Concepto de objeto.
Concepto de clase.
Clases, objetos y programas.
Clases en Java.
Objetos en Java.
Creacin de objetos (instanciacin de clases).
Acceso a miembros de objetos.
Modificadores.
static
final
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Concepto de objeto
Definicin de objeto: .
Entidad que contiene unos datos particulares (DATOS
MIEMBRO) y unas operaciones concretas sobre ellos
(FUNCIONES MIEMBRO).
Elementos a resaltar:
Un objeto contiene informacin: DATOS MIEMBRO
(tambin llamados atributos). En C los struct tambin
podan contener informacin de diferente tipo (miembros de
la estructura).
Un objeto adems (y ah radica la gran diferencia con los
tipos de datos estructurados de C), posee operaciones que
manipulan los valores de los datos miembro: FUNCIONES
MIEMBRO (mtodos).
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Concepto de objeto
No orientacin
a objetos
Struct_0
Funcin_0
Struct_1
Orientacin
a objetos
Objeto_0
dato_0
dato_1
Funcin_1
funcin_0
Funcin_2
Struct_2
U PC
Departamento
Arquitectura
Computadores
funcin_1
funcin_2
J.C. Cruellas
Concepto de clase
Una clase es una abstraccin que describe un
conjunto de objetos que poseen los mismos datos
miembro (los datos miembro de cada objeto particular
pueden tener diferentes valores), las mismas
funciones miembro (idntico cdigo) y la misma
semntica.
A un objeto de una clase tambin se le denomina
instancia de una clase.
Un ejemplo de clase:
Aulario: cualquier edificio con aulas.
Coordenada de tablero de ajedrez: un par de enteros del 1
al 8.
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Concepto de clase
Un ejemplo de objeto:
El aulario A6. Uno de los aularios del campus.
La coordenada (1,3).
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Departamento
Arquitectura
Computadores
J.C. Cruellas
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Clases en Java.
public class Coordinate{
protected int row,col ;
public Coordinate(){
this.row = 1 ;
this.col = 1 ;
}
public Coordinate(int r,int c){
if(r<1 || r>8 || c<1 || c>8)
throw new IllegalArgumentException("COORDINATE") ;
this.row = r ;
this.col = c ;
}
public int getRow(){
return this.row ;
}
public int getCol(){
return this.col ;
}
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Clases en Java.
public void setRow(int r){
if(r<1 || r>8)
throw new IllegalArgumentException(ROW") ;
this.row = r ;
}
public void setCol(int c){
if(c<1 || c>8)
throw new IllegalArgumentException(COLUMN") ;
this.col = c ;
}
//Asigna valores a los dos datos miembros.
public void set(int r,int c){
if(r<1 || r>8 || c<1 || c>8)
throw new IllegalArgumentException("COORDINATE") ;
this.row = r ;
this.col = c ;
}
}
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Constructor:
Asigna valores iniciales a los datos miembro del objeto
creado en memoria.
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Departamento
Arquitectura
Computadores
J.C. Cruellas
1
c0
2
4
c0
row=1
col=1
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
. nombre de miembro
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
public
protected
private
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Modificadores.
Adems de los modificadores de acceso existen otros
modificadores que pueden aplicarse a los miembros
de una clase: static y final.
Cada uno de ellos puede aplicarse a un dato miembro
o a una funcin.
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
O1
d0 = v10
O2
El dato esttico
d2 es COMPARTIDO
por todos los objetos.
d1 = v11
U PC
Departamento
Arquitectura
Computadores
d0 = v20
d1 = v21
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
SINTAXIS DE ACCESO:
nombre de clase
. nombre de miembro
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Modificadores: final
Cuando a un dato miembro de una clase se le antepone el
modificador final se est definiendo un dato miembro con un
valor CONSTANTE.
Para definir constantes visibles desde todo el programa, se
define, dentro de la clase pertinente, un dato miembro
pblico, esttico y final.
public class PhysicsConstants{
public static final double PI = 3,141592 ;
public static final double EPSILON0 = 8.8541878176e-12 ;
}
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Modificadores: final
Cuando a una funcin miembro de una clase se le
antepone el modificador final se:
Impide que ninguna clase derivada pueda redefinir el
comportamiento de dicha funcin. Se aclarar este aspecto
cuando se vea herencia.
Se fuerza al compilador a no generar cdigo de invocacin a
la funcin sino a insertar directamente el cdigo interno de
la funcin all donde aparezca la invocacin (ahorro de
proceso de llamada y recuperacin del valor devuelto).
ADVERTENCIA: NO ABUSAR. Es difcil saber con
seguridad qu funciones necesitarn modificar las clases
derivadas.
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas
Modificadores: final
Cuando a un argumento de una funcin le precede el
modificador final, se impide que en el interior de la
funcin se altere el valor del argumento, si es de tipo
primitivo, o el contenido de lo referenciado por el
argumento, si es una referencia a un objeto.
U PC
Departamento
Arquitectura
Computadores
J.C. Cruellas