Файл: 1. Понятие об объектах. Принцип инкапсуляции.pdf

Добавлен: 20.10.2018

Просмотров: 1067

Скачиваний: 13

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

 

свойств.  Это  позволяет  устранить  целый  класс  неприятных  логических 

ошибок, таких как использование неинициализированных данных.  

Для  одного  и  того  же  объекта  можно  предусмотреть  несколько 

различных  конструкторов,  которые  по-разному  инициализируют  свойства 

создаваемого  объекта.  Начальные  значения  свойств  часто  передаются 

конструктору как входные параметры.  

Деструктор  отвечает  за  уничтожение  объекта,  т.е.  освобождение 

памяти,  выделенной  объекту.  В  отличие  от  конструкторов,  механизм 

деструкторов реализован не во всех языках: деструкторы есть в языке С++, в 

языке  Delphi  Pascal,  предусмотрены  (но  практически  не  используются)  в 

языке  С#  и  отсутствуют  в  языке  Java.  В  последних  двух  языках  вместо 

деструкторов реализован специальный механизм «сборки мусора» (garbage 

collect),  который  способен  при  необходимости  выполнять  автоматическое 

освобождение памяти. 

Еще  одна  группа  очень  часто  используемых  методов  –  это  методы 

доступа к закрытым свойствам объекта. Введение таких методов позволяет 

организовать  контролируемый  доступ  к  внутренним  данным  объекта.  В 

общем случае для каждого закрытого свойства можно: 

 

ввести  два  метода  доступа:  для  чтения  хранящегося  в  свойстве 

значения  (часто  такие  методы  называют  get-методами)  и  для 

изменения значения свойства (set-метод

 

ввести только один get-метод: свойство доступно только для чтения 

 

не  вводить  ни  одного  метода  доступа,  что  соответствует  полной 

закрытости элемента данных 

Набор  используемых  с  каждым  свойством  методов  доступа 

определяется  при  разработке  объекта  и  позволяет  для  каждого  свойства 

организовать необходимый уровень доступа.  

Иногда  set-методы  кроме  изменения  значений  свойств  выполняют 

некоторую дополнительную работу, например – проверяют новые значения 

свойств. 


background image

 

 

Кроме  конструкторов  и  методов  доступа,  объекты  практически  всегда  

имеют  еще  и  некоторый  набор  специфических  методов,  определяющих 

функциональность объекта. Например: 

 

объект  «Окружность»:  отображение  на  экране,  перемещение, 

растяжение/сжатие, вычисление длины окружности. 

 

объект «Список»: добавление элемента, удаление элемента, поиск 

элемента, сортировка элементов; 

 

объект «Окно»: отображение, перемещение, изменение атрибутов, 

изменение размеров; 

 

объект «Студент»: посещение занятий, выполнение заданий, сдача 

контрольных точек, оплата обучения; 

 

В 

итоге 

объектная 

программа 

представляет 

собой 

набор 

взаимодействующих  объектов,  которые  обращаются  друг  к  другу  за 

выполнением необходимых действий. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При этом каждый объект проходит определенный жизненный цикл:  

  объект создается методом-конструктором 

Объект А

 

 
 
 

конструкторы 

методы доступа 

открытые методы 

закрытые данные 
закрытые методы 

Объект B

 

 
 
 

конструкторы 

методы доступа 

открытые методы 

закрытые данные 
закрытые методы 

Объект C

 

 
 
 

конструкторы 

методы доступа 

открытые методы 

закрытые данные 
закрытые методы 


background image

 

 

  объект  используется  другими  объектами,  предоставляя  им  свои 

открытые методы и неявно – закрытые данные 

  объект  уничтожается  (явно  деструктором  или  неявно  механизмом 

сборки мусора)  

Очевидно,  что  при  работе  объектной  программы  одновременно  может 

существовать  множество  однотипных  программных  объектов  (например  -

множество  файлов,  множество  окон,  множество  студентов).  Поэтому 

необходим  инструмент  формального  описания  таких  однотипных 

объектов и в качестве такого инструмента выступает следующее важнейшее 

понятие объектного подхода - класс.