Объектно-ориентированное программирование на С#. Андрианова А.А - 85 стр.

UptoLike

85
Глава 6. Наследование и полиморфизм позднего
связывания
6.1. Наследование
Напомним, что наследование это механизм, который позволяет
создавать новые классы на основе существующих, используя их структурные
и поведенческие свойства – поля, методы, свойства и пр.
Рассмотрим далее использование этого принципа на примере классов
прямоугольной и квадратной матриц (Matrix базовый класс, QMatrix
производный класс). Объект класса Matrix определяется двумерным
массивом ее элементов. Поведенческие свойства класса определяются
операциями матричного исчисления.
Так как квадратная матрица есть частный случай прямоугольной,
структурные и поведенческие свойства класса «Квадратная матрица»
(QMatrix) будут идентичны свойствам класса Matrix. Поэтому реализуем
класс «Квадратная матрица» как наследник класса Matrix, добавив в него
методы, специфичные для квадратной матрицы (вычисление определителя и
получение обратной матрицы).
Приведем исходный код класса Matrix.
class Matrix
{
// массив элементов матрицы
double[,] a;
// конструктор матрицы с указанием ее размеров
public Matrix(int rows, int cols)
{
a = new double[rows, cols];
}
// метод заполнения матрицы случайными числами
public void InputMatrix()
{
int rows = Rows, cols = Cols;
Random r = new Random();
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
a[i, j] = (double)r.Next(100);
}
    Глава 6. Наследование и полиморфизм позднего
                                     связывания


                                              6.1. Наследование

      Напомним, что наследование – это механизм, который позволяет
создавать новые классы на основе существующих, используя их структурные
и поведенческие свойства – поля, методы, свойства и пр.
      Рассмотрим далее использование этого принципа на примере классов
прямоугольной и квадратной матриц (Matrix – базовый класс, QMatrix –
производный класс). Объект класса Matrix определяется двумерным
массивом ее элементов. Поведенческие свойства класса определяются
операциями матричного исчисления.
      Так как квадратная матрица есть частный случай прямоугольной,
структурные и поведенческие свойства класса «Квадратная матрица»
(QMatrix) будут идентичны свойствам класса Matrix. Поэтому реализуем
класс «Квадратная матрица» как наследник класса Matrix, добавив в него
методы, специфичные для квадратной матрицы (вычисление определителя и
получение обратной матрицы).
      Приведем исходный код класса Matrix.

   class Matrix
   {
      // массив элементов матрицы
      double[,] a;

      // конструктор матрицы с указанием ее размеров
      public Matrix(int rows, int cols)
      {
         a = new double[rows, cols];
      }

      // метод заполнения матрицы случайными числами
      public void InputMatrix()
      {
         int rows = Rows, cols = Cols;
         Random r = new Random();
         for (int i = 0; i < rows; i++)
            for (int j = 0; j < cols; j++)
               a[i, j] = (double)r.Next(100);
      }
                                                                     85