Объектно-ориентированное программирование: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 2:
== Общие замечания ==
 
Объектно-ориентированная парадигма программирования не нова. Её истоки восходят к Симуле-67, хотя первая полная реализация была в Smalltalk-80. ООП стало популярным во второй половине 80-х в таких различных языках, как Си-плюс-плюс, Objective C (другое расширение C), ОбджектObject и Турбо Паскаль, CLOS (ОО-расширение Лиспа), Eiffel, Ада (в её последних воплощениях) и недавно - в Яве. Эта работа сосредоточена на Си-плюс-плюс, Обджект Паскале и Яве, иногда упоминая и другие языки.
 
Ключевые черты ООП хорошо известны. Первая — '''инкапсуляция''' — это определение классов — пользовательских типов данных, инкапсулирующихобъединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним. Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП.
 
Вторая ключевая черта, — '''наследование''' — есть способ определения нового типа, наследуя элементы (содержание и методы) существующего и модифицируя или расширяя их. Это способствует выражению специализации и генерализации.
 
Третья черта, известная как '''полиморфизм''', позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии) однородным образом. Это делает классы ещё более удобными и делает программы, основанные на них, легче для расширения и поддержки.
 
КлассыИнкапсуляция, наследование и полиморфизм — фундаментальные свойства, требуемые от языка, претендующего называться объектно-ориентированным. (Языки, не имеющие наследования и полиморфизма, но имеющие только классы, обычно называются основанными на классах.) Различные ОО языки используют совершенно разные подходы. Мы можем различать ОО языки, сравнивая механизм контроля типов, способность поддерживать различные программные модели и то, какие объектные модели они поддерживают.
 
== Контроль во время компиляции и во время выполнения ==