Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOS / Дисциплины специализации.doc
Скачиваний:
42
Добавлен:
09.05.2015
Размер:
1.61 Mб
Скачать

12. Визуальное объектно-ориентированное программирование. Инкапсуляция, наследование, полиморфизм.

 В языках визуального объектно-ориентированного программирования (например, Visual Basic) применяется визуальный метод создания графического интерфейса приложения и объектный метод построения его программного кода.           Графический интерфейс. Визуальное программирование позволяет делать графический интерфейс разрабатываемых приложений на основе форм и управляющих элементов.           В роли основных объектов при визуальном программировании выступают формы (Forms). Форма представляет собой окно, на котором размещаются управляющие элементы. Управляющие элементы — это командные кнопки (CommandButton), переключатели, или «флажки» (Checkbox), поля выбора, или «радиокнопки» (OptionsButton), списки (ListBox), текстовые поля (TextBox) и др.           Событийная процедура. Важное место в технологии визуального объектно-ориентированного программирования занимают события. В качестве события могут выступать щелчок кнопкой мыши на объекте, нажатие определенной клавиши, открытие документа и т. д. В качестве реакции на события запускается определенная процедура, которая способна изменять свойства объекта, вызывать его методы и т. д.           Например, если пользователь производит какое-либо воздействие на элемент графического интерфейса (нажимает командную кнопку), в качестве отклика           выполняется некоторая последовательность действий (событийная процедура).           Имя процедуры включает в себя имя объекта и имя события.           Объект_Событие()           Каждая процедура представляет собой отдельный программный модуль, в начале и в конце которого ставятся ключевые слова Sub и End:           Sub Объект_Событие() Программный код End Sub           В качестве примера реализации событийной процедуры рассмотрим программу, осуществляющую преобразование кода символа в изображение символа. Пусть событием будет щелчок мыши по командной кнопке           Command1:           Commandl_Click()           Преобразуем числовой код в символ посредством функции Chr, аргументом которой является число, а значением — символ. Например, значение функции Chr (221) —символЭ.           Для печати результата на форме Forml используем метод Print:           Разрабатываемое на языке Visual Basic приложение называется проектом. Проект включает в себя не только форму с размещенными на ней управляющими элементами, но и программные модули событийных процедур, которые описывают поведение объектов приложения и взаимодействие объектов между собой.

Инкапсуляция

Инкапсуляция (encapsulation) - это сокрытие реализации класса и отделение его внутреннего представления от внешнего (интерфейса). При использовании объектно-ориентированного подхода не принято применять прямой доступ к свойствам какого-либо класса из методов других классов. Для доступа к свойствам класса принято задействовать специальные методы этого класса для получения и изменения его свойств.

Внутри объекта данные и методы могут обладать различной степенью открытости (или доступности). Степени доступности, принятые в языке Java, подробно будут рассмотрены в лекции 6. Они позволяют более тонко управлять свойством инкапсуляции.

Открытые члены класса составляют внешний интерфейс объекта. Это та функциональность, которая доступна другим классам. Закрытыми обычно объявляются все свойства класса, а также вспомогательные методы, которые являются деталями реализации и от которых не должны зависеть другие части системы.

Благодаря сокрытию реализации за внешним интерфейсом класса можно менять внутреннюю логику отдельного класса, не меняя код остальных компонентов системы. Это свойство называется модульность.

Обеспечение доступа к свойствам класса только через его методы также дает ряд преимуществ. Во-первых, так гораздо проще контролировать корректные значения полей, ведь прямое обращение к свойствам отслеживать невозможно, а значит, им могут присвоить некорректные значения.

Во-вторых, не составит труда изменить способ хранения данных. Если информация станет храниться не в памяти, а в долговременном хранилище, таком как файловая система или база данных, потребуется изменить лишь ряд методов одного класса, а не вводить эту функциональность во все части системы.

Наконец, программный код, написанный с использованием данного принципа, легче отлаживать. Для того, чтобы узнать, кто и когда изменил свойство интересующего нас объекта, достаточно добавить вывод отладочной информации в тот метод объекта, посредством которого осуществляется доступ к свойству этого объекта. При использовании прямого доступа к свойствам объектов программисту пришлось бы добавлять вывод отладочной информации во все участки кода, где используется интересующий нас объект.