Главная страница

АБОБА. Справочник по программированию на Java Методическое пособие


Скачать 242.41 Kb.
НазваниеСправочник по программированию на Java Методическое пособие
АнкорАБОБА
Дата20.02.2022
Размер242.41 Kb.
Формат файлаdocx
Имя файла12642_java_method_1.docx
ТипСправочник
#368066
страница5 из 67
1   2   3   4   5   6   7   8   9   ...   67

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


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

Как правило, большинство людей воспринимает окружающий мир в виде иерархически связанных между собой объектов, подобных животным, млекопитающим и собакам. Если требуется привести абстрактное описание животных, можно сказать, что они обладают определенными атрибутами, такими как размеры, уровень интеллекта и тип скелета. Животным присущи также определенные особенности поведения: они едят, дышат и спят. Приведенное описание атрибутов и поведения – определение класса животных.

Если бы требовалось описать более конкретный класс животных, например млекопитающих, нужно было бы указать более конкретные атрибуты, такие как тип зубов и молочных желез. Это определение называют подклассом животных, которые относятся к суперклассу (родительскому классу) млекопитающих.

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

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

Полиморфизм


Полиморфизм – свойство, которое позволяет использовать один и тот же интерфейс для общего класса действий. Конкретное действие определяется конкретным характером ситуации.

Рассмотрим стек (представляющий собой список типа “последним вошел, первым вышел”). Может существовать программа, которая требует применения трех типов стеков.

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

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

Необходимо лишь помнить об общем интерфейсе и применять его.

Совместное использование полиморфизма, инкапсуляции и наследования


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

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

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

Последний атрибут, полиморфизм, четко отражает способность компаний-изготовителей автомобилей предлагать широкое множество вариантов, по сути, одного и того же средства передвижения. Например, на автомобиле могут быть установлены система тормозов с защитой от блокировки или традиционные тормоза, рулевая система с гидроусилителем или с реечной передачей и 4-, 6- или 8-цилиндровые двигатели. В любом случае нужно будет жать на педаль тормоза, чтобы остановиться, вращать руль, чтобы повернуть, и жать педаль акселератора, чтобы автомобиль двигался. Один и тот же интерфейс может применяться для управления множеством различных реализаций.

Как видите, именно совместное применение инкапсуляции, наследования и полиморфизма позволяет преобразовать отдельные детали в объект, который мы называем автомобилем. Сказанное применимо также к компьютерным программам. За счет применения объектно-ориентированных принципов различные части сложной программы могут быть собраны воедино, образуя надежную, пригодную для обслуживания программу.
1   2   3   4   5   6   7   8   9   ...   67


написать администратору сайта