Додана лабораторна робота № 12
This commit is contained in:
parent
c174fea811
commit
480acbc188
15 changed files with 217 additions and 0 deletions
14
lab12/README.md
Executable file
14
lab12/README.md
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# Лабораторна робота № 12
|
||||||
|
|
||||||
|
Тема Програмна реалізація абстрактних типів даних
|
||||||
|
|
||||||
|
Мета роботи полягає у набутті ґрунтовних вмінь і практичних навичок об'єектного аналізу й проектування, створення класів C++ та тестування їх екземплярів, використання препроцесорних директив, макросів і макрооператорів під час реалізації програмних засобів у кросплатформовому середовищі Code::Blocks.
|
||||||
|
|
||||||
|
Завдання
|
||||||
|
1. Як складову заголовкового файлу ModulesMykhailenko.h розробити клас ClassLab12_Mykhailenko — формальне представлення абстракції сутності предметної області (об'єкта) за варіантом, — поведінка об'єкта якого реалізовує розв'язування задачі 7.1.
|
||||||
|
2. Реалізувати додаток Teacher, який видає 100 звукових сигналів і в текстовий файл TestResults.txt записує рядок "Встановлені вимоги порядку виконання лабораторної роботи порушено!", якщо файл проекта main.cpp під час його компіляції знаходився не в \Lab12\prj, інакше — створює об'єкт класу ClassLab12_Mykhailenko із заголовкового файлу ModulesMykhailenko.h та виконує його unit-тестування за тест-сьютом(ами) із \Lab12\TestSuite\, протоколюючи результати тестування в текстовий файл \Lab12\TestSuite\TestResults.txt.
|
||||||
|
|
||||||
|
Варіант № 1
|
||||||
|
|
||||||
|
|
||||||
|
Кропивницький | <a href="http://www.kntu.kr.ua/">ЦНТУ</a> | 2023
|
BIN
lab12/Report/Report.pdf
Executable file
BIN
lab12/Report/Report.pdf
Executable file
Binary file not shown.
BIN
lab12/Software/Teacher.exe
Executable file
BIN
lab12/Software/Teacher.exe
Executable file
Binary file not shown.
4
lab12/TestSuite/TestResults.txt
Executable file
4
lab12/TestSuite/TestResults.txt
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
Test 2.1 passed
|
||||||
|
Test 2.2 passed
|
||||||
|
Test 3.1 passed
|
||||||
|
Test 3.2 passed
|
3
lab12/TestSuite/unit.txt
Executable file
3
lab12/TestSuite/unit.txt
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
Edge Volume Seeds
|
||||||
|
5 125 100
|
||||||
|
10 1000 200
|
16
lab12/prj/ModulesMykhailenko.h
Executable file
16
lab12/prj/ModulesMykhailenko.h
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef MODULESMYKHAILENKO_H_INCLUDED
|
||||||
|
#define MODULESMYKHAILENKO_H_INCLUDED
|
||||||
|
|
||||||
|
class ClassLab12_Mykhailenko {
|
||||||
|
private:
|
||||||
|
float edge;
|
||||||
|
unsigned int seeds;
|
||||||
|
public:
|
||||||
|
ClassLab12_Mykhailenko(float, unsigned int);
|
||||||
|
float getVolume();
|
||||||
|
int getSeeds();
|
||||||
|
bool setEdge(float);
|
||||||
|
void setSeeds(unsigned int);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MODULESMYKHAILENKO_H_INCLUDED
|
40
lab12/prj/ModulesMykhailenko/ModulesMykhailenko.cbp
Executable file
40
lab12/prj/ModulesMykhailenko/ModulesMykhailenko.cbp
Executable file
|
@ -0,0 +1,40 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<CodeBlocks_project_file>
|
||||||
|
<FileVersion major="1" minor="6" />
|
||||||
|
<Project>
|
||||||
|
<Option title="ModulesMykhailenko" />
|
||||||
|
<Option pch_mode="2" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Build>
|
||||||
|
<Target title="Debug">
|
||||||
|
<Option output="bin/Debug/ModulesMykhailenko" prefix_auto="1" extension_auto="1" />
|
||||||
|
<Option working_dir="" />
|
||||||
|
<Option object_output="obj/Debug/" />
|
||||||
|
<Option type="2" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Option createDefFile="1" />
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-Wall" />
|
||||||
|
<Add option="-g" />
|
||||||
|
</Compiler>
|
||||||
|
</Target>
|
||||||
|
<Target title="Release">
|
||||||
|
<Option output="bin/Release/ModulesMykhailenko" prefix_auto="1" extension_auto="1" />
|
||||||
|
<Option working_dir="" />
|
||||||
|
<Option object_output="obj/Release/" />
|
||||||
|
<Option type="2" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Option createDefFile="1" />
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-Wall" />
|
||||||
|
<Add option="-O2" />
|
||||||
|
</Compiler>
|
||||||
|
<Linker>
|
||||||
|
<Add option="-s" />
|
||||||
|
</Linker>
|
||||||
|
</Target>
|
||||||
|
</Build>
|
||||||
|
<Unit filename="ModulesMykhailenko.cpp" />
|
||||||
|
<Extensions />
|
||||||
|
</Project>
|
||||||
|
</CodeBlocks_project_file>
|
28
lab12/prj/ModulesMykhailenko/ModulesMykhailenko.cpp
Executable file
28
lab12/prj/ModulesMykhailenko/ModulesMykhailenko.cpp
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#include <cmath>
|
||||||
|
#include "ModulesMykhailenko.h"
|
||||||
|
|
||||||
|
ClassLab12_Mykhailenko::ClassLab12_Mykhailenko(float edgeToSet, unsigned int seedsToSet) {
|
||||||
|
edge = edgeToSet;
|
||||||
|
seeds = seedsToSet;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ClassLab12_Mykhailenko::getVolume() {
|
||||||
|
return pow(edge, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ClassLab12_Mykhailenko::getSeeds() {
|
||||||
|
return seeds;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ClassLab12_Mykhailenko::setEdge(float edgeToSet) {
|
||||||
|
if (edgeToSet > 0) {
|
||||||
|
edge = edgeToSet;
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClassLab12_Mykhailenko::setSeeds(unsigned int seedsToSet) {
|
||||||
|
seeds = seedsToSet;
|
||||||
|
}
|
BIN
lab12/prj/ModulesMykhailenko/bin/Debug/libModulesMykhailenko.a
Executable file
BIN
lab12/prj/ModulesMykhailenko/bin/Debug/libModulesMykhailenko.a
Executable file
Binary file not shown.
BIN
lab12/prj/ModulesMykhailenko/obj/Debug/ModulesMykhailenko.o
Executable file
BIN
lab12/prj/ModulesMykhailenko/obj/Debug/ModulesMykhailenko.o
Executable file
Binary file not shown.
38
lab12/prj/Teacher/Teacher.cbp
Executable file
38
lab12/prj/Teacher/Teacher.cbp
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<CodeBlocks_project_file>
|
||||||
|
<FileVersion major="1" minor="6" />
|
||||||
|
<Project>
|
||||||
|
<Option title="Teacher" />
|
||||||
|
<Option pch_mode="2" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Build>
|
||||||
|
<Target title="Debug">
|
||||||
|
<Option output="bin/Debug/Teacher" prefix_auto="1" extension_auto="1" />
|
||||||
|
<Option object_output="obj/Debug/" />
|
||||||
|
<Option type="1" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-g" />
|
||||||
|
</Compiler>
|
||||||
|
</Target>
|
||||||
|
<Target title="Release">
|
||||||
|
<Option output="bin/Release/Teacher" prefix_auto="1" extension_auto="1" />
|
||||||
|
<Option object_output="obj/Release/" />
|
||||||
|
<Option type="1" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-O2" />
|
||||||
|
</Compiler>
|
||||||
|
<Linker>
|
||||||
|
<Add option="-s" />
|
||||||
|
</Linker>
|
||||||
|
</Target>
|
||||||
|
</Build>
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-Wall" />
|
||||||
|
<Add option="-fexceptions" />
|
||||||
|
</Compiler>
|
||||||
|
<Unit filename="Teacher.cpp" />
|
||||||
|
<Extensions />
|
||||||
|
</Project>
|
||||||
|
</CodeBlocks_project_file>
|
74
lab12/prj/Teacher/Teacher.cpp
Executable file
74
lab12/prj/Teacher/Teacher.cpp
Executable file
|
@ -0,0 +1,74 @@
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include "ModulesMykhailenko.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
ofstream result;
|
||||||
|
result.open("../../TestSuite/TestResults.txt");
|
||||||
|
if (!result)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
string path = __FILE__;
|
||||||
|
|
||||||
|
if (path.find("\\lab12\\prj") == string::npos) {
|
||||||
|
for (int i = 0; i < 100; i++)
|
||||||
|
cout << "\a";
|
||||||
|
result << "Встановлені вимоги порядку виконання лабораторної роботи порушено!" << endl;
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
ifstream testsuite;
|
||||||
|
testsuite.open("../../TestSuite/unit.txt");
|
||||||
|
|
||||||
|
vector<vector<string>> content;
|
||||||
|
vector<string> row;
|
||||||
|
string line, word;
|
||||||
|
unsigned int lines = 0;
|
||||||
|
bool firstLine = true;
|
||||||
|
|
||||||
|
if (testsuite.is_open()) {
|
||||||
|
while(getline(testsuite, line)) {
|
||||||
|
if (firstLine) {
|
||||||
|
firstLine = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
row.clear();
|
||||||
|
|
||||||
|
stringstream str(line);
|
||||||
|
|
||||||
|
while(getline(str, word, '\u0009'))
|
||||||
|
row.push_back(word);
|
||||||
|
content.push_back(row);
|
||||||
|
lines++;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
return 3;
|
||||||
|
|
||||||
|
float edge[lines];
|
||||||
|
float expectedVolume[lines];
|
||||||
|
unsigned int expectedSeeds[lines];
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < content.size(); i++) {
|
||||||
|
edge[i] = stof(content[i][0]);
|
||||||
|
expectedVolume[i] = stof(content[i][1]);
|
||||||
|
expectedSeeds[i] = stoi(content[i][2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
ClassLab12_Mykhailenko *classLab = new ClassLab12_Mykhailenko(edge[0], expectedSeeds[0]);
|
||||||
|
for (unsigned int i = 0; i < lines; i++) {
|
||||||
|
float volume = classLab->getVolume();
|
||||||
|
unsigned int seeds = classLab->getSeeds();
|
||||||
|
result << "Test " << i + 2 << ".1 " << (volume == expectedVolume[i] ? "passed" : "failed") << endl;
|
||||||
|
result << "Test " << i + 2 << ".2 " << (seeds == expectedSeeds[i] ? "passed" : "failed") << endl;
|
||||||
|
if (i + 1 != lines) {
|
||||||
|
classLab->setEdge(edge[i + 1]);
|
||||||
|
classLab->setSeeds(expectedSeeds[i + 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
lab12/prj/Teacher/bin/Debug/Teacher.exe
Executable file
BIN
lab12/prj/Teacher/bin/Debug/Teacher.exe
Executable file
Binary file not shown.
BIN
lab12/prj/Teacher/obj/Debug/Teacher.o
Executable file
BIN
lab12/prj/Teacher/obj/Debug/Teacher.o
Executable file
Binary file not shown.
BIN
lab12/tasks/L-A12-var-001.jpg
Executable file
BIN
lab12/tasks/L-A12-var-001.jpg
Executable file
Binary file not shown.
After Width: | Height: | Size: 130 KiB |
Reference in a new issue