Полиморфизм. Совместное использование полиморфизма, инкапсуляции и наследования. Первый пример простой программы
Полиморфизм Полиморфизм – свойство, которое позволяет использовать один и тот же интерфейс для общего класса действий. Конкретное действие определяется конкретным характером ситуации. Рассмотрим стек (представляющий собой список типа “последним вошел, первым вышел”). Может существовать программа, которая требует применения трех типов стеков. Один стек используется для целочисленных значений, один – для значений с плавающей точкой и один – для символов. Алгоритм реализации каждого из этих стеков остается неизменным, несмотря на различие хранящихся в них данных. В не объектно-ориентированном языке пришлось бы создавать три различных набора подпрограмм стека, каждый из которых должен был бы иметь отдельное имя. Однако в Java, благодаря полиморфизму, можно определить общий набор подпрограмм стека, использующих одни и те же имена. В более общем виде концепцию полиморфизма часто выражают фразой “один интерфейс, несколько методов”. Это означает, что можно спроектировать общий интерфейс для группы связанных между собой действий. Этот подход позволяет уменьшить сложность программы, поскольку один и тот же интерфейс используется для указания общего класса действий. Выбор же конкретного действия (т. е. метода), применимого к каждой ситуации – задача компилятора. Программисту не нужно осуществлять этот выбор вручную. Необходимо лишь помнить об общем интерфейсе и применять его. Совместное использование полиморфизма, инкапсуляции и наследования При правильном совместном использовании полиморфизма, инкапсуляции и наследования они создают среду программирования, которая поддерживает разработку более устойчивых и масштабируемых программ, чем в случае применения модели, ориентированной на процессы. Тщательно спроектированная иерархия классов – основа многократного использования кода, на разработку и тестирование которого были затрачены время и усилия. Инкапсуляция позволяет возвращаться к ранее созданным реализациям, не разрушая код, зависящий от общедоступного интерфейса применяемых в приложении классов. Полиморфизм позволяет создавать понятный, чувствительный, удобочитаемый и устойчивый код.
Из двух приведенных примеров реального мира пример с автомобилем полнее иллюстрирует возможности объектно-ориентированного проектирования. Садясь за руль различных типов (подклассов) автомобилей, все водители используют наследование. Независимо от того, является ли автомобиль школьным автобусом, легковым мерседесом, порше или семейным микроавтобусом, все водители могут более-менее легко найти и пользоваться рулем, тормозами и педалью акселератора. Немного помучившись с рычагом переключения передач, большинство людей может даже оценить различия между ручной и автоматической коробками передач – это становится возможным благодаря получению четкого представления об общем родительском классе этих объектов – системе передач. В процессе использования автомобилей люди постоянно взаимодействуют с их инкапсулированными характеристиками. Педали тормоза и газа скрывают невероятную сложность соответствующих объектов за настолько простым интерфейсом, что управлять этими объектами можно простым нажатием на педали. Последний атрибут, полиморфизм, четко отражает способность компаний-изготовителей автомобилей предлагать широкое множество вариантов, по сути, одного и того же средства передвижения. Например, на автомобиле могут быть установлены система тормозов с защитой от блокировки или традиционные тормоза, рулевая система с гидроусилителем или с реечной передачей и 4-, 6- или 8-цилиндровые двигатели. В любом случае нужно будет жать на педаль тормоза, чтобы остановиться, вращать руль, чтобы повернуть, и жать педаль акселератора, чтобы автомобиль двигался. Один и тот же интерфейс может применяться для управления множеством различных реализаций.
Как видите, именно совместное применение инкапсуляции, наследования и полиморфизма позволяет преобразовать отдельные детали в объект, который мы называем автомобилем. Сказанное применимо также к компьютерным программам. За счет применения объектно-ориентированных принципов различные части сложной программы могут быть собраны воедино, образуя надежную, пригодную для обслуживания программу. Первый пример простой программы Мы начнем с компиляции и запуска представленного в этом разделе короткого примера программы. Вы убедитесь, что эта задача несколько более трудоемкая, чем может казаться. /* Это простая программа Java */ class Example { // Программа начинается с обращения к main(). public static void main(String args[]) { System. out. println(" Привет, Java! " ); } }
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|