Академический Документы
Профессиональный Документы
Культура Документы
ООП
9 ВВЕДЕНИЕ В ООП / Вспоминаем ООП
Вспоминаем ООП
Объектно-ориентированное программирование — это
методология программирования, в которой все важные
вещи представлены объектами, каждый из которых
является экземпляром определенного класса, а классы
образуют иерархию наследования.
Объекты, классы
Вы любите котиков? Надеюсь да, потому что я попытаюсь
объяснить все эти вещи на примерах с котами.
Иерархии классов
Идём дальше. У вашего соседа есть собака Жучка. Как
известно, и собаки, и коты имеют много общего — имя, пол,
возраст, цвет есть не только у котов, но и у собак. Да и
бегать, дышать, спать и есть могут не только коты.
Получается, эти свойства и поведения присущи общему
классу Животных .
Краеугольные камни
ООП
ООП имеет четыре главные концепции, которые отличают
его от остальных методологий программирования.
Абстракция
Когда вы пишете программу, используя ООП, вы
представляете её части через объекты реального мира. Но
объекты в программе не повторяют в точности их реальные
аналоги, да и это редко когда нужно. Вместо этого, объекты
программы всего лишь моделируют поведение реальных
объектов, важных в том или ином контексте, а остальные
свойства реального объекта игнорируют.
Инкапсуляция
Когда вы заводите автомобиль, вам достаточно повернуть
ключи зажигания или нажать кнопку. Вам не нужно вручную
соединять провода под капотом, поворачивать коленчатый
вал и поршни, запуская такт двигателя. Все эти детали
скрыты под капотом автомобиля. Вам доступен только
15 ВВЕДЕНИЕ В ООП / Краеугольные камни ООП
Наследование
Наследование — это возможность создание новых классов
на основе существующих. Главная польза от наследования
— повторное использование существующего кода. Расплата
за наследование проявляется в том, что подклассы всегда
следуют интерфейсу родительского класса. Вы не можете
исключить из подкласса метод, объявленный в его
родителе.
Полиморфизм
Вернёмся к примерам с животными. Практически все
животные умеют издавать звуки, поэтому мы можем
объявить абстрактный метод издания звука в их базовом
классе. Все подклассы должны будут реализовать этот
метод по-своему.
1 bag = [new
new Cat(), new Dog()];
2
3 foreach (Animal a : bag)
4 a.makeSound()
5
6 // Meow!
7 // Bark!
Отношения между
объектами
Кроме наследования и реализации есть ещё несколько
видов отношений между объектами, о которых мы ещё не
говорили.