Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
1

Реализовать движущийся графический объект с помощью статических и динамических объектов

18.03.2016, 08:23. Показов 2718. Ответов 14

Author24 — интернет-сервис помощи студентам
Добрый день.

Решаю задачу из методички и поставлена она следующим образом: используя технологию объектно-ориентированного программирования разработать два варианта программы, реализующей движущийся графический объект в соответствии с индивидуальным заданием:
- с использованием статического объекта;
- с использованием динамического объекта.

Собственно, меня интересует что подразумевается(по вашему мнению) под статическим и динамическим объектом.
Беглое гугление не дало какого-то определённого ответа(кое-где речь ведётся о выделении памяти, но я не понимаю принципиальную разницу между подходами к выделению памяти в рамках данной задачи). Поскольку задача находится в разделе "Классы. Объекты.", то я предполагаю, что ответ лежит в плоскости С++ и не имеет отношения к графической части задачи(могу ошибаться).
Буду рад услышать мнения по поводу вопроса выше. Кидайте в меня ссылками на релевантный материал, если что.

Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2016, 08:23
Ответы с готовыми решениями:

Вывести эдементы матрицы с помощью статических и динамических массивов
помогите, пожалуйста, как написать код в с++. Дана матрица размера A * B. Вывести ее элементы в...

Методы сортировки статических и динамических массивов
Наверное, самая тяжёлая работа, с которой пришлось столкнуться... Как это делать? Нужно вариант...

Использование статических методов класса в динамических библиотеках
Здравствуйте. Прочитав пару тредов, статтей, да поклацав в компилятор у меня получилось слинковать...

Конфликт динамических и статических объектов
Здравствуйте, на днях столкнулся с проблемой: при обработке событий динамически созданных объектов...

14
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
18.03.2016, 08:34 2
Лучший ответ Сообщение было отмечено Ilot как решение

Решение

Предполагаю, что подразумевается либо простое объявление объекта, либо через new
C++
1
2
3
4
5
6
7
8
9
10
11
class MoveObject
{
...
};
int main()
{
   MoveObject Obj1; // 1 вариант статический объект
   MoveObject* pObj2=new MoveObject; // 2 вариант динамический объект
   ....
   delete pObj2; 
}
1
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
18.03.2016, 08:35  [ТС] 3
zss, да, я тоже склоняюсь к этому варианту, но, как и сказал в первом посте, не понимаю зачем это нужно для данной задачи :\
Просто чтобы было?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
18.03.2016, 08:37 4
С точки зрения обучения - для понимания разницы этих способов.
В частности, обратить внимание на моменты вызова конструктора и деструктора.
0
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
18.03.2016, 08:40  [ТС] 5
zss, для статических объектов он(деструктор) будет автоматически вызван при выходе за границы видимости области, где он был объявлен, а для динамических - при явном вызове, я правильно понимаю?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
18.03.2016, 09:08 6
Цитата Сообщение от zss Посмотреть сообщение
С точки зрения обучения - для понимания разницы этих способов.
Эта разница по идее проходится задолго до того как начинают создавать графические приложения.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.03.2016, 10:52 7
Имхо, вместо "статический объект" тут должно быть "объект на стеке", вместо "динамический" - "в куче".
Цитата Сообщение от inviter42 Посмотреть сообщение
и не имеет отношения к графической части задачи(могу ошибаться).
Из-за имеющеюся формулировки трудно однозначно сказать. Т.к. под динамическим объектом может пониматься движущийся объект, а под статическим - неподвижный. Правда, опять-таки, вместо "статический" в таком случае следовало бы написать "статичный".
Короче говоря, бить надо больно авторов таких методичек.
0
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
18.03.2016, 11:02  [ТС] 8
Цитата Сообщение от Tulosba Посмотреть сообщение
Короче говоря, бить надо больно авторов таких методичек.
Я плачу горючими слезами, потому как там вся методичка такая. ТЗ поставлены абы как, формулировки туманные. Такое ощущение, что методичка не для программистов, а для ясновидцев.
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,116
Записей в блоге: 2
18.03.2016, 11:02 9
Цитата Сообщение от Tulosba Посмотреть сообщение
вместо "статический объект" тут должно быть "объект на стеке"
может подразумевался глобальный объект?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.03.2016, 11:48 10
Цитата Сообщение от Kastaneda Посмотреть сообщение
может подразумевался глобальный объект?
Сомнительно. Т.к. это не стыкуется с "динамическим". Если конечно под "динамическим" не начать понимать в этом случае "локальный", т.е. "объект на стеке". Но это полный алес тогда будет
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
18.03.2016, 12:01 11
Цитата Сообщение от inviter42 Посмотреть сообщение
Я плачу горючими слезами, потому как там вся методичка такая.
Хм, речь про эту методичку? Действительно, там и дальше что-то странное. После пункта "Дерево наследования должно содержать не менее трех уровней." встает вопрос чем в представлении авторов является объектно-ориентированное программирование. Потому как если делать графику через объектно-ориентированный Qt, выстрадать три уровня наследования будет сложновато. А если никаких сторонних библиотек не использовать, так чистые плюсы библиотек для графики просто не имеют.
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
//Виджет с движением любой фигни по окружности
#ifndef MYOBJECT_H
#define MYOBJECT_H
#include<QTimer>
#include<QPainter>
#include<QImage>
#include<cmath>
#include<QWidget>
 
class MyObject:public QWidget
{
    Q_OBJECT
public:
    MyObject(QWidget*parent=0):QWidget(parent){updateImage();}
    void paintEvent(QPaintEvent*){
        //В object.jpg лежит изображение нужной фигни
        QPainter(this).drawImage(100+sin(angle)*100,100+cos(angle)*100,QImage("object.jpg"));
    }
public slots:
    void updateImage(){
        angle+=3.14/100;
        update();
        QTimer::singleShot(100,this,SLOT(updateImage()));
    }
private:
    double angle=0;
};
#endif // MYOBJECT_H
1
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
18.03.2016, 13:34  [ТС] 12
Renji, у меня ваша ссылка артичится открываться. Речь идёт об этой методичке.
И да, там, конечно, не сказано, как именно нужно создавать "любую фигню", но я полагаю, что подразумевается "геометрическое" построение, а не картинка. Хотя, конечно, явно об этом нигде не сказано, поэтому можно сделать это на собственное усмотрение.
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
18.03.2016, 13:40 13
Цитата Сообщение от inviter42 Посмотреть сообщение
И да, там, конечно, не сказано, как именно нужно создавать "любую фигню", но я полагаю, что подразумевается "геометрическое" построение, а не картинка.
Да не принципиально.
C++
1
2
//вот так будет геометрический кружок
QPainter(this).drawEllipse(100+sin(angle)*100,100+cos(angle)*100,20,20);
1
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
18.03.2016, 13:42  [ТС] 14
Renji, да, спасибо. Ссылку я таки открыл и да, это она самая(и лаба, и методичка).
0
jdzvk
18.03.2016, 15:27     Реализовать движущийся графический объект с помощью статических и динамических объектов
  #15

Не по теме:

с костылями, или без.
"используя технологии ооп" - неточное условие.
"реализующий движущийся графический объект" - показывать на экранчике же что-то будет нужно?
----
ооп допускает использование костылей. "индивидуальное задание" может значить,
что в каком то контексте вам нужно отсечь попытки впихнуть уже имеющееся криво или прямо сделанное.
также, приведённая в сообщение2 попытка указать статический и динамический объекты в одной структуре -
=неприемлемо.
это нарушает принципы ооп. мыслимые, и немыслимые.
статический объект - может быть жестко ограничен. при этом он остаётся полноценным.
динамический объект - иногда производное, иногда самостоятельное.
- динамическому объекту вы можете многа_памяти дать, можете не дать, он может быть реконструирован после деградации.
-----------------
к примеру, видео-трансляция теннисного матча. принципиально криво сделанный флэш - не может
приоритезировать объекты. мяч он часто рисует не там, где он на самом деле есть.
то есть, во время трансляции - с экрана - прекрасно видно: мяч пролетел мимо поля.
но "эта дура" зачем-то заявляет протест судъе. предъявляется повтор, и там совершенно понятно:
- да, она дура(слово же не воробей). но мяч - был в поле.
но "почему то" продолжают юзать флеш.
*он показывает поле, линии, что угодно.
но не может(ггг) показать мяч.
даже если передать координату, и сказать "дорисуй мяч" - он не сможет.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2016, 15:27

Движущийся графический объект
Используя технологию объектно-ориентированного программирования разработать два варианта программы,...

Реализация списков с помощью цепочек динамических объектов
Здравствуйте, форумчане! Проблема с реализацией списков с помощью цепочек динамических объектов....

написать программу движущийся графический объект с двумя способоми с использованием статического объекта и с использованием динамического объекта
Движение закрашенного прямоугольника по треугольному контуру с изменением цвета при изменении...

Реализовать программу с помощью динамических переменных
Что делает программа: Если строка начинается с цифры, то перед ней ставиться левая круглаяскобка, а...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru