База данных отеля

Концептуальный анализ предметной области и разработка объектной модели для реализации в среде 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.