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

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

Восстановить пароль Регистрация
 
zEg0r
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 16
19.02.2011, 12:47     Наследование #1
Используя механизм наследования реализовать иерархию: Окружность –> Цилиндр. У базового класса присутствуют методы: конструктор, вычисление площади, вывод площади.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2011, 12:47     Наследование
Посмотрите здесь:

C++ Наследование
Наследование C++
C++ наследование
C++ Наследование?!
C++ наследование
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
19.02.2011, 13:26     Наследование #2
zEg0r, и в чем конкретно у вас сложности? О_о
silent_1991
19.02.2011, 13:28
  #3

Не по теме:

Уже писал в другой такой теме, но повторюсь - вот принципиально не буду наследовать цилиндр от окружности о_О. Ну какое это наследование? Тогда давайте здание от фундамента наследовать.

lotos_47
0 / 0 / 0
Регистрация: 02.03.2010
Сообщений: 29
19.02.2011, 13:52     Наследование #4
мне было бы тоже интересно решение
rangerx
19.02.2011, 14:06
  #5

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
Уже писал в другой такой теме, но повторюсь - вот принципиально не буду наследовать цилиндр от окружности о_О. Ну какое это наследование? Тогда давайте здание от фундамента наследовать.
Ну, закрытое тут можно использовать в принципе. Но иерархией это конечно сложно будет назвать )

zEg0r
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 16
19.02.2011, 16:12  [ТС]     Наследование #6
задание дал преподователь, написано слово в слово.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
19.02.2011, 16:18     Наследование #7
Цитата Сообщение от rangerx Посмотреть сообщение
Но иерархией это конечно сложно будет назвать
В том-то и дело, что мы практически никаких прелестей наследования использовать не сможем)))

Цитата Сообщение от zEg0r Посмотреть сообщение
задание дал преподователь, написано слово в слово
А это и так понятно, просто преподаватель, мягко говоря, некомпетентен, раз хочет увидеть такую иерархию и собирается ставить за неё отличные оценки.
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
19.02.2011, 16:48     Наследование #8
silent_1991, не могли бы вы пояснить, почему нельзя строить такую иерархию?

Добавлено через 1 минуту
и еще глупый вопрос... а можно наследовать от цилиндра - окружность? то есть окружность - цилиндр с высотой ноль. =)
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
19.02.2011, 16:50     Наследование #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
В том-то и дело, что мы практически никаких прелестей наследования использовать не сможем)))
Можно воспользоваться реализацией метода вычисления площади окружности для вычислении объёма цилиндра. И коль уж речь идёт о наследовании(хоть можно обойтись и без него) использовать следует именно закрытое. Но судя по наличию в задании слова "иерархия" наследование здесь подразумевается именно открытое... В общем, боюсь что всётаки придётся цилиндру стать разновидностью окружности ))
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
19.02.2011, 16:56     Наследование #10
no0ker, потому что цилиндр никак не является наследником круга. В принципе можно построить композицию, где в классе цилиндр есть поле "Основание", представляемое экземпляром класса "Круг", и второе поле "Высота". Но наследовать - увольте, круг и цилиндр - абсолютно разные вещи, круг надо наследовать от двумерной фигуры, а цилиндр - от трёхмерной фигуры, которые, в свою очередь, стоит унаследовать от класса "Фигура".

Добавлено через 1 минуту
rangerx, да тут вообще лучше без наследования обойтись, а использовать, как я уже предложил, композицию.
Цитата Сообщение от rangerx Посмотреть сообщение
придётся цилиндру стать разновидностью окружности
Этому не бывать!
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
19.02.2011, 17:01     Наследование #11
silent_1991, а окружность - как разновидность цилиндра? =)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
19.02.2011, 17:03     Наследование #12
no0ker, а арбуз - как разновидность гуталина?
Kastaneda
19.02.2011, 17:05
  #13

Не по теме:

Помнится на форуме было задание круг от треугльника наследовать
У нас в следующем семестре будет С++, на установочной лекции, на сколько я понял, преподователь реально разбирается в С++, я считаю, что нам повезло. Это я к чему - офигеть, если препод разбирается в предмете - значит повезло.

silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
19.02.2011, 17:08     Наследование #14
Цитата Сообщение от Kastaneda Посмотреть сообщение
офигеть, если препод разбирается в предмете - значит повезло
Шикарно!

Добавлено через 29 секунд
Цитата Сообщение от Kastaneda Посмотреть сообщение
круг от треугльника наследовать
А это ещё шикарнее!
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
19.02.2011, 17:11     Наследование #15
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
#include <cmath>
#include <cassert>
#include <iostream>
 
class Circle{
public:
   Circle( double r ) : m_R(r) { assert( m_R>0 ); } 
   double getR() const { return m_R; }
   double getSquare() const { return m_R*m_R*M_PI; }
private:
   double m_R; 
};
 
class Cylinder{
public:
   Cylinder( double r, double h ) : m_h(h), m_c(r) { assert(m_h>0); }
   double getR() const { return m_c.getR(); }
   double getH() const { return m_h; }
   double getVolume() const { return m_c.getSquare() * m_h; }
private:
   double m_h;
   Circle m_c;    
};
 
int main(){
   Cylinder cyl( 5, 10 );
   std::cout << "volume = " << cyl.getVolume(); 
}
это с агрегированием
почему тут не стоит применять наследование? да потому что по иерархии наследования должна происходить специализация сущности от абстрактной к реальной, тут вообще никакой специализации нет
no0ker
19.02.2011, 17:12
  #16

Не по теме:

silent_1991, круг - это цилиндр с высотой ноль.

а арбуз это гуталин...гуталин...красный гуталин! в шарообразной упаковке. и с другим химическим составом. и вроде как плод растения. и вроде как кушать можно - то есть предназначение другое.. и вообще....все другое. даже букв в названии одинаковых нет. =)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2011, 17:15     Наследование
Еще ссылки по теме:

Наследование наследование ) C++
C++ Наследование

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

Или воспользуйтесь поиском по форуму:
silent_1991
19.02.2011, 17:15     Наследование
  #17

Не по теме:

no0ker, ладно, не валите с больной головы на здоровую...

Yandex
Объявления
19.02.2011, 17:15     Наследование
Ответ Создать тему
Опции темы

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