Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
6 / 6 / 3
Регистрация: 22.09.2013
Сообщений: 166

Наследование классов "Заявка", "Техническое задание", "Техническое предписание"

27.11.2014, 18:38. Показов 2508. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать базовый класс ТЕХНИЧЕСКОЕ ЗАДАНИЕ со свойствами: номер, описание и методами: вывести всю информацию об объекте, добавить описание. Построить базовый класс ЗАЯВКА со свойствами: номер заявки, название, дата выполнения заявки, фамилия ответственного и методами: посмотреть всю информацию о заявке, изменить название, изменить дату.
Построить производный класс ТЕХНИЧЕСКОЕ ПРЕДПИСАНИЕ от двух базовых классов: ЗАЯВКА, ТЕХНИЧЕСКОЕ ЗАДАНИЕ со своим собственным свойством: стоимость работ, изменить стоимость работ. Выполнить замещение метода: вывести всю информацию об объекте на экран.

Ниже написан мой код. Кто хорошо владеет ООП парадигмой подскажите что тут лишнего. Что не хватает?

class.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#define _CRT_SECURE_NO_WARNINGS
#pragma once
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class Specification{    //Базовый класс ТЕХНИЧЕСКОЕ ЗАДАНИЕ.
private:
    unsigned int Number; //Номер задания.
    char Description[300]; //Описание задания.
public:
    void print_information_about_equipment()const{  //Вывод информации о задании
        cout << "Номер задания: " << Number << endl
             << "Описание задания: " << endl
             << Description << endl;
    }
    void SetDescription(){  //Изменение описания
        cout << "Введите описание: ";
        cin.getline(Description, 300);
    }
    Specification(unsigned int _Number = 0, char _description[300] = "Нет описания"):Number(_Number){ //Конструктор
        strcpy(Description, _description);
    }
    ~Specification(){}  //Деструктор
    Specification(const Specification &a){  //Конструктор копирования
        strcpy(Description, a.Description);
        Number = a.Number;
    }
    Specification operator =(const Specification &right){ //Перегрузка оператора =
        if (this == &right) {
            return *this;
        }
        strcpy(Description, right.Description);
        Number = right.Number;
        return *this;
    }
};
 
class Application{ //Базовый класс ЗАЯВКА.
private:
    unsigned int NumberApplication; //Номер заявки
    char IdApplication[30];                 //Название заявки
    char DataApplication[20];           //Дата выполнения заявки
    char surname[30];                   //Фамилия ответственного
public:
    Application(unsigned int _NumberApplication = 0, char _IdApplication[30] = "Нет названия", char 
      _DataApplication[20] = "Нет даты", char _surname[30] = "Нет ответственного"){ //Конструктор.
        NumberApplication = _NumberApplication;
        strcpy(IdApplication, _IdApplication);
        strcpy(DataApplication, _DataApplication);
        strcpy(surname, _surname);
    }
    ~Application(){}    //Деструктор.
    void print_information_Application()const{  //Вывод информации о заявке
        cout << "Номер заявки: "           << NumberApplication << endl
             << "Название заявки: "        << IdApplication     << endl
             << "Дата выполнения заявки: " << DataApplication   << endl
             << "Фамилия ответственного: " << surname      << endl;
    } 
    void SetIdApplication(){    //Изменение названия
        cout << "Введите название заявки: ";
        cin.getline(IdApplication,30);
    }
    void SetDataApplication(){  //Изменение даты выполнения заявки
        cout << "Введите дату выполнения: ";
        cin.getline(DataApplication, 20);
    }
    Application(Application &a){    //Конструктор копирования
        NumberApplication = a.NumberApplication;
        strcpy(IdApplication, a.IdApplication);
        strcpy(DataApplication, a.DataApplication);
        strcpy(surname, a.surname);
    }
};
 
class tex_pred : public Specification, Application{ //Производный класс от 2-х базовых
private:
    double s_work;  //Стоимость работ.
public:
 
    double Get_s_work(){ //Получить стоимость работ
        return s_work;
    }
    void Set_s_work(){  //Изменить стоимость работ
        cout << "Введите стоимость работ: ";
        cin >> s_work;
    }
};
main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "Class.h"
 
void main(){
    setlocale(0, "");
    Application A(1, "Блок 3", "15.11.2014", "Клепиков");
    A.print_information_Application();
    Application C(A);
    C.print_information_Application();
    Specification B(1, "Сдать лаборторную работу по третьему блоку.");
    B.print_information_about_equipment();
    _getch();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2014, 18:38
Ответы с готовыми решениями:

техническое задание
подскажите верно ли я пытаюсь реализовать данное задание? имеется блок считывания карты для списания денег, нужно сделать чтобы по чипу...

Техническое задание
Здравствуйте, форумчане. Я мало, что понимаю в программировании. Но приходится с этим сталкиваться. Мне нужна ваша помощь, адекватная и...

Техническое задание
Помогите, пожалуйста: напишите программу учета вещей в шкафах

2
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.11.2014, 20:28
Лишние массивы.
Не хватает std::string вместо массивов.

Если пишите в стиле ООП, то и пишите в этом стиле весь проект.
Не нужно мешать с сишным стилем.

Других замечаний касательно ООП нет.


Из ляпов:

1. Создается впечатление, что код писали разные люди. Потому что разные стили:

C++
1
class tex_pred
C++
1
class Specification
Если вы пишите имена классов с большой буквы - то пишите так везде.
Иначе читать код не удобно.

Тоже самое касается членов:
C++
1
double s_work;
C++
1
unsigned int NumberApplication;
Так же обратите внимание: имя члена у вас написано в том же стиле, что и имя класса: с большой буквы.
Большинство нотаций компаний запрещают такое.
Важно, что бы код был написан так, что бы внешне легко различались имена классов/функций/переменных.

Вот такая вещь:
C++
1
#include "Class.h"
Означает одно из двух:
Либо автор кода очень не опытен. Либо он полный раздолбай, и гнать его нужно из команды.

Имена должны быть читабельными, и подчинятся единой системе наименований всех элементов проекта.

Добавлено через 3 минуты
По поводу вашего задания: вы его не выполнили. Потому что ваше приложение не демонстрирует в действии те технические аспекты, которые вы должны были реализовать согласно заданию.

У вас в функции main нигде не используется сущность "ТЕХНИЧЕСКОЕ ПРЕДПИСАНИЕ".

Нет демонстрации работы класса tex_pred
0
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 5
19.04.2017, 21:21
Мб кому будет полезен код для этой задачи из 2017
Header
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include<string>
#include<iostream>
#include<conio.h>
 
class technical_task {
 
private:
 
    int nomber1 = 0;
    std::string description;
 
public:
 
        technical_task(int nomber1, std::string description) {
            this->nomber1 = nomber1;
            this->description = description;
        }
 
        ~technical_task(){};
        
        virtual void print_t(){
            std::cout<< "Описание ТЗ " << description << std::endl << "Номер " << nomber1 << std::endl;
        }
 
        void add() {
            std::cout << "Введите описание ТЗ " << std::endl;
            std::cin >> description;
        }
};
 
class Application {
 
private:
 
    int nomber2 = 0;
    std::string date; 
    std::string Surname;
    std::string Name;
 
public:
 
    Application(int nomber2,std::string Name, std::string date, std::string Surname){
        this->nomber2 = nomber2;
        this->Name = Name;
        this->Surname = Surname;
        this->date = date;
    }
    
    ~Application(){};
 
    virtual void print_a(){
        std::cout << "Название заказа " << std::endl << Name << std::endl << "Номер заказа " << nomber2 << std::endl << "Дата выполнения " << date <<std::endl<< "Фамилия ответственного " << Surname << std::endl << std::endl;
    }
    
    void add_Name() {
        std::cout << "Введите названия заявки " << std::endl;
        std::cin >> Name;
    }
 
    void add_Date() {
        std::cout << "Введите дату выполнения  " << std::endl;
        std::cin >> date;
    }
};
 
class technical_prescription:public Application, technical_task{
    
private:
 
     double Cost_work;
 
public:
 
    technical_prescription(int Nomber_application, std::string Name, std::string date, std::string Surname, int Nomber_technical_task, std::string description, double Cost_work)
                          :Application(Nomber_application, Name, date, Surname),technical_task(Nomber_technical_task,description) {
        this->Cost_work = Cost_work;
    }
 
    double Get_cost_work() { 
        return Cost_work;
    }
    
    void Set_cost_work() {  
        std::cout << "Введите стоимость работ: ";
        std::cin >> Cost_work;
    }
 
    void print(technical_prescription *obj)const {
         obj->print_a();
         obj->print_t();
         std::cout <<std::endl <<"Стоимость работы "<< Cost_work << std::endl;
    }
};
main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<string>
#include<iostream>
#include<conio.h>
#include"Header.h"
 
int main(void
) {
    double count;
 
    //Номер заявки,название заявки,дата выполнения заявки,фамилия ответственного,номер тз,описание тз,цена работы. 
    technical_prescription  *object = new technical_prescription(2,"dada","14 54 3221","dddd",3,"kcuf",23.4);
    
    object->print(object); 
    object->Set_cost_work();
    count=object->Get_cost_work();
    std::cout << count<<std::endl;
    object->print(object);
    
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.04.2017, 21:21
Помогаю со студенческими работами здесь

Техническое задание
Всем доброго времени суток! Требуется разработать ТЗ для системы автоматизации поликлиники, используя диаграммы в Rational Rose. Зашел в...

Техническое задание
Народ, подскажите... вот у меня тема курсовой: &quot;построение графиков функций&quot; нужно написать программу включающую в себя:возможность...

Техническое задание
Граждани, прошу вашей помощи. Вот тут описана одна из многих структур ТЗ. Так вот - там есть пункт 10, 10.1 и 10.2. И я лишь отдаленно...

Техническое задание
Ребят, может кто помочь с техническим заданием? Нужно оценить готовое ТЗ, по возможности дать критику.

Техническое задание
Имеется ТЗ для разработки мобильного приложения. Достаточно подробное. Хочется улучшить его на примере грамотного сделанного ТЗ, возможно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru