0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
1 | |
Организация разветвленной иерархии классов02.04.2013, 15:39. Показов 2283. Ответов 21
Метки нет (Все метки)
Цель: организовать разветвленную иерархию классов с применением абстрактных классов.
Нужна помощь в разъяснении самого задания Добавлено через 40 минут Кликните здесь для просмотра всего текста
Задание: создать иерархию классов:
Класс Graph должен содержать абстрактный метод draw(). Остальные классы должны его реализовывать, отображая атрибуты объектов в виде строки, например: Точка: x=10, y=20 Прямоугольник: x=2, y=5, w=3, h=4 Абстрактный класс Movable, объявляет следующие методы: int getX(); int getY(); void moveTo(int x, int y); Метод moveTo() класса MyWindow помимо изменения координат должен выводить сообщение об их изменении. Класс Point и все дочерние должны содержать метод moveTo(x, y), задающий координаты объекта, а также метод move(dx, dy), изменяющий координаты на заданную величину. Описать в дочерних классах все необходимые атрибуты, конструкторы и методы (объекты должны иметь координаты и цвет; у класса Background есть цвет и название текстуры). Обязательно применение инкапсуляции для скрытия атрибутов. Что вообще должна делать такая программа после запуска? Буду благодарен за максимально детальное разъяснение задания, советы по реализации (не код!). Добавлено через 1 час 9 минут
0
|
02.04.2013, 15:39 | |
Ответы с готовыми решениями:
21
Вверх по иерархии классов Создание иерархии классов Цепочка иерархии классов Создание иерархии классов |
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
02.04.2013, 15:41 | 2 |
После того, как вся описанная иерархия будет реализована, создаете какие-нибудь списки элементов базового класса (указатели или ссылки) и проверяете правильность вызовов переопределенных базовых методов.
0
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
02.04.2013, 15:57 [ТС] | 3 |
А можно более детально насчет реализации самой иерархии?
С Graph (базовый класс) и дочерними (Point, Rectangle, Circle, Ellipse) более-менее разобрался. Реализация MyWindow и Movable для меня пока не совсем понятны. С Background тоже непонятно. Дело в том что у меня опыта в с++ ноль, и довольно сложно вникать сразу в задание такого уровня. Целый день уже читаю литературу, но многое еще непонятно, а задание надо сделать до завтра.
0
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
02.04.2013, 16:21 [ТС] | 5 |
Чуть ближе, но многое еще непонятно. Поймите, я только вчера начал изучать ооп =)
Можете мне буквально разжевать что за чем?
0
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
02.04.2013, 17:11 [ТС] | 7 |
Я читаю учебники, но боюсь что за день сам разобраться не успею, поэтому обратился за помощью. В любом случае спасибо за те подсказки что вы уже дали
0
|
Tulosba
|
02.04.2013, 17:18
#8
|
0
|
EvengarS
|
02.04.2013, 17:20
[ТС]
#9
|
Не по теме: Никто, мне дали 2 дня на решение этой задачи =)
0
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
||||||
04.04.2013, 14:04 [ТС] | 10 | |||||
Помогите написать конструкторы инициализации к классам (например для Rectangle, остальные сделаю по аналогии), ну и может будут какие-то замечания
0
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
04.04.2013, 14:23 [ТС] | 12 |
Это действительно выглядит нелогично, я решил что Point, Rectangle, Circle и Ellipse должны наследовать Graph и Movable, по крайней мере это имеет смысл, Graph содержит абстрактный метод draw(), Movable содержит абстрактные методы getX(), getY() и moveTo(int x, int y), а остальные классы их реализуют.
Если предположить, что моя интерпретация схемы верна, что скажете насчет кода? Добавлено через 2 минуты В принципе... это может быть эллипс, вписан в прямоугольник Но мне даже не хочется об этом думать, иначе придется все переписывать
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
04.04.2013, 14:52 | 13 |
Это так. Только вот Rectangle, Circle и Ellipse должны опираться на Point. Т.е. вносится дополнительный уровень зависимости.
Члены класса лучше сделать private ( int m_x, m_y и прочее). Конструкторы не определены для классов. И вообще, Вы код почему не проверяете? Он же даже не собирается. Добавлено через 4 минуты P.S. Только что заметил, кто как раз конструкторы и просили написать
0
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
04.04.2013, 14:53 [ТС] | 14 |
Так я насчет конструкторов и обратился, вроде бы сейчас только в них упирается. Не могу разобраться как правильно написать, не поможете с одним классом?
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
04.04.2013, 15:10 | 15 | |||||
EvengarS, вот, прибрался немного. В изначальном коде много дублирования было. Видимо, Вы не совсем осознали концепции ООП (не нужно писать одно и то же в разных связанных классах).
1
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
04.04.2013, 15:43 [ТС] | 16 |
Так вроде бы все понятно, спасибо, только один вопрос, в задании говорится "Абстрактный класс Movable, объявляет следующие методы:
int getX(); int getY(); void moveTo(int x, int y);" а Вы getX() и getY() из Movable убрали. Наверное стоит все-таки оставить?
0
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
04.04.2013, 16:02 [ТС] | 18 |
А у Вас компилируется? Вроде бы в коде ошибок нет уже, но что-то не идет...
undefined reference to `WinMain@16' collect2.exe: error: ld returned 1 exit status
0
|
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
|
|
04.04.2013, 16:07 [ТС] | 20 |
Eclipse, хотя в VS та же ошибка, но мне надо в Эклипсе
0
|
04.04.2013, 16:07 | |
04.04.2013, 16:07 | |
Помогаю со студенческими работами здесь
20
Затрудние в названии иерархии классов Главный в иерархии классов класс Найти ошибку в иерархии пользовательских классов Права доступа к переменным в иерархии классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |