Anda di halaman 1dari 29

Programacin Avanzada para Sistemas

de Telecomunicacin

Objetos y clases
Juan Carlos Cruellas
cruellas@ac.upc.es

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

Clases, objetos y programas


Un programa escrito en un lenguaje orientado a
objetos contiene instrucciones que:
Definen clases.
Crean objetos (instancian clases).
Los hacen interaccionar con otros objetos (invocando a
funciones miembro de otros objetos).
Destruyen objetos cuando no son necesarios.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases, objetos y programas


En programacin orientada a objetos, clases y objetos
pasan a ser elementos en torno a los cuales giran
todas las actividades propias del anlisis, el diseo, la
implementacin y las pruebas.
Algunas tareas importantes del proceso de desarrollo
de software :
Narracin detallada del funcionamiento del cdigo a
desarrollar.
Identificacin de las clases que formarn parte del programa

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases, objetos y programas


Identificacin, para cada clase, de sus datos miembro.
Identificacin, para cada clase, de sus funciones miembro.
Propuesta de secuencia temporal de interacciones entre
objetos de las clases (invocaciones de funciones de objetos
por parte de funciones de otros objetos).

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java: sintaxis de definicin de


clases
public: modificador de acceso. Indica desde qu partes del
programa puede accederse a objetos de esta clase.
class: clave que indica que lo que se define a continuacin
es una clase.
Coordinate: nombre de la clase. Elegida por usuario. Regla:
comienza por MAYSCULA.

public class Coordinate{


}
{: indica el comienzo de la definicin de la clase.
}: indica el final de la definicin de la clase.
U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java: sintaxis definicin de datos


miembro
protected: modificador de acceso. Indica desde qu partes del
programa puede accederse los datos miembros.
int: indica el tipo de la informacin almacenada en los datos
miembros.
row, col: nombres de los datos miembros. Elegidos por
usuario. Regla: comienza por minscula.

public class Coordinate{


protected int row,col ;
}

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java: sintaxis definicin de datos


miembro
Java reutiliza la sintaxis de declaracin de variables
de C para la definicin de datos miembro,
anteponiendo el modificador de acceso.
Algunos tipos primitivos predefinidos de Java (se
comentarn ms tarde):
int, float, double, char, unsigned int, long, boolean

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java: sintaxis definicin de


funciones miembro
public class Coordinate{
protected int row,col ;
public int getRow(){
return this.row ;
}
}
Java reutiliza la sintaxis de definicin de funciones de
C para la definicin de funciones miembro,
anteponiendo el modificador de acceso.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java: sintaxis definicin de


funciones miembro

La funcin anterior devuelve el valor del dato


miembro row del objeto.

La definicin de una funcin (salvo algunas


excepciones) DEBE INDICAR el valor o clase de
objeto devuelto entre el modificador de acceso y el
nombre de la funcin.
Si una funcin no devuelve valor alguno, se usar la
partcula void.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java: sintaxis definicin de


funciones miembro

Las funciones java tambin pueden devolver objetos.


Desde las funciones miembro puede accederse a los
datos miembro de dos formas:
1. Escribiendo su nombre sin ms (return row ;)
2. Anteponiendo a su nombre la clave this
(return this.row ;).

La opcin 2 elimina potenciales problemas si en la


funcin aparece una variable o un argumento con el
mismo nombre del dato miembro.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
Toda clase Java dispone de unas funciones con un
cometido muy especial: ASIGNAR VALORES
INICIALES A LOS DATOS MIEMBRO.
Estas funciones especiales son LOS
CONSTRUCTORES.
CARACTERSTICAS:
Una clase puede disponer de VARIOS CONSTRUCTORES.
Ningn constructor devuelve nada. Son las nicas funciones
en las que no se indica el valor u objeto devuelto.
Todos los constructores tienen el mismo nombre: el
NOMBRE DE LA CLASE.
U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
Todos los constructores deben diferenciarse entre s en la
lista de argumentos.
NOTA: Esta es una regla general en Java. Una
clase puede tener VARIAS FUNCIONES CON EL
MISMO NOMBRE SIEMPRE Y CUANDO TENGAN
DIFERENTES LISTAS DE ARGUMENTOS.
En su versin ms simple, el cdigo de los constructores
sern instrucciones de asignacin de valores a los datos
miembro.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
Constructor sin argumentos. Tambin conocido
como constructor por defecto:
Tiene la lista de argumentos vaca.
Solo puede haber uno por clase.
Se usa en aquellas ocasiones en las que el diseador sabe
que los datos miembro de algunos objetos de la clase deben
tener unos valores iniciales constantes y conocidos de
antemano.
En su versin ms simple: sentencias de asignacin a
valores constantes.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
public Coordinate(){
this.row = 1 ;
this.col = 1 ;
}

El constructor por defecto asigna el valor 1 a los datos row y


col.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
Si una clase no dispone de un constructor por defecto, el
compilador Java construye uno automticamente. Dicho
constructor asigna los valores a los datos en funcin de su tipo:
Datos numricos: el valor 0.
Datos booleanos: el valor false.
Datos carcter: el carcter vaco.

En el caso anterior, si el diseador no lo hubiera aadido, el


compilador de Java creara un constructor que asignara los
valores 0 a ambos. PERO ESOS VALORES SON
INCORRECTOS, ya que hemos dicho que las coordenadas del
tablero de ajedrez van de 1 a 8!!!..

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
public class Coordinate{
protected int row,col ;
public Coordinate(){
this.row = 1 ;
this.col = 1 ;
}
public int getRow(){
return this.row ;
}
}

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
Constructores con argumentos.
Una clase puede disponer de VARIOS constructores con
argumentos siempre y cuando sus listas de argumentos
sean distintas.
Todos ellos tienen algn argumento.
Permiten al diseador crear objetos asignando en tiempo de
ejecucin los valores iniciales de sus datos miembros.
En su versin ms simple: sentencias de asignacin a
valores de los argumentos.
En ellos aparece por primera vez el problema del mbito de
valores permitidos para cada uno de los datos miembro
(COHERENCIA de los valores de los datos miembro).

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
Versin no tolerante a fallos, y por tanto incorrecta:
public Coordinate(int r,int c){
this.row = r ;
this.col = c ;
}

El constructor asigna a row el valor que tenga el


argumento r y a col el valor que tenga c.
Sin embargo, este cdigo NO es correcto. Por
qu?

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
En caso de que r tuviera un valor 9, el constructor
CREARA UNA COORDENADA CON UN VALOR
DE FILA 9, COSA QUE NO PUEDE SUCEDER por
la propia definicin de la clase coordenada de
ajedrez!!!.
El constructor con argumentos, DEBE ASEGURAR
que el valor de cada uno de los datos miembros
pertenezca al mbito definido por la propia clase.
Si el valor del argumento correspondiente no
pertenece a dicho mbito, el constructor NO DEBE
ASIGNAR VALORES INICIALES Y DEBE SEALAR
LA EXISTENCIA DE UNA SITUACIN ANMALA.
U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
Antes de asignar valores a los datos miembro, el
constructor con argumento COMPRUEBA la
coherencia de los valores de los argumentos
mediante el CDIGO DE GUARDA, que est al
comienzo de la funcin y consta de:
Una o varias sentencias condicionales.
Instrucciones especiales para sealar situaciones
anmalas que evitan la ejecucin normal de la funcin si
alguna de las condiciones de coherencia de valores no se
cumple .

Las asignaciones de valores a los datos miembro


aparecen despus del cdigo de guarda.
U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
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 ;
}

La sentencia if() comprueba la correccin semntica de los


valores de los argumentos.
La sentencia que comienza con throw devuelve el
control a la funcin invocante . Si hay algn valor
incorrecto, las dos ltimas sentencias NO se ejecutan y
NO se asigna valor a los datos miembros.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
Ventajas de sealar errores y no asignar valores:
No se permite continuar la ejecucin con valores errneos.
Ello solo llevara a perder tiempo.
En su lugar, tan pronto como se detecta un valor errneo se
seala. Si hay un valor errneo es porque antes de invocar
al constructor SE HA REALIZADO UN CLCULO
ERRNEO. Que sea el constructor quien seale el error
FACILITA ENORMEMENTE LA DEPURACIN DEL RESTO
DEL PROGRAMA!!. En lugar de esperar a finalizar la
ejecucin, el diseador puede pasar directamente a depurar
el cdigo.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales:


constructores
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 ;
}
}

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales: asignacin a


e inspeccin de valores de datos miembro
Junto con los constructores hay un conjunto de
funciones que prcticamente todas las clases tienen:
las de acceso a los valores de los datos miembro.
Pueden ser de dos tipos:
Acceso para inspeccin de valores (operaciones getXXX).
Acceso para asignacin de valores (operaciones setXXX).

En principio, conviene que haya una de cada por cada


dato miembro de la clase.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales: asignacin a


e inspeccin de valores de datos miembro
Operaciones de acceso para inspeccin de valores:
Prctica recomendable: que haya una por dato miembro.
Es recomendable que sus nombres sean getXXX, donde
XXX debera ser el nombre del dato miembro asociado:
Los nombres de las funciones de inspeccin para la clase
Coordinate seran: getRow y getCol.

NO tienen lista de argumentos.


Tienen un nico cometido: devolver el valor del
correspondiente dato miembro. Generalmente una sola
instruccin return.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales: asignacin a


e inspeccin de valores de datos miembro
public int getRow(){
return this.row ;
}
public int getCol(){
return this.col ;
}

Cada funcin permite inspeccionar el valor de uno de


los datos miembro.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales: asignacin a


e inspeccin de valores de datos miembro
Operaciones de acceso para asignacin de valores:
Prctica recomendable: que haya una por dato miembro.
Es recomendable que sus nombres sean setXXX, donde
XXX debera ser el nombre del dato miembro asociado:
Los nombres de las funciones de inspeccin para la clase
Coordinate seran: setRow y setCol.

Argumento: el valor a asignar al dato miembro en cuestin.


No devuelven valor alguno (void).

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales: asignacin a


e inspeccin de valores de datos miembro
Tareas:
En algunas ocasiones comprobar que el valor a asignar es
semnticamente correcto. Cdigo de guarda.
Si el valor es semnticamente correcto, asignarlo al dato
miembro. Si no, sealar la presencia de una situacin anmala
y NO asignar el valor.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Clases en Java. Funciones especiales: asignacin a


e inspeccin de valores de datos miembro
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 ;
}

Cada funcin permite asignar un valor a cada funcin.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

Objetos en Java: creacin de objetos


public class MainClass{
public static void main(String [] args){
Coordinate c0 = new Coordinate() ;
}
}

La creacin de un objeto se hace en dos pasos:


Se invoca a un operador especial: new.
Se invoca a un constructor.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: creacin de objetos


ATENCION:
main() es la funcin principal de toda aplicacin Java.
Java no admite funciones fuera de las clases. Por tanto,
main() debe ser una funcin miembro de una clase.
Su sintaxis es EXACTAMENTE la indicada. Si se obvia
alguna parte, el compilador de Java no la identificar como
la funcin principal.
Si al intentar ejecutar el programa, la mquina virtual no
encuentra ninguna en ningn archivo, lanza un error .

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: creacin de objetos


Operador new:
Reserva un bloque de memoria del tamao adecuado para
contener un objeto de la clase pertinente. Gestin dinmica
de memoria: el bloque se asigna en tiempo de ejecucin, no
en tiempo de compilacin.
Devuelve la direccin de comienzo del bloque de memoria.

Constructor:
Asigna valores iniciales a los datos miembro del objeto
creado en memoria.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: creacin de objetos


Comentarios al cdigo:
Coordinate c0 = new Coordinate() ;
El operador new est a la derecha de una asignacin
new reserva un bloque de memoria y devuelve una
direccin.
Esa direccin se asigna a una variable (c0).
En consecuencia c0 es una variable CUYO VALOR ES UNA
DIRECCIN a un bloque de memoria que contiene un
objeto de clase Coordinate (terminologa Java: una
REFERENCIA a un objeto)!!!.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: creacin de objetos


1. c0 inicialmente contiene una
direccin de valor null (no
apunta a ningn sitio)
2. new busca un bloque libre
del tamao adecuado y
cuando lo encuentra, lo
reserva.
3. El constructor asigna
valores iniciales a los datos
miembro.
4. new devuelve la direccin
del bloque. Esta se asigna a
c0 que queda apuntando al
objeto recin creado
U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

1
c0

2
4
c0

row=1
col=1

Grupo de Aplicaciones Telemticas

Objetos en Java: acceso a miembros


Acceder a una funcin miembro de un objeto significa
invocar a esa funcin, lanzar su ejecucin, previo
paso de los argumentos pertinentes.
Acceder a un dato miembro de un objeto significa
situarse en la posicin de memoria en la que se
almacena su valor.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: acceso a miembros


