Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 23.04.2009
Сообщений: 13

Class Complex

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

Студворк — интернет-сервис помощи студентам
Товарищи Программисты, проблема более теоритического характера, чем практического. А проблема в следующем: есть класс комплексное число, какой класс логичнее от него наследовать, чтобы не слишком заумно, но изящно и с демонстрацией применения виртуальных функций и тп? Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2011, 11:59
Ответы с готовыми решениями:

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

Шаблон класса complex. Ошибка undefined reference to `complex<double>::SetRe(double)'
Есть такой файл 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')
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

24
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.05.2011, 17:26
На мой взгляд класс комплексных чисел вообще не подходит для демонстрации наследования, не говоря уж о виртуальных методах
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
08.05.2011, 17:47
Я бы к такому вопросу подошел с точки зрения математики. Множество комплексных чисел содержит в себе множество действительных. Исходя из этого, я бы пронаследовал класс действительных чисел.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.05.2011, 17:54
Predator_2004, то, что ты прелагаешь - это полная ерунда. Как минимум по следующей причине. Отношение "содержит" НЕ является наследованием. Наследование - это отношение "является"
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
08.05.2011, 17:58
Может неточно выразился. Действительные числа являются частным случаем комплексных, поэтому возможно наследование. Тем более что говорил в посте я о множествах, а не объектах.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.05.2011, 18:05
Частный случай - это тоже не наследование, а скорее обратное действие. И не совсем понял, при чём тут можества, когда автор про классы спрашивал.

Пример наследования это базовый класс "автомобиль" и производные классы "автомобиль ауди", "автомобиль мерседес" и т.п. Каждый из производных классов строго является понятием базового класса
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
08.05.2011, 18:11
Тут тоже самое: родитель Комплексное Число, потомок Действительное Число (комплексная часть - ноль, можно даже математику не переопределять). Все как в вашем примере. Если Ауди, Мерс, Жигули - автомобили, то действительные, иррациональные, натуральные числа можно представить в виде потомков комплексного числа. Так логичнее на мой взгляд.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.05.2011, 18:20
Я не математик, а потому твою идею сразу не уловил. Т.е. ты считаешь, что все числа, условно говоря, являются комплексными, при этом действительные числа являются подмножеством (частным случаем) комплексных. Сие есть математический подход.

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

С программерской точки зрения комплексное число СОСТОИТ из двух действительных чисел (действительная и мнимая части). И твой пример ну никак не подходит для демонстрации программерского понятия "наследование"
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 18:29
Evg прав.
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
08.05.2011, 18:29
В вопросе от автора сказано две вещи:
1) есть класс комплексного числа
2) какой класс от него логичнее наследовать
Считаю, что в рамках вопроса предложил вполне приличный вариант ответа.
Кстати
Цитата Сообщение от Evg Посмотреть сообщение
С программерской точки зрения комплексное число СОСТОИТ из двух действительных чисел
упомянутые вами действительные числа являются типами данных. К тому же преподаватели в ВУЗах, обожающие данную задачу, как правило имеют 1-2 степени по физ-мату и такое решение задачи будет вполне приемлимо.
Хорошо. Вам моя точка зрения не импонирует. Как бы вы выполнили наследование, учитывая, что мы имеем комплексное число, а значит, следуя логике, не должны в итоге получить класс - доска (к примеру)?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
08.05.2011, 18:31
У класса TReal могут появиться собственные методы типа bool Greater(x).
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 18:36
Predator_2004, смотри. Логично что у класса компл. числа есть методы setReal, setImg? Тогда получится что у действ. числа тоже будет метод setImg. А нахрена?
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
08.05.2011, 18:48
На худой конец можно сделать setImg приватным, т.к. он специфичен только для этого класса.
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 19:09
Цитата Сообщение от Predator_2004 Посмотреть сообщение
На худой конец можно сделать setImg приватным, т.к. он специфичен только для этого класса.
ты несешь какую-то ахинею. Советую тебе не писать в этой теме дабы не выглядеть глупо.
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
08.05.2011, 20:41
Цитата Сообщение от slice Посмотреть сообщение
ты несешь какую-то ахинею
Для начала, ахинея - это делать сеттеры для переменных, не являющихся указателями и использующихся в открытую.

Добавлено через 23 минуты
Если на то пошло, то имеет смысл для комплексного числа делать один сеттер, принимающий два формальных параметра (действ и компл части), а для наследуемого действительного числа сделать такой же виртуальный, но с приемом одного параметра. Тем самым выполним требование топикстартера о наличии виртуальных функций. И да, с приватностью погорячился.
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
08.05.2011, 20:57
Predator_2004, уж скорее наследовать класс комплексные числа от действительных, там как раз можно сделать виртуальными методы элементарных функций и операции арифметические. Наследуется сложное от простого ведь, а не наоборот. К тому же если таки унаследовать действительные числа от комплексных, то создаваемый объект будет содержать поле мнимой части - которое в действительных числах никогда не будет использоваться. И зря будет память занимать. Не вариант!
Можно попробовать как расширение комлпексных чисел - гиперкомплексные. Но я с ними мало знаком.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.05.2011, 21:03
Цитата Сообщение от Predator_2004 Посмотреть сообщение
Вам моя точка зрения не импонирует.
Если вернуться к автомобилям, то базовый класс определяет свойства, ОБЩИЕ для всех элементов класса "автомобиль" и его производных классов. А производные классы типа "автомобиль ауди" определяет свойства, ИНДИВИДУАЛЬНЫЕ для класса "автомобиль ауди", которых нет в классе "автомобиль". В случае с наследованием класса "действительное" число от класса "комплексное" число никаких новых индивидуальных свойств не появляется. Поэтому сие НЕ есть наследование

Цитата Сообщение от Predator_2004 Посмотреть сообщение
Как бы вы выполнили наследование, учитывая, что мы имеем комплексное число, а значит, следуя логике, не должны в итоге получить класс - доска (к примеру)?
В трёх чтениях постановку вопроса так и не понял. Возможно, из-за того, что я не математик и не философ

Добавлено через 1 минуту
Цитата Сообщение от almazsr Посмотреть сообщение
Predator_2004, уж скорее наследовать класс комплексные числа от действительных
Это тоже не правильно. Комплексное число по отношению к действительному имеет отношение "содержит", но не "является". Т.е. класс комплексного числа должен СОДЕРЖАТЬ в себе понятие действительного числа, но на НАСЛЕДОВАТЬ его

Добавлено через 1 минуту
Цитата Сообщение от slice Посмотреть сообщение
ты несешь какую-то ахинею
Он сразу сказал, что речь ведёт с позиции математика. На мой взгляд это хорошая возможность понять свои собственные знания. А именно, показать, почему он не прав. Правда это всё уже оффтоп и, возможно, имеет смысл вынести в отдельную тему
1
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
08.05.2011, 21:27
Цитата Сообщение от Evg Посмотреть сообщение
Это тоже не правильно. Комплексное число по отношению к действительному имеет отношение "содержит", но не "является". Т.е. класс комплексного числа должен СОДЕРЖАТЬ в себе понятие действительного числа, но на НАСЛЕДОВАТЬ его
Ну тогда просто интерфейс "число" INumber какой-нибудь с арифметическими операциями общими для всех чисел и элементарными функциями.
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 21:44
Попытка решить эту задачу сродни попытке натянуть презерватив на кактус. И все ради того, чтоб удовлетворить прихоть преподавателя, ни черта не шарящего в ООП.

Добавлено через 6 минут
(c) slice
1
0 / 0 / 0
Регистрация: 23.04.2009
Сообщений: 13
08.05.2011, 21:52  [ТС]
Цитата Сообщение от slice Посмотреть сообщение
Попытка решить эту задачу сродни попытке натянуть презерватив на кактус. И все ради того, чтоб удовлетворить прихоть преподавателя, ни черта не шарящего в ООП.

Добавлено через 6 минут
(c) slice
Первая фраза весьма четко охарактеризовала мое отношение к данной задаче. Всем участникам диспута спасибо. И все-таки, чтобы было чем мне заняться, а не с пустыми руками идти на занятия, скажите первый приходящий на ум пример наследования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.05.2011, 21:52
Помогаю со студенческими работами здесь

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

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

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

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

Как вызвать функцию class A, из функции class B
Как вызвать функцию class A, из функции class B К примеру Class A{ public: int a,b; void fun1(); } Class B:public A{ ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru