tag:blogger.com,1999:blog-164911854575895459.post8079115680859677493..comments2024-02-13T01:48:33.379-08:00Comments on Cucarachas Racing: Getters y setters automágicos en C++zaskarhttp://www.blogger.com/profile/10849946311739196317noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-164911854575895459.post-80763264855718168262014-12-30T04:51:20.001-08:002014-12-30T04:51:20.001-08:00Interesante el comentario. Pero esta implementació...Interesante el comentario. Pero esta implementación que presenté ahora me parece más un experimento teórico antes que algo que se justifique usar. A esta altura el post ya es algo viejo, creo que con C++11/14 se podría hacer algo mucho mejor... Tal vez usando funciones lambda para especificar más fácilmente los getters y setters, y algo de lo nuevo de templates para no abusar tanto del preprocesador... En algún momento voy a repensarlo y escribir una segunda versión de este post si encuentro algo útil.zaskarhttps://www.blogger.com/profile/10849946311739196317noreply@blogger.comtag:blogger.com,1999:blog-164911854575895459.post-34817153659566751532014-12-23T13:56:35.002-08:002014-12-23T13:56:35.002-08:00Interesantísimo esto!. Estuve buscando en internet...Interesantísimo esto!. Estuve buscando en internet mucho sobre este tema para hacerlo en C++, particularmente porque es muy cómodo trabajar de esta forma con getters y setters. En C# se hace realmente cómodo trabajar con las propiedades tanto autoimplementadas como totales. Sirve también para poder crear atributos que sean de solo lectura (solo get), solo escritura (solo set) o ambos. Cuento algo acerca del tema de las propiedades en C# por si alguien lee el post y quiere ir mas allá del código de Pablo:<br /><br />Las propiedades en C# se definen como si fueran métodos en los que se puede acceder a un miembro privado de la clase.<br /><br />class Clase{<br /><br /> private 'tipo' _nombre_miembro; //Esta es la variable privada<br /> <br /> public 'tipo' Propiedad //Propiedad full o completa.<br /> {<br /> get { return _nombre_miembro; }<br /> set { _nombre_miembro = value;}<br /> }<br />}<br /><br />Esa es la sintaxis de una propiedad en C#. Notar que cada propiedad tiene implícita una variable llamada value, en la cual viene el nuevo valor hacia la propiedad, valor que finalmente se asigna a la variable privada asociada... el uso es el siguiente:<br /><br /> objClass.Propiedad = _algun_valor; //Aquí se asigna value y dentro de la propiedad value es asignado a la variable asociada.<br /><br /> Console.Write(objClass.Propiedad); // La propiedad devuelve el valor de la variable asociada.<br /><br />Notar que si dentro de la propiedad se elimina el get o el set, se da lo que dije al principio, se convierte en solo escritura, o solo lectura. También se puede ver que dentro del set o del get, se puede hacer algún tipo de validación u otra cosa que sea pertinente a la asignación o devolución de la variable.<br /><br />Vemos que la forma de uso es la misma que finalmente se puede usar con el codigo de Pablo, que obviamente me voy a llevar para mis proyectos! =D Gracias Pablo!<br /><br />- nota al margen - yo lo habia solucionado creando métodos que devuelven por referencia la variable en cuestión:<br /><br /> string& Nombre() { return _nombre; }<br /><br />lo usaba así objClass.Nombre()="seba"; algo totalmente raro jaja.<br /><br />Propiedades Autoimplementadas:<br /><br />Esto es algo que salio en C# 3.0 creo... Poder crear una propiedad dejando la creación de la variable privada implícita:<br /><br /> public 'tipo' Propiedad { get; set; }<br /><br />al declararlo de esta forma creamos una variable privada (implícita) y su propiedad adjunta. Ventajas? escribir menos, desventajas? perdemos el poder implementar algún código dentro de get o de set. No se usa mucho y menos con el sistema de notificación de cambios de variables de C# para avisar a la interfaz cuando debe actualizarse. Ese sistema solo es viable con propiedades full.Anonymoushttps://www.blogger.com/profile/17425365058821133545noreply@blogger.com