Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Пример для освежения в памяти

Читайте также:
  1. CИТУАЦИОННЫЕ ЗАДАЧИ С ПРИМЕРАМИ РЕШЕНИЯ
  2. CИТУАЦИОННЫЕ ЗАДАЧИ С ПРИМЕРАМИ РЕШЕНИЯ
  3. CИТУАЦИОННЫЕ ЗАДАЧИ С ПРИМЕРАМИ РЕШЕНИЯ
  4. CИТУАЦИОННЫЕ ЗАДАЧИ С ПРИМЕРАМИ РЕШЕНИЯ
  5. VI. ПРИМЕРНАЯ МЕТОДИКА ОБУЧЕНИЯ УПРАЖНЕНИЯМ КУРСА СТРЕЛЬБ
  6. Августа 1792 г. Законодательное собрание во Франции отрешило короля Людовика XVI от власти и заключило его в тюрьму. Это пример проявления санкций
  7. Автомобили - идеальный пример эмпирического продукта
struct point { int x; int y;}; main(){ point pt; pt.x=1; pt.y=2; }

 

Данные объекта можно рассматривать как поля записи в базе данных или как данные, описываемые в структуре. И пользователь и другие объекты программы должны иметь возможность читать, изменять и записывать данные в объект.

При проектировании процедур доступа к данным необходимо использовать принципы инкапсуляции (добавления данных в объект в соответствии с принципами разграничения доступа) и скрытия данных. Скрытие данных заключается в запрещении прямого доступа к данным пользователю и внешним объектам. Под прямым доступом заключается возможность совершать операции над переменными объекта функциям внешних объектов.

Делается это для решения следующих задач:

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

2. Изоляция внешних объектов и пользователей от особенностей внутренней реализации данных объекта. Для внешних потребителей данных должен быть доступен пользовательский интерфейс, т.е. описание того, какие имеются данные и как их использовать (например, для объекта кнопка в интерфейсе программы пользователю необходимо манипулировать лишь с её координатами на форме приложения, размерами, цветом, но совсем необязательно знать как осуществляется их прорисовка). Внутренняя реализация данных объекта целиком остаётся в ведении разработчика. В этой ситуации разработчик всегда может модернизировать внутреннюю структуру объекта, и если пользовательский интерфейс не затронут, то в поведении пользователя и во внешней программе не придётся ничего менять.

Чтобы обеспечить скрытие данных при описании объекта необходимо указать все процедуры и функции, обеспечивающие необходимые операции с данными, т. е. их чтение, преобразование и запись. Эти функции и процедуры называют методами объекта, и только через них происходит общение с данными объекта.

Совокупность данных и методов их чтения называется свойством. Свойства объектов можно устанавливать во время проектирования (например, с помощью инспектора объектов Borland C++ Builder), можно изменять программно во время выполнения приложения в зависимости от действий пользователя и других объектов.

Кроме методов, работающих с отдельными данными, есть методы, оперирующие с их совокупностью, а так же меняющие их структуру. Исходя из вышесказанного, можно определить объект как совокупность свойств и методов.

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

Средой взаимодействия объектов являются сообщения, которые генерируются объектами (включая пользователя и ОС) в результате событий. События наступают, прежде всего, вследствие действий пользователя – перемещение курсора мыши, нажатие клавиш мыши или клавиатуры. Также события могут наступать в результате работы самих объектов. В каждом объекте описано множество событий, на которые он может реагировать. В конкретном экземпляре объекта (т. е. объявленном в программе) могут быть определены обработчики каких либо из этих событий, которые определяют реакцию этого объекта на это событие. В программе это выглядит как функция, которая выполнится только в том случае, если произойдёт конкретное событие. В обработчике прежде всего анализируется сгенерированное событие, а затем предпринимаются действия: изменение свойств объекта, выполнение каких либо методов, генерирование новых событий и т.д.

При разработке пользовательского интерфейса в Borland C++ Builder часто всё программирование сводится к написанию обработчиков событий, т.к. все остальные действия максимально автоматизированы и выполняются с помощью среды визуального программирования.

Например, простейшая программа-калькулятор для сложения чисел может быть рализована следующим образом:

 

Организуется форма с элементами для ввода чисел (Edit1, Edit2), вывода результата (Label) и сигнала к расчету и выводу результата на форму (Button).

 

Если необходимо, чтобы по нажатию на кнопку осуществился расчет и вывод результата на форму, необходимо сгенерировать событие OnClick (одиночное нажатие на кнопку Button) и функцию обработчика этого события, в которой в случае нажатия произойдет расчет и вывод результатов

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Label1->Caption=FloatToStr(StrToFloat(Edit1->Text)+StrToFloat(Edit2->Text));

}

 

После компиляции и запуска получим приложение

 

Взаимодействие объектов можно показать следующим образом

 

 

 

Окончательное определение объекта – совокупность свойств и методов, а также со­бытий. на которые он может реагировать.

Условно это изображено на рис. 3.

 

Рис. 3

 

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

В процессе работы объекты могут создаваться и уничтожаться. Таким обра­зом, структура программы является динамическим образованием, меняющимся в процессе выполне­ния. Основная цель создания и уничтожения объектов — экономия ресурсов компьютера и, прежде все­го, памяти. Память практически всегда ли­митирует возможности сложных приложений. Это связано с тем, что сложность программных проек­тов растет такими же быстрыми, темпами, что и техническое обеспечение. Поэтому от объ­ектов, которые не нужны на данной стадии выполнения программы, нужно освобождаться. При этом освобождаются и выделенные им области памяти, которые могут использоваться вновь создаваемыми объектами.

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

С целью организации динамического распределения памяти во все объекты заложены методы их со­здания — конструкторы и уничтожения — деструкторы. Конструкторы объектов, которые изначаль­но должны присутствовать в приложении (прикладной программе), запускаются при запуске програм­мы. Деструкторы всех объектов, имеющихся в данный момент в приложении, запускаются при завер­шении его работы. Но нередко и в процессе выполнения новые различные объекты (например, новые окна документов) динамически создаются и уничтожаются с помощью их конструкторов и деструкторов.

Включать объекты в свою программу можно двумя способами: вручную включать в нее соответству­ющие операторы (это приходится делать не очень часто) или путем визуального программирования, ис­пользуя соответствующие программные заготовки в виде объектов или наборов объектов, хранящихся в библиотеках. В Borland C++ Builder их называют компоненты. Стандартный набор компонент с наиболее часто встречающимися элементами интерфейса находятся в библиотеке VCL Visual Components Library и входит в комплект поставки Borland C++ Builder. Они доступны с палитры компонент сразу после установки пакета Borland C++ Builder.

 

 


Дата добавления: 2015-07-07; просмотров: 184 | Нарушение авторских прав


Читайте в этой же книге: Средства реализации программного кода | Лекция 2. История развития ООП и сред RAD | Функции-элементы, дружественные функции, константные функции | Встраиваемые функции inline | Виртуальные функции. | Первый пример |
<== предыдущая страница | следующая страница ==>
Отличия ООП от процедурных программ| Лекция №5 Данные-элементы, статические данные, константные данные

mybiblioteka.su - 2015-2024 год. (0.016 сек.)