Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.95
AndrK189100
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 10
#1

Множественное наследование: прямоугольник, квадрат, ромб, параллелограмм - C++

25.04.2012, 18:12. Просмотров 5256. Ответов 47
Метки нет (Все метки)

Помогите, пожалуйста, разработать иерархию.
В дальнейшем надо реализовать несколько методов, среди которых изменение размера и вычисление площади.
Пока остановился на двух вариантах.
1)
Квадрату достаточно одного свойства, длинна стороны. От него наследуется прямоугольник(добавляется свойство ширина) и ромб(добавляется свойство высота к одной из диагоналей).
От ромба и прямоугольника наследуется параллелограмм( получаем все необходимые свойства).

2)
В обратном порядке от параллелограмма ромб и прямоугольник, от них уже квадрат.

Смущает то, что методы увеличения размера и вычисления площади у каждого класса будут свои. Зачем тогда наследование?

Если неправ, укажите правильный путь))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2012, 18:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Множественное наследование: прямоугольник, квадрат, ромб, параллелограмм (C++):

Множественное наследование - C++
Так как у меня эта тема заняла долгое время для изучения ,выкладываю простой пример для освоения #include<iostream> using namespace...

Множественное наследование - C++
Есть два класса Human(fname, lname) и класс Employee c чисто виртуальными функц (зарплата и печать). На базе этих классов нужно создать...

множественное наследование - C++
Почему не компилируется код? #include <iostream> #include <conio.h> #include <string.h> using namespace std; class...

Множественное наследование - C++
7 задание Сделайте пожалуйста, большое спасибо! :good:

Множественное наследование в С++ - C++
Столкнулся с такой проблемой: class D{ ... public: ... void setD(); ... }; class Dd : public D{ ...

множественное наследование - C++
разработайте алгоритм и создайте программы с применением множественного наследования. При выполнении данного задания необходимо создать не...

47
thick_int
Заблокирован
26.04.2012, 00:29 #46
Вот в данном случае тот подход, который я, да и Вы тоже кстати реализовывали пока, только, на мой взгляд не очень корректно, не позволяет решить эти задачи.
Мы в данном случае на самом деле пытались построить класс конгруэнтных параллелограммов, то есть равных между собой с точностью до параллельного переноса, вращения, симметрии и любой их комбинации.

Вы же в данном случае перескакиваете с синтетики на аналитику. Если так охота, то пожалуйста. И вот здесь (но надо тоже все оценить) наверно можно из этого абстрактного класса конгруэнтных параллелограммов наследовать КОНКРЕТНЫЕ ПАРАЛЛЕЛОГРАММЫ, то есть прибивать их к плоскости и вот тогда можно приступать к анализу Вашей новой задачи.

А так вот с бухты-барахты я Вам на Ваш вопрос не отвечу.

P.S. Открою Вам страшную тайну. Если в выпуклый многоугольник можно вписать окружность, то радиус оной равен отношению площади данного многоугольника к его полупериметру.
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.04.2012, 12:12 #47
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А если у нас есть функция, находящая, скажем вписанную в ромб окружность. И функция находящая описанную вокруг прямоугольника окружность.
Что их, обе дублировать для квадрата?
Плохо знаю геометрию, но тут можно просто перегрузить эти функции для разных фигур.
Ромб не является параллелограммом с точки зрения ООП, т.к. параллелограмм характеризуется 2 сторонами и углом между ними, а ромб - 2 диагоналями, поэтому наследование тут неуместно. И вообще, играться с наследованием и динамическим полиморфизмом стоит как можно реже, вместо них лучше использовать агрегацию и compile-time полиморфизм(шаблоны).
1
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
26.04.2012, 14:02 #48
Да, вероятно от ТС так же ждут ещё и использования виртуального наследования.
0
26.04.2012, 14:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2012, 14:02
Привет! Вот еще темы с ответами:

Множественное наследование - C++
Листинг: #include <iostream> using namespace std; class Person{private: string Fname,Sname,years;}; class Student{private:...

Множественное наследование - C++
Здравствуйте! Делаю следующее задание по подготовке к экзамену по С++. Пока только начал. Вкратце - есть абстрактный класс. Его...

Множественное наследование - C++
Добрый день. У меня имеется базовый класс A. У этого класса есть несколько наследников. Есть еще один класс B, который является...

Множественное наследование - C++
Возник вопрос по теме множественное наследование. Вот скажем у нас определены классы: class Animal{ public: int...


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

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Опции темы

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