~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ A2A5926B864DC8F4253BD7E0035295FB__1706815080 ✰
Заголовок документа оригинал.:
✰ Class-based programming - Wikipedia ✰
Заголовок документа перевод.:
✰ Программирование на основе классов — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Class-based_programming ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/a2/fb/a2a5926b864dc8f4253bd7e0035295fb.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/a2/fb/a2a5926b864dc8f4253bd7e0035295fb__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:11:22 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 1 February 2024, at 22:18 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Программирование на основе классов — Википедия Jump to content

Программирование на основе классов

Из Википедии, бесплатной энциклопедии

Программирование на основе классов или, чаще, ориентация на классы — это стиль объектно-ориентированного программирования в котором наследование происходит посредством определения классов объектов (ООП) , , а не только через объекты (сравните программирование на основе прототипов ).

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

Инкапсуляция [ править ]

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

Наследование [ править ]

В программировании на основе классов наследование осуществляется путем определения новых классов как расширений существующих классов: существующий класс является родительским классом , а новый класс — дочерним . Если дочерний класс имеет только один родительский класс, это называется одиночным наследованием , а если дочерний класс может иметь более одного родительского класса, это называется множественным наследованием . Это организует классы в иерархию : дерево (при одиночном наследовании) или решетку (при множественном наследовании).

Определяющей особенностью наследования является то, что наследуются и интерфейс, и реализация; если наследуется только интерфейс, это называется интерфейса наследованием или подтипированием . Наследование также может осуществляться без классов, как в программировании на основе прототипов .

Обзор [ править ]

Языки на основе классов, или, точнее, типизированные языки , где создание подклассов является единственным способом создания подтипов , подвергались критике за смешение реализаций и интерфейсов — важнейший принцип объектно-ориентированного программирования. Критики говорят, что можно создать класс-мешок, в котором будет храниться набор объектов, а затем расширить его, чтобы создать новый класс, называемый классом-множеством, в котором дублирование объектов будет устранено. [1] [2] Теперь функция, которая принимает объект класса сумки, может ожидать, что добавление двух объектов увеличит размер сумки на два, но если один из них передает объект заданного класса, то добавление двух объектов может увеличить или не увеличить размер сумки. сумка на двоих. Проблема возникает именно потому, что создание подклассов подразумевает подтипирование даже в тех случаях, когда принцип подтипирования, известный как принцип замены Лискова , не выполняется. Барбара Лисков и Жаннетт Винг кратко сформулировали этот принцип в статье 1994 года следующим образом:

Требование подтипа : Let быть доказуемым свойством объектов типа . Затем должно быть верно для объектов типа где является подтипом .

Таким образом, обычно необходимо различать подтипы и подклассы. Большинство современных объектно-ориентированных языков различают подтипы и подклассы, однако некоторые подходы к проектированию этого не делают.

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

Примеры языков [ править ]

Хотя в Simula введена абстракция классов, каноническим примером языка, основанного на классах, является Smalltalk . Другие включают PHP , C++ , Java , C# и Objective-C .

См. также [ править ]

Ссылки [ править ]

  1. ^ Киселев Олег. «Подтипирование, создание подклассов и проблемы с ООП» . Проверено 7 октября 2012 г.
  2. ^ Дюкасс, Стефан. «Набор не может быть подтипом сумки» . Проверено 7 октября 2012 г.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: A2A5926B864DC8F4253BD7E0035295FB__1706815080
URL1:https://en.wikipedia.org/wiki/Class-based_programming
Заголовок, (Title) документа по адресу, URL1:
Class-based programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)