Форум программистов, компьютерный форум CyberForum.ru

Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме - C++

Восстановить пароль Регистрация
 
Lawlliet
2 / 2 / 0
Регистрация: 25.03.2010
Сообщений: 145
08.09.2012, 11:50     Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме #1
Помогиет пожайлуста..расшифруйте что делать..или помогите сделать. В универе новый предмет Объектно ориентированное програмирование, была всего одна лекция ,дали лабораторну.Что делать с ней незнаю. Если можно оюъясните как нибудь по проще..или если есть что нибудь аналогичное.

"разработать класс и программу, которая демонстирует его возможности. Требования к классу:
- продумать атрибуты класса и инкапсулировать их в закрытой части интерфейса класса;
-определить по крайней меретри конструктора; конструктор по умолчанию, конструктор с параметрами и конструктор копии;
-задать набор методов для получения значений и модификаций элементов-данных, находящихся в закрытой части класса;
- требуеться продемонстировать работу с кассом в функции main() .По мимо этого необходимо показать:
-создание экземпляра тремя способами: без параметров с последующим заполнением полей, с вызовом конструктора с параметрами, создание копии на основании имеющегося экземпляра.
-вывод информации на экран.
-работу конструкторов и деструкторов экземпляров.

Ниже приведен класс и рекеомедуемый перечсень операций над оюъектами, которые необходимо продемонстрировать.



Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме путем включения и выключения обогревателя, а так же измерение температуры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 11:50     Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме
Посмотрите здесь:

Разработать программу, моделирующую организацию и поддержание очереди C++
C++ Написать класс обработчик исключительных ситуаций.
Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... C++
C++ Задача на классы. Вывод элемента с заданной харакеристикой
C++ Создать абстрактный базовый класс с виртуальными методами вычисления функции y в заданной точке х
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
08.09.2012, 11:59     Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме #2
для начала открыть литературу и почитать про ООП
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
08.09.2012, 15:04     Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме #3
Цитата Сообщение от Lawlliet Посмотреть сообщение
Требования к классу:
- продумать атрибуты класса и инкапсулировать их в закрытой части интерфейса класса;
-определить по крайней меретри конструктора; конструктор по умолчанию, конструктор с параметрами и конструктор копии;
-задать набор методов для получения значений и модификаций элементов-данных, находящихся в закрытой части класса;
- требуеться продемонстировать работу с кассом в функции main() .По мимо этого необходимо показать:
-создание экземпляра тремя способами: без параметров с последующим заполнением полей, с вызовом конструктора с параметрами, создание копии на основании имеющегося экземпляра.
-вывод информации на экран.
-работу конструкторов и деструкторов экземпляров.
Не знаю в какое место это все засунуть, вот накидал что-то на коленке
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <iostream>
#include <cstdlib>
#include <ctime>
 
template <class T>
class ObservedObject
{
public:
    ObservedObject(T val) : optimalVal(val) {}
 
    T getOptimalVal () const
    {
        return optimalVal;
    }
 
    virtual T getCurrentVal()const = 0;
    virtual void valUp() = 0;
    virtual void valDown() = 0;
 
private:
    T optimalVal;
};
 
class Device
{
public:
    enum state {ON, OFF};
 
    Device(std::string name) : deviceName(name), deviceState(OFF) {}
 
    bool isOn () const
    {
        return deviceState == ON;
    }
 
    void on()
    {
        deviceState = ON;
    }
 
    void off()
    {
        deviceState = OFF;
    }
 
 
    std::string getDeviceName () const
    {
        return deviceName;
    }
 
    std::string getState () const
    {
        return deviceState == ON ? "ON " : "OFF";
    }
 
private:
    std::string deviceName;
    state deviceState;
};
 
class Aquarium : public ObservedObject<int>
{
    static const int defaultTemp = 30;
public:
    Aquarium (int temp = defaultTemp) : ObservedObject<int>(defaultTemp), temperature(defaultTemp)
    {
        srand(time(NULL));
    }
 
    int getCurrentVal() const
    {
        return temperature;
    }
 
    void valUp ()
    {
        ++temperature;
    }
 
    void valDown()
    {
        --temperature;
    }
 
private:
    int temperature;
};
 
 
template <class T>
class Controller
{
public:
    Controller (Device &_dev, ObservedObject<T> &_ob) : dev(_dev), ob(_ob) {}
 
    void exec()
    {
        const T optVal = ob.getOptimalVal();
 
        while (true)
        {
            static int count = 0;
 
            T curVal = ob.getCurrentVal();
 
            if (optVal != curVal)
            {
                if (!dev.isOn())
                {
                    dev.on();
                }
 
                ob.valUp();
 
            }
            else
            {
                if (dev.isOn())
                {
                    dev.off();
                }
            }
 
            std::cout << "Temperature = " << curVal
                      << ", " << dev.getDeviceName() << " is " << dev.getState() << '\r';
 
            system("timeout 1 > nul"); // Sleep(1)
 
            // имитируем охлаждение аквариума на случайное число градусов каждые 5 секунд
            ++count;
            if ((!(count % 5)) && !dev.isOn())
            {
                for (int i = rand() % 5; i >= 0; i--)
                {
                    ob.valDown();
                }
            }
        }
    }
 
private:
    Device &dev;
    ObservedObject<T> &ob;
};
 
int main()
{
    Aquarium aquarium;
    Device heater("heater");
    Controller<int> ctrl(heater, aquarium);
 
    ctrl.exec();
 
    return 0;
}
по идее нагревание/охлаждение по другому надо сделать и я бы еще добавил, что-нибудь типа class Termometr, но уже лень. Да и код нужно по файлам разбить, а то все в куче - не красиво.
Lawlliet
2 / 2 / 0
Регистрация: 25.03.2010
Сообщений: 145
09.09.2012, 00:44  [ТС]     Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме #4
А вы не можете сделать красиво?)

просто правда очень надо)
Elboy
131 / 112 / 4
Регистрация: 01.09.2012
Сообщений: 288
09.09.2012, 00:54     Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме #5
Цитата Сообщение от Lawlliet Посмотреть сообщение
А вы не можете сделать красиво?)
Цветочки в код вставить?? =)
Yandex
Объявления
09.09.2012, 00:54     Классы аквариум и обогреватель. Класс обработчик реализует поддержание заданной температуры в аквариуме
Ответ Создать тему
Опции темы

Текущее время: 17:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru