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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
monoxpom
0 / 0 / 0
Регистрация: 23.04.2009
Сообщений: 13
#1

Class Complex - C++

08.05.2011, 11:59. Просмотров 1740. Ответов 24
Метки нет (Все метки)

Товарищи Программисты, проблема более теоритического характера, чем практического. А проблема в следующем: есть класс комплексное число, какой класс логичнее от него наследовать, чтобы не слишком заумно, но изящно и с демонстрацией применения виртуальных функций и тп? Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2011, 11:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Class Complex (C++):

Программа (class Complex) на неуправляемом языке c++ - C++
Написал программу. Заголовочный файл class Complex { private: double x, y; public: Complex(); Complex(double, double); ...

Шаблон класса complex. Ошибка undefined reference to `complex<double>::SetRe(double)' - C++
Есть такой файл complex.h #ifndef COMPLEX_H #define COMPLEX_H template&lt;class Type&gt; class complex{ public: Type Re; Type...

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') - C++
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

Работа с class ами. Заполнение дин. массива типа class - C++
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если что извините меня (за неточности итд итп). Мне нужно...

Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a ) - C++
Плиз помогите. Не знал, что я такой чайник.) Итак: есть два класса: CMyClass.h CMyClass.cpp и

Create a programm that creates an object of created class Time and tests the member functions of class - C++
Time Class Create a class called Time that might be used to represent time. 1. Your class should include three data...

24
Evg
Эксперт CАвтор FAQ
18238 / 6363 / 435
Регистрация: 30.03.2009
Сообщений: 17,578
Записей в блоге: 28
08.05.2011, 17:26 #2
На мой взгляд класс комплексных чисел вообще не подходит для демонстрации наследования, не говоря уж о виртуальных методах
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
08.05.2011, 17:47 #3
Я бы к такому вопросу подошел с точки зрения математики. Множество комплексных чисел содержит в себе множество действительных. Исходя из этого, я бы пронаследовал класс действительных чисел.
0
Evg
Эксперт CАвтор FAQ
18238 / 6363 / 435
Регистрация: 30.03.2009
Сообщений: 17,578
Записей в блоге: 28
08.05.2011, 17:54 #4
Predator_2004, то, что ты прелагаешь - это полная ерунда. Как минимум по следующей причине. Отношение "содержит" НЕ является наследованием. Наследование - это отношение "является"
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
08.05.2011, 17:58 #5
Может неточно выразился. Действительные числа являются частным случаем комплексных, поэтому возможно наследование. Тем более что говорил в посте я о множествах, а не объектах.
0
Evg
Эксперт CАвтор FAQ
18238 / 6363 / 435
Регистрация: 30.03.2009
Сообщений: 17,578
Записей в блоге: 28
08.05.2011, 18:05 #6
Частный случай - это тоже не наследование, а скорее обратное действие. И не совсем понял, при чём тут можества, когда автор про классы спрашивал.

Пример наследования это базовый класс "автомобиль" и производные классы "автомобиль ауди", "автомобиль мерседес" и т.п. Каждый из производных классов строго является понятием базового класса
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
08.05.2011, 18:11 #7
Тут тоже самое: родитель Комплексное Число, потомок Действительное Число (комплексная часть - ноль, можно даже математику не переопределять). Все как в вашем примере. Если Ауди, Мерс, Жигули - автомобили, то действительные, иррациональные, натуральные числа можно представить в виде потомков комплексного числа. Так логичнее на мой взгляд.
0
Evg
Эксперт CАвтор FAQ
18238 / 6363 / 435
Регистрация: 30.03.2009
Сообщений: 17,578
Записей в блоге: 28
08.05.2011, 18:20 #8
Я не математик, а потому твою идею сразу не уловил. Т.е. ты считаешь, что все числа, условно говоря, являются комплексными, при этом действительные числа являются подмножеством (частным случаем) комплексных. Сие есть математический подход.

Программерское понятие наследования это несколько другое. Частный случай - НЕ есть наследование. Безуслоно можно представить действительное число в виде производного класса откомплексного числа. Точно так же можно ввести понятие "напряжение в вольтах" и через typdef реализовать понятие "масса в килограмах". Оба этих примера будут компилироваться и работать, ибо компилятору всё равно, что и как ты делаешь. Но идеологически эти примеры неправильные и кривые, потому что неверно задают соотношения между понятиями

С программерской точки зрения комплексное число СОСТОИТ из двух действительных чисел (действительная и мнимая части). И твой пример ну никак не подходит для демонстрации программерского понятия "наследование"
0
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 18:29 #9
Evg прав.
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
08.05.2011, 18:29 #10
В вопросе от автора сказано две вещи:
1) есть класс комплексного числа
2) какой класс от него логичнее наследовать
Считаю, что в рамках вопроса предложил вполне приличный вариант ответа.
Кстати
Цитата Сообщение от Evg Посмотреть сообщение
С программерской точки зрения комплексное число СОСТОИТ из двух действительных чисел
упомянутые вами действительные числа являются типами данных. К тому же преподаватели в ВУЗах, обожающие данную задачу, как правило имеют 1-2 степени по физ-мату и такое решение задачи будет вполне приемлимо.
Хорошо. Вам моя точка зрения не импонирует. Как бы вы выполнили наследование, учитывая, что мы имеем комплексное число, а значит, следуя логике, не должны в итоге получить класс - доска (к примеру)?
0
Байт
Эксперт C
16529 / 10799 / 1637
Регистрация: 24.12.2010
Сообщений: 20,813
08.05.2011, 18:31 #11
У класса TReal могут появиться собственные методы типа bool Greater(x).
0
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 18:36 #12
Predator_2004, смотри. Логично что у класса компл. числа есть методы setReal, setImg? Тогда получится что у действ. числа тоже будет метод setImg. А нахрена?
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
08.05.2011, 18:48 #13
На худой конец можно сделать setImg приватным, т.к. он специфичен только для этого класса.
0
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 19:09 #14
Цитата Сообщение от Predator_2004 Посмотреть сообщение
На худой конец можно сделать setImg приватным, т.к. он специфичен только для этого класса.
ты несешь какую-то ахинею. Советую тебе не писать в этой теме дабы не выглядеть глупо.
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
08.05.2011, 20:41 #15
Цитата Сообщение от slice Посмотреть сообщение
ты несешь какую-то ахинею
Для начала, ахинея - это делать сеттеры для переменных, не являющихся указателями и использующихся в открытую.

Добавлено через 23 минуты
Если на то пошло, то имеет смысл для комплексного числа делать один сеттер, принимающий два формальных параметра (действ и компл части), а для наследуемого действительного числа сделать такой же виртуальный, но с приемом одного параметра. Тем самым выполним требование топикстартера о наличии виртуальных функций. И да, с приватностью погорячился.
0
08.05.2011, 20:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2011, 20:41
Привет! Вот еще темы с ответами:

enum и class как составляющие другого class - C++
Как организовать ввод enuma с клавиатуры (51-я строка)? Как прикрепить класс date к employee в private? :wall: #include &lt;iostream&gt; ...

vector<[class]> in class и перегрузка (ostream) - C++
Доброе всем время суток ) столкнулся с проблемой Есть у меня несколько классов и есть класс внутри которого созданы векторы хранящие...

Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type" - C++
Согласно синтаксису, вроде все правильно, но ошибка... что не так? Ошибки компилятора ниже на рисунке... #include &lt;iostream&gt; ...

Работа с Complex - C++
Вроде как все правильно, компилятор даже не ругается, но почему-то значения затираются, и я не могу понять почему. Вот сам код: ...


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

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

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