Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Объектно-ориентированные языки





Рассмотренные выше, т. н. процедурные языки высокого уровня навязывают разработчику метод декомпозиции программы на подпрограммы или процедуры. Такое разбиение на модули было естественным следствием того, что процессор воспринимает программу в виде последовательности инструкций. Собственно эта последовательность и разбивалась на подпоследовательности, т.е. на процедуры.

Декомпозиция программы на процедуры оказалась однобокой в том смысле, что не учитывает вторую важную составляющую сущность программы – данные. Во многих приложениях именно структура используемых данных играет ключевую роль. В этом смысле характерно высказывание одного из основоположников программной индустрии Фрэда Брукса в его знаменитом труде [15]: «Покажите мне ваши алгоритмы, не показывая структуры данных, и я останусь в заблуждении. Покажите мне структуры данных – и алгоритмы, скорее всего, не понадобятся – они будут очевидны».

С 80х годов прошлого столетия особенную популярность получил другой подход к декомпозиции (следовательно, и к проектированию) программ, основанный на понятии объектов – сущностей, объединяющих в себе как данные, так и методы для работы с этими данными (т.н. объектно-ориентированное программирование – ООП). В настоящее время, подавляющее количество языков программирования поддерживают концепцию ООП. Многие процедурные языки со временем приобрели свойства объектно-ориентированных: С++ (бывший С), Object Pascal (бывший Pascal), Ada, Modula и др. Появились языки, изначально ориентированные на объекты: Smalltalk, Java, C#, Python, Ruby и пр[2].

Обычно к основным механизмам ООП причисляют: инкапсуляцию, наследование и полиморфизм, которые обеспечивают преимущества данного подхода, повышающие уровень абстракции и гибкости программ. Не вдаваясь в подробности, акцентируем внимание на новом способе декомпозиции программы. ООП навязывает в качестве единицы модульности программы не процедуру, а объект или класс. Понятие класса более общо, чем процедура (по крайней мере, класс включает в себя процедуры), но, что более важно, оно лучше моделирует реальный мир, в котором присутствует множество взаимодействующих объектов. Такое представление привычно человеку и делает программу более понятной. Понятные и простые технологии позволяют создавать более сложные системы.

Понятие абстрактных базовых классов позволяет проектировать программу «крупными мазками», не вдаваясь в детали реализации. Причем спроектированные решения будут не просто эскизами, черновиками или вспомогательными документами, а реальными работающими частями кода создаваемой программы. Механизмы наследования и полиморфизма позволяют впоследствии конкретизировать абстрактные классы. Делается это поступательно. Сначала многие конкретные объекты представляют собой «заглушки» или «пустышки», но с ними программа может запускаться и тестироваться. Постепенно, по мере отладки, заглушки заменяются реальными объектами. Функциональность программы последовательно наращивается до нужного уровня. Такой способ разработки, называемый инкрементным, оказался очень эффективным и получил широкое распространение.

Механизм подмены объектов их заглушками на начальной стадии разработки (см. выше) оказывается очень полезным при модернизации программ. «Незаметная» подмена объектов их новыми версиями дает возможность проектировать очень гибкие программные продукты.

Мода на ООП привела к появлению огромного числа библиотек классов. Некоторые из таких библиотек являются неотъемлемой частью языков программирования и поставляются совместно с транслятором (т.н. библиотеки времени исполнения или runtime -библиотеки): BCL, JFC, STL, tkinter и пр. Остальные библиотеки являются расширением стандартных средств языка: MFC, VCL, Qt, Boost, ACE, POCO, wxWidgets, JFace, SciPy и др.

Можно утверждать, что ООП устоялся и прочно занял свое место в инструментариях разработки программного обеспечения. Однако эволюция его не завершена. Со временем появились нововведения: перегрузка операций, параметризованные типы и функции, делегаты, замыкания, лямбда-выражения и пр., которые повысили выразительность и мощь объектно-ориентированных языков[3].

Date: 2015-09-24; view: 433; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию