
- •Описание api интерфейсов системы компас
- •Анализ задания
- •Проектирование интерфейса пользователя
- •2. Анализ задания
- •2.3 Проектирование интерфейса пользователя
- •2.4 Проектирование модулей
- •2.5 Проектирование классов
- •2.6 Диаграмма использования
- •3.2.2 Класс Note
- •4. Тестирование
- •Заключение
- •Список используемой литературы
2.4 Проектирование модулей
Была разработана схема взаимодействия модулей, представленная на рисунке 2.4.[4]
Рисунок 2.4 – Схема взаимодействия модулей
2.5 Проектирование классов
На основе спроектированной схемы взаимодействия модулей, была получена диаграмма взаимодействия классов, представленная на рисунке 2.5.[4]
Рисунок 2.5 – Диаграмма взаимодействия классов
Form1 – базовый класс. Отвечает за пользовательский интерфейс
Note – класс ноты. Высчитывает частоту ноты, воспроизводит ноту.
Help – класс, предоставляющий информацию об управляющих кнопках.
About – класс, предоставляющий информацию о программе.
2.6 Диаграмма использования
На основе данной курсовой работы представлена диаграмма использования рисунок 2.6. На ней показаны действия, которые пользователь может проделать с данной программой.[4]
Рисунок 2.6 – Диаграмма использования
3. Реализация
В ходе выполнения курсовой работы было получено творческое задание – реализовать запись мелодии в файл.
Это было реализовано с помощью заполнения хранящегося в памяти потока байтами, соответствующими звуку данной ноты (или звуку тишины, если ни одна нота не проигрывается), и последующего сохранения его в WAV-файл.
3.1 Диаграмма классов
Диаграмма классов реализованной курсовой работы представлена на рисунке 3.1.[4]
Рисунок 3.1 – Диаграмма классов
3.2 Описание методов
3.2.1 Класс Form1
Form1_KeyDown – происходит при нажатии клавиши на клавиатуре. Отвечает за звучание соответствующей клавише ноты.
Form1_KeyUp – происходит при отпускании клавиши.
KeysMouseDown – происходит при нажатии мышью на клавишу пианино. Отвечает за звучание соответствующей клавише ноты.
KeysMouseUp – происходит при отпускании мыши.
OctDowning – понижение октавы.
OctUping – повышение октавы.
OctaveDowning – происходит при нажатии на кнопку понижения октавы.
OctaveUping – происходит при нажатии на кнопку повышения октавы.
Form1 – конструктор (инициализирует переменные).
Help_Click – вызов окна Help.
AboutClick – вызов окна About.
PlaybutClick – происходит при нажатии на кнопку «Проиграть». Вызывает метод, включающий буфер с записанной мелодией.
SaveClick – происходит при нажатии на кнопку «Сохранить». Вызывает метод, сохраняеющий записанную мелодию в WAV-файл.
Timer1_Tick – происходит каждые 100 миллисекунд. Проверяет, воспроизводится нота или нет, и вызывает методы, записывающий в файл звук ноты или звук тишины соответственно.
Writebut_Click – происходит при нажатии на кнопку «Новая запись». Обновляет буфер.
3.2.2 Класс Note
FreqInput – вычисление частоты ноты.
Sound – запуск буфера, проигрывающего ноту с заданной частотой.
Stop – останавливает буфер.
Wr – записывает в WAV-файл звук ноты с заданной частотой.
Wrnull – записывает в WAV-файл звук с частотой, равной нулю (звук тишины).
IsEmpty – проверяет, есть ли в буфере записанные данные (не пустой ли буфер).
Playwr – проигрывает записанную мелодию.
Repeat – проигрывает записанную мелодию (если она уже проигрывалась и после этого не изменялась).
Savefile – сохраняет записанную мелодию в WAV-файл.
Note – конструктор (инициализирует переменные).
GetBytesFromInt – конвертирует переменную типа Int в массив типа Byte.
GetSine – создает массив типа Byte, хранящий звук ноты с заданной частотой.
IncLen – увеличивает длину хранящегося в памяти потока (в который записывается мелодия).