База данных отеля
Концептуальный анализ предметной области и разработка объектной модели для реализации в среде VisualAge Smalltalk программы учёта клиентов отеля и снимаемых ими номеров. Концептуальные структуры действий, схема визуальной композиции и тесты программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.06.2012 |
Размер файла | 2,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования "Московский государственный технический университет радиотехники, электроники и автоматики" МГТУ МИРЭА Факультет информационных технологий
Кафедра вычислительной техники
КУРСОВОЙ ПРОЕКТ
по дисциплине
«Объектно-ориентированное программирование»
Тема курсового проекта
«База данных отеля»
Студент группы ИТВ-2-10
Ковалев А.В.
Рецензент Ст. преп. каф. МОВС,
к.т.н. Смольянинова В.А.
Москва 2012
1. Тема «База данных отеля»
2. Исходные данные.
Разработать программу, позволяющую: фиксировать информацию о новых клиентах и снимаемые ими номера в объектной БД, реализовывать поисковые запросы по отдельным параметрам. Для реализации использовать среду VisualAge Smalltalk.
3. Перечень вопросов, подлежащих разработке, и обязательного графического материала.
Вопросы: концептуальный анализ предметной области (ПрО), разработка объектной модели
ПрО, программная реализация с учетом шаблона проектирования MVC, тестирование.
Графический материал: концептуальные структуры действий, схема визуальной композиции.
4. Срок представления к защите курсового проекта (работы): до «___» _______201_ г.
Задание на курсовой
проект выдал «___»______201__г.
Смирнов С.С.
Задание на курсовой
проект получил «___»______201__г.
Ковалев А.В.
Мониторинг процесса выполнения курсового проекта
№ этапа |
Этап курсового проекта, работы выполнил и представил результаты руководителю проекта (работы), дата и подпись исполнителя |
Работу по этапу курсового проекта (работы) принял на рассмотрение, дата и подпись руководителя |
Рекомендации и замечания по дата и подпись руководителя |
Оценка выполнения этапа курсового проекта, (работы) (в соответствии с балльно-рейтинговой системой) |
Комментарии руководителя курсового проекта (работы) |
Реферат
Данный курсовой проект посвящен разработке управляемой базы данных отеля. В процессе реализации проекта должны быть закреплены знания и навыки, полученные в ходе семестрового изучения дисциплины «Объектно-ориентированное программирование».
Пояснительная записка к проекту состоит из введения, четырех разделов, заключения и списка литературы. Также имеется одно приложение.
Во введении рассматриваются цели и задачи курсового проекта, обосновывается выбор темы и инструментальных средств.
Следующий раздел посвящен концептуальному анализу предметной области решаемой задачи.
Далее описано объектное проектирование - переход от результатов концептуального анализа к объектной модели.
Следующий раздел описывает программную реализацию проектируемой системы в среде программирования VisualAge Smalltalk 7.5.2
Завершается пояснительная записка разделом, посвященном тестированию полученного программного продукта.
В заключении кратко сформулированы выводы по данной работе.
В приложении содержится схема, являющаяся частью описания программной реализации.
Содержание
- Введение
- 1. Концептуальный анализ
- 1.1 Методика концептуального анализа
- 1.2 Концептуальный анализ деятельности БД
- 1.2.1 Уточнение постановки задачи
- 1.2.2 Концептуальный анализ задачи добавления новой записи о клиенте
- 1.2.3 Концептуальный анализ задачи добавления новой записи о номере
- 1.2.4 Концептуальный анализ задачи удаления записей
- 1.2.5 Концептуальный анализ задачи поиска записей
- 2. Переход от концептуальной модели к объектной
- 3. Программная реализация
- 3.1 Класс «HotelBDUser»
- 3.2 Класс «HotelBDRoom»
- 3.3 Класс «HotelBDCore»
- 3.4 Класс «HotelBDAddUser»
- 3.5 Класс «HotelBDAddRoom»
- 3.6 Класс «HotelBDSearchEngine»
- 3.7 Класс «HotelBDAnswerWindow»
- 3.8 Класс «HotelBDMainWindow»
- 4. Тестирование работоспособности программы
- 4.1 Тест №1 Исходные данные. Ошибка! Закладка не определена.
- 4.2 Тест №2. Работа с запросами
- 4.3 Тест №3. Удаление
- 5. Тесты поиска
- 5.1 Тест №4.1 Поиск по имени
- 5.2 Тест №4.2 Поиск по полу
- 5.3 Тест №4.3 Поиск по типу номера
- 5.4 Тест №4.4 Поиск по всем параметрам
- Заключение
- Список литературы
- Введение
- В настоящее время объектно-ориентированное проектирование - является основным подходом к разработке прикладного программного обеспечения и т.д.
- Программирование в данном наиболее близко к естественному мышлению человека, благодаря чему написание кода программы становится значительно проще и быстрее, да и сам код становится более читабельным, структурированным и понятным.
Целью выполнения курсового проекта является развитие следующих практических навыков:
- концептуального описания предметной области (ПрО) поставленной задачи;
- проектирования объектной модели ПрО;
- программной реализации системы, решающей поставленную задачу на объектном языке программирования Smalltalk в среде VisualAge.
Язык Smalltalk является «чистым» объектным языком программирования, т.е. не объектно-ориентированным, как другие современные языки такие, как C++, Object Pascal и др. Это означает, что использование Smalltalk побуждает разработчика мыслить исключительно в объектом стиле, т.к. другие стили программирования (например, процедурное) просто не поддерживаются. Указанная особенность хорошо согласуется с целями изучения курса ООП.
В среде VisualAge Smalltalk реализован оригинальный подход к визуальному программированию, подразумевающий не только визуальную разработку пользовательского интерфейса, но и визуальное программирование тривиальной логики работы приложения, под которой подразумевается:
- управление элементами пользовательского интерфейса в зависимости от различных событий;
- описание структуры пользовательских невизуальных компонентов, относящихся к модели предметной области;
- создание контроллеров, увязывающих модель предметной области с представлением (в соответствии с шаблоном проектирования MVC).
Данный подход автоматизирует создание рутинного кода и позволяет быстро и наглядно увязать вместе события, действия, атрибуты различных объектов, а также вызовы методов и результаты их работы. При этом информационные и управляющие связи отображаются в виде стрелок разного цвета и формы.
В связи с обозначенными выше целями, а также в связи с универсальностью методов концептуального анализа и объектного проектирования, выбор конкретной предметной области в рамках курсового проекта является не таким уж важным.
Автору данного проекта по субъективным причинам показалось интересным разработать прототип управляемой базы данных для отеля. Востребованность подобных систем не вызывает сомнений, как и то, что подобные системы уже используются и будут использоваться, во всех отелях, гостиницах и т.п.
Реализованный в данном курсовом проекте прототип базы данных не претендует на решение задачи улучшения программ отелей, в нем рассмотрены только некоторые выбранные автором очень простые функции, поэтому полученные результаты могут использоваться только в учебных целях.
Заявленные цели курсового проекта достигаются в процессе решения следующих задач:
- выбор функций для базы данных
- концептуальный анализ предметной области с точки выбранных функций по методике, изложенной в [1];
- трансформация результатов концептуального анализа в объектную модель;
- реализация разрабатываемой программы в среде VisualAge Smalltalk;
- тестирование работоспособности полученной программы.
- подготовка расчетно-пояснительной записки.
отель программа учёт visualage
1. Концептуальный анализ
1.1 Методика концептуального анализа
Концептуальный анализ является необходимой стадией разработки программы в стиле ООП. Он позволяет выявить ключевые понятия, при помощи которых описывается процесс решения задачи, - объекты, свойства, отношения, действия, которые в совокупности образуют концептуальную модель ПрО.
В данной работе используется методика концептуального анализа, изложенная в [1]. Отличительная особенность этой методики в том, что она предлагает четкий алгоритм диалога разработчиков с экспертами, которого следует придерживаться, в то время как прочие методологии ООП [2,3,4] предлагают лишь набор рекомендаций.
Методика использует специальный графический язык представления знаний, который позволяет наглядно описывать содержания происходящих процессов и легко классифицировать выявляемые понятия. Можно сказать, что данная методика является интересным вариантом методики разбиения большой задачи на подзадачи.
Применение методики требует выполнения следующих шагов:
1. Сформулировать на естественном языке описание целевой ситуации.
2. Подвергнуть полученное текстовое описание анализу и выделить имена понятий, которые в нем встречаются. На основе выделенных имен, зарисовать фрагмент структуры действия, соответствующего постановке задачи. Отметить факты, формируемые в данном фрагменте, как целевые.
3. Достроить полученный фрагмент, определив имя действия и имя субъекта действия.
4. Определить какие условия необходимы для реализации данного действия, для чего необходимо ответить на два вопроса:
a. Когда можно совершить данное действие? Ответом на вопрос является описание физических ограничений.
b. Когда нужно совершить данное действие? Ответом на вопрос является описание условий необходимости реализации.
5. Выделить из полученных ответов элементарные понятия и достроить рассматриваемую структуру действия, зарисовав необходимые компоненты действия, свойства и отношения, и задав оценку их значений.
6. Относительно каждого из условий, определенных в пунктах 4 и 5, необходимо задаться вопросом: «Каким образом это условие формируется?». На данный вопрос могут быть получены следующие варианты ответа:
a. Условие представляет собой информацию, поясняющую ход процесса.
b. Условие формируется в результате ввода данных.
c. Условие может быть получено как результат выполненных других действий.
d. Анализ происхождения данного условия не интересует, поскольку причины, его вызывающие, выходят за рамки данной задачи.
7. Если получен третий вариант ответа, тогда необходимо задаться вопросом, какие именно действия формируют данное условие. Третий вариант ответа позволяет концептуальному анализу идти дальше, прочие варианты ответа останавливают анализ в данном направлении.
8. Относительно каждого из выявленных в пункте 7 действий необходимо повторить шаги 3-8.
Процесс концептуального анализа завершиться естественным образом, поскольку ответов, останавливающих его в 3 раза больше, чем ответов, позволяющих ему продолжаться (см. пункт. 6 описания методики).
1.2 Концептуальный анализ деятельности БД
1.2.1 Уточнение постановки задачи
Для анализа в рамках проекта выберем очень простые, но от этого не менее актуальные, задачи БД отеля.
1. Добавление новых записей о клиентах, включающих в себя имя, фамилию и пол.
2. Добавление к клиентам записей о снятых ими номерах, включающих номер комнаты, тип номера и время, на которое этот номер снят.
3. Удаление выбранных записей.
4. Нахождение записей по задаваемым параметрам.
Далее для каждой из рассмотренных задач проведем концептуальный анализ с целью выявления информации, необходимой и достаточной для ее решения.
1.2.2 Концептуальный анализ задачи добавления новой записи о клиенте
После получения данных о новом клиенте, запись о нём будет добавлена в БД
Для добавления записи нового клиента администратор (человек непосредственно управляющих БД) должен ввести его имя, фамилию и пол.
1.2.3 Концептуальный анализ задачи добавления новой записи о номере
При снятии клиентом определенного номера, к его записи в БД добавится запись о том, что он владеет этим номером, она будет содержать номер снятого помещения, его тип и время, на которое он снят.
1.2.4 Концептуальный анализ задачи удаления записей
При необходимости выбранные записи о пользователях можно удалить из БД, для этого нужные записи должны быть выделены в БД.
1.2.5 Концептуальный анализ задачи поиска записей
Обработка запросов возможна при условии, что в БД есть хотя бы один пользователь, и что администратор выбрал соответствующую команду. В результате выполнения запроса администратор увидит отчет, содержащий записи пользователей, удовлетворяющие условиям запроса.
Запрос №1 по имени и фамилии
Запрос №2 по полу
Запрос №3 по типу снятого номера
Запрос №4 по всем параметрам
2. Переход от концептуальной модели к объектной
Элемент концептуальной модели |
Элемент объектной модели |
|
Объект: БД |
Невизуальный класс HotelBDCore. |
|
Объект: Администратор |
Пользователь системы. В объектной модели явно не представлен. |
|
Объект: Пользователь |
Класс HotelBDUser |
|
Объект: Добавление нового пользователя |
Визуальный класс HotelBDAddUser |
|
Объект: Номер |
Класс HotelBDRoom |
|
Объект: Добавление новой комнаты пользователю |
Визуальный класс HotelBDAddRoom |
|
Объект: Отчет по поиску |
Визуальный класс HotelBDAnswerWindow |
|
Объект: Поиск |
Визуальный класс HotelBDSearchEngine |
|
Объект: Запрос №1 |
Метод findFSName:with: класса HotelBDCore |
|
Объект: Запрос №2 |
Метод findSex: класса HotelBDCore |
|
Объект: Запрос №3 |
Метод findType: класса HotelBDCore |
|
Объект: Запрос №3 |
Метод findFSNameSexType:with:with:with: класса HotelBDCore |
|
Отношение: Запросил функцию «добавить пользователя»(Администратор, БД) |
Состояние, возникающее после нажатия кнопки «добавить пользователя». Вызывается визуальный класс HotelBDAddUser |
|
Отношение: Занесен в БД(Пользователь, БД) |
Состояние, возникающее в системе в результате действия «Добавить пользователя». Модифицируется поле bd класса HotelBDCore |
|
Отношение: Запросил функцию «добавить номер»(Администратор, БД) |
Состояние, возникающее после нажатия кнопки «добавить номер». Вызывается визуальный класс HotelBDAddRoom |
|
Отношение: Занесен в БД(Номер, БД) |
Состояние системы, возникающее в результате действия «Добавить номер». Модифицируется поле bd класса HotelBDCore |
|
Отношение: Выбран(Пользователь, БД) |
Состояние, возникающее при выборе записи пользователя в списке БД |
|
Отношение: Принадлежит(Номер,Пользователь) |
Метод haveRoom: класса HotelBDUser |
|
Отношение:Выделены(Записи,БД) |
Состояние системы, Возникающее в системе в результате выбора записей в БД |
|
Отношение: Запросил функцию «Удалить записи»(Администратор, БД) |
Состояние, возникающее после нажатия кнопки «Удалить». |
|
Отношение: Запросил функцию «Удаление»(Администратор, БД) |
Состояние, возникающее после выполнения кнопки «Удалить». Модифицируется поле bd класса HotelBDCore |
|
Отношение: Удалены(Записи, БД) |
Состояние, возникающее после нажатия кнопки «Поиск». Вызывается визуальный класс HotelBDSearchEngine |
|
Отношение: Вызвал(Администратор, Запрос№1) |
Состояние, возникающее после нажатия кнопки «Поиск по ФИ» в окне класса HotelBDSearchEngine. Вызывает метод findFSName:with: класса HotelBDCore |
|
Отношение: Вызвал(Администратор, Запрос№2) |
Состояние, возникающее после нажатия кнопки «Поиск по полу» в окне класса HotelBDSearchEngine. Вызывает метод findSex: класса HotelBDCore |
|
Отношение: Вызвал(Администратор, Запрос№3) |
Состояние, возникающее после нажатия кнопки «Поиск по типу номера» в окне класса HotelBDSearchEngine. Вызывает метод findType: класса HotelBDCore |
|
Отношение: Вызвал(Администратор, Запрос№4) |
Состояние, возникающее после нажатия кнопки «Расширенный поиск» в окне класса HotelBDSearchEngine. Вызывает метод findFSNameSexType:with:with:with: класса HotelBDCore |
|
Отношение: Получил(Администратор, Отчет) |
Состояние, возникающее после вывода резуальтатов поискового запроса в визуальном классе HotelBDAnswerWindow |
|
Свойство объекта «Пользователь» Имя |
Поле FName класса HotelBDUser |
|
Свойство объекта «Пользователь» Фамилия |
Поле SName класса HotelBDUser |
|
Свойство объекта «Пользователь» Пол |
Поле sex класса HotelBDUser |
|
Свойство объекта «Номер» Номер |
Поле number класса HotelBDRoom |
|
Свойство объекта «Номер» Тип |
Поле type класса HotelBDRoom |
|
Свойство объекта «Номер» Время снятия |
Поле days класса HotelBDRoom |
|
Свойство объекта «Запрос№1» Имя |
Поле FNameSet класса HotelBDSearchEngine, исходный параметр метода findFSName:with: |
|
Свойство объекта «Запрос№1» Фамилия |
Поле SNameSet класса HotelBDSearchEngine, исходный параметр метода findFSName:with: |
|
Свойство объекта «Запрос№2» Пол |
Поле sexSet класса HotelBDSearchEngine, исходный параметр метода findSex: |
|
Свойство объекта «Запрос№3» Тип |
Поле sexSet класса HotelBDSearchEngine, исходный параметр метода findType: |
|
Свойство объекта «Запрос№4» Имя |
Поле FNameSet класса HotelBDSearchEngine, исходный параметр метода findFSNameSexType:with:with:with: класса HotelBDCore |
|
Свойство объекта «Запрос№4» Фамилия |
Поле SNameSet класса HotelBDSearchEngine, исходный параметр метода findFSNameSexType:with:with:with: класса HotelBDCore |
|
Свойство объекта «Запрос№4» Пол |
Поле sexSet класса HotelBDSearchEngine, исходный параметр метода findFSNameSexType:with:with:with: класса HotelBDCore |
|
Свойство объекта «Запрос№4» Тип |
Поле typeSet класса HotelBDSearchEngine, исходный параметр метода findFSNameSexType:with:with:with: класса HotelBDCore |
|
Свойство объекта «База данных» модель БД |
Поле bd класса HotelBDСore, экземпляр класса OrderedColelction, хранит в себе все записи |
3. Программная реализация
Руководствуясь объектной моделью, полученной ранее, была произведена программная реализация. Для этого в среде VisualAge Smalltalk были заведены классы, показанные на рис. 7. Всего потребовалось создать два обычных Smalltalk-класса, один класс, являющийся невизуальным компонентом, пять классов, обладающих визуальным пользовательским интерфейсом. Кроме того, один класс был создан средой программирования автоматически и служит внутренним целям среды. Далее последовательно опишем содержание пользовательских классов.
Рис. 7
3.1 Класс «HotelBDUser»
Рис. 8
Object subclass: #HotelBDUser
instanceVariableNames: 'user FName SName sex haveRooms '
classVariableNames: ''
poolDictionaries: ''
FName
^FName
FName: anObject
FName := anObject.
self signalEvent: #name with: anObject
SName
^SName
SName: anObject
SName := anObject.
self signalEvent: #name with: anObject
sex
^sex
sex: anObject
sex := anObject.
self signalEvent: #sex with: anObject
addRoom:room
haveRooms isNil ifTrue:[haveRooms:=OrderedCollection new].
haveRooms add:room.
haveRoom: RoomType
|flag|
flag:=false.
haveRooms isNil
ifFalse:[
haveRooms do:[:room| (room type = RoomType)
ifTrue:[flag:=true]]].
^flag
printString
|str|
str:=FName,' ',SName,' пол = ',sex,'; номер: '.
haveRooms isNil ifTrue:[str:=str,'Нет'];
ifFalse:[
haveRooms do:[:an|str:=str,an printString]].
3.2 Класс «HotelBDRoom»
Рис.9
Object subclass: #HotelBDRoom
instanceVariableNames: 'number type days '
classVariableNames: ''
poolDictionaries: ''
days
^days
days: anObject
days := anObject.
self signalEvent: #days with: anObject
number
^number
number: anObject
number := anObject.
self signalEvent: #number with: anObject
type
^type
type: anObject
type:= anObject.
self signalEvent: #type with: anObject
printString
^'номер ',number,' типа ',type,' на ',days,' дней; '.
3.3 Класс «HotelBDCore»
Рис.10
Является невизуальным компонентом.
AbtAppBldrPart subclass: #HotelBDCore
instanceVariableNames: 'bd '
classVariableNames: ''
poolDictionaries: ''
Access
init
bd:=OrderedCollection new.
bd
^bd
bd: anObject
bd := anObject.
self signalEvent: #bd with: anObject.
Main
newUser: user
bd add:user.
self signalEvent: #bdChanged with: bd;
signalEvent: #justAdded with: (Array with:user)
addRoom: room toUser: user
room isNil ifFalse:[
user do:[:h|h addRoom:room].
self signalEvent: #bdChanged with: bd;
signalEvent: #justAdded with: user asArray.]
removeSelected: selecteditems
selecteditems do:[:el| bd remove:el].
self signalEvent: #bdChanged with: bd.
findFSName: FNameSet with: SNameSet
|str|
(FNameSet notNil)&(SNameSet notNil)
ifTrue:[^(bd select:[:user| (user FName = FNameSet)&(user SName = SNameSet)]) asArray].
(FNameSet notNil)&(SNameSet isNil)
ifTrue:[^(bd select:[:user| user FName = FNameSet]) asArray].
(FNameSet isNil)&(SNameSet notNil)
ifTrue:[^(bd select:[:user| user SName = SNameSet]) asArray].
(FNameSet isNil)&(SNameSet isNil)
ifTrue:[^(str:=(`Неверные параметры поиска')) asArray].
findSex: sexSet
|str|
(sexSet notNil)
ifTrue:[^(bd select:[:user| (user sex = sexSet)]) asArray];
ifFalse:[^(str:=( `Неверные параметры поиска')) asArray].
findType: typeSet
|str|
(typeSet notNil)
ifTrue:[^(bd select:[:user| ((user haveRoom: typeSet) = true)]) asArray];
ifFalse:[^(str:=(` Неверные параметры поиска')) asArray].
findFSNameSexType: FNameSet with: SNameSet with: sexSet with: typeSet
|str|
(FNameSet notNil)&(SNameSet notNil) &(sexSet notNil)& (typeSet notNil)
ifTrue:[^(bd select:[:user| (user FName = FNameSet)&(user SName = SNameSet)&(user sex = sexSet)&((user haveRoom: typeSet) = true)]) asArray].
ifFalse:[^(str:=( `Неверные параметры поиска')) asArray].
3.4 Класс «HotelBDAddUser»
Является визуальным классом, содержащим оконный пользовательский интерфейс (рис.11).
Рис.11
Связи.
1. Связь «событие-действие» между событием «clicked» кнопки «отмена» и действием «closeWidget» окна.
2. Связь «событие-код» между событием «clicked» кнопки «Добавить» и пользовательским методом «saveTo:».
3. Связь «атрибут как параметр» между свойством «object» текстового поля ввода с параметром «FName» связи №1
4. Связь «атрибут как параметр» между свойством «object» текстового поля ввода параметром «SName» связи №1
5. Связь «атрибут как параметр» между свойством «selectedItem» поля ввода параметром «sex» связи №1
Рис.12
Предназначен для добавления записей о новых пользователях в БД.
AbtAppBldrView subclass: #HotelBDAddUser
instanceVariableNames: 'selectedUser '
classVariableNames: ''
poolDictionaries: ''
Main.
selectedUser
^selectedUser
selectedUser: anObject
selectedUser := anObject.
self signalEvent: #selectedUser with: anObject
newUser: FName with: SName sex: sex
self selectedUser: (HotelBDUser new FName:FName; SName:SName; sex:sex).
(self subpartNamed: 'Window') closeWidgetCommand.
Рис.13
3.5 Класс «HotelBDAddRoom»
Является визуальным классом, содержащим оконный пользовательский интерфейс (рис.14). Предназначен для добавления записям пользователей номеров.
3.5.1 Методы
Рис.14
AbtAppBldrView subclass: #HotelBDAddRoom
instanceVariableNames: 'selectedRoom '
classVariableNames: ''
poolDictionaries: ''
selectedRoom
^selectedRoom
selectedRoom: anObject
selectedRoom := anObject.
self signalEvent: #selectedRoom with: anObject
createNewRoom: number with: type with: days
self selectedRoom: (HotelBDRoom new number:number; type:type; days:days).
(self subpartNamed: 'Window') closeWidgetCommand.
3.5.2 Визуальная композиция
Рис.15
1. Связь «событие-действие» между событием «clicked» кнопки «отмена» и действием «closeWidget» окна.
2. Связь «событие-код» между событием «clicked» кнопки «Добавить» и пользовательским методом «createNewRoom: number with: type with: days».
3. Связь «атрибут как параметр» между свойством «object» текстового поля ввода с параметром «number» связи №1
4. Связь «атрибут как параметр» между свойством «object» текстового поля ввода параметром «days» связи №1
5. Связь «атрибут как параметр» между свойством «selectedItem» поля ввода параметром «type» связи №1
Рис.15
3.6 Класс «HotelBDSearchEngine»
Является визуальным классом, содержащим оконный пользовательский интерфейс (рис.16). Предназначен для вызова запросов поиска.
Рис.16
3.6.1 Методы
Рис.17
Рис.18
Main
AbtAppBldrView subclass: #HotelBDSearchEngine
instanceVariableNames: 'NFNameSet NSNameSet NSexSet NTypeSet '
classVariableNames: ''
poolDictionaries: ''
init
self
NSNameSet: nil;
NFNameSet: nil;
NSexSet: nil;
NTypeSet: nil.
NFNameSet
^NFNameSet
NFNameSet: anObject
NFNameSet := anObject
NSNameSet
^NSNameSet
NSNameSet: anObject
NSNameSet := anObject
NSexSet
^NSexSet
NSexSet: anObject
NSexSet := anObject
NTypeSet
^NTypeSet
NTypeSet: anObject
NTypeSet := anObject
Not Categorized.
newFSNameSets: FName and: SName
self init.
self NFNameSet: FName.
self NSNameSet: SName.
self signalEvent: #FSNameSearch.
(self subpartNamed: 'Window') closeWidgetCommand.
newSexSets: NSex
self NSexSet: NSex.
self signalEvent: #SexSearch.
(self subpartNamed: 'Window') closeWidgetCommand.
newTypeSets: NType
self NTypeSet: NType;
signalEvent: #TypeSearch.
(self subpartNamed: 'Window') closeWidgetCommand.
newSFNameSexType: FName and: SName with: NSex with: NType
self NFNameSet: FName;
NSNameSet: SName.
self NSexSet: NSex.
self NTypeSet: NType.
self signalEvent: #AllSearch.
(self subpartNamed: 'Window') closeWidgetCommand.
3.6.2 Сигналы и переменные, видимые в других моделях
3.6.3 Визуальная композиция
1. Связь «событие-действие» между событием «clicked» кнопки «отмена» и действием «closeWidget» окна.
2. Связь «событие-код» между событием «clicked» кнопки «Найти человека» и пользовательским методом «newFSNameSets:and:».
3. Связь «атрибут как параметр» между свойством «object» текстового поля ввода с параметром «FName» связи №2
4. Связь «атрибут как параметр» между свойством «object» текстового поля ввода с параметром «SName» связи №2
5. Связь «событие-код» между событием «clicked» кнопки «Поиск по полу» и пользовательским методом «newSexSets:».
6. Связь «атрибут как параметр» между свойством «choseditems» поля выбора с параметром «sex» связи №5
7. Связь «событие-код» между событием «clicked» кнопки «Отобразить тип номеров» и пользовательским методом «newTypeSets:».
8. Связь «атрибут как параметр» между свойством «choseditems» поля выбора с параметром «type» связи №7
9. Связь «событие-код» между событием «clicked» кнопки «Поиск» и пользовательским методом «newSFNameSexType:and:with:with:».
10. Связь «атрибут как параметр» между свойством «object» текстового поля ввода с параметром «FName» связи №9
11. Связь «атрибут как параметр» между свойством «object» текстового поля ввода с параметром «SName» связи №9
12. Связь «атрибут как параметр» между свойством «choseditems» поля выбора с параметром «sex» связи №9
13. Связь «атрибут как параметр» между свойством «choseditems» поля выбора с параметром «type» связи №9
3.7 Класс «HotelBDAnswerWindow»
Cлужит для вывода результатов поиска.
Рис.21
3.7.1 Методы и переменные видимые в других моделях
Рис.22
3.7.2 Визуальная композиция
1. Связь «событие-действие» между событием «clicked» кнопки «Закрыть» и действием «closeWidget» окна.
3.8 Класс «HotelBDMainWindow»
Основное визуальное окно, служит для вызовов всех остальных окон, отображения БД, функций удаления и загрузки из файла.
Рис.23
3.8.1 Методы
Рис.24
AbtAppBldrView subclass: #HotelBDMainWindow
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
LoadFile: aFile
(self subpartNamed: 'HotelBDCore') bd: (ObjectLoader new loadFromFile: aFile)
SaveFile: aFile
ObjectDumper new unload: ((self subpartNamed: 'HotelBDCore') bd) intoFile: aFile
3.8.2 Визуальная композиция
1. Связь «событие-действие» между событием «clicked» кнопки «Выход» и действием «closeWidget» окна.
2. Связь «атрибут-атрибут» между свойством «self» меню и свойством «menu» формой.
3. Связь «событие-действие» между событием «clicked» кнопки в меню «Выход» и действием «closeWidget» окна.
4. Связь «событие-действие» между событием «clicked» меню и «promt» файлового менеджера.
5. Связь «событие-действие» между событием «clicked» меню и «promt» файлового менеджера.
6. Связь «событие-код» между событием «ok» файлового менеджера и пользовательским методом «saveTo:».
7. Связь «событие-код» между событием «ok» файлового менеджера и пользовательским методом «loadFrom:».
8. Связь «событие-код» между событием «clicked» кнопки «Добавить Пользователя» и методом «OpenWidget» класса HotelBDAddUser.
9. Связь «событие-действие» между событием «closedWidget» окна HotelBDAddUser и методом «NewUser:» класса HotelBDCore.
10. Связь «атрибут как параметр» между атрибутом «SelectedUser» класса HotelBDAddUser с параметром «user» связи №9
11. Связь «событие-код» между событием «clicked» кнопки «Добавить номер» и методом «OpenWidget» класса HotelBDAddRoom.
12. Связь «событие-действие» между событием «closedWidget» окна HotelBDAddRoom и методом «AddRoom:» класса HotelBDCore.
13. Связь «атрибут как параметр» между атрибутом «SelectedRoom» класса HotelBDAddRoom с параметром «room» связи №11
14. Связь «атрибут как параметр» между атрибутом «selecteditems» обьекта list1 с параметром «user» связи №11
15. Связь «атрибут атрибут» между атрибутом «selectedvalid» обьекта list1 с атрибутом «enabled» кнопки «удалить»
16. Связь «атрибут атрибут» между атрибутом «enabled» кнопки «удалить» и атрибутом «enabled» кнопки «добавить номер»
17. Связь «событие-действие» между событием «openedWidget» окна HotelBDMainWindow и методом «init» класса HotelBDCore.
18. Связь «событие-действие» между событием «normalResult» метода №19 и действием «diselectAll» обьекта list1.
19. Связь «событие-действие» между событием «bdChanged» класса HotelBDCore и действием «items» обьекта list1.
20. Связь «событие-действие» между событием «justAdded» класса HotelBDCore и действием «selecteditems» обьекта list1.
21. Связь «событие-код» между событием «clicked» кнопки «Очистить» и методом «initclear:» класса HotelBDСore.
22. Связь «атрибут как параметр» между атрибутом «items» обьекта list1 с параметром «items» связи №21
23. Связь «событие-код» между событием «clicked» кнопки «Удалить» и методом «removeSelected:» класса HotelBDСore.
24. Связь «атрибут как параметр» между атрибутом «items» обьекта list1 с параметром «items» связи №23
25. Связь «событие-код» между событием «clicked» кнопки «Добавить Пользователя» и методом «OpenWidget» класса HotelBDSearchEngine.
26. Связь «событие-код» между событием «FSNameSearch» окна HotelBDSearchEngine и методом «FindFSName:with:» класса HotelBDСore.
27. Связь «атрибут как параметр» между атрибутом «FNameSet» окна HotelBDSearchEngine с параметром «FName» связи №26
28. Связь «атрибут как параметр» между атрибутом «SNameSet» окна HotelBDSearchEngine с параметром «SName» связи №26
29. Связь «событие-действие» между событием «normalresult» связи №26 и действием «items» обьекта object1.
30. Связь «событие-действие» между событием «FSNameSearch» окна HotelBDSearchEngine и действием «openWidget» HotelBDAnswerWindow.
31. Связь «событие-код» между событием «SexSearch» окна HotelBDSearchEngine и методом «findSex:» класса HotelBDСore.
32. Связь «атрибут как параметр» между атрибутом «SexSet» окна HotelBDSearchEngine с параметром «sex» связи №31
33. Связь «событие-действие» между событием «normalresult» связи №31 и действием «items» обьекта object1.
34. Связь «событие-действие» между событием «SexSearch» окна HotelBDSearchEngine и действием «openWidget» HotelBDAnswerWindow.
35. Связь «событие-код» между событием «NTypeSearch» окна HotelBDSearchEngine и методом «findType:» класса HotelBDСore.
36. Связь «атрибут как параметр» между атрибутом «TypeSet» окна HotelBDSearchEngine с параметром «type» связи №35
37. Связь «событие-действие» между событием «normalresult» связи №35 и действием «items» обьекта object1.
38. Связь «событие-действие» между событием «TypeSearch» окна HotelBDSearchEngine и действием «openWidget» HotelBDAnswerWindow.
39. Связь «событие-код» между событием «AllSearch» окна HotelBDSearchEngine и методом «findFSNameSexType:with:with:with:» класса HotelBDСore.
40. Связь «атрибут как параметр» между атрибутом «FNameSet» окна HotelBDSearchEngine с параметром «FName» связи №39
41. Связь «атрибут как параметр» между атрибутом «SNameSet» окна HotelBDSearchEngine с параметром «SName» связи №39
42. Связь «атрибут как параметр» между атрибутом «SexSet» окна HotelBDSearchEngine с параметром «sex» связи №39
43. Связь «атрибут как параметр» между атрибутом «TypeSet» окна HotelBDSearchEngine с параметром «type» связи №39
44. Связь «событие-действие» между событием «normalresult» связи №39 и действием «items» обьекта object1.
45. Связь «событие-действие» между событием «AllSearch» окна HotelBDSearchEngine и действием «openWidget» HotelBDAnswerWindow.
46. Связь «атрибут атрибут» между атрибутом «self» объекта object1 и атрибутом «list1items» окна HotelBDAnswerWindow
Заключение
В процессе выполнения курсового проекта на примере не сложной практической задачи были закреплены теоретические знания в области концептуального анализа предметной области и проектирования объектной модели.
Также были получены практические навыки программирования в среде VisualAge на языке Smalltalk.
Список литературы
1. Смирнов С.С., Смольянинова В.А. Разработка многоагентных систем в среде Jason. Введение в язык AgentSpeak.
2. Гради Буч Объектно-орентированный анализ и проектирование с примерами приложений.
3. Роберт У. Основные концепции языков программирования.
4. Тимоти Бадд Объектное-орентированное программирование
5. Документация к среде VisualAge Smalltalk.
- Размещено на Allbest.ru
Подобные документы
Концептуальный анализ предметной области с точки выбранных функций и трансформация полученных результатов в объектную модель. Реализация разрабатываемой программы в среде VisualAge Smalltalk. Практическое тестирование работоспособности программы.
курсовая работа [3,8 M], добавлен 14.10.2012Анализ основ ООП, изучение языка программирования Python, применение полученных знаний на практике для реализации предметной области. Понятие и механизм инкапсуляции. Фиксирование информационной работы отеля. Диаграмма классов. Реализация на языке Python.
курсовая работа [227,6 K], добавлен 14.05.2017Разработка базы данных для учета размещения и услуг гостиницы-отеля "Баташев". Анализ предметной области, проектирование базы данных. Реализация SQL-запросов для создания объектов и получения отчетов. Реализация приложения для работы с базой данных.
курсовая работа [336,0 K], добавлен 05.01.2014Описание предметной области. Характеристика этапов разработки концептуальной модели данных для предметной области "Библиотека" с использованием CASE-средства ER Win. Методика преобразования концептуальной модели в физическую структуру базы данных (БД).
курсовая работа [2,4 M], добавлен 23.09.2014Рассмотрение понятий и программного инструментария, применяемых для разработки и создания Web-сайтов. Методы и способы представления на Web-страницах различных видов информации. Создание структуры файлов проекта, главной страницы и страниц номеров отеля.
курсовая работа [3,5 M], добавлен 13.11.2022Создание модели "сущность-связь" и нормализация данных средствами программы Microsoft Access. Идентификация объектов предметной области и отношений между ними, разработка структуры физической модели, запросов и отчетов базы данных о студентах ВУЗа.
контрольная работа [742,8 K], добавлен 08.06.2011Этапы проектирования концептуальной модели базы данных: определение предметной области, каталогов задач, связей, первичных ключей. Математическое описание доменов и запросов в реляционной форме. Выбор технических средств и реализация программы.
курсовая работа [2,2 M], добавлен 06.02.2010Анализ предметной области. Обеспечение качества проектной документации. Построение инфологической (концептуальной) модели предметной области. Проектирование физической структуры базы данных. Разработка интерфейса, организация ввода и поиска данных.
курсовая работа [2,5 M], добавлен 10.01.2016Понятие баз данных и принципы проектирования информационных систем. Разработка программы для отслеживания финансовой стороны работы компании в среде Delphi 7. Создание таблиц и схемы данных. Разработка клиентского приложения и процедуры добавления данных.
курсовая работа [1,4 M], добавлен 25.04.2012Анализ проектирования баз данных и освещение методов построения форм и отчетов на примере построения программы ведения электронной документации учебного заведения. Разработка и построение инфологической модели по предметной области "Университет".
курсовая работа [6,3 M], добавлен 03.11.2014