Объектно-ориентированная система Animal
Объектно-ориентированная система Animal
Введение
программа
технологический объектный
На современном
этапе развития программного обеспечения (ПО) вся большая роль отводится
объектно-ориентированному стилю проектирования и программирования (ООП). Это
позволяет разрабатывать большие программные комплексы быстрее, повторно
используя имеющиеся модули, обеспечивать инкапсуляцию данных, полиморфизм
операций, наследование свойств и методов. Профессиональное обучение
программированию по направлению подготовки «Программная инженерия»
предусматривает освоение языка Си в качестве базового. Дальнейшее развитие
навыков программирования на языке Си и изучение основ ООП выполняется в
дисциплине «Объектно-ориентированное программирование». Для закрепления навыков
проектирования и разработки больших программ в объектно-ориентированном стиле
учебным планом направления подготовки «Программная инженерия» предусмотрено
выполнение курсовой работы по этой дисциплине. Целью курсовой работы является
закрепление практических навыков самостоятельной постановки и решения задачи
обработки данных с помощью ЭВМ средствами ООП. Во время выполнения курсовой
работы студент должен овладеть методикой объектно-ориентированного
проектирования программ с помощью языка UML по формализации и решению
поставленной задачи, технологическими приемами разработки
объектно-ориентированных программ на языке Си++. Условием успешного выполнения
курсовой работы являются практические навыки ООП, полученные при выполнении
лабораторных работ по дисциплине «ООП», которые являются частью курсовой
работы. Разработанная программа animal.exe является программным продуктом демонстрирующим работу с
классами и объектами.
1. Постановка задачи
Программный продукт
animal.exe
является информационной системой типа «Объектно-ориентированная система».
Должно быть
разработано программное обеспечение, которое может работать в следующих
режимах:) демонстрация описания классов Animal, Dog и работоспособности
функций-членов класса:
) конструкторов: конструктор с параметрами Animal (float Mass, char* Sex, char* Color, int Age);
) конструктор с параметрами Dog (float Mass, char* Sex, char* Color, int Age, char* Name,
char* Race, char* Type);
3) функций-членов
типа float GetMass(); char* GetSex(); char* GetSex();
4) деструктора ~animal(),~dog();) демонстрация
работоспособности класса Animal при - (унарный оператор), новое действие уменьшение веса на 100
гр.) демонстрация работоспособности классов при одиночном наследовании;
Программное изделие
должно удовлетворять следующим общим требованиям:
а) использование
технологии раздельной компиляции;
б) режим работы
монитора для программы - текстовый;
в) использование
файлов для хранения всех данных;
Требование к
надежности:
Программное изделие
для обеспечения надежности функционирования должно:
а) проверять
наличие всех файлов данных;
б) обеспечить
минимизацию количества информации, вводимой пользователем;
в) контролировать
корректность ввода данных пользователем;
г) обрабатывать
исключительные ситуации, вызванные не корректностью ввода данных пользователем
с целью предотвращения прерывания выполнения программы.
Пользователь должен
иметь квалификацию не ниже «оператор ПЭВМ».
Для
функционирования программного изделия необходим персональный компьютер IBM
PC/AT со стандартным набором периферийных устройств (монитор, клавиатура,
мышь).
Курсовая работа
должна быть выполнена на языке Си++ в операционной системе MS-DOS или MS Windows 9X/XP/200X.
2. Объектно-ориентированный анализ и
проектирование
В данном проекте
для выполнения поставленной задачи потребуются следующие классы: Animal и производный от него Dog
Рисунок 1.
Диаграмма классов
На данной диаграмме
представлено два класса. Класс Animal, который содержит в себе поля и методы, а также производный класс
Dog
который наследует свойства первого класса и добавляет свои.
Рисунок 2. Диаграмма
объектов
На рисунке 2 изображена
диаграмма объектов, которая показывает состояние объекта в определенный момент
времени. Также она отображает какие значения могут принимать атрибуты в данном
классе.
Рисунок 3. Диаграмма
прецедентов
На рисунке 3 изображена
диаграмма прецедентов, которая отображает взаимодействие пользователя и
системы, а также основные действия, которые можно делать с системой.
4. Рабочее проектирование
Структуры данных приложения
Таблица 1.
Переменные используемые в программе
Название
|
Тип
|
Использование
|
char*
Name;
|
char
|
Задает
имя животного
|
char*
Race;
|
char
|
Задает
породу
|
char*
Type
|
char
|
Задает
вид
|
Таблица 2.
Используемые методы
НазваниеТипИспользование
|
|
|
GetName()
|
Void
|
Метод,
с помощью которого получаем имя
|
GetType()
|
Void
|
Метод
получения вида
|
GetRace()
|
Void
|
Метод,
с помощью которого можно узнать породу
|
Разработка классов
В данной программе
создано 2 класса Animal, Dog, которые взаимодействуют между собой.
Реализация инкапсуляции
Инкапсуляция - это
механизм, который объединяет данные и методы, манипулирующими этими данными, и
защищает и то, и другое от внешнего вмешательства или неправильного
использования.
class
Animal
{:(float
mass, char* sex, char* colour, int age):Mass(mass), Age(age)
{=sex;=colour;
}~Animal()
{
}GetMass()
const
{Mass;
}*
GetSex() const
{Sex;
}*
GetColour() const
{Color;
}GetAge()
const
}& operator
- ();:Mass;* Sex;* Color;Age;
};Dog:public
Animal
{:(float
mass, char* sex, char* color, int age, char* name, char* race, char*
type):(mass, sex, color, age)
{=name;=race;=type;
}
~Dog()
{
}*
GetName() const
{Name;
}*
GetType() const
{Type;
}*
GetRace() const
{Race;
}:*
Name;* Race;
char* Type;
};
В приведенном коде
можно увидеть, как реализована инкапсуляция данных. Пользователю недоступны
данные, но ему доступен интерфейс, через который он может взаимодействовать с
этими данными.
Реализация наследования
Наследование - это
процесс, по средствам которого один объект может наследовать свойства другого и
добавить к ним черты, характерные только для него.
В данной программе
реализовано простое наследование.
При простом
наследовании у класса есть только один предок. Это можно увидеть в наследовании
класса class Dog:public Animal. Класс dog наследует от класса animal такие поля как mass, sex, color, age. Также класс dog имеет свои собственные поля (name, race).
Перегрузка
оператора в этой программе представлена в классе animal Animal& operator -
(). Действие этого оператора заключается в том что он уменьшает массу на 100
гр.
Animal&
Animal:operator - ()
{(Mass>=0.1)-=0.1;*this;
}
Выводы
В результате
выполнения курсовой работы была разработана программа Animal.exe, которая демонстрирует
работу с классами и объектами.
Программа обладает
текстовым интерфейсом, что значительно облегчает работу пользователя с
программой.
В программе
использовалась раздельная компиляция файлов, что позволяет быстро отредактировать
программу в случае необходимости, а также повышает читабельность исходного кода
Выполнение курсовой
работы способствовало улучшению навыков в области объектно-ориентированного
программирования, а также усвоение полученных знаний.
Список литературы
1.
Скотт К. UML. Основные концепции - М.: Издательский дом «Вильямс», 2010. - 144
с.
.
Статья «Перегрузка операций» Электронная энциклопедия «Википедия». [Электронный
ресурс]. Страница доступа: #"786103.files/image004.gif">
Рисунок 4. Вывод
данных на экран
Приложенние 3
ТЕКСТ ПРОГРАММЫ
Файл основной
программы main.cpp
#include
<iostream>
#include
<conio.h>
#include<im_lol.h>namespace
std;
main()
{Shar
(40, «m», «white», 2, «Sharik», «ovcharka», «hunter»);<<Shar.
GetName()<<endl;<<Shar. GetType()<<endl;<<Shar.
GetSex()<<endl;<<Shar. GetColour()<<endl;<<Shar.
GetAge()<<endl;<<Shar. GetMass()<<endl;
Shar;<<Shar.
GetMass()<<endl;
_getch();
return 0;
}
Файл реализации
классов class.h
class
Animal
{:(float
mass, char* sex, char* colour, int age):Mass(mass), Age(age)
{=sex;=colour;
}~Animal()
{
}GetMass()
const
{Mass;
}*
GetSex() const
{Sex;
}*
GetColour() const
{Color;
}GetAge()
const
{Age;
}&
operator - ();:Mass;* Sex;* Color;Age;
};
Dog:public
Animal
{:(float
mass, char* sex, char* color, int age, char* name, char* race, char*
type):(mass, sex, color, age)
{=name;=race;=type;
}
~Dog()
{
}*
GetName() const
{Name;
}*
GetType() const
{Type;
}*
GetRace() const
{Race;
};
&
Animal:operator - ()
{(Mass>=0.1)=0.1;*this;
}