Статья не моя. Размещена здесь лишь для удобства.
Ссылка на оригинал статьи размещена в нижней части страницы.
Мы живем в мире объектов. Стол, автомобиль, ручка, классная доска –
все это объекты. Наряду с физическими существуют так же абстрактные
объекты, типичными представителями которых являются числа. Таким образом,
объект – это любая физическая или абстрактная четко идентифицируемая
сущность. Объект – это общефилософское понятие, которое изучалось
философами на протяжении длительного времени.
Объекты характеризуются атрибутами. Так атрибутами автомобиля являются
максимальная скорость, мощность двигателя, цвет кузова и т. д. Атрибутами
усилителя являются частотный диапазон, выходная мощность, коэффициент
нелинейных искажений, уровень шума и т. д.
Помимо атрибутов объекты обладают некоторыми функциональными возможностями,
которые в объектно-ориентированном программировании (ООП) называют операциями
или методами. Так автомобиль может ездить, корабль – плавать, компьютер
– производить вычисления.
Таким образом, объект инкапсулирует атрибуты и методы, скрывая от других
объектов взаимодействующих с ним и использующих его функциональность,
свою реализацию. Так для того чтобы переключить телевизионную программу
нам достаточно на пульте дистанционного управления набрать ее номер,
что запустит сложный механизм, который в итоге и приведет к желаемому
результату. Нам совершенно не обязательно знать, что происходит в пульте
дистанционного управления и телевизоре, нам лишь достаточно знать, что
телевизор обладает такой возможностью (методом) и как ее можно активировать.
Инкапсуляция или сокрытие реализации является базовым свойством ООП.
Она позволяет создавать пользовательские объекты, обладающие требуемыми
методами и далее оперировать ими, не вдаваясь в устройство этих объектов.
Классы могут быть связаны друг с другом различными отношениями. Одним
из основных таких отношений является отношение класс – подкласс, известный
в объектно-ориентированном программировании как наследование. Например,
класс автомобилей Audi 6 является подклассом легковых автомобилей, который
в свою очередь входит в более крупный класс автомобилей, а последний
является подклассом класса транспортных средств, который помимо автомобилей
включает в себя самолеты, корабли поезда и т. д.
При наследовании все атрибуты и методы родительского класса наследуются
классом-потомком. Наследование может быть многоуровневым, и тогда классы,
находящиеся на нижних уровнях иерархии, унаследуют все свойства (атрибуты
и методы) всех классов, прямыми или косвенными потомками которых они
являются. Класс B унаследует атрибуты и методы класса A и, следовательно,
будет обладать атрибутами A, B, C и D и методами A, B, C и D, а класс
C – атрибутами A, B, C, E, F и методами A, B и E.
При наследовании одни методы класса могут замещаться другими. Так,
класс транспортных средств будет обладать обобщенным методом движения.
В классах-потомках этот метод будет конкретизирован: автомобиль будет
ездить, самолет – летать, корабль – плавать. Такое изменение семантики
метода называется полиморфизмом. Полиморфизм – это выполнение методом
с одним и тем же именем различных действий в зависимости от контекста,
в частности, от принадлежности тому или другому классу. В разных языках
программирования полиморфизм реализуется различными способами. Например,
в C++ он реализован с помощью механизма виртуальных функций.
оригинал статьи:
http://www.structuralist.narod.ru/it/internet/oop.htm