public class MainClass{
public static void main(String [] args){
Coordinate c0 = new Coordinate() ;
c0.setRow(1) ;
}
}

Sintxis de acceso a un miembro de un objeto:


nombre de objeto

U PC

Departamento
Arquitectura
Computadores

. nombre de miembro
J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: acceso a miembros


Los modificadores de acceso ponen restricciones a
los lugares del programa desde los cuales pueden
realizarse los accesos mencionados.
El modificador public indica que puede accederse al
miembro DESDE CUALQUIER PUNTO DEL
PROGRAMA.
La sentencia c0.setRow(1); es correcta: la funcin
setRow() de Coordinate es una funcin pblica.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: acceso a miembros


public class MainClass{
public static void main(String [] args){
Coordinate c0 = new Coordinate() ;
c0.setRow(1) ; // correcto: setRow()es public
c0.row = 1 ; /*error!!: row es un dato
protegido. No se compilar.*/
}
}
El acceso al dato miembro row desde una funcin que no es
de la clase Coordinate EST PROHIBIDO. El compilador
avisa de que c0.row = 1; es incorrecta.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: acceso a miembros.


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 ; /* CORRECTO: dato protegido PERO acceso desde funcin de
la propia clase */
this.col = c ; // IDEM
}

Al dato protegido puede accederse desde cualquier funcin


de la propia clase. Por eso this.row = r; es correcta.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Objetos en Java: acceso a miembros.


Modificador
de acceso

public
protected

Acceso permitido desde


Cualquier punto del programa
Desde funciones de la misma clase.
Desde funciones de clases derivadas de la clase.
Desde funciones de la misma clase.
Desde funciones de clases del mismo package.

private
U PC

Desde funciones de la misma clase.

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

Modificadores: static (miembros de clase)


Cuando a un miembro de una clase se le antepone el
modificador static se fuerza a que TODOS LOS
OBJETOS DE DICHA CLASE COMPARTAN DICHO
MIEMBRO; esto es, el miembro NO es un miembro de
objeto sino de clase.
El acceso a estos miembros NO se realiza a travs de
ningn objeto, sino a travs de la propia clase.
DATO MIEMBRO ESTATICO:
Todos los objetos de esa clase COMPARTEN EL DATO
MIEMBRO. SOLO HAY UN DATO EN MEMORIA: EL
CORRESPONDIENTE A LA CLASE.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Modificadores: static (miembros de clase)


Usos:
Atributo con un valor comn para todos los objetos de esa
clase.
Gestin de constantes (junto con el modificador final).

Puede accederse a estos datos INCLUSO SIN HABER


CREADO NINGUN OBJETO DE LA CLASE
SINTAXIS DE DEFINICIN:
public static int a ;

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Modificadores: static (miembros de clase


d2 = v2

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

Grupo de Aplicaciones Telemticas

Modificadores: static (miembros de clase)


FUNCIN ESTTICA DE UNA CLASE.
Conceptualmente solo hay una copia de la funcin.
La funcin puede invocarse INCLUSO SIN HABER
CREADO NINGUN OBJETO DE LA CLASE.
Usos:
Construccin de libreras de funciones. Si se crea una clase
con todas las funciones estticas NO ser necesario crear
ningn objeto de esa clase antes de invocar a cualquiera de
ellas. EJEMPLO: la clase Math de Java solo tiene funciones
matemticas estticas (no hay dato miembro alguno).

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Modificadores: static (miembros de clase)


Sintaxis de definicin:
public static double sin(double x) ;

SINTAXIS DE ACCESO:
nombre de clase

. nombre de miembro

En lugar del nombre del objeto, el punto viene precedido por


el NOMBRE DE LA CLASE, ya que el dato o funcin
miembro esttico NO pertenece a ningn objeto en concreto
sino a la clase en s.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

Modificadores: static (miembros de clase)


Ejemplo:
double x = Math.sin(y) ;
La funcin sin(x) viene precedida por el nombre de la clase.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

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 ;
}

Regla: las constantes se escriben CON MAYSCULAS.

U PC

Departamento
Arquitectura
Computadores

J.C. Cruellas

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

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

Grupo de Aplicaciones Telemticas

Anda mungkin juga menyukai