25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
|
||||||
1 | ||||||
Как переделать рабочий код под ООП в Code::Blocks?08.05.2017, 22:21. Показов 1449. Ответов 15
Метки нет (Все метки)
0
|
08.05.2017, 22:21 | |
Ответы с готовыми решениями:
15
C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, как сделатьь так чтобы Студия воспринимала этот код?? Раздельная компиляция в Code::Blocks - как правильно разместить код в файлах? Как убрать неполадки совместимости с Code::Blocks при установке этой IDE под Windows 7 ? |
Модератор
3386 / 2158 / 352
Регистрация: 13.01.2012
Сообщений: 8,375
|
|
13.05.2017, 07:57 | 2 |
scherbakovss201, как минимум - инкапсулировать тела в объекты и агрегировать их в сцену
0
|
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
|
|
13.05.2017, 09:07 [ТС] | 3 |
0
|
13.05.2017, 09:51 | 4 |
Начнём с того, что объектно-ориентированное программирование характеризуется шестью парадигмами:
Причём у каждой парадигмы свой номер. Если я скажу "пятая парадигма ООП", то вы сразу пойдёте, что речь о парадигме "посылка сообщений" Лучше всего посмотрите этот курс от сертифицированного в Microsoft тренера: Предисловие к курсу "Шаблоны проектирования" Кликните здесь для просмотра всего текста
В вашем задании можно реализовать абстракцию. Сделаем абстрактный класс Shape, от которого будут наследоваться классы Pyramid и Triangle. В Shape будет чисто виртуальный метод Draw. Этот метод обязаны реализовать классы Pyramid и Triangle. Данные необходимые для построения объектов можно инкапсулировать, скрыв детали реализации, предоставив для внешнего Мира методы геттеры и сеттеры: SetWidth(GLfloat w), GetWidth(), SetHeight(GLfloat h)
0
|
vxg
|
13.05.2017, 11:20
#5
|
Не по теме: 8Observer8, лично я основываясь на своих источниках могу к этому набору парадигм добавить несколько и в то же время некоторые из перечисленных парадигм могу исключить - этот список не догма, если ваш источник привил вам мысль об обратном, то ваш источник глубоко заблуждается и ставит себя в центр мироздания - в свете сказанного ещё более странной и нелепой выглядит попытка именовать парадигмы по номерам якобы общепринятым и понятным всем остальным
0
|
8Observer8
|
13.05.2017, 11:32
#6
|
Не по теме: Источник - это книга "Банды четырёх": Приемы объектно-ориентированного проектирования. Паттерны проектирования Каждый может считать как угодно. Да, это не догма. Сколько людей столько и мнений. В 90-е шли войны парадигм. Книга "Банды четырёх" внесла кое-какую ясность, но всё равно многие люди придерживаются совершенно разных подходов и спорят между собой. Нужно просто высказывать своё мнение и придерживаться выбранного пути.
0
|
vxg
|
13.05.2017, 11:43
#7
|
Не по теме: 8Observer8, какая из книг внесла ясность, в каком объёме и куда именно можно обсуждать на уроках богословия - личные предпочтения тут ни причём просто потому что эта область не охватывается каким-либо стандартом и в значительной степени сама и есть набор личных предпочтений - просто не нужно забивать людям в голову хардкод списка парадигм ООП с железным порядком даже с ссылкой на авторитетный источник
0
|
8Observer8
|
13.05.2017, 12:02
#8
|
Не по теме: По сути описанные ими 24 паттерна в 1994 году до сих пор считаются основными. Почти любая книга по паттернам ссылается на неё и использует теже термины. Конечно, так большое число спорных моментов, с многими лично я не согласен. Да, скорее всего, жёсткий порядок - это слишком. Но я согласен с авторами, что "посылка сообщений" и "повторное использование" являются парадигмами ООП. Да, во многие источниках считают, что есть 4 парадигм ООП, а в других, что 6. Я придерживаюсь второго варианта.
0
|
vxg
|
13.05.2017, 12:17
#9
|
Не по теме: 8Observer8, ну, а я придерживаюсь подхода Гради Буча при котором этих компонентов 7, но никогда не буду сыпать их людям на голову в том виде в котором материал изложен в источнике - имхо будет корректнее использовать мягкую формулировку вида "обычно выделяют следующие основные парадигмы ООП: <далее идёт перечень в том порядке который источник или вы лично считаете более приоритетным, но без намеков на незыблемость>
0
|
13.05.2017, 14:41 | 10 | ||||||||||
Посмотрите примеры в этом туториале: https://www.tutorialspoint.com... rfaces.htm Чтобы реализовать в C++ ООП парадигму "Абстракция", можно, например, создать абстрактный класс Shape, в котором объявить чисто виртуальный метод. Принцип такой в C++, что если хотя бы один метод абстрактный, то и класс будет абстрактный. "абстрактный" - это значит, что мы не может создать экземпляр этого класса. Shape - это абстракция. Мы только может наследоваться от Shape.
scherbakovss201, вам всё понятно до этого момента? Есть вопросы? Можно продолжить?
1
|
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
|
||||||
13.05.2017, 21:27 [ТС] | 11 | |||||
0
|
Модератор
3386 / 2158 / 352
Регистрация: 13.01.2012
Сообщений: 8,375
|
|
14.05.2017, 07:57 | 12 |
scherbakovss201, и?
0
|
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
|
|
14.05.2017, 12:27 [ТС] | 13 |
0
|
Модератор
3386 / 2158 / 352
Регистрация: 13.01.2012
Сообщений: 8,375
|
|
14.05.2017, 14:06 | 14 |
scherbakovss201, два грамма. больше всего в коде коробит не ООП, а создание объекта каждый цикл рисования и бездумное создание объекта в main.
0
|
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
|
|
14.05.2017, 14:11 [ТС] | 15 |
Предложите ваш вариант.Видимо вы философ и теоретик достаточно хороший.А вот на практике ваших результатов не видно.Да и без функции main работать не будет.
Наша задача по заданному числу итераций нарисовать треугольник Серпского.Знаете способ его отобразить без отрисовки. Покажите его чайникам и кофеваркам.
0
|
Модератор
3386 / 2158 / 352
Регистрация: 13.01.2012
Сообщений: 8,375
|
|
14.05.2017, 14:28 | 16 |
scherbakovss201,
1 функция main должна быть - я это под сомнение не ставлю 2 создание объекта ob в функции main лишено смысла - этот объект не используется в функции main - используется его функция с ничего не говорящим названием options которая к самому объекту не обращается, а лишь инициализирует glut и запускает рисование 3 рисовать необходимо - я это под сомнение не ставлю 4 создание объекта ob в функции Display неразумно - каждый раз когда будет происходить обновление экрана будет создаваться объект - это совершенно лишние затраты 5 мой вариант - глобальный объект сцена, внутри него private список указателей на абстрактные объекты каждый из которых имеет функцию render, в main динамически создаем наследника абстрактного объекта (ваш фрактал), добавляем его в список сцены при помощи метода класса сцены add, вызываем функцию сцены run с телом вашей функции options, в Display вместо ob.DividePyramid вызываем функцию сцены render в которой проходим по списку объектов вызывая для каждого из них render (в теле render будет тело вашей функции DividePyramid) 6 не надо мне пальцы загибать а то я их вам загну
0
|
14.05.2017, 14:28 | |
14.05.2017, 14:28 | |
Помогаю со студенческими работами здесь
16
программирование QT из под code::blocks GTK / C++ проект в Code::Blocks под Windows Код не компилируется в Code Blocks Почему Code::Blocks не компилирует код? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |