dentro de la clase casa tenemos private int n; esto que es? es una propiedad?
Si, si es una propiedad, pero de tipo
privado, o sea, que solo puedes acceder a ella cumpliendo el principio de encapsulamiento, segun el paradigma de la POO como te mencione antes, el cual dice (tomado de
wikipedia).
- Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
- Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
El punto de porque se hace asi, te lo marque en negritas, resumiendo, es para evitar
efectos inesperados, si accedieramos directamente a la variable miembro.
como se supone que get y set van actuar si en esta parte de codigo es cuando se define una propiedad, como get y set pueden actuar al recuperar el valor de dicha propiedad si no se lo estamos pasando, entonces en este caso la propiedad es la que mesione que se encuentra dentro de la clase casa justo antes del constructor la cual es private int n;
?
Saludos
A ver trato de explicartelo, tu tienes tu propiedad privada n, que representa el numero de habitaciones, si seguimos el principio de encapsulacion, n solo debe poder accederse
dentro de la clase, para evitar
modificaciones indeseadas a n. Pero en este caso necesitas saber el numero de habitaciones desde fuera de tu clase
casa, por lo que creamos
mediante get/set una manera de acceder a la variable n. la parte que dice
return del get nos regresa el valor de n, y la parte que dice n = value del set, nos guarda el valor en la variable n, value es una variable que se crea atutomaticamente cuando lo usamos dentro de set, para facilitarnos las cosas.
ahora, tu podrias olvidarte de la encapsulacion y definir NumHabitaciones de tipo
public, lo cual seria equivalente y valido:
using System;
using System.Collections.Generic;
using System.Text;
namespace constructor
{
class casa
{
//constructor
public int NumHabitaciones;
public casa(int num)
{
NumHabitaciones = num;
}
public double Superficie(double media)
{
return NumHabitaciones * media;
}
static void Main(string[] args)
{
Console.WriteLine(cs.NumHabitaciones); //imprime 3
Console.WriteLine(cs.Superficie(10)); //Imprime 30
Console.Read();
}
}
}
Nota como elimine la variable interna n, y la reemplace por la variable NumHabitaciones. Pero entonces cualquiera pude acceder a tu variable interna, lo que puede generar cambios inesperados a tu variable, y deja de cumplir con el principio de encaspulacion como dije antes.
Espero que con la breve explicacion te quede un poco mas claro.
Saludos