0 calificaciones0% encontró este documento útil (0 votos)
9 vistas12 páginas
Las propiedades en C# permiten centralizar la lectura y escritura de campos de clases. Esto nos permite interceptar esas operaciones y agregar funcionalidad personalizada, como registro de cambios o validación de datos. Las propiedades también nos permiten hacer campos de solo lectura o escritura. Es mejor práctica usar siempre propiedades en lugar de campos públicos para mejor encapsulamiento y mantenibilidad del código.
Las propiedades en C# permiten centralizar la lectura y escritura de campos de clases. Esto nos permite interceptar esas operaciones y agregar funcionalidad personalizada, como registro de cambios o validación de datos. Las propiedades también nos permiten hacer campos de solo lectura o escritura. Es mejor práctica usar siempre propiedades en lugar de campos públicos para mejor encapsulamiento y mantenibilidad del código.
Las propiedades en C# permiten centralizar la lectura y escritura de campos de clases. Esto nos permite interceptar esas operaciones y agregar funcionalidad personalizada, como registro de cambios o validación de datos. Las propiedades también nos permiten hacer campos de solo lectura o escritura. Es mejor práctica usar siempre propiedades en lugar de campos públicos para mejor encapsulamiento y mantenibilidad del código.
Campos y propiedades • Los campos representan los atributos de la clase es a través de los campos que definimos la información que un cliente puede almacenar en un objeto. Un campo es una variable declarada al nivel de la clase. • Por ejemplo: tenemos la clase persona (public class persona) y en ella podemos agregar un campo de la siguiente manera public string nombre; para indicar el nombre de la persona. Entonces cuando instanciamos la clase persona, podemos utilizar el campo nombre a través de la variable persona1 para guardar el nombre de la persona. Lamentablemente esto en general es considerado mala practica. • La razón de esto es que quedamos a merced de lo que el cliente de la clase haga con el campo nombre. Campos y propiedades • Que tal si quisiéramos guardar en un log todas las veces que el campo nombre sea editado o que tal que el campo nombre fuese de solo lectura. Esto significa que los clientes de la clase no puedan alterarlo solo leerlo. • Que tal si queremos ejecutar una función cada vez que el campo nombre es leído o editado. Nada esto es posible con nuestra clase persona en el estado en que se encuentra en C# la manera de resolver esto utilizando propiedades. • Las propiedades son métodos especiales dedicados a la lectura y escritura de información de nuestra clase. Campos y propiedades • Por ejemplo: podemos utilizar una propiedad nombre para centralizar las operaciones de lectura y escritura de nuestro campo nombre que tenemos. • Además vamos a marcar nuestro campo nombre como privado como indican las buenas practicas de desarrollo en C#. • Vamos a crear nuestra propiedad, vamos a decir public string nombre vamos a crear nuestra propiedad vamos a escribir public string Nombre vamos a utilizar un get que nos retorne nombre, lo que haremos será retornar el valor del campo nombre y set vamos a decir igual a value Campos y propiedades • Ahora vamos hacer private string nombre de modo que no podamos utilizar este campo desde fuera de la clase sino que estamos obligados a utilizar la propiedad, para nuestro caso cambiar la n minúscula de nombre por la N mayúscula, de esta forma se corrige el error que teníamos. • Entonces para diferenciar un campo de una propiedad notamos el uso del get y set. • El get se va a ejecutar cuando leamos el valor de la variable nombre • Y set es la funcionalidad que se va ejecutar cuando editemos el valor de nuestra propiedad nombre Campos y propiedades • Entonces añadir Console.writeLine(persona1.Nombre); • Colocar breakpint en get y set de nuestra propiedad Nombre • Ahora presionar F5 • Vemos que el primer bloque de código que se ejecuta es el bloque set, porque lo primero que hacemos aquí es escribir sobre nuestra propiedad nombre, volvemos a presionar F5 vemos que ahora se ejecuta el get porque estamos leyendo el valor de nuestra propiedad nombre. • Detener el ejecutar Campos y propiedades • Vemos ahora que tenemos mas opciones con respecto a la funcionalidad que podemos ejecutar cuando leemos o escribimos sobre la variable nombre. • Por ejemplo: en set escribir Console.WriteLine($”Actualizando el nombre a {value}”); lo que hará es que cada vez que se ejecute la funcionalidad de editar el nombre se debe ejecutar este bloque de código e incluirá el Console.WriteLine que acabamos de escribir. • Una de las ventajas de utilizar propiedades es que podemos centralizar la lectura y escritura de campos lo que nos permite interceptar esa funcionalidad y agregar una funcionalidad personalizada. Esto no lo podíamos lograr cuando teníamos el campo como publico y lo estábamos utilizando directamente. • Presionar Ctrl+F5, resultado: tendremos Actualizando el nombre a Francisco y Actualizando el nombre a Paola • El Console se ejecuta 2 veces para cada nombre Francisco y Paola Campos y propiedades • Por lo tanto debemos evitar utilizar campos públicos, esto es considerado mala practica y realmente no te trae ningún tipo de ventaja • Lo correcto es siempre utilizar propiedades. • Ahora C# nos permite expresar la sintaxis anterior de manera mas breve, tanto solo diciendo public string Nombre { get; set; }, de este modo tenemos la misma funcionalidad. • Ahora podemos borrar el campo private string nombre; basta tan solo con la propiedad public string Nombre { get; set; } • A este tipo de propiedades donde no se le ve ningún campo se le llaman propiedades auto implementadas porque por detrás si se encarga automáticamente de generar un campo a través del cual se va a guardar la data del objeto. Campos y propiedades • Si vemos para el cliente nada a cambiado. • El cliente de la clase sigue utilizando la clase instanciando los objetos y editando el nombre de la persona dos veces y leyendo ese nombre y el código sigue funcionando • Entonces para el cliente de la clase no ha cambiado nada por haber eliminado el campo nombre es un concepto de diseño de software llamado encapsulamiento • Cuando diseñamos nuestro software siguiendo buenos principios de desarrollo como el encapsulamiento hacemos que nuestro software sea mas fácil de desarrollar y actualizar. • Vimos como actualizar nuestra clase persona eliminando un campo y esto no hizo que el código dejara de compilar. Campos y propiedades • Si quisiéramos que un propiedad fuese de solo lectura podríamos omitir el set, entonces quedaría public string Nombre { get; }. • De esta manera el cliente de la clase no puede editar la propiedad nombre solo leerla, sinos fijamos tendremos 2 errores en las líneas que son las que intentan editar la propiedad nombre, pero en la línea donde se intenta leer la propiedad Nombre no ocurre ningún error. • Esto es útil para datos calculados a partir de cierta información • Por ejemplo: si tenemos una propiedad donde tenemos que colocar un salario mensual de una persona • Seria public decimal SalarioMensual { get; set;} • Tambien queremos obtener su salario anual, seria public decimal SalarioAnual { get; set;} Campos y propiedades • Entonces en el cuerpo del set podemos colocar • { • get • { • return SalarioMensual * 12; • } • } • Ahora tenemos un campo salario anual que es de solo lectura y tiene sentido que lo sea porque a través del salario mensual podemos calcular el salario anual Campos y propiedades • Entonces colocaremos un salario mensual a la persona • persona1.SalarioMensual = 1000; • Y en pantalla vamos a colocar su salario mensual y también su salario anual • Console.WriteLine($”Nombre: {persona1.Nombre}”); • Console.WriteLine($”Salario mensual: {persona1.SalarioMensual}”); • Console.WriteLine($”Salario anual: {persona1.SalarioAnual}”); • Presionar Ctrl + F5 para ejecutar