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

организация разветвленной иерархии классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В каждом байте перенести все единичные биты в середину http://www.cyberforum.ru/cpp-beginners/thread825780.html
Помогите написать программу(С++)В каждом байте перенести все единичные биты в середину.
C++ Задача. Распределить заказы между предприятиями так, чтобы надежность собираемых из них устройств была наибольшей Радиотехническое устройство состоит из m блоков. Надежность устройства (время наработки на отказ) определяется наименее надежным блоком. Блоки можно заказать на любом из n предприятий. При этом известна надежность каждого блока, изготовленного на каждом предприятии Cij, i=1..m, j=1..n. Каждое предприятие может специализироваться на производстве блоков только одного типа. Распределить заказы между... http://www.cyberforum.ru/cpp-beginners/thread825778.html
C++ Как установить GTK+ под Linux
Недавно решил попробовать программирование под Linux с помощью бибилотеки gtk. Какой пакет нужно скачать и установитть, что бы появилась возможность использовать gtk? При попытке скомпилировать приложение Code::blocks говорит "gtk.h: no such file or directory" При поиске по файлам gtk.h не обнаружена.
C++ Singleton и MVC
Здравствуйте уважаемые форумчане. Изучаю с++ и столкнулся с понятием паттернов и парадигмы MVC. Прочитав про паттерны и погуглив не совсем понял зачем они вообще нужны, ну и не стал заморачиваться этим вопроса, придет с опытом подумал. Прочитав про MVC подумал что Model, View, Controller это ничто иное как Singleton, я прав?
C++ Что удобней qmutex или boost mutex http://www.cyberforum.ru/cpp-beginners/thread825732.html
Что удобней, быстрей и безопасней?
C++ В строке найти и вывести на экран все слова длиною в три символа Доброго дня, помогите пожалуйста с C++. Вот условие: 4. В строке найти и вывести на экран все слова длиною в три символа(Описать две строки, суммарная длина которых не должна превышать восьмидесяти символов.) Вот примерный код программы(не моё условие, а начало как у меня должно быть): #include<iostream.h> #include<stdio.h> #include<conio.h> #include<string.h> подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
04.04.2013, 15:10     организация разветвленной иерархии классов
EvengarS, вот, прибрался немного. В изначальном коде много дублирования было. Видимо, Вы не совсем осознали концепции ООП (не нужно писать одно и то же в разных связанных классах).
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
#include <iostream>
 
using namespace std;
 
class Movable
{
public:
    virtual void moveTo(int, int) = 0;
    virtual void move(int, int) = 0;
    virtual ~Movable(){};
};
 
class MyWindow: public Movable
{
private:
    int m_x, m_y;
public:
    void moveTo(int x, int y)
    {
        m_x = x;
        m_y = y;
        // message
    }
};
 
class Graph
{
public:
    virtual void draw() = 0;
    virtual ~Graph(){};
};
 
class Point: public Graph, public Movable
{
private:
    int m_x, m_y;
public:
    Point( int x, int y): m_x(x), m_y(y) {}
    int getX()
    {return m_x;}
    int getY()
    {return m_y;}
    void moveTo(int x, int y)
    {
        m_x = x;
        m_y = y;
    }
    void move(int dx, int dy)
    {
        m_x+=dx;
        m_y+=dy;
    }
    void draw()
    {
        cout << "Point: x = " << m_x << ", y = " << m_y;
    }
};
 
class Rectangle: public Point
{
private:
    int m_w, m_h;
public:
    Rectangle(int x, int y, int w, int h) : Point( x, y), m_w(w), m_h(h) {}
    void setSize(int w, int h)
    {
        m_w = w;
        m_h = h;
    }
    int getW()
    {return m_w;}
    int getH()
    {return m_h;}
    void draw()
    {
        cout << "Rectangle: x = " << getX() << ", y = " << getY() << "w = " << m_w << "h = " << m_h;
    }
};
 
class Circle: public Point
{
private:
    int m_r;
public:
    Circle( int x, int y, int r ): Point( x, y ), m_r(r) {}
    void setRadius(int r)
    {
        m_r = r;
    }
    void draw()
    {
        cout << "Circle: x = " << getX() << ", y = " << getY() << "r = " << m_r;
    }
};
 
class Ellipse: public Rectangle
{
public:
    Ellipse( int x, int y, int w, int h) : Rectangle( x, y, w, h) {} 
    void draw()
    {
        cout << "Ellipse: x = " << getX() << ", y = " << getY() << "d1 = " << getW() << "d2 = " << getH();
    }
};
 
class Background: public Graph
{
    void draw()
    {
        //
    }
};
 
 
int main()
{
    Graph* ptr1 = new Point(10,20);
    Graph* ptr2 = new Rectangle(30,40,50,60);
    Graph* ptr3 = new Circle(70,80,90);
    Graph* ptr4 = new Ellipse(100,110,120,130);
        ptr1->draw();
        ptr2->draw();
        ptr3->draw();
        ptr4->draw();
        delete ptr1;
        delete ptr2;
        delete ptr3;
        delete ptr4;
}
На полноту код не претендует, подправил только наиболее очевидные места. Если что не понятно, спрашивайте.
 
Текущее время: 01:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru