Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 48 стр.

UptoLike

47
4.2. Раскрытие интерфейса для класса «Матрица»
Для раскрытия интерфейса требуется определить в классе Matrix все
методы, которые указаны в интерфейсе. Приведем код класса Matrix с
указанием переопределенных операций.
class Matrix : IMathObject
{
// количество строк и столбцов матрицы
protected int m, n;
// массив элементов матрицы
protected double[,] a;
// конструктор - осуществляет выделение
// памяти под хранение матрицы
public Matrix(int m1, int n1)
{
n = n1;
m = m1;
a = new double[m, n];
}
// определение операции сложения двух матриц,
// раскрывающей метод интерфейса IMathObject
public IMathObject Summa(IMathObject ob)
{
// приведение типа аргумента к классу Matrix
Matrix ob1 = ob as Matrix;
if (m != ob1.m || n != ob1.n)
throw new Exception("Сложение таких матриц невозможно");
Matrix res = new Matrix(m, n);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
res[i, j] = a[i, j] + ob1[i, j];
return res;
}
// определение операции вычитания двух матриц,
// раскрывающей метод интерфейса IMathObject
public IMathObject Substract(IMathObject ob)
{
Matrix ob1 = ob as Matrix;
if (m != ob1.m || n != ob1.n)
throw new Exception("Вычитание таких
матриц невозможно");
Matrix res = new Matrix(m, n);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
     4.2. Раскрытие интерфейса для класса «Матрица»

     Для раскрытия интерфейса требуется определить в классе Matrix все
методы, которые указаны в интерфейсе. Приведем код класса Matrix с
указанием переопределенных операций.

     class Matrix : IMathObject
     {
        // количество строк и столбцов матрицы
        protected int m, n;
        // массив элементов матрицы
        protected double[,] a;

       // конструктор - осуществляет выделение
       // памяти под хранение матрицы
       public Matrix(int m1, int n1)
       {
          n = n1;
          m = m1;
          a = new double[m, n];
       }

       // определение операции сложения двух матриц,
       // раскрывающей метод интерфейса IMathObject
       public IMathObject Summa(IMathObject ob)
       {
          // приведение типа аргумента к классу Matrix
          Matrix ob1 = ob as Matrix;
          if (m != ob1.m || n != ob1.n)
             throw new Exception("Сложение таких матриц невозможно");
          Matrix res = new Matrix(m, n);
          for (int i = 0; i < m; i++)
             for (int j = 0; j < n; j++)
                res[i, j] = a[i, j] + ob1[i, j];
          return res;
       }

       // определение операции вычитания двух матриц,
       // раскрывающей метод интерфейса IMathObject
       public IMathObject Substract(IMathObject ob)
       {
          Matrix ob1 = ob as Matrix;
          if (m != ob1.m || n != ob1.n)
             throw new Exception("Вычитание таких
                                            матриц невозможно");
          Matrix res = new Matrix(m, n);
          for (int i = 0; i < m; i++)
             for (int j = 0; j < n; j++)

47