Редактирование: Объектно-ориентированное программирование
Материал из Documentation.
Перейти к:
навигация
,
поиск
'''Объектно-ориентированное программирование''' ('''ООП''') — методология разработки программ для компьютерного моделирования систем произвольного назначения, представленных в виде совокупностей [[объект]]ов, каждый из которых отнесён к определённому [[класс]]у и наделён наборами данных (атрибутов объекта) и процедур (методов) их обработки, а классы объектов могут быть представлены в виде иерархии наследования атрибутов и методов.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> Преимущества ООП особенно отчётливо проявляются при создании сложных программных систем, выполняемых коллективами разработчиков: одни могут проектировать функциональное поведение и структуру системы; другие — её составляющие и способы их взаимодействия; третьи — заниматься программной реализацией. При этом разработчикам составляющих и занимающимся программной реализацией необязательно знать о системе в целом, а разработчикам системы в целом — о деталях её составляющих, способах их взаимодействия и программной реализации.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> == Основные понятия == Объект в ООП — это модель экземпляра определённого класса сущностей моделируемой системы. Класс содержит определение данных и методов, являющихся общими для входящих в него объектов. Он задаётся атрибутами (свойствами класса), описывающими состояние его объектов, совокупностью процедур (методов класса) и правилами доступа извне (из других частей программы) к атрибутам и методам, определяющими [[интерфейс класса]]. В иерархии наследования [[класс-потомок]] порождается путём добавления одного или нескольких атрибутов и/или методов к атрибутам и/или методам одного или нескольких классов-родителей. Например, от класса «[[точка]]» с атрибутами «[[абсцисса]]», «[[ордината]]» и методами создания, чтения и изменения координат может быть порождён класс «[[цветная точка]]», объекты которого будут иметь дополнительный атрибут «[[цвет]]» и некоторые методы управления этим атрибутом.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> Объявление класса задаёт тип данных, который может быть использован при определении других классов.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> Важнейшей особенностью ООП является возможность утаивания деталей реализации за интерфейсом класса (так называемая [[инкапсуляция]]). Предположим, нужно, чтобы вне класса координаты точки могли изменяться не произвольно, а только по определённому правилу (например, поворотом точки на заданный угол вокруг начала координат). В таком случае в других частях программы изменение координат делается доступным только посредством интерфейсного метода, которому передаётся значение параметра «угол поворота». При этом [[алгоритм]] поворота скрывается внутри реализации метода изменения координат.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> Объявление класса определяет его [[интерфейс]], который может использоваться другими разработчиками, не знающими реализации методов этого класса.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> == История == {{main|История объектно-ориентированного программирования}} С развитием [[Компьютерное моделирование|компьютерного моделирования]] и усложнением моделируемых систем всё более явными становились недостатки методологий разработки программ с использованием [[процедурно-ориентированные языки программирования|процедурно-ориентированных языков программирования]] ([[алгол]]а, [[фортран]]а и других). Это объясняется отсутствием в них средств, удобных для описания сложных систем, слабой поддержкой повторной применимости ранее разработанных программ и совместных разработок коллективами программистов. Идея уменьшения сложности разработки путём декомпозиции исходной задачи на подзадачи, лежащая также в основе технологий структурного программирования и модульного программирования, в ООП воплощена на более совершенном методологическом уровне.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> В 1967 году сотрудники [[Норвежский вычислительный центр|Норвежского вычислительного центра]] [[Оле Йохан Даль]] и [[Кристен Нюгорд]] создали язык [[симула 67]] (Simula 67), ставший первым языком ООП. В нём объединение данных и процедур их обработки было названо объектом, а совокупность схожих объектов — классом. Среди последующих языков ООП наиболее удачным признан [[смолток-80]] (Smalltalk-80), созданный в [[США]] в конце 1970-х годов группой сотрудников исследовательского центра [[Xerox]] «[[Palo Alto Research Center]]» (PARC) под руководством Алана Кея. Успех этого языка способствовал развитию и распространению концепции ООП. В начале 1980-х на основе языка C Бьярне Строуструпом ([[Дания]]) был создан [[C++]]; в середине 1980-х годов в компании [[Apple]] на основе языка [[паскаль]] под руководством Лари Теслера (США) и при помощи Никлауса Вирта (Швейцария) разработан «[[объектный паскаль]]» (Object Pascal). В начале 1990-х годов Джеймсом Гослингом (Канада) в компании [[Sun Microsystems]] (США) был создан язык [[Java]], который стал впоследствии одним из наиболее эффективных средств разработки веб-приложений и приложений для мобильных устройств.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> С 1990-х годов ООП развивается как методологическое основание технологий программирования, ориентированных на значительное повышение производительности совместных разработок коллективами программистов. Непрерывно растёт область применения ООП, прирастает семейство языков, совершенствуются системы программирования, увеличивается число программных продуктов различного назначения, разработанных на языках ООП.<ref>[https://bigenc.ru/technology_and_technique/text/3958439]</ref> == Примечания == {{примечания}} [[Категория:Объектно-ориентированное программирование| ]]
Описание изменений:
Отменить
|
Справка по редактированию
(в новом окне)
Шаблоны, использованные на текущей версии страницы:
Шаблон:Main
Шаблон:Примечания
Просмотры
Статья
Обсуждение
Править
История
Личные инструменты
Навигация
Заглавная страница
Случайная статья
Инструменты
Ссылки сюда
Связанные правки
Загрузить файл
Спецстраницы