Смекни!
smekni.com

Основные сведения о СУБД (стр. 4 из 6)

- унификация – способы взаимодействия любых объектов стандартизированы и основаны на принципах невмешательства во внутреннюю структуру объекта. Т.е. взаимодействие возможно через уведомление посредством сообщения или вызова объектных методов;

- защищенность – сокрытие информации от объектов, не находящихся в “родственных” отношениях с данным. Однако это не означает невозможность влияния объектов друг на друга, т.к. для этого существуют внутренние методы объекта, в которых разрешен доступ к его внутренней структуре;

- инкапсуляция – связывание в единое целое данных объекта (его свойств) и методов их изменения, воздействующих на состояние объекта. Это свойство позволяет устранить в коде программы внутренние зависимости, которые приведут к тому, что его будет трудно понять постороннему человеку и, тем более, модифицировать;

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

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

- прибор – он характеризуется своим именем и мощностью, которая вносит свой вклад в расход электроэнергии квартиры;

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

- дом – характеризуется своим номером, типом плиты (электрическая или газовая), которая применяется во всех квартирах дома, нормой расхода энергии на одного человека, а также тарифом за 1 кВ/ч.

Описание интерфейса классов

Ввиду невозможности представления в данной работе листинга программы (что является особенностью Power Builder), описание интерфейса классов изложено в подробной форме. При этом немалое внимание уделено и реализации тех или иных методов.

Класс приложения maxx:

содержит обработчик события Open. При этом создается объект типа “Транзакция” sqlca, с помощью которого будет производится доступ к БД средствами ODBC. В обработчике инициализируются глобальные переменные и создается главное окно – w_main.

Классы окон данных.

1) flats_of_month_h_num:

содержит информацию о всех квартирах дома за указанный месяц. При получении информации серверу БД передаются 2 параметра – номер дома и месяц, которые присутствуют в выражении SELECT. В описываемом окне данных поля, зависящие от месяца, являются вычислимыми, т.к. они не присутствуют физически в БД, т.к. в противном случае последняя не удовлетворяла бы второй нормальной форме.

2) house_of_month_h_num:

содержит информацию о доме, не зависящую от месяца.

3) pribors_1:

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

4) report_house:

окно отчета о расходе энергии для заданных домов в указанном диапазоне месяцев. Информация в окне группируется по полям house_c_num и house_v_month. Аргументами для получения данных являются диапазоны домов и месяцев.

5) pribors_1:

содержит даные для редактирования списка приборов, которые формируют расход электроэнергии для квартиры. Неизменяемым полем является поле идентификатора прибора, идентифицирующего его.

6) temp_edit:

содержит данные для модификации списка приборов в указанной квартире, использующихся в ней в заданном месяце. Эта информация берется из временной таблицы temp, данные в которую записываются из текстовой строки PRIBORS, хранящейся в таблице FLAT_V и содержащей список приборов, потребляющих энергию в данной квартире за определенный месяц, с указанием их количества и среднего времени работы за сутки.

Классы функций.

1) formhouselist:

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

2) getdaycount:

возвращает количество дней в указанном месяце.

Класс меню menu_1:

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

Класс проекта maxx:

- содержит описание способа построения исполняемого файла, являющегося реализацией класса приложения maxx. Библиотека, содержащая описания классов программы, может включаться в формируемый EXE-файл, либо генерироваться, как библиотека динамической компоновки. При этом возможны следующие варианты, в зависимости от ее содержимого:

- в ней содержится машинный код (расширение DLL);

- в ней содержатся макроопределения используемых объектов (расширение PBD).

- В объекте “проект” также перечисляются файлы с описанием используемых ресурсов.

Классы пользовательских объектов.

1) u_closebutton:

кнопка для закрытия родительского окна.

2) u_editmask_g0:

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

3) u_waitwindow:

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

Классы окон.

1) w_db_struct:

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

2) w_flatpribors:

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

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

Окно использует объект DataWindow temp_1. При модификации информации в нем производится пересчет количества энергии в кВ/ч, потребляемого квартирой за сутки.

3) w_flats:

окно модификации данных о домах. В верхней его части располагается список домов, присутствующих в БД, а также месяцы года. В окне производятся операции добавления/удаления/редактирования как самих домов, так и квартир, содержащихся в них.

Модификация информация о доме производится в DataWindow house_of_month_h_num (постоянная информация о доме) и пользовательском элементе управления u_editmask_g0 (информация, зависящая от месяца – тариф).

Редактирование данных о квартирах в выбранном доме осуществляется в DataWindow flats_of_month_h_num. При изменении любой модифицируемой информации в этом окне, а также изменении текущего месяца или месячного тарифа, происходит автоматическое обновление вычисляемых полей, относящихся к квартирам.

Из этого окна также осуществляется вызов окна w_flatpribors для редактирования списка приборов квартиры.

4) w_main:

главное окно программы, содержащее меню и рабочую область (в программе не используется).

5) w_params:

окно модификации параметров, принимаемых по умолчанию (в данной версии программы это – тариф оплаты одного кВ/ч).

6) w_pribors_edit:

окно редактирования списка приборов, которые могут быть заданы в качестве потребителей электроэнергии. При удалении прибора либо изменении мощности уже существующего происходит модификация информация в БД: при выходе из окна выполняется сравнение текущих данных о мощности с хранимыми в БД. Если для какой-либо записи обнаружено несоответствие, то происходит изменение данных о количестве потребляемой энергии квартирой и перерасчет суммы для дома путем вызова хранимой процедуры GetHouseSum.

7) w_report_house:

- окно просмотра отчета о суммарных материальных затратах, которые несут жильцы всех квартир дома за месяц. Отчет можно просматривать в нескольких формах:

- информация об одном доме и одном месяце;

- информация о всех домах и одном месяце;

- информация о всех домах и всех месяцах;

- информация об одном доме и всех месяцах.

Описание программы

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

Модификация данных осуществляется, как правило, через элементы управления DataWindow. Их реализация предусматривает изменение текущих данных только при выходе из поля редактирования. Поэтому, в некоторых ситуациях, реакция программа на модификацию данных может отличаться от ожидаемой.

Описание главного меню:

1) “Программа”

а) “Структура БД” – просмотр информации о структуре БД (содержимого ее таблиц и связей между ними);

б) “Выход” – завершение работы с программой;

2) “Данные”

а) “Дома” – работа с информацией о домах. При этом появляется диалоговое окно, содержащее элементы управления для задания критериев отбора данных, и, непосредственно, сами данные.