Anda di halaman 1dari 2

Nombre: Michael Alfredo Pazmiño Cornejo

Curso: INE-MA-3-1
Fecha: Guayaquil, 21 de noviembre del 2018

PROGRAMACION III

Atributos y métodos estáticos o de clase


Los atributos estáticos son aquellos que poseen un único valor para todos los objetos (o
instancias) de una clase determinada. El ejemplo típico de atributo estático son las constantes
(de clase). Una constante de una clase puede ser implementada como un atributo que posea
un mismo valor para todos los objetos de dicha clase. Por lo tanto, podría ser implementada
por medio de un atributo estático. Un ejemplo podría provenir de la propia clase Circunferencia
que hemos definido anteriormente:

Clase Circunferencia {

//Atributos estáticos:
real PI = 3.14;
//Atributos
real radio;
//Constructores de clase
Circunferencia (){ this.radio = 0; };
Circunferencia (real radio){ this.radio = radio; };
//Métodos
real getRadio (){ return this.radio; };
real getDiametro (){ return 2 * (this.radio); };
real getArea (){ return PI * (this.radio) * (this.radio); };
real getLongitud (){ return 2 * PI * (this.radio); };
void setRadio (real nuevo_radio){ this.radio = nuevo_radio; };
void setDiametro(real nuevo_diametro){ this.radio = (nuevo_diametro/2); };
void setArea (real nuevo_area){ this.radio = (sqrt (nuevo_area / PI)); };
void setLongitud (real nueva_longitud){ this.radio= nueva_longitud/(2*PI); };
}

Sin embargo, los atributos estáticos no sólo nos sirven para representar constantes de una
clase. También nos sirven para representar atributos de dicha clase. Un atributo de clase es un
atributo cuyo valor es igual para todos los objetos o instancias que haya definidos de la misma.
Por ejemplo, si queremos guardar información sobre el número de objetos de una clase que
han sido creados, dicho valor es compartido por todos los objetos de la clase.
Esto nos lo permitiría la declaración de este como estático:

Clase Circunferencia {

//Atributos estáticos:
entero contadorCircunferencias = 0;
real PI = 3.14;
//Atributos
real radio;
//Constructores de clase
Circunferencia (){
this.radio = 0;
contadorCircunferencias = contadorCircunferencias + 1;
};
Circunferencia (real radio){
this.radio = radio;
contadorCircunferencias = contadorCircunferencias + 1;
};
//Métodos
real getRadio (){ return this.radio; };
real getDiametro (){ return 2 * (this.radio); };
real getArea (){ return PI * (this.radio) * (this.radio); };
real getLongitud (){ return 2 * PI * (this.radio); };
void setRadio (real nuevo_radio){ this.radio = nuevo_radio; };
void setDiametro(real nuevo_diametro){ this.radio = (nuevo_diametro/2); };
void setArea (real nuevo_area){ this.radio = (sqrt (nuevo_area / PI)); };
void setLongitud (real nueva_longitud){ this.radio= nueva_longitud/(2*PI); };
}

La implementación interna de los atributos estáticos en la mayor parte de los lenguajes de POO
puede ayudar a comprender su comportamiento: de un atributo estático existe una única copia
para todos los valores de la clase.
Así como atributos estáticos, existe también un tipo de métodos que no acceden al estado de
ningún objeto. Estos métodos son conocidos como estáticos o métodos de clase. En particular,
un método estático no puede acceder a ningún atributo no estático de una clase.
Existen diversas situaciones donde un método estático puede ser de utilidad. Por ejemplo, para
implementar un método auxiliar que procese información externa a una clase. O también para
acceder o modificar los atributos estáticos de la misma:

Clase Circunferencia {

//Atributos estáticos:
entero contadorCircunferencias = 0;
real PI = 3.14;
//Atributos
real radio;
//Constructores de clase
Circunferencia (){
this.radio = 0;
contadorCircunferencias = contadorCircunferencias + 1;
};
Circunferencia (real radio){
this.radio = radio;
contadorCircunferencias = contadorCircunferencias + 1;
};
//Métodos
real getRadio (){ return this.radio; };
real getDiametro (){ return 2 * (this.radio); };
real getArea (){ return PI * (this.radio) * (this.radio); };
real getLongitud (){ return 2 * PI * (this.radio); };
void setRadio (real nuevo_radio){ this.radio = nuevo_radio; };
void setDiametro(real nuevo_diametro){ this.radio = (nuevo_diametro/2); };
void setArea (real nuevo_area){ this.radio = (sqrt (nuevo_area / PI)); };
void setLongitud (real nueva_longitud){ this.radio= nueva_longitud/(2*PI); };
//Métodos estáticos:
real getPI () { return PI; };
real setPI (real nuevo_PI) { PI = nuevo_PI; };
void contadorCircunferenciasNulo { contadorCircunferencias = 0; };
}

Anda mungkin juga menyukai