Скачать книгу

например, на систему световых приборов. Обе эти системы работают независимо друг от друга. В этом и есть суть инкапсуляции.

      Полиморфизм

      Полиморфизм для понимания считается самым сложным принципом. С точки зрения полиморфизма для объектов схожих классов можно задать одинаковое поведение.

      Например: представим класс реализующий круг (в качестве параметров можно указать радиус, площадь, периметр; его можно увеличивать, уменьшать, менять цвет контура или фона, выводить на экран – это и будет являться поведением круга) и представим еще один класс реализующий квадрат (в качестве параметров так же можно принять площадь, длина ребра и тд.; его так же можно увеличивать, уменьшать, менять цвет фона и контура и тд.).

      Круг и квадрат являются схожими элементами (классами), а значит и поведение для них может быть задано одинаковое. Оба этих класса можно унаследовать от класса реализующие геометрические фигуры. Далее в родительском классе создать метод изменения цвета фона. И к объектам дочерних классов, в данном случае это квадрат и круг, можно применять этот метод. В этом случае поведение этих фигур будет одинаково, и в том, и в другом случае фон будет меняться, хоть и более подробная реализация этого метода в каждом дочернем классе может отличаться, так как сами фигуры разные.

      Можно привести другой пример: в случае если создать объект родительского класса, а инициализировать его как объект дочернего, то это не вызовет никакой ошибки. Программа корректно обработает данный код. В случае нашего примера можно создать массив объектов геометрических фигур (родительского класса) и потом рандомно присваивать разным ячейкам этого массива разные дочерние классы, то это так же не вызовет никакой ошибки.

      В этом и есть идея полиморфизма: объекты схожих классов обрабатываются одинаково. Однако если изначально создать массив объектов одного из дочерних классов, а потом к одной из ячеек присвоить объект другого дочернего класса, то это вызовет ошибку. Это вполне логично, так как при более детальной реализации эти классы разные.

      Методы

      В рамках ООП поведение объекта задают методы, которые так же описаны должны быть описаны при создании класса. Метод содержит в себе набор процедур, которые выполняются над объектом.

      Метод аналогично функции в С++ может принимать или не принимать аргументы. В листинге указан способ создания метода, тип_метода – тип возвращаемого методом значения, тип1 и тип2 – типы данных первого и второго аргументов.

      тип_метода имя_метода (тип1 имя_аргумента1, тип2 имя_аргумента2, …)

      {

      // тело метода

      }

      Если метод возвращает значение, то в его теле должен присутствовать оператор return имя_значения. Этот оператор возвращает имя_значения и прекращает выполнение метода. Важно чтобы переменная имя_значения имела тот же тип данных что и тип_метода и была

Скачать книгу