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

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