Полиморфизм

Спросим у эксперта

Инкапсуляция

Инкапсуляция представляет собой программный механизм, который связывает данные с обрабатывающими их кодами и защищает и те, и другие от внешних воздействий и ошибочных действий. В объектно-ориентированном языке коды и данные могут быть связаны так, что вместе они создают автономный черный ящик. Внутри этого ящика содержатся все необходимые данные и коды. При связывании таким образом данных и кодов создается объект. Другими словами, объект представляет собой устройство, поддерживающее инкапсуляцию.

В С++ базовой единицей инкапсуляции является класс. Класс определяет содержание объекта. Класс описывает как данные, так и коды, предназначенные для операций над этими данными. С++ использует спецификацию класса при конструировании объектов. Объекты являются экземплярами класса. Таким образом, класс в сущности представляет собой набор чертежей, по которым строится объект.

Код и данные, составляющие класс, называются членами класса. Конкретно, члены-переменные, называемые также переменными экземпляра, — это данные, определенные в классе. Члены-функции, или просто функции — то коды, предназначенные для операций над данными. Функция — это термин С++, обозначающий подпрограмму.

 

Вопрос: Я сталкивался с обозначением подпрограммы термином метод. Метод и функция - это одно и то же?

Ответ: В общем случае, да. Термин метод получил распространение вместе с языком Java. То, что программисты на С++ называют функцией, Java-программисты обозначают словом метод. Этот термин стал так широко использоваться, что его часто применяют и по отношению к функциям С+ + .

 

Полиморфизм (от греческого слова, означающего "много форм") обозначает средство, позволяющее посредством единого интерфейса получить доступ к целому классу действий. Простым примером полиморфизма может служить рулевое колесо автомобиля. Рулевое колесо (интерфейс) остается одним и тем же, независимо от того, какой тип рулевого механизма используется в данном автомобиле. Другими словами, рулевое колесо действует одинаково для любых автомобилей: с непосредственным приводом на колеса, с гидравлическим усилителем или с реечной передачей. Поворот рулевого колеса влево заставляет автомобиль двигаться влево независимо от типа рулевого механизма. Достоинство единого интерфейса, очевидно, заключается в том, что если вы умеете пользоваться рулевым колесом, вы можете ездить на любых автомобилях.

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