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

Одиночное наследование - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Merovingian
54 / 54 / 5
Регистрация: 24.09.2011
Сообщений: 149
26.02.2012, 23:54     Одиночное наследование #1
Нужно определить три класса: линия, луч и отрезок. Использовать наследование.

Проблема заключается в том, что я не знаю какой класс взять за базовый?

Очень хочется сделать класс "точка на плоскости" ко всему прочему. Если отрезок будет наследником луча, а луч в свою очередь будет наследником линии?

Затруднения вызывает сама логика:

Например если взять класс "здание", то его производными могут быть "жилой дом", "фабрика" и т.д.... Но является ли луч разновидностью линии?))

Если попробовать разобраться в свойствах каждого из объектов класса?
Линия задается уравнением, а луч еще имеет неравенство потому, что ограничен с одной стороны, тогда отрезок ограничен с двух сторон...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 23:54     Одиночное наследование
Посмотрите здесь:

Одиночное наследование C++
C++ Наследование
Наследование C++
C++ наследование
Одиночное наследование, иерархия классов "Шахматная фигура" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
27.02.2012, 01:51     Одиночное наследование #2
математику на 3 знаю ) , но посмею предположить, что линия - это как некая абстракция (линия - не обязательно прямая), луч - мб описан уравнением прямой, а отрезок также описывается уравнением прямой, но имеет начало и конец.
Merovingian
54 / 54 / 5
Регистрация: 24.09.2011
Сообщений: 149
27.02.2012, 03:52  [ТС]     Одиночное наследование #3
Цитата Сообщение от OstapBender Посмотреть сообщение
математику на 3 знаю ) , но посмею предположить, что линия - это как некая абстракция (линия - не обязательно прямая), луч - мб описан уравнением прямой, а отрезок также описывается уравнением прямой, но имеет начало и конец.
Нет, если затруднения с геометрией, то:
Линия(думаю, что имеется ввиду прямая) - задается уравнением y = kx+b. Она бесконечная.
Луч - это тоже линия(прямая), только ограниченная с одной стороны, а другую сторону - бесконечна.
Отрезок - это тоже линия(прямая), только ограниченная с двух сторон.

В таком случае для задания линии(прямой) нужно линейное уравнение,
для задания луча - уравнение и неравенство,
для задания отрезка - уравнение и два неравенства.

Это я так понимаю, поправьте если не прав!

Но как классы то описать? Какие свойства будут иметь объекты классов? Можно задать каждый из объектов(имеется ввиду линия, отрезок и луч) двумя точками. Только методы для рисования будут разными!
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
27.02.2012, 21:21     Одиночное наследование #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// y = a * x + b;
 
class Line
{
protected:
    double a, b;
};
 
class Ray : public Line
{
protected:
    double xb, yb; // начало луча(и первая точка отрезка)
};
 
class Segment : public Ray
{
protected:
    double xe, ye; // вторая точка отрезка
};
Yandex
Объявления
27.02.2012, 21:21     Одиночное наследование
Ответ Создать тему
Опции темы

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