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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
volodia-h
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 76
#1

Построить абстрактный класс - C++

26.03.2011, 12:06. Просмотров 1377. Ответов 18
Метки нет (Все метки)

Никак не успеваю с лабораторными, помогите пожалуйста.
Построить абстрактный класс Locate, описывающий позицию на
экране, и производные классы Figure и Text, описания некоторых фигуру и
текст. Построить класс FiguraText производный от классов Figure и
Text. Написать функции (методы) Show () и Move () для всех
классов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2011, 12:06     Построить абстрактный класс
Посмотрите здесь:

Создать абстрактный класс - C++
И вот ещё одно.... ))) Тоже очень надо на завтра..... Это всё одно задание..... =) пожалуйста... :-[ Создать абстрактный...

Абстрактный класс object - C++
Здравствуйте, у меня такой вопрос: кто-ни будь может мне разъяснить следующее задание и помочь его сделать? Задание: необходимо...

И вновь абстрактный класс - C++
#ifndef TINTEGER_H #define TINTEGER_H class TInteger { public: TInteger() : _head(0), _lenght(0) {}; size_t GetLen(void)...

Абстрактный класс, уточнение - C++
Йеп. Интересует вот что: Нужно создать абстрактный класс Издание, где будет хранится название и цена книги. Наследуются класс -- Книги,...

Виртуальный абстрактный класс - C++
Надеюсь мой вопрос будет не глупым. Есть класс исключений в пространстве имен std У него есть метод what Я создаю свой базовый класс...

Абстрактный класс чисел - C++
Нужно создать абстрактный класс чисел с виртуальными методами - арифметическими операциями. У этого класса 2 наследника - комплексные числа...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
26.03.2011, 12:13     Построить абстрактный класс #2
Наследовать классы Figure и Text от Locate - неправильный подход. Фигура и текс имеют позицию, а не являются ей. Поэтому здесь нужно агрегирование.
И не понятно с чего это Locate должен быть абстрактным. Ну есть у нее x, y, сеттеры, гетеры для них, еще какие-нибудь методы вроде Move(dx, dy). И где здесь абстрактность?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 12:33     Построить абстрактный класс #3
Если проигнорировать указанный косяк в иерархии классов, то типо такого будет
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
struct Locate
{
    int x, y;
};
 
// Абстрактный
class Base
{
public:
    ~Base();
public:
    void Move() = 0;
    void Show() = 0;
 
    const Locate & GetLocate() const;
    void SetLocate( const Locate & loc );
private:
   Locate _locate;
};
 
// конкретные
class Figure : public virtual Base
{
...
};
 
class Text : public virtual Base
{
...
};
 
// Множественное наследование
class FigureText : public Figure, public Text
{
...
};
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
26.03.2011, 12:44     Построить абстрактный класс #4
Цитата Сообщение от Deviaphan Посмотреть сообщение
struct Locate
{
int x, y;
};
Вот о чем я и говорил: абстрактный Locate не нужен.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 12:46     Построить абстрактный класс #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
Если проигнорировать указанный (slice'ом) косяк в иерархии классов
Как бы я про указанный ВАМИ косяк и говорю.
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
26.03.2011, 12:50     Построить абстрактный класс #6
Deviaphan, я просто хотел акцентировать внимание на том, что составитель задание чудак.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 12:52     Построить абстрактный класс #7
Я вполне могу представить ситуацию, когда это оправдано.)

C++
1
2
3
4
5
6
7
8
9
10
class Locate
{
public:
     // Точка в экранных координатах
     POINT Get() const = 0;
};
 
class Rectangular : public Locate;
class Cylindrical : public Locate;
class Spherical : public Locate;
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.03.2011, 12:55     Построить абстрактный класс #8
Цитата Сообщение от Deviaphan Посмотреть сообщение
Я вполне могу представить ситуацию, когда это оправдано
Я не думаю, что и в таком случае это оправдано, надо всегда стараться пользоваться аггрегированием, а не наследованием.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 12:59     Построить абстрактный класс #9
Разумеется, класс Locate не будет корнем иерархии для Fogure и Text.)
Я к тому, что Locate вполне может быть абстрактным.

Добавлено через 27 секунд
Цитата Сообщение от slice Посмотреть сообщение
составитель задание чудак
Преподы такие преподы.)

Добавлено через 1 минуту
Цитата Сообщение от fasked Посмотреть сообщение
надо всегда стараться пользоваться агрегированием, а не наследованием
Не согласен. Агрегированием нужно пользоваться тогда, когда нужно пользоваться агрегированием. Аналогично для наследования.
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
26.03.2011, 13:03     Построить абстрактный класс #10
Хорошо, такой пример сойдет. Не знаю насколько он применим на практике, но для учебных целей сгодится.

Добавлено через 2 минуты
fasked, нет здесь как раз наследование в тему:
координата задается тремя числами, а как их интерпретировать определяется в потомках. Агрегированием такое лучше не делать.
volodia-h
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 76
26.03.2011, 13:13  [ТС]     Построить абстрактный класс #11
Спасибо канеш за внимание к теме), правда у меня есть еще одна загвоздка, к этой лабе надо предусмотреть ввод исходных данных с клавиатуры, используя датчик случайных чисел.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 13:14     Построить абстрактный класс #12
C++
1
2
3
4
5
int x;
cin >> x;
seed(x);
 
rand();
.)
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
26.03.2011, 13:16     Построить абстрактный класс #13
Цитата Сообщение от volodia-h Посмотреть сообщение
ввод исходных данных с клавиатуры, используя датчик случайных чисел.
ввод исходных данных с клавиатуры? используя датчик случайных чисел? O_о
не знаю, примотай изолентой аппаратный генератор случайных чисел к клавиатуре.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 13:18     Построить абстрактный класс #14
Цитата Сообщение от slice Посмотреть сообщение
O_о
Я уже предложил инициализировать ЧСГ числом, введённым с клавиатуры.)
Шикарная постановка задачи, конечно.)
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
26.03.2011, 13:20     Построить абстрактный класс #15
Deviaphan
C++
1
2
3
cin >> x;
seed(x);
b = rand();
Насколько значение b "случайнее" чем x?
volodia-h
2 / 2 / 0
Регистрация: 02.03.2010
Сообщений: 76
26.03.2011, 13:22  [ТС]     Построить абстрактный класс #16
Цитата Сообщение от Deviaphan Посмотреть сообщение
Шикарная постановка задачи, конечно.)
Согласен, рад что хоть кто-то может меня понять)
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 13:32     Построить абстрактный класс #17
Цитата Сообщение от slice Посмотреть сообщение
Насколько значение b "случайнее" чем x?
Говоря о функции rand о случайности вообще речи нет.) Следующее значение известно с вероятностью 100%.)
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
26.03.2011, 13:53     Построить абстрактный класс #18
Я бы предположил, например, ввод диапазона случайных данных с клавиатуры, если бы разобрался в коде и понял, какие тут вообще нужны данные, но мне лень и спать хочется, поэтому такое вот голословное предположение. Не знаю, насколько актуально.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2011, 14:06     Построить абстрактный класс
Еще ссылки по теме:

Абстрактный шаблонный класс - C++
Вообщем какое дело. У меня есть класс матрица, который сделан с использованием шаблонов и STL. В нем перегружены операторы ввода/вывода в...

абстрактный базовый класс - C++
люди подскажите.есть абстрактный базовый класс можно ли в нем определить конструктор копирования? написал в компиляторе,получается,что...

Абстрактный класс. Наследование - C++
class polygon{ int height, width, point p; e_color color; public: virtual ~polygon(){} ...

Абстрактный класс Pair - C++
Доброй ночи! Кто не спит и не занят, помогите разобраться с задачей: Создать класс Pair (пара целых чисел); определить методы...


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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2011, 14:06     Построить абстрактный класс #19
Как бы, если данные не случайные, то и заставлять пользователя вводить их с клавиатуры смысла нет.)
Yandex
Объявления
26.03.2011, 14:06     Построить абстрактный класс
Ответ Создать тему
Опции темы

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