Logo de Torre de Babel
Portada Libros Diseño web Artículos Glosario RSS
Buscar

Cómo conseguir clases finales en C++

Cuando se diseñan clases para ser compartidas en un grupo de trabajo, por parte de varios programadores, la documentación del código es un aspecto fundamental para establecer la finalidad de cada elemento y la forma de uso, pero no lo es menos que el propio código sea capaz de evitar los usos indebidos o inadecuados. Los lenguajes de programación más modernos, como es el caso de Java o C#, disponen de elementos declarativos que permiten indicar al compilador que un cierto tipo es de uso final, que debe ser utilizado obligatoriamente para derivar otros, etc.

C++ es un lenguaje de programación utilizado en infinidad de proyectos, un lenguaje orientado a objetos con una gran tradición pero que carece de los elementos antes citados. No obstante, en ocasiones pueden utilizarse ciertos rodeos para conseguir el mismo efecto. Para conseguir que una cierta clase escrita en C++ se considere como de uso final, impidiendo la derivación de otras a partir de ella, básicamente hay que dar dos pasos: declarar como privados todos los constructores y definir un método que actúe como factoría de la clase.

Si todos los constructores de una clase son privados, las únicas porciones de código que tendrán acceso a ellos son las que formen parte de la propia clase, entre ellas el método que actuará como factoría. Este método, definido como static para que pueda utilizarse con la notación clase::factoría, se encargará de crear los objetos que se soliciten y devolver un puntero a los mismos. Los objetos de esta clase se utilizarán como cualesquiera otros, pero cualquier intento de derivar una nueva clase a partir de ésta provocará que el compilador genere un error ante la imposibilidad de que el código derivado acceda a constructor público alguno.


Publicado el 17/9/2007

Curso de shaders

Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web