Академический Документы
Профессиональный Документы
Культура Документы
КУРСОВАЯ РАБОТА
студента(ки)_2__курса______группы_ИТ-991______________________________
направление подготовки____09.03.02_Информационные системы и технологии
(шифр и название направление подготовки)
Руководитель проекта
Стоянченко С.С.______________ ___________________
(должность, ученое звание, научная степень, (подпись)
Фамилия и инициалы)
Результат защиты:
Оценка:
Члены комиссии:
_______________ _____
АННОТАЦИЯ
Тематика работы: Разработка компьютерной программы на языке С++, в
которой будет реализован сюжет сказки “КРАСНАЯ ШАПОЧКА”.
Цель: В результате выполнения курсовой работы приобрести навыки
решения различных практических задач, связанных с разработкой программ на С+
+, научиться работать с научно-технической литературой в области
программирования, а также использовать стандарты, справочники по
программному обеспечению ЭВМ.
Работа состоит из введения, 3 разделов, заключения и списка
использованных источников. Объем работы - 28 страниц. В работе представлено 3
диаграммы и 4 рисунок. В работе присутствует описание задачи и методы ее
решения, представление в виде UML диаграмм и реализация данной задачи.
3
СОДЕРЖАНИЕ
ВВЕДЕНИЕ.....................................................................................................................5
1 АНАЛИЗ ЗАДАЧИ КУРСОВОГО ПРОЕКТИРОВАНИЯ И ОСОБЕННОСТЕЙ
ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ............................6
1.1 Описание поставленной проблемы......................................................................6
1.1.1 Сюжет художественного произведения........................................................6
1.1.2 Персонажи художественного произведения.................................................6
1.2 Характеристика технологии объектного ориентированного
программирования.......................................................................................................7
1.2.1 Классические принципы ООП.......................................................................7
1.2.2 Принципы SOLID............................................................................................8
1.2.3 Паттерны проектирования объектно-ориентированных программ............9
Выводы по разделу.................................................................................................12
2 РАЗРАБОТКА UML ДИАГРАММ ПРОЕКТИРУЕМОГО ПРОГРАММНОГО
КОМПЛЕКСА................................................................................................................13
2.1 Характеристика языка UML................................................................................13
2.2 Разработка диаграммы сценариев программируем..........................................13
2.3 Разработка диаграммы классов...........................................................................14
2.4 Разработка диаграммы последовательностей...................................................15
Выводы по разделу....................................................................................................16
3 РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ............................................17
3.1 Выбор о обоснование паттернов проектирования для использования в
программе...................................................................................................................17
3.2 Выбор инструментального языка для разработки программы........................17
3.3 Описание структуры программного комплекса................................................17
3.4 Входная и выходная информация для работы программы..............................18
Выводу по разделу.....................................................................................................18
КР. ИТ-991.077.04.00
Изм. Лист № докум. Подпись Дата
Разраб. Галюзин А.А. Лит. Лист Листов
Провер. Стоянченко С.С.
Реценз.
СОДЕРЖАНИЕ
Н. Контр. Кафедра И и УС
Утверд. .
4
ЗАКЛЮЧЕНИЕ.............................................................................................................19
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ....................................................20
ПРИЛОЖЕНИЕ А.........................................................................................................21
ПРИЛОЖЕНИЕ Б..........................................................................................................23
Лист
КР. ИТ-991.077.04.00
Изм. Лист № докум. Подпись Дата
5
ВВЕДЕНИЕ
Задачи работы:
А) анализ методической литературы по заданной теме;
Б) моделирование отношений между объектами по заданному сюжету;
В) разработка программы;
Г) оформление вывода по работе.
Для решения данных задач использованы следующие методы исследования:
анализ, сравнение, систематизация, обобщение теоретических данных, синтез.
КР. ИТ-991.077.04.00
Изм. Лист № докум. Подпись Дата
Разраб. Галюзин А.А. Лит. Лист Листов
Провер. Стоянченко С.С.
Реценз.
ВВЕДЕНИЕ
Н. Контр. Кафедра И и УС
Утверд. .
6
Таблица 1.1
Сюжет кратко или
1. Мать отправляет Красную
шапочку в лес, навестить свою
больную бабушку
2. Девочка встречает Серого
волка, которому рассказывает о
бабушке и дороге к ее дому.
3. Волк бежит вперед, и, а) Девочка отправилась в лес к
притворившись Красной бабушке
шапочкой, проникает в дом, где б) Плохая встреча
съедает бабушку. в) Волк стал бабушкой
4. Красная шапочка приходит к г) Встреча бабушки и Красной шапочи
бабушке, и удивляется ее д) Красной шапочку съели
рукам, голосу и зубам. е) Освобождение шапочки и бабушки
5. Волк съедает Красную
шапочку.
6. Дровосеку убивают Волка и
выпускают наружу живых
бабушку и Красную шапочку.
КР. ИТ-991.077.04.00
Изм. Лист № докум. Подпись Дата
Разраб. Галюзин А.А. Лит. Лист Листов
АНАЛИЗ ЗАДАЧИ
Провер. Стоянченко С.С.
Реценз.
КУРСОВОГО
Н. Контр. ПРОЕКТИРОВАНИЯ Кафедра И и УС
Утверд. .
7
очень плохо, для добавления одного нового жителя к сети потребуется снова
протягивать кабель к каждому старому. Чинить обрывы будет тоже не самой
простой задачей.
Здесь нам пригодится паттерн «Одиночка». Одиночкой в этом случае будет
телефонная станция, и все линии связи будут проходить через нее. Для
добавления нового жителя потребуется только протянуть кабель от его дома до
станции.
Но главное в одиночке то, что создав станцию один раз, ей может
пользоваться сколько угодно людей. Смысл в том, что когда вы скажете «Мне
нужна телефонная станция», вам ответят не «Нужно построить новую», а «Она
находится там-то».
Registry (реестр, журнал записей). Данный паттерн предназначен для
хранения записей, которые в него помещают и возвращения записей, которые у
него запрашивают. Если вернуться к примеру с телефонной станцией, она будет
являться реестром по отношению к телефонным номерам жителей.
Еще один пример одиночки-реестра – бухгалтерия. Фирма не создает
бухгалтерию каждый раз, когда она ей понадобится. В то же время, в бухгалтерии
хранятся записи обо всех сотрудниках фирмы, как в реестре.
Object pool (пул объектов). Этот паттерн также как и предыдущий, содержит
набор объектов, но не все они обязаны быть одиночками.
Multiton (пул «одиночек»). По сути данный паттерн – это реестр одиночек,
каждый из которых имеет имя, по которому к нему можно получить доступ
Factory (фабрика). Фабрика – достаточно точное название для этого
паттерна. Когда вам понадобится пакет сока, вы обращаетесь к фабрике с
соответствующим запросом, она в свою очередь копирует эталон и передает вам
его экземпляр. Что при этом происходит внутри фабрики и как она это делает вас
не беспокоит.
10
Выводы по разделу
КР. ИТ-991.077.04.00
Изм. Лист № докум. Подпись Дата
v
Разраб. Галюзин А.А. Лит. Лист Листов
Провер. Стоянченко С.С.
Реценз.
РАЗРАБОТКА
Н. Контр. ПРОГРАММНОГО Кафедра И и УС
Утверд. . ОБЕСПЕЧЕНИЯ
13
Входная информация:
1. Сюжет сказки
2. Принцип работы программы
Выходная информация:
1. Реализация сюжета сказки
2. ФИО разработчика
Выводы по разделу
ЗАКЛЮЧЕНИЕ
КР. ИТ-991.077.04.00
Изм. Лист № докум. Подпись Дата
Разраб. Галюзин А.А. Лит. Лист Листов
Провер. Стоянченко С.С.
Реценз.
ЗАКЛЮЧЕНИЕ
Н. Контр. Кафедра И и УС
Утверд. .
19
ПРИЛОЖЕНИЕ А
1. Диаграмма сценария
2. Диаграмма классов
КР. ИТ-991.077.04.00
Изм. Лист № докум. Подпись Дата
Разраб. Галюзин А.А. Лит. Лист Листов
Провер. Стоянченко С.С.
Реценз.
ПРИЛОЖЕНИЕ
Н. Контр. Кафедра И и УС
Утверд. .
21
3. Диаграмма последовательности
22
ПРИЛОЖЕНИЕ Б
#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
void avt(int& s)
{
}
if (s == 40) {
23
}
if (s == 8) {
cout << "Слуга побежал домой и рассказал купцу про то,
что слышал на речке. Собрали народ, пошли на реку, " <<
endl;
cout << "закинули сети шелковые и вытащили Алёнушку
на берег. Сняли камень с шеи, окунули ее в ключевую воду,
одели ее в нарядное платье." << endl;
cout << "Алёнушка ожила и стала краше, чем была. А
козлёночек от радости три раза перекинулся через голову и
обернулся, мальчиком Иванушкой." << endl;
cout << "Ведьму привязали к лошадиному хвосту и
пустили в чистое поле." << endl;
}
}
void al(int& s)
{
cout << "Аленушка: ";
if (s == 0) {
cout << "Подожди, братец, дойдём до колодца." <<
endl;
}
if (s == 1) {
cout << "Не пей, братец, телёночком станешь!" <<
endl;
}
if (s == 2) {
cout << "Не пей, братец, жеребёночком станешь!" <<
endl;
}
if (s == 3) {
cout << "Не пей, братец, козлёночком станешь!" <<
endl;
}
if (s == 60) {
cout << "Ах, братец мой Иванушка! Тяжел камень на
дно тянет, Шёлкова трава ноги спутала, Жёлты пески на груди
легли." << endl;
}
if (s == 70) {
cout << "Ах, братец мой Иванушка! Тяжел камень на
дно тянет, Шёлкова трава ноги спутала, Жёлты пески на груди
легли." << endl;
}
25
}
void iv(int& s)
{
cout << "Иванушка: ";
if (s == 0) {
cout << "Сестрица Алёнушка, я пить хочу!" << endl;
}
if (s == 1) {
cout << "Сестрица Алёнушка, хлебну я из копытца!"
<< endl;
}
if (s == 2) {
cout << "Сестрица Алёнушка, напьюсь я из копытца!"
<< endl;
}
if (s == 3) {
cout << "Сестрица Алёнушка, мочи нет: напьюсь я из
копытца!" << endl;
}
if (s == 5) {
cout << "Алёнушка, сестрица моя!. Выплынь, выплынь
на бережок…" << endl;
}
if (s == 6) {
cout << "Перед смертью пусти меня на речку сходить,
водицы испить, кишочки прополоскать." << endl;
}
if (s == 60) {
cout << "Алёнушка, сестрица моя! Выплынь, выплынь
на бережок. Костры горят высокие, Котлы кипят чугунные,
Ножи точат булатные, Хотят меня зарезати!" << endl;
}
if (s == 70) {
cout << "Алёнушка, сестрица моя! Выплынь, выплынь
на бережок. Костры горят высокие," << endl;
cout<<"Котлы кипят чугунные, Ножи точат булатные, Хотят
меня зарезати!" << endl;
}
}
void kup(int& s)
{
cout << "Купец: ";
if (s == 4) {
cout << "О чём, красная девица, плачешь?";
26
}
if (s == 40) {
cout << "Поди за меня замуж. Я тебя наряжу в злато-
серебро, и козленочек будет жить с нами." << endl;
}
if (s == 6) {
cout << "Ну, сходи." << endl;
}
}
void ved(int& s){
cout << "Ведьма: ";
if (s == 5) {
cout << "Ну, зарежь его…" << endl;
}
if (s == 7) {
cout << "Пойди найди козлёнка, приведи его ко мне."
<< endl;
}
}
class Command{public:
virtual void handle() = 0;
};
class avtor : public Command
{
int& s;
public:
avtor(int& _s):s(_s){}
};
class ivan : public Command
{
int& s;
public:
ivan(int& _s) :s(_s) {}
}
};
class aAlena :public actor {
public:
void info() {
cout << "Умная и работящая девушка, заботилась о
любимом брате. Доверчивая и безобидная. Очень красивая.\n";
}
};
class aVedma :public actor {
public:
void info() {
cout << "Злая и коварная, обманщица, жестокая.\n";
}
};
class aKupez : public actor {
public:
void info() {
cout << "Молодой и красивый, честный и
порядочный.\n";
}
};
class factory {
public:
virtual actor* make() = 0;//Чистая виртуальная функция
показывает, что в производстве будет метод make
virtual ~factory() {}//Виртуальный деструктор
};
class Ivan:public factory {
actor* make() {
return new aIvan; //Создаем объект
}
};
class Alena :public factory {
actor* make() {
return new aAlena;//Создаем объект
}
};
class Vedma :public factory {
actor* make() {
return new aVedma;//Создаем объект
}
};
class Kupez :public factory {
29
actor* make() {
return new aKupez;//Создаем объект
}
};
actor* foo(factory* value) {
return value->make();
}
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Галайда Вадим Юрьевич ИТ-991" << endl<<endl;
cout << "1 - СКАЗКА // 2 - ИНФОРМАЦИЯ О ГЕРОЯХ : "; int
i; cin >> i;
if (i == 1) {
int s = 0;
cout << "0-Продолжить ";
cin >> s;
avtor q(s); q.handle();//Вызов команды
ivan q1(s); q1.handle();
alena q2(s); q2.handle();
cout << "1-Продолжить ";
cin >> s;
q.handle();
q1.handle();
q2.handle();
cout << "2-Продолжить ";
cin >> s;
q.handle();
q1.handle();
q2.handle();
cout << "3-Продолжить ";
cin >> s;
q.handle();
q1.handle();
q2.handle();
cout << "4-Продолжить ";
cin >> s;
q.handle();
kupez q3(s); q3.handle(); s = s * 10; q.handle(); s
= s * 10; q.handle();
cout << "5-Продолжить ";
cin >> s;
q1.handle(); q.handle(); vedma q4(s); q4.handle();
cout << "6-Продолжить ";
30
cin >> s;
q.handle(); q1.handle(); q3.handle(); s = s * 10;
q.handle(); q1.handle(); q2.handle();
cout << "7-Продолжить ";
cin >> s;
q.handle(); q4.handle(); s = s * 10; q.handle();
q1.handle(); q2.handle();
cout << "8-Продолжить ";
cin >> s;
q.handle();
}
else {
Ivan m1; //Переменные для каждого подтипа
Alena m2; //Переменные для каждого подтипа
Kupez m3; //Переменные для каждого подтипа
Vedma m4;//Переменные для каждого подтипа
factory* ptr1 = &m1; //Указатель на объект нужного
типа
factory* ptr2 = &m2;//Указатель на объект нужного
типа
factory* ptr3 = &m3;//Указатель на объект нужного
типа
factory* ptr4 = &m4;//Указатель на объект нужного
типа
actor* Object1 = foo(ptr1); //Создали объект
actor* Object2 = foo(ptr2);//Создали объект
actor* Object3 = foo(ptr3);//Создали объект
actor* Object4 = foo(ptr4);//Создали объект
cout << "БРАТЕЦ ИВАНУШКА" << endl;
Object1->info(); //Вывели информацию.
cout << "СЕСТРИЦА АЛЕНУШКА" << endl;
Object2->info(); cout << "КУПЕЦ" << endl;//Вывели
информацию.
Object3->info(); cout << "ВЕДЬМА" << endl;//Вывели
информацию.
Object4->info();//Вывели информацию.
delete Object1; delete Object2;delete Object3;
delete Object4;//Почистили память
}return 0;}