суббота, 7 февраля 2015 г.

Что такое ООП

Объектно-ориентированное программирование

Языки программирования претерпели большие изменения с тех пор, как в сороковых годах началось их использование.
Первые языки программирования были очень примитивными и представляли собой последовательность нулей и единиц. Использование таких языков было крайне неудобно с точки зрения программиста. Первая попытка оптимизации программирования в двоичных кодах заключалась в разработке специальной системы кодирования двоичных машинных команд многобуквенными мнемоническими сокращениями. 
В пятидесятых годах ХХ века появились языки программирования высокого уровня. Форма записи программ на  них по сравнению с машинными языками и  ассемблером ближе к традиционной математической форме и разговорному языку. 
Первые программы для ЭВМ редко превышали объем 1 кбайт, сейчас же программы несравненно больше. По мере увеличения размера программ приходилось искать способы, позволяющие упростить программирование. 
Идеи разделения  программ на относительно самостоятельные крупные части, реализующие определенные процедуры и функции и образующие определенную иерархию взаимосвязей, нашли отражение в структурном подходе к разработке и созданию программных средств. В программировании структурный подход появился с возникновением первых подпрограмм (процедур и функций), написанных в так называемом процедурно-ориентированном стиле.
Дальнейшее развитие структурного подхода привело к модульному программированию. Оно предусматривает представление прикладной задачи в виде иерархии взаимодействующих модулей или программ.
Введение типов данных обозначило еще одно направление развития технологии программирования. Типизация данных предназначена как для облегчения составления программ, так и для автоматического выявления ошибок. Использование структурных или комбинированных типов позволяет сократить объем рутинной работы  программиста.
По мере развития технологии программирования все адекватнее отражалась структура решаемой прикладной задачи и осуществлялось объединение данных и процедур для их обработки. Это и привело к появлению в программировании объектного подхода. Сейчас уже совершенно ясно, что на смену традиционному программированию, пришло объектно-ориентированное (сокращенно ООП).


Объектно-ориентированные языки программирования пользуются в последнее время большой популярностью среди программистов. Первый объектно-ориентированный язык программирования был разработан в конце 60-х годов в Норвегии. Авторы этого языка очень точно угадали перспективы развития программирования: их язык намного опередил свое время. В 70-е годы было разработано большое число экспериментальных объектно-ориентированных языков программирования. Эти языки так и остались экспериментальными, но в результате их исследования были разработаны современные объектно-ориентированные языки программирования. Разработка новых объектно-ориентированных языков программирования продолжается.
Успех ООП стиля программирования объясняется предоставляемой им возможностью естественно имитировать объекты нашего мира. Решая сложные проблемы, выдвигаемые жизнью, человек постепенно развил в себе замечательные способности к обобщению, классификации и созданию абстракций. В окружающих нас объектах мы находим общие признаки, свойства, способы поведения.
Объекты объединяются в классы. К одному классу принадлежат объекты с одинаковым набором свойств, методов и событий.
Представьте себе, что в обычном языке не существует объектов (понятий), абстрагирующих окружающий мир. Тогда для того, чтобы сообщить другому человеку о каком-то предмете, например автомобиле, пришлось бы его подробно описывать. Трудно вообразить, сколько времени потребовалось бы для описания объекта. Причем описание должно быть очень точным, чтобы не возникло ошибочное представление о другом объекте. 
То же относится и к программированию. Например, для использования окна ничего не нужно разрабатывать, вы просто используете объект класса "окно". 
Класс - это группа объектов с одинаковыми свойствами и методами. Если вы создаете собственное приложение, то большую помощь при этом окажут собственные объекты. В исходном коде вы используете программное представление таких объектов. Такой способ рассмотрения больше соответствует реальности, чем при чисто процедурной разработке приложений.
В объектно-ориентированном подходе к разработке программ центральным является понятие класса объектов. В ООП класс обладает следующими важнейшими свойствами:
  • инкапсуляция (характеристики объекта и методы (процедуры и функции) для их обработки объединяются в описании класса объектов, причем предполагается что доступ к характеристикам объекта будет происходить через соответствующие методы, т.е. они защищены от внешнего вмешательства);
  • наследование (один класс может быть получен от другого. В таком случае говорят, что один класс является базовым, а другой - производным. Это позволяет повторно использовать уже созданный код в других проектах. Производный класс наследует всю структуру характеристик и поведение базового, однако может дополнять или модифицировать их.);
  • полиморфизм (полиморфизм означает, что различные объекты используют одинаковую абстракцию, т.е. могут обладать свойствами и методами с одинаковыми именами. Однако обращение к ним будет вызывать различную реакцию для различных объектов. Большое достоинство полиморфизма состоит в том, что при использовании объекта можно вызывать определенное свойство или метод, не заботясь о том, как объект выполняет задачу. Это очень важно при модификации программного обеспечения. Изменения или новшества просто адаптируются к имеющимся компонентам приложения.).

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