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

Подскажите с организацией класса - C++

Восстановить пароль Регистрация
 
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
26.02.2014, 11:29     Подскажите с организацией класса #1
Суть проблемы - необходимо разработать структуру данных обладающую следующими свойствами:
1) Класс model содержит массив элементов point.
2) Класс point имеет поля - трехмерный тензор(аля вектор), ПЕРЕМЕННОЕ количество объектов наследников класса typeproblem. Причем эти объекты также содержат данные являющиеся тензорами произвольного ранга и методы работы с ними. Хотелось бы реализовать эти методы виртуальными, что бы был единый интерфейс в обращении с этими объектами. Второй день ломаю голову как это можно реализовать. Собственно у меня нет опыта работы с ООП поэтому хотелось бы услышать ваше мнение по этому вопросу.
Понимаю, что объяснил не совсем доходчиво поэтому постарась перефразировать задачу на уровне тех задания:
Необходимо реализовать структуру для расчета физических величин в пространственной задаче. Физические величины могут быть скалярами(температура), векторами(скорость течения), тензорами второго ранга. В структуре point будет храниться координаты точки и значение вычисляемой физической величины. Класс model содержит массив точек и вызывает методы для расчета физических величин. Желательно в структоре point должна быть возможность узнать ее соседние точки.
Замечу, что число задач может быть произвольным. Т.е. мы можем запустить вычисления только для скоростей, либо для сокростей и температур и т.д. Это можно реализовать как массив указателей на объекты наследники typeproblem. Таким образом объект класса model может поочередно обращаться к элементам этого массива и вызывать для них вычисление. Вот поэтому хотелось бы сделать методы класса typeproblem виртуальными.
Кроме того следует предусмотреть возможность добавления в существующий код других типов вычислений.
Вот такая непростая задача. Буду очень благодарен за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 11:29     Подскажите с организацией класса
Посмотрите здесь:

C++ Подскажите как правильно обращаться к фунциям-членам другого класса.
C++ Подскажите пример контейнерного класса-массив и список
C++ Трудности с организацией классовой иерархии
подскажите как заставить правильно работать программу по реализации класса "треугольник" на C++ C++
C++ Друзья, подскажите, говорят, что можно поля класса инициализировать в момент объявления класса. Как это сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.02.2014, 11:50     Подскажите с организацией класса #2
Цитата Сообщение от Ilot Посмотреть сообщение
ПЕРЕМЕННОЕ количество объектов наследников класса typeproblem.
вектор (умных) указателей на базовый тип.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
26.02.2014, 12:12  [ТС]     Подскажите с организацией класса #3
Tulosba, спасибо. Однако с реализацией переменного числа типов расчета проблем особливых нет. Проблема с реализацией класса typeproblem.
Хех похоже я туплю. Поля наследников typeproblem можно не передавать в функцию вычислений через список параметров они же и так доступны. Поэтому реализовать единый интерфейс вообще не проблема. Достаточно передать только текущие координаты, а они общие для всех типов вычислений.
Теперь осталось реализовать грамотный вызов соседних точек. Думаю с этим я разбирусь.
Пора бросать пить
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.02.2014, 12:18     Подскажите с организацией класса #4
Цитата Сообщение от Ilot Посмотреть сообщение
Однако с реализацией переменного числа типов расчета проблем особливых нет.
Я подумал, раз уж выделено КАПСОМ, то важно
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
26.02.2014, 12:26  [ТС]     Подскажите с организацией класса #5
Впринципе вы правильно поняли, но в шапке вопрос стоял не только об этом. Однако раз за это зашла речь я хотел бы поинтересоваться сложно ли реализовать возможность добавления типов вычислений в ввиде библиотек классов? Собственно я в этом пока не разбараюсь, однако пытаюсь разработать интерфейс классов таким образом, что бы была возможность добавлять новые типы вычислений не изменяя исходного кода приложения. Вот отсюда все эти заморочки с виртуальными функциями.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.02.2014, 13:00     Подскажите с организацией класса #6
Цитата Сообщение от Ilot Посмотреть сообщение
реализовать возможность добавления типов вычислений в ввиде библиотек классов
Поподробнее объясните. Я не уловил сути.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 13:24     Подскажите с организацией класса
Еще ссылки по теме:

Как обраиться к функции класса через другую функцию класса (друга)? C++
Подскажите как создать конструктор класса в котором производится инкрементирование статической переменной! C++
Как получить доступ к методам класса, который содержится в векторе класса C++

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

Или воспользуйтесь поиском по форуму:
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
26.02.2014, 13:24  [ТС]     Подскажите с организацией класса #7
Цитата Сообщение от Tulosba Посмотреть сообщение
Поподробнее объясните. Я не уловил сути.
Допустим имеем базовый класс который будет характеризовать типы вычислений:
Кликните здесь для просмотра всего текста
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
#ifndef TYPEPROBLEM_H_INCLUDED
#define TYPEPROBLEM_H_INCLUDED
#include"calculation_objects.h"
namespace lab
{
class typeproblem {
public:
    virtual bool Calculation(tensor_1) = 0;
};
 
/**
*   Движение среды
*/
class wrapping: public typeproblem
{
    tensor_1 speed;
 
    tensor_0 viscosity_first;
    tensor_0 viscosity_second;
public:
    bool Calculation(tensor_1);
}
/**
*   Температурное поле
*/
class heat: public typeproblem
{
    tensor_0 temperature;
    tensor_0 transcalency;
public:
    bool Calculation(tensor_1);
}
 
}
#endif // TYPEPROBLEM_H_INCLUDED

Классы wrapping и heat являются наследниками и предназначены для вычисления соответствующих величин. Теперь допустим мне необходимо написать программу для вычисления, к примеру, диффузии. Это должно быть реализованно в виде нового класса, наследника базового typeproblem, что бы я мог поместить указатель на объект этого класса в массив указателей для провдения дальнейших вычислений вызовом ф-и Calculation(tensor_1). Вопрос сложно ли реализовать так что бы приложение при запуске сканировало некую дерикторию в которой будут валяться библиотечные файлы с реализациями подобных классов с дальнейшей возможностью выбора в самом приложении доступных типов вычислений.
Yandex
Объявления
26.02.2014, 13:24     Подскажите с организацией класса
Ответ Создать тему
Опции темы

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