Раздел 1
Процедурное и
объектно-ориентированное программирование
Процедурное программирование подразумевает возможность создания
в рамках программы локальных переменных, функций и процедур. Любая
программа оперирует данными и содержит код для обработки этих данных. В
языках , поддерживающих парадигму процедурного программирования, приоритет остается за кодом для обработки
данных. Другими словами, функциональность программы определяется
в основном набором процедур и функций для обработки данных. Сами данные
при этом имеют второстепенное значение. Одни и те же процедуры
применяются к данным разного рода.
Хотя такой подход имеет право на существование и долгое время был самым
прогрессивным, с помощью процедурных языков программирования очень
большие проекты создавать сложно. Поэтому на замену процедурному
программированию пришло программирование объектно-ориентированное.
Основная идея, положенная в основу объектно-ориентированного
программирования, проста и элегантна и состоит в том, чтобы подчинить код, используемый для обработки
данных, этим самим данным. В объектно-ориентированных языках
данные играют решающую роль при определении методов обработки. Здесь
следует четко понимать, что необходимость перехода к
объектно-ориентированному программированию связана в первую очередь с
проблемой читабельности программного кода. Если предстоит обработать
значительный массив данных и для этого используется большое количество
процедур и функций, у разработчика или пользователя могут возникнуть(и,
как правило, возникают!) проблемы с корректным сопоставлением данных и
кода для их обработки. В рамках объектно-ориентированного подхода такое
связывание осуществляется на уровне структуры программы и является
неотъемлемой частью синтаксиса соответствующего языка
программирования(в том числе это относится к С++).
Любой объектно-ориентированный язык программирования базируется на трех
механизмах, которые называются инкапсуляцией,
полиморфизмом и наследованием.
Под инкапсуляцией подразумевается
объединение, связывание в одно целое данных и программного кода для
обработки данных. Базовой единицей инкапсуляции является класс,
а конкретный экземпляр класса называется объектом. Классы и объекты
обсуждаются в дальнейших разделах.
Полиморфизм позволяет
использовать единый унифицированный интерфейс для выполнения однотипных
действий с различными данными. В С++ полиморфизм реализуется
через перегрузку функций, методов и операторов.
Наконец, наследование позволяет
одному объекту получать свойства другого объекта. Это
исключительно полезный механизм, который позволяет существенно
сокращать объем программного кода, обеспечивать преемственность
различных версий программ и лежит в основе принципа классификации
объектов.
|