Абстрактный класс и наследование
Собственно есть абстрактный класс
Цитата:
Цитата:
Главная функция: Цитата:
|
Ответ: Абстрактный класс и наследование
Объявляемый override метод должен иметь то же возвращаемое данное и параметры, как и объявляемый асбтрактный метод у отцовского класса.
Поменяй метод в классе RectMatrix на: Код:
public override Matrix Sum(Matrix A, Matrix B ) И далее делай тоже кастинг: Код:
Cmatrix = (RectMatrix)Cmatrix.Sum(Amatrix, Bmatrix); |
Ответ: Абстрактный класс и наследование
Как-то так:
PHP код:
|
Ответ: Абстрактный класс и наследование
Я за вариант с приведением типов, как МоКа показал, это самое простое вроде бы.
|
Ответ: Абстрактный класс и наследование
Я привел решение задачи, а не что проще :pardon:
|
Ответ: Абстрактный класс и наследование
pax, я тебя не имел ввиду:)
|
Ответ: Абстрактный класс и наследование
Цитата:
pax благодарю, помогло! |
Ответ: Абстрактный класс и наследование
а не лучше перегрузить + ?:)
|
Ответ: Абстрактный класс и наследование
Цитата:
|
Ответ: Абстрактный класс и наследование
Цитата:
|
Ответ: Абстрактный класс и наследование
pax
Сделал такое наследование, как ты и говорил Код:
abstract class Matrix<T> where T:Matrix<T> Код:
class QuadMatrix : RectMatrix |
Ответ: Абстрактный класс и наследование
Ну тут вероятно надо
PHP код:
И учти, что второе наследование не повлияет на функцию Sum т.е. T уже задан первым наследованием. В ней останутся типы RectMatrix. Тут либо отказаться от такого наследования и делать перегруженные методы, либо наследоваться только от Matrix<T> Можно было бы попробовать сделать вот так: PHP код:
PHP код:
|
Ответ: Абстрактный класс и наследование
Цитата:
Цитата:
Посоветуй как в общем для такого задания лучше организовать наследование, а то каждым способом к разной ошибке прихожу |
Ответ: Абстрактный класс и наследование
Переведи задание на русский, я украинский не особо понимаю.
|
Ответ: Абстрактный класс и наследование
Цитата:
2. Разработать класс Vector манипуляции с векторами действительных чисел. У этого класса должно быть два поля: count (тип int) - количество элементов в массиве и data (массив типа double) - массив с данными. Создать конструкторы: public Vector (long n), который резервирует память для массива из n элементов, public Vector (long n, double init), который резервирует память для массива из n элементов и инициализирует каждый элемент значением init и public Vector (double [] arr), который создает копию массива arr10. Перегрузить операции суммы, разности, векторного произведения и доступа по индексу. Реализовать методы: int size (), который возвращает количество элементов в массиве, double abs (), который возвращает корень из суммы квадратов координат вектора (при реализации обязательно использовать оператор foreach), void read () и void write (), которые, соответственно, делают консольный ввод и вывод массива. 3. Создать абстрактный класс Matrix, в котором объявить абстрактные операции суммы, разности, произведения, доступа по индексу, методы void read () и void write (). 4. Создать класс RectMatrix, который уточняет (есть потомком) класс Matrix. В классе RectMatrix объявить поля rows (тип int) - количество строк в матрице, cols (тип int) - число столбцов матрицы и data (массив типа Vector). В классе RectMatrix необходимо реализовать все абстрактные операции и методы класса Matrix. 5. Создать класс QuadMatrix, который уточняет (есть потомком) класс RectMatrix, и добавляет рекурсивный метод вычисления определителя квадратной матрицы. Для определения количества элементов в массиве arr можно воспользоваться операцией arr.GetLength (0) 6. Создать класс SymmetricMatrix, который уточняет (есть потомком) класса QuadMatrix. Класс SymmetricMatrix предназначен для хранения симметричных матриц, поэтому необходимо создать соответствующие конструкторы и перезагрузить операцию доступа по индексу из расчета, что поле data - ленточная матрица, которая сохраняет только верхнюю половины матрицы. 7. Разработать класс Cramer, который состоит из двух полей: matrix (тип QuadMatrix) - матрица СЛАУ и vector (тип Vector), который предназначен для решения СЛАУ методом Крамера. 8. Привести примеры применения разработанных методов. |
Часовой пояс GMT +4, время: 22:18. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot