Часть II. Объектно-ориентированное программирование
кретный числовой объект, с которым можно работать. Просто с объяв-
лением
i
еще работать нельзя. Не с чем. А с объектом, даже можно ска-
зать, с экземпляром этого шаблона
int
i
, который равен 5, работать
можно. Если мы присвоим переменной
i
другое значение, например 6,
можно сказать, что мы из шаблона
int
i
получили (создали) другой
объект: число 6.
Точно так же и с классом: мы его описали, получили просто описание,
шаблон. И ничего больше. А как только мы по этому шаблону создали
переменную и наполнили ее неким содержанием, то получили объект,
соответствующий данному содержанию. Говорят, что получили экземп-
ляр класса. Наполнили переменную другим содержанием — получили
другой объект с другим содержанием, другой экземпляр класса. Объек-
ты (экземпляры) уже размещаются в памяти. Класс — это ссылочный
тип. Поэтому он размещается в динамической куче оператором
new
.
А почему сделали класс ссылочным типом данного? Потому что объек-
ты, получаемые из этого класса, могут быть огромными (например, ка-
кой-нибудь крупный завод). А перемещать в памяти, как мы видели,
ссылочные данные намного проще нессылочных: переслал только ссыл-
ку кому надо и не тронул огромный массив. Большой выигрыш в скоро-
сти обработки.
Прежде чем изучать конкретную структуру класса, отметим, что класс
как совокупность элементов (членов класса) состоит из членов, которые
называются
полями
, и из членов, оперирующих данными этих полей.
Эти последние могут быть конструкторами, методами, свойствами, со-
бытиями и др.
Методы
— это функции. Так функции называются
в классах.
Конструкторы
— это методы, которые позволяют инициали-
зировать класс, тем самым создают из класса объект, размещая его в
памяти. То есть конструктор — это обычная (по структуре) функция,
получающая на свой вход данные, которые присваиваются полям клас-
са. Иными словами, из пустого шаблона за счет задания полей получа-
ется объект.
Например, пусть мы имеем класс
MyCar
. Это тип данного, как мы виде-
ли. Объявляем переменную этого типа. Например,
car
(автомобиль):
MyCar
car;
. Но это пока ничто: объявление и не более того. С такой пе-
ременной работать нельзя. Допустим, у автомобиля, класс которого мы
хотим описать, есть такие характеристики (поля): марка (
Type
), имя вла-
дельца (
Name
) и скорость (
Speed
). Тогда функция, которая призвана за-
дать эти поля, должна иметь в своем заголовке эти три параметра
(
string Type
,
string Name
,
float Speed
). А каким должно быть имя
у такой функции? Оно специфично и совпадает с именем класса. Впол-
Do'stlaringiz bilan baham: |