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

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

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

Class Complex - C++

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

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

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

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

Тип complex - C++
У меня не компиллируется программа с #include <complex> в DevC++. #include<iostream> #include<complex> int...

Библиотека <complex> - C++
Необходимо написать код, который будет объявлять двумерный массив комплексных чисел размером 62 строки на 1024 столбца, выделить под него...

Класс Complex - C++
Описать класс, реализующий указанный ниже тип данных. Класс должен содержать множество конструкторов для создания объектов определенного...

Класс complex - C++
для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Привести фрагмент программы (int...

Класс Complex - C++
Напишите программу, в которой создайте обьекты типа Complex и выполните над ними действия, предусмотренные методами класса. Объявите...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17539 / 5777 / 370
Регистрация: 30.03.2009
Сообщений: 15,909
Записей в блоге: 26
08.05.2011, 17:26     Class Complex #2
На мой взгляд класс комплексных чисел вообще не подходит для демонстрации наследования, не говоря уж о виртуальных методах
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
08.05.2011, 17:47     Class Complex #3
Я бы к такому вопросу подошел с точки зрения математики. Множество комплексных чисел содержит в себе множество действительных. Исходя из этого, я бы пронаследовал класс действительных чисел.
Evg
Эксперт CАвтор FAQ
17539 / 5777 / 370
Регистрация: 30.03.2009
Сообщений: 15,909
Записей в блоге: 26
08.05.2011, 17:54     Class Complex #4
Predator_2004, то, что ты прелагаешь - это полная ерунда. Как минимум по следующей причине. Отношение "содержит" НЕ является наследованием. Наследование - это отношение "является"
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
08.05.2011, 17:58     Class Complex #5
Может неточно выразился. Действительные числа являются частным случаем комплексных, поэтому возможно наследование. Тем более что говорил в посте я о множествах, а не объектах.
Evg
Эксперт CАвтор FAQ
17539 / 5777 / 370
Регистрация: 30.03.2009
Сообщений: 15,909
Записей в блоге: 26
08.05.2011, 18:05     Class Complex #6
Частный случай - это тоже не наследование, а скорее обратное действие. И не совсем понял, при чём тут можества, когда автор про классы спрашивал.

Пример наследования это базовый класс "автомобиль" и производные классы "автомобиль ауди", "автомобиль мерседес" и т.п. Каждый из производных классов строго является понятием базового класса
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
08.05.2011, 18:11     Class Complex #7
Тут тоже самое: родитель Комплексное Число, потомок Действительное Число (комплексная часть - ноль, можно даже математику не переопределять). Все как в вашем примере. Если Ауди, Мерс, Жигули - автомобили, то действительные, иррациональные, натуральные числа можно представить в виде потомков комплексного числа. Так логичнее на мой взгляд.
Evg
Эксперт CАвтор FAQ
17539 / 5777 / 370
Регистрация: 30.03.2009
Сообщений: 15,909
Записей в блоге: 26
08.05.2011, 18:20     Class Complex #8
Я не математик, а потому твою идею сразу не уловил. Т.е. ты считаешь, что все числа, условно говоря, являются комплексными, при этом действительные числа являются подмножеством (частным случаем) комплексных. Сие есть математический подход.

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

С программерской точки зрения комплексное число СОСТОИТ из двух действительных чисел (действительная и мнимая части). И твой пример ну никак не подходит для демонстрации программерского понятия "наследование"
slice
34 / 77 / 4
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 18:29     Class Complex #9
Evg прав.
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
08.05.2011, 18:29     Class Complex #10
В вопросе от автора сказано две вещи:
1) есть класс комплексного числа
2) какой класс от него логичнее наследовать
Считаю, что в рамках вопроса предложил вполне приличный вариант ответа.
Кстати
Цитата Сообщение от Evg Посмотреть сообщение
С программерской точки зрения комплексное число СОСТОИТ из двух действительных чисел
упомянутые вами действительные числа являются типами данных. К тому же преподаватели в ВУЗах, обожающие данную задачу, как правило имеют 1-2 степени по физ-мату и такое решение задачи будет вполне приемлимо.
Хорошо. Вам моя точка зрения не импонирует. Как бы вы выполнили наследование, учитывая, что мы имеем комплексное число, а значит, следуя логике, не должны в итоге получить класс - доска (к примеру)?
Байт
Эксперт C
15835 / 10162 / 1522
Регистрация: 24.12.2010
Сообщений: 19,160
08.05.2011, 18:31     Class Complex #11
У класса TReal могут появиться собственные методы типа bool Greater(x).
slice
34 / 77 / 4
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 18:36     Class Complex #12
Predator_2004, смотри. Логично что у класса компл. числа есть методы setReal, setImg? Тогда получится что у действ. числа тоже будет метод setImg. А нахрена?
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
08.05.2011, 18:48     Class Complex #13
На худой конец можно сделать setImg приватным, т.к. он специфичен только для этого класса.
slice
34 / 77 / 4
Регистрация: 04.11.2010
Сообщений: 249
08.05.2011, 19:09     Class Complex #14
Цитата Сообщение от Predator_2004 Посмотреть сообщение
На худой конец можно сделать setImg приватным, т.к. он специфичен только для этого класса.
ты несешь какую-то ахинею. Советую тебе не писать в этой теме дабы не выглядеть глупо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2011, 20:41     Class Complex
Еще ссылки по теме:

valarray and complex - C++
Вот есть такой код: double v = {0,1,2,1.3,4.2,0.5}; valarray&lt;double&gt; x(v,6); complex&lt;double&gt; y; y = x; здесь все...

Преобразовать string в complex - C++
Добрый день! Вот такая простая задачка имеется. string S=&quot;(1.00000 -2.12363e-09)&quot;; complex cnum;Требуется избавиться от скобок, а...

Реализовать класс Complex - C++
Реализовать класс Complex для работы с комплексными числами. Класс должен обеспечивать инкапсуляцию информации о действи-тельной и мнимой...

Создать класс Complex - C++
Здравствуйте помогите пожалуйста с заданием Создать класс Complex для работы с комплексными числами. Определить перегруженную функцию,...

Создать класс Complex - C++
С чего начать? Задача: Создать класс Complex для работы с комплексными числами. Определить перегруженную функцию, возвращающую...


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

Или воспользуйтесь поиском по форуму:
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
08.05.2011, 20:41     Class Complex #15
Цитата Сообщение от slice Посмотреть сообщение
ты несешь какую-то ахинею
Для начала, ахинея - это делать сеттеры для переменных, не являющихся указателями и использующихся в открытую.

Добавлено через 23 минуты
Если на то пошло, то имеет смысл для комплексного числа делать один сеттер, принимающий два формальных параметра (действ и компл части), а для наследуемого действительного числа сделать такой же виртуальный, но с приемом одного параметра. Тем самым выполним требование топикстартера о наличии виртуальных функций. И да, с приватностью погорячился.
Yandex
Объявления
08.05.2011, 20:41     Class Complex
Ответ Создать тему
Опции темы

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