Первым языком программирования,
в котором были предложены
принципы объектной ориентированности,
была Симула. В момент своего
появления (в 1967 году), этот язык
программирования предложил поистине
революционные идеи: объекты, классы,
виртуальные методы и др., однако это всё не было воспринято
современниками как нечто грандиозное.
Тем не менее, большинство концепций были
развиты Аланом Кэйем и Дэном Ингаллсом
в языке Smalltalk. Именно он стал первым широко
распространённым объектно-ориентированным
языком программирования.
Различаются чистые
и гибридные объектно-ориентированные
языки. Чистые — это те, которые
позволяют использовать только
одну модель программирования
— объектно-ориентированную. Вы
можете объявлять классы и
методы, но не можете завести глобальные переменные и обычные функции
и процедуры старого типа.
Среди трех наших
языков, только Java(и его клон C#) является
чистым объектно-ориентированным
языком (как Eiffel и Smalltalk). На первый
взгляд это кажется положительной
идеей. Однако она ведет к тому, что вы используете кучу
статических методов и статических данных,
что не так уж отличается от использования
глобальных функций и данных, за исключением
более сложного синтаксиса. Чистые объектно-ориентированные
языки дают преимущество новичкам в объектно-ориентированном
программировании, потому что программист
вынужден использовать (и учить) модель
объектно-ориентированного программирования.
C++ и Object Pascal, наоборот, - типичные примеры
гибридных языков, которые позволяют программистам
использовать при необходимости традиционный
подход C или Pascal.
Smalltalk расширяет эту
идею до уровня «обобъекчивания»
таких предопределенных типов
данных, как целые и символы,
а также языковых конструкций
(таких как циклы). Это теоретически
интересно, но сильно уменьшает эффективность. Java останавливается
много раньше, допуская присутствие простых
не объектно-ориентированных типов данных
(хотя имеются необязательные классы-обертки
и для простых типов).
6. Простая объектная
модель и ссылочно-объектная модель
Третий элемент,
по которому различаются языки
объектно-ориентированного программирования
- их объектная модель. Некоторые
традиционные языки объектно-ориентированного
программирования позволяют программистам
создавать объекты в стеке,
в куче (в хипе - heap) или в статической памяти. В этих
языках переменная типа класс соответствует
объекту в памяти. Так работает C++.
В последнее время
появилась тенденция использовать
другую модель, часто называемую
ссылочно-объектной моделью. В
этой модели каждый объект динамически размещается в куче,
а переменная типа класс фактически является
ссылкой или хэндлом объекта в памяти
(технически это нечто вроде указателя).
Java и Object Pascal оба используют эту ссылочную
модель. Как мы увидим, вкратце это значит,
что вам необходимо не забыть выделить
память для объекта.
Заключение
Объектно-ориентированное
программирование является в настоящее
время основой всей индустрии
прикладного программирования благодаря
выигрышу в конкурентной борьбе с
альтернативными технологиями программирования. В промышленном
программировании только в системном
программировании позиции объектно-ориентированного
программирования еще не очень сильны.
Поэтому, с одной стороны, теоретические
рассуждения о непригодности объектно-ориентированного
программирования не соответствуют наблюдаемой
на практике ситуации. С другой стороны,
нельзя считать, что объектно-ориентированное
программирование во всех случаях является
наилучшей из методик программирования.
Процедурное программирование
лучше подходит для случаев, когда важны быстродействие
и потребляемые ресурсы, объектное - когда
важна управляемость проекта и его модифицируемость,
а также безопасность программ. Процедурное
программирование обычно лучше подходит
для небольших проектов, объектное - для
больших.
Список литературы
- “Новые языки программирования и тенденции их развития”, Ушкова В., 2005 г.
- Антони Синтес Освой самостоятельно объектно-ориентированное программирование за 21 день = Sams Teach Yourself Object-Oriented Programming in 21 Days. — М.: «Вильямс», 2002. — С. 672.
- Бертран Мейер Объектно-ориентированное конструирование программных систем + CD . Интернет-университет информационных технологий - ИНТУИТ.ру, Русская Редакция, 2005
- Биллиг В.А. Основы программирования на C# . Интернет-университет информационных технологий - ИНТУИТ.ру, 2006
- Братчиков, И.Л. Синтаксис языков программирования; Наука, 2009. - 230 c.
- Джосьютис, Николай C++ стандартная библиотека; СПб: Питер, 2011. - 730 c.
- Зелковиц, М.; Шоу, А.; Гэннон, Дж. Принципы разработки программного обеспечения; М.: Мир, 2009. - 368 c.
- Иан Грэхем Объектно-ориентированные методы. Принципы и практика = Object-Oriented Methods: Principles & Practice. — 3-е изд. — М.: «Вильямс», 2004. — С. 880.
- Калашников О. Ассемблер? Это просто! Учимся программировать (+ CD-ROM); СПб: БХВ, 2011. - 384 c.
- Марков А.А., Нагорный Н.М. Теория алгорифмов; М.: Высшая школа, 2012. - 855 c.
- ред. Морозов, В.А.; Репин, В.М. Вычислительные методы и системы обработки данных на ЭВМ; М.: МГУ, 2009. - 186 c.