- •2 Билет) Этапы развития эвм
- •3)Архитектура основные принципы работы эвм.
- •4) Операционные системы, их функции.
- •Вопрос 5
- •'Это текстовая строка'
- •'Это '' - символ одиночной кавычки'
- •4. Обработка строковых данных
- •§ 23.Символьный тип данных
- •8 Вопрос § 24. Строковый тип данных
- •24.1. Строковые величины
- •24.2. Операции со строковыми величинами
- •24.3. Стандартные подпрограммы
- •* 24.4. Преобразование строковых данных
- •* 24.5. Отображение числовой информации в графическом режиме
- •9 Вопрос
- •10 Билет
- •Основные элементы схем алгоритма
- •11 Билет Объектно-ориентированное программирование Основные понятия
- •Оператор цикла repeat
- •Оператор цикла while
- •Оператор цикла for
- •14 Вопрос
- •15 Вопрос
- •1. Основные понятия объектно-ориентированного программирования
- •2. Объект - как базовое понятие в объектно-ориентированном программировании
- •2.1 Инкапсуляция
- •2.2 Наследование как важнейшее свойство объекта
- •2.3 Экземпляры объектных типов
- •2.4 Поля объектов
- •2.5 Методы
- •2.6. Полиморфизм
- •3. Понятие класса
- •4. Процесс объектно-ориентированного проектирования
- •5. Объектно-ориентированные языки
- •6. Простая объектная модель и ссылочно-объектная модель
- •7. Языки и программное окружение
- •17 Вопрос
- •18 Вопрос
- •19 Вопрос
17 Вопрос
Свойство — способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой.
При применении свойств
можно задать значение по умолчанию, которое будет хранится в данном свойстве (или указать, что никакого значения по умолчанию не предполагается);
можно указать, что это свойство только для чтения.
Как правило, свойство связано с некоторым внутренним полем (переменной) объекта. Но свойству вообще может не быть сопоставлена ни одна переменная объекта, хотя пользователь данного объекта имеет дело с ним так, как если бы это было настоящее поле.
Свойства повышают гибкость и безопасность программирования, поскольку, являясь частью (открытого) интерфейса, позволяют менять внутреннюю реализацию объекта без изменения его свойств. По своей сути, свойства предназначены для того, чтобы свести программирование к операциям над свойствами, скрывая вызовы методов.
Содержание
|
Методы свойств
Во многих языках программирования свойства реализуются в виде пары методов: метод, получающий текущее значение свойства, называется акцессор (accessor); метод, задающий новое значение свойства — мутатор (mutator). В языках программирования, не поддерживающих свойства, например C++ и Java, пара из акцессора и мутатора является общепринятым суррогатом для их замены.
Принято называть методы свойств именем свойства с приставками get и set: например, для свойства Xyzzy — get_Xyzzy и set_Xyzzy (традиционный стиль Си) либо GetXyzzy и SetXyzzy (стиль CamelCase). В связи с этой схемой наименования за методами свойств закрепились жаргонные названия getter и setter.
Примеры
Свойства в C#
Свойства в C# — поля с логическим блоком, в котором есть ключевые слова get и set.
Пример класса со свойством:
class MyClass
{
private int p_field;
public int Field
{
get
{
return p_field;
}
private set
{
p_field = value;
}
}
}
Свойства в Delphi
Для описания свойства в Delphi служит слово property.
Пример класса со свойством:
TMyClass = class
private
FMyField: Integer;
procedure SetMyField(const Value: Integer);
function GetMyField: Integer;
public
property MyField: Integer read GetMyField write SetMyField;
end;
function TMyClass.GetMyField: Integer;
begin
Result := FMyField;
end;
procedure TMyClass.SetMyField(const Value: Integer);
begin
FMyField := Value;
end;
[править] Свойства в ActionScript
class MyClass
{
private _foo : int;
public function get foo () : int {
return _foo;
}
public function set foo (foo : int) : void {
_foo = foo;
}
}
Свойства в Objective C
@interface Company : NSObject
{
NSString *name;
}
@property(retain) NSString *name;
@end
@implementation Company
@synthesize name;
@end
Свойства в Ruby
Описания свойства в Ruby ничем не отличается от описания метода. Например, для создания свойства duration у класса Song нужно описать методы duration и duration=(value)
class Song
def duration
@duration
end
def duration=(value)
@duration = value
end
end
Однако простое обращение к внутренней переменной объекта может быть заменено на вызов метода attr_accessor :duration
class Song
attr_accessor :duration
end
Более интересным будет пример создания свойства duration_in_minutes, которое будет возвращать или устанавливать время длительности в минутах:
class Song
def duration_in_minutes
@duration/60.0
end
def duration_in_minutes=(value)
@duration = (value*60).to_i
end
end
При этом изменение свойства duration_in_minutes повлияет на свойство duration. Например
song = Song.new
song.duration_in_minutes = 1.2
print song.duration # напечатает 72