.NET
2
Вклад в тег
Объект обладает состояние и поведение (Гради Буч)
Состояние объекта характеризуется перечнем (обычно статическим) всех свойств данного объекта и текущими (обычно динамическими) значениями каждого из этих свойств. (Гради Буч)
Поведение - это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений. Иными словами, поведение объекта - это его наблюдаемая и проверяемая извне
деятельность. (Гради Буч)
Свойство — это член, предоставляющий гибкий механизм для чтения, записи или вычисления значения частного поля. Свойства можно использовать, как если бы они были членами общих данных, но фактически они представляют собой специальные методы, называемые методами доступа. Это позволяет легко получать доступ к данным и помогает повысить безопасность и гибкость методов. (Свойства MSDN)
Свойства позволяют обращаться к методу в исходном тексте программы, используя упрощенный синтаксис. (Рихтер, глава 9, стр. 204 по книге)
Осторожный подход к определению свойств. Лично мне свойства не нравятся, и я был бы рад, если бы их поддержку убрали из Microsoft .NET Framework и сопутствующих языков программирования. Причина в том, что свойства выглядят как поля, на самом деле являясь методами. Это по рождает массу заблуждений и непонимания. Столкнувшись с кодом, обращающимся к полю, разработчик привычно предполагает наличие массы условий, которые просто не всегда верны, если речь идет о свойстве. (Рихтер, глава 9, стр. 204 по книге)
public sealed class Employee
{
private String m_Name; // Это состояние
private Int32 m_Age; // Это состояние
public String GetName() // Это поведение
{
return(m_Name);
}
public void SetName(String value) // Это поведение
{
m_Name = value;
}
public sealed class Employee
{
private String m_Name; // Это состояние
private Int32 m_Age; // Это состояние
public String Name // Это поведение
{
get { return(m_Name); }
set { m_Name = value; }
}
}
public abstract String GetName();
public abstract void SetName(String value);