Propiedades Y Constantes De Clases

POO: Propiedades y constantes de clase

Ya hemos visto en un post anterior los conceptos básicos de la programación orientada a objetos. En el explicábamos lo que es una clase en programación orientada a objetos, de ahora en adelante POO, qué es un objeto, una instancia y cómo crearlas. También conté un poco por encima como clonar objetos y que papel juegan los constructores y los destructores, entre otras cosas.

Pues bien, hoy toca entrar en profundidad en las propiedades y en las constantes de clases.

Propiedades de clases

Ya vimos que una clase es una representación abstracta de un objeto. Todo objeto tiene por su definición ciertas propiedades que almacenaremos en variables. No es exclusivo que sean llamadas propiedades, en algunos contextos podrán ser llamadas atributos o campos de clase, en cualquier caso da igual ya que estamos haciendo referencia a lo mismo.

Si tenemos un objeto televisión, sus propiedades podrían ser la marca de la televisión, sus dimensiones y su tipo. Así pues de una televisión plana de 47 pulgadas de la marca Samsung, plana, 47 pulgadas y Samsung podrían ser las propiedades de la clase televisión. ¿Hasta aquí bien no?

Para definir una propiedad de una clase tenemos que utilizar una de las siguientes palabras reservadas, public, protected y private en función de la visibilidad que queramos dar a esa propiedad. ¿Pero qué coño es la visibilidad?

Visibilidad de propiedades y métodos

La visibilidad de propiedades y métodos hace referencia al tipo de accesibilidad de las propiedades y de los métodos de una clase. La accesibilidad es desde dónde se puede acceder al valor de una propiedad o desde dónde se puede llamar al método de una clase. Tenemos tres tipos de visibilidades:

  • public: una propiedad o un método public puede ser accesible desde donde sea. Si una propiedad es definida mediante la palabra reservada var automáticamente su visibilidad será pública, sin embargo si un método no ha definido visibilidad pasará a ser un método público.
  • protected: una propiedad o método protected solamente será accesible desde la propia clase o desde clases heredadas.
  • private: una propiedad o método private solamente serán accesibles desde la propia clase.

Una cosa interesante a tener en cuenta de la visibilidad entre objetos es que los objetos del mismo tipo pueden acceder a los miembros protected y private entre ellos aunque no pertenezcan a la misma instancia.

Vale, para acceder al miembro de una clase utilizamos el símbolo -> ya sea una propiedad o un método, sin embargo tal y como vimos en el post anterior, para acceder a una propiedad desde dentro de la misma clase tendremos que utilizar la pseudovariable $this. Si recuerdas bien esta pseudovariable es una referencia al objeto invocador, el que esta realizando la acción vamos.

Siempre tendremos que llamar a una propiedad o método mediante la flechita siempre y cuando no se trate de una propiedad o método estático.

Propiedades y métodos estáticos

Una propiedad o método estático significa que puede ser accesible sin tener que instanciar la clase, es decir, sin tener que utilizar la palabra reservada new. Hay que recordar que si un método ha sido definido como estático no podremos utilizar la pseudovariable $this dentro del método ya que nos dará un error.

Con las propiedades estáticas nos pasa lo mismo. Una vez que hemos definido una propiedad como estática si intentamos acceder a ella utilizando $this-> dentro de un método nos dará un error, en su lugar tendremos que utilizar la palabra reservada self:: si la propiedad pertenece a la clase o la palabra reservada parent:: si la propiedad pertenece a una clase padre, cuando realizamos herencia.

A partir de la versión 5.3.0 de PHP podemos utilizar los heredocs y los nowdocs en cualquier contexto estático, incluso cuando declaramos propiedades. Por favor, sigue lo enlaces para saber qué son.

Bien, ya hemos pasado la primera parte del post. Hemos terminado de contar lo que son las propiedades de clase y nos vamos a meter con las constantes. ¿Quieres hacer un descansito? Vamos que queda poco… 😛

Constantes de clases

¿Qué te sugiere que algo sea constante? ¿Que no cambia, no? Algo cuyo valor o estado se mantiene igual durante el paso del tiempo ¿no? Pues eso es lo mismo en la programación orientada a objetos.

Siempre y cuando digo siempre es siempre podremos definir una variable como constante dentro de una clase. Al definir una propiedad como constante nos estamos asegurando de que su valor no va a cambiar jamás durante la ejecución del programa pero tenemos que ser conscientes de que tampoco podremos modificar su valor.

Por defecto la visibilidad de una constante es public, es decir, podremos acceder a ella desde cualquier lugar.

Esto viene genial cuando queremos definir literales o cuando queremos evitarnos los números mágicos por ejemplo.

Para definir una constante de clase tendremos que utilizar la palabra reservada const y a diferencia de las propiedades o variables normales, en las constantes no tenemos que utilizar el símbolo del dolar ($) cuando las declaramos. De hecho es típico y una buena práctica escribir las constantes en mayúsculas. Con el siguiente ejemplo lo verás rápido.

Como ves en el ejemplo podemos acceder a la constante de diferentes formas, ya sea desde un método get, desde la clase instanciada como si fuera una propiedad estática o sin tener que instanciar la clase. Las constantes son super útiles.

 

Pues nada, hasta aquí la parte dedicada a las propiedades y constantes de la programación orientada a objetos y todavía queda mucho mas!

Se que el tema puede ser duro y espesito así que si tienes dudas puedes dejarmelas en los comentarios o hacerlas en twitter a través del siguiente banner.

@gorkakatua #faqsGorkamu pregúntame por twitter cualquier cosa y vemos cómo lo solucionamos.

Hala a mamarla!

¿Te ha parecido este un artículo de 5 estrellas? Dame tu valoración:
Review Date
Reviewed Item
POO: Propiedades y constantes de clase
Author Rating
51star1star1star1star1star

Gorka Muñoz Andrés

Me llamo Gorka Muñoz y soy un desarrollador melómano. Combino a la perfección la búsqueda de nuevos grupos con la pasión por la tecnología. Desde chiquitito me ha gustado la programación, ahora que soy mayor estoy metido en el mundo del SEO sin olvidarme del /Dev.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *