Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
#1

Структура в классе - C++

09.08.2013, 16:20. Просмотров 913. Ответов 4
Метки нет (Все метки)

Здраствуйте! Хотел спросить можно ли использовать структуру в классе и соответствует ли оно принципам ООП?

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
#include <iostream>
#include <cmath>
using namespace std;
 
class Quad
{
protected:
    struct coord
    {
    int a;
    int b;
    } figure[10];
public:
    Quad(){};
    ~Quad(){};
    
    virtual double calcPerimeter(){return 0;}
    void inputData()
    {
        cout << "Enter coords of figure: " << endl;
        for (int i = 0; i < 4; i++)
        {
            cout << "Point " << i+1 << endl;
            cin >> figure[i].a >> figure[i].b;
        }
    }
};
 
class Rectangle : public Quad
{
public:
    double calcPerimeter() // P = 2(a+b)
    {
        double k = 0, l = 0;
            k = abs(figure[1].b - figure[0].b);
            l = abs(figure[2].a - figure[1].a);
        return 2 * (k+l);
    }
};
 
class Qudrat : public Quad
{
public:
    double calcPerimeter()
    {
        return 4 * abs(figure[1].b - figure[0].b);
    }
};
 
void main()
{
    Quad *mas[2];
    double p = 0, z = 0;
    mas[0] = new Rectangle;
    mas[1] = new Qudrat;
 
    //for (int i = 0; i < 1; i++)
    mas[0] -> inputData();
    p = mas[0] -> calcPerimeter();
 
    mas[1] -> inputData();
    z = mas[1] -> calcPerimeter();
    cout << "Perimeter of Rectangle is: " << p << endl;
    cout << "Perimeter of Quadric is: " << z << endl;
    cin.get();
    cin.get();
    delete mas[0];
    delete mas[1];
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2013, 16:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структура в классе (C++):

Структура в классе, это возможно? - C++
У меня такая проблема, нужно реализовать объект-список. В нем необходимо реализовать методы обеспечивающие полную функциональность списка. ...

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

Структура в классе (из метода увидеть переменную) - C++
class Records { public: int Count; struct Param { public: __property unsigned int index = {write =...

В классе инициализировать массив, в классе создать функцию вывода массива на экран - C++
Прошу помоши с выводом данных, которые содержаться в массиве, на экраy: Задача: В классе инициализировать массив, в классе создать...

Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе - C++
У меня есть основной класс с названием Root один из его членов наследует дочерний класс SubRoot. Скажите как объявить, что бы один из...

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость. - C++
Ребят, помогите пожалуйста, 29 июня экзамен по &quot;Основы программирования&quot;,кто сколько сможет сделать задач, тем всей группой поставим &quot;+&quot;...

4
zss
Модератор
Эксперт С++
6702 / 6264 / 2089
Регистрация: 18.12.2011
Сообщений: 16,346
Завершенные тесты: 1
09.08.2013, 16:27 #2
Это ничему не противоречит.
Но рекомендуется описание новых понятий выносить наружу.
C++
1
2
3
4
5
6
7
8
9
10
struct coord
{
    int a;
    int b;
};
class Quad
{
protected:
   coord figure[10];
public:
1
2ima
☆ Форумчанин(FSC)☆
910 / 289 / 9
Регистрация: 28.04.2013
Сообщений: 2,440
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 16:28 #3
Почему бы и нет? А вот насчет сответствует ли оно принципам ООП...?!
0
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.08.2013, 16:30 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ovner Посмотреть сообщение
Хотел спросить можно ли использовать структуру в классе и соответствует ли оно принципам ООП?
Можно. Соответствует, если связано не просто так, а по смыслу.
В данном случае, не понятно откуда взялось число 10.
И метод в базовом классе должен быть "чистым":
C++
1
virtual double calcPerimeter() = 0;
P.S. Квадрат - это "square".

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
Но рекомендуется описание новых понятий выносить наружу.
Если они не используются снаружи, то и быть им там незачем.
3
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 19:23 #5
Согласен. Можно и соответствует.
И мне кажется что самый наглядный тому пример - итератор.
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
#include <iostream>
#include <exception>
#include <stdexcept>
 
using namespace std;
 
enum {
    small_container_capacity = 256
};
 
template <class T> class small_container {
    T *     m_data;
    size_t  m_size;
 
public:
    small_container() : m_data( new T [small_container_capacity] ), m_size(0) {}
    ~small_container() { delete [] m_data; }
 
    void push_back( T value ) {
        if ( m_size == small_container_capacity )
            throw out_of_range( "small_container: push_back() - subscript out of range" );
 
        m_data[m_size] = value;
        m_size++;
    }
 
    T pop_back() {
        if ( !m_size )
            throw out_of_range( "small_container: pop_back() - subscript out of range" );
 
        return m_data[--m_size];
    }
 
    class iterator {
        T *     m_head;
        size_t  m_size;
    public:
        iterator( const small_container & sc ) : m_head( sc.m_data ), m_size( sc.m_size ) {}
        iterator & operator ++ () {
            m_head++;
            m_size--;
            return *this;
        }
 
        T operator * () {
            return *m_head;
        }
 
        operator bool () const {
            return !!m_size;
        }
    };
 
};
 
int main()
{
    small_container <int> sc;
 
    for ( int i = 0; i < 10; i++ ) {
        sc.push_back( i );
    }
 
    for ( small_container <int>::iterator it = sc; it; ++it ) {
        cout << *it << endl;
    }
 
    return 0;
}
0
09.08.2013, 19:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2013, 19:23
Привет! Вот еще темы с ответами:

Структура «База», сущности «Универсам» и «Продукты», структура «Товар» - C++
1. Создать структуру «База», включающую не менее 3 полей. 2. Создать сущности «Универсам» и «Продукты» описанной структуры. 3. Создать...

У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? - C++
#include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; //Вот главный класс class A{ public: A (){}; class...

Известны оценки по физике каждого ученика двух классов.Определить средниюю оценку в каждом классе.Количество учащихся в каждом классе одинаковое! - C++
Известны оценки по физике каждого ученика двух классов.Определить средниюю оценку в каждом классе.Количество учащихся в каждом классе...

Структура DateTime, битовая структура - C++
Условие: Структура содержит информацию о дате и времени некоторого события: struct datetime { unsigned short Year; // год ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru