РОССИЙСКАЯ ФЕДЕРАЦИЯ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО, ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
ИНСТИТУТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК
Кафедра
программного обеспечения
Курсовая работа
по дисциплине «Объектно-ориентированное программирование»
Тема:
Разработка приложения для работы с комплексными числами на языке С#
Тюмень -
2014
Введение
Комплексные числа были введены в математику для того, чтобы сделать возможной операцию извлечения квадратного корня из любого действительного числа.
Целью курсовой работы является разработка приложения для работы с комплексными числами, представленными в арифметической форме.
В программе должны быть реализованы следующие операции по работе с комплексными числами:
сложение двух комплексных чисел;
вычитание двух комплексных чисел;
умножение двух комплексных чисел;
деление двух комплексных чисел;
нахождение n-ой степени комплексного числа;
вычисления модуля комплексного числа.
Для достижения целей были поставлены следующие задачи:
изучение предметной области;
изучение концепции объектно-ориентированного программирования;
изучение существующих аналогичных программ;
создание иерархии классов;
поиск алгоритма программы;
реализация алгоритма;
тестирование программы.
Глава 1. Описание предметной области
Комплексным числом называется выражение вида:
|
|
(1.1) |
где число а называется действительной частью
комплексного числа, bi-мнимой частью этого числа, b- коэффициентом мнимой части
комплексного числа [1]. Суммой двух комплексных чисел
|
|
(1.2) |
|
|
(1.3) |
называется комплексное число
|
|
(1.4) |
Комплексное число равно нулю тогда, когда его
действительная часть и коэффициент мнимой части равны нулю, т.е.
|
|
(1.5) |
если
.
Действительные числа являются частным случаем комплексных чисел. Если
,
то
действительное число.
|
|
|
Если
,
то
|
|
|
мнимое число.
Для комплексных чисел справедливы переместительный и сочетательный законы сложения. Их справедливость следует из того, что сложение комплексных чисел по существу сводится к сложению действительных частей и коэффициентов мнимых частей, а они являются действительными числами, для которых справедливы указанные законы.
Вычитание комплексных чисел определяется как
действие, обратное сложению: разностью двух комплексных чисел
|
|
(1.7) |
|
|
(1.8) |
называется комплексное число
|
|
(1.9) |
которое в сумме с вычитаемым дает уменьшаемое.
Отсюда, исходя из определения сложения и равенства комплексных чисел получим
два уравнения, из которых найдем, что
|
|
(1.10) |
|
|
|
|
(1.11) |
||
Произведение комплексных чисел
|
|
(1.12) |
называется комплексное число
|
|
||
|
|
(1.14) |
|
Для умножения комплексных чисел также справедливы переместительный и сочетательный законы, а также распределительный закон умножения по отношению к сложению.
Деление комплексных чисел определяется как
действие, обратное умножению. Конкретное правило деления получим, записав
частное в виде дроби и умножив числитель и знаменатель этой дроби на число,
сопряженное со знаменателем:
|
|
(1.15) |
Модулем комплексного числа называется длина
вектора, соответствующего этому числу:
|
|z|= |
(1.16) |
Возведение в степень комплексного числа делается
ровно также, как и возведение в степень действительного числа. Надо лишь
помнить, что мнимая единица в квадрате равна минус единице:
|
|
(1.17) |
В настоящее время существует большое количество
онлайн-сервисов для выполнения операций над комплексными числами. Это
webmath.ru, mathsolution.ru, matemonline.com и т.д. Большинство из них
выполняют базовые арифметические функции над комплексными числами.
Глава 2. Описание классов
Для реализации алгоритма используются следующие
классы: Form1, Number и два наследующих класса RationalNumberOperation и
ComplexNumber. (Рисунок.2.1 и Рисунок.2.2).
Рисунок 2.1 - Класс Form1
Рисунок 2.2 - Класс Number и два наследующих
класса RationalNumberOperation и ComplexNumber
Описание созданных классов приведено в Таблице
2.1.
Таблица 2.1 - Классы
|
Класс |
Назначение |
|
Form1 (Рисунок.1.1) |
Отвечает за работу главного окна приложения |
|
Number(Рисунок.1.3) |
Класс, от которого наследуются классы RationalNumberOperation и ComplexNumber. |
|
RationalNumberOperation(Рисунок.1.4) |
Класс для реализации действительной части комплексного числа. |
|
ComplexNumber(Рисунок.1.5) (см. Приложение 1) |
Класс для реализации мнимой единицы и операций над комплексными числами. [2] |
Поля классаForm1представлены на Рисунке 2.1: Это поля, хранящие значения действительной и мнимой частей комплексных чисел.
Методы класса Form1 приведены в Таблице 2.2.
Таблица 2.2 - Методы класса Form1
|
Метод |
Назначение |
|
Secondnumber (параметры отсутствуют) |
Активация поля второго комплексного числа |
|
Zamena (параметры отсутствуют) |
Замена значения первого комплексного числа на значение второго. |
|
Calculate (параметры отсутствуют) |
Возвращение результата вычислений. |
Абстрактный класс Numberс модификатором доступа public (Рисунок 2.3).
Поля:
не имеет полей.
Методы класса Number представлены в Таблице 2.3.
Таблица 2.3 - Методы класса Number
|
Метод |
Назначение |
|
Info |
пустой метод для переопределения в наследующих классах. |
Рисунок 2.3 - Класс Number
Класс RationalNumberOperation(модификатор доступа public-Рисунок 2.4).
Поля:действительная часть комплексного числа (модификатор доступа protected).
Свойства:- управляет доступом к полю re (модификатор доступа public).
Методы класса RationalNumberOperation
представлены в Таблице 2.4.
Таблица 2.4 - Методы класса RationalNumberOperation
|
Метод |
Назначение |
|
Info |
Переопределенный метод Info для вывода информации о действительной части комплексного числа. |
|
RationalNumberOperation (спараметром Double n) |
Инициализация поля re. |
|
~RationalNumberOperation() |
Деструктор.[3] |
Рисунок 2.4 - КлассRationalNumberOperation
Класс ComplexNumber (модификатордоступаpublic - Рисунок 2.5).
Поля:- мнимая часть комплексного числа.
Методы класса ComplexNumber приведены в Таблице
2.5.
Таблица 2.5 - Методы класса ComplexNumber
|
Метод |
Назначение |
|
|
Abs(ComplexNumber cn) |
Возвращает модуль комплексного числа |
|
|
Delen(ComplexNumber cn1, ComplexNumber cn2) |
Возвращает частное комплексных чисел |
|
|
Summa(ComplexNumber cn1, ComplexNumber cn2) |
Возвращает сумму комплексных чисел |
|
|
Raznost(ComplexNumber cn1, ComplexNumber cn2) |
Возвращает разность комплексных чисел |
|
|
Pow (ComplexNumber cn, float n) |
Возводит комплексное число в степень |
|
|
Multiply (ComplexNumber cn1, ComplexNumber cn2) |
Возвращает произведение комплексных чисел |
|
|
Info |
Переопределенный метод, выводит конечные данные о результатах вычислений (действительную и мнимую части). |
|
|
operator *(ComplexNumber a, ComplexNumber b) |
Возвращает произведение комплексных чисел |
|
|
ToString() |
Возвращает значение действительной и мнимой частей. |
|
|
~ ComplexNumber |
Деструктор. |
|
|
ComplexNumber(Double re, Double im) : base(re) |
Производит инициализацию поля im. |
|
Рисунок 2.5 - Класс ComplexNumber
Обработка исключений
В целях воспрепятствования некорректной работе
приложения предусмотрена обработка исключений типа ArgumentException. При
возникновении этого исключения пользователь получает соответствующее
оповещение: «Неверный формат данных!».
Собственные классы исключений
Рисунок 2.6 - Схема наследования классов исключений
- класс, являющийся наследующим для класса ApplicationExсeption
и реализующий исключение, которое срабатывает при неверном задании аргумента
(пользователь для обозначения десятичной дроби использовал точку, попытка
ввода, как числа, так и литеры). Программа уведомляет пользователя об ошибке в
записи комплексного числа.[4]
Глава 3. Алгоритм выполнения работы
программы
Блок-схема выполнения выбранной пользователем
операции представлена на Рисунке 3.1.
Рисунок 3.1 -Алгоритм выполнения вычислений
3.1 Тестирование программы
Тестирование программы было произведено рядом студентов, в ходе которого возникла исключительная ситуация:
операция вычисления модуля и возведения в
степень производилась над первым числом z1,тогда как число z2 в это время
оставалось активным. Это могло бы в будущем привести к непониманию
пользователем результатов вычислений (модуль какого значения вычисляется).
Ошибка была немедленно исправлена (обработка исключительных ситуаций в пункте
Описание классов).
3.2 Минимальные технические
требования к компьютеру
Для корректной работы программы необходимо соблюдение следующих условий:
процессор IntelPentium/Celeron 2400 МГц и выше;
объём ОЗУ 512 Мб и больше;
Мб свободного пространства на жёстком диске;
операционная система MicrosoftWindowsXP/Vista/Windows7;
наличие устройств ввода-вывода: монитор, мышь,
клавиатура.
3.3 Схема работы приложения
Блок - схема работы приложения представлена на
Рисунке 3.2.
Рисунок 3.2 - Блок-схема работы приложения
Глава 4. Интерфейс программы
Программа должна обеспечить ввод с клавиатуры одного или двух комплексных чисел и вычисление требуемых параметров одного числа или осуществление арифметических операций с двумя числами.
Программа позволяет складывать, вычитать,
умножать, делить комплексные числа и выводить результат. На форме располагаются
шесть текстовых полей. Верхние четыре поля, для ввода чисел z1 и z2, а нижнее
для вывода расчетов. В нижнем правом углу поле для указания в степени n
(Рисунок 4.1).
Рисунок 4.1- Интерфейс программы
Инструкция пользователя
Вычисление модуля комплексного числа (Рисунок.
4.2):
Рисунок 4.2 - Вычисление модуля комплексного
числа
Для ввода значения действительных и мнимых частей первого комплексного числа (z1) необходимо нажать на соответствующие текстовые окна. По умолчанию введены значения 1 и 2. При недоступном втором комплексном числе возможно только вычисление модуля и возведение в степень единственного значения. Для выбора соответствующей опции необходимо выбрать один из переключателей.[5] После нажатия кнопки «Вычислить» результат вычислений отображается в нижнем текстовом поле, также отображается информация о числе внизу решения.