Особенности реализации
Как уже говорилось выше, в современных объектно-ориентированных языках программирования каждый объект является значением, относящимся к определённому классу. Класс представляет собой объявленный программистом составной тип данных, имеющий в составе:
Поля данных
Параметры объекта (конечно, не все, а только необходимые в программе), задающие его состояние (свойства объекта предметной области). Иногда поля данных объекта называют свойствами объекта, из-за чего возможна путаница. Физически поля представляют собой значения (переменные, константы), объявленные как принадлежащие классу.
Методы
Процедуры и функции, связанные с классом. Они определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять.
Классы могут наследоваться друг от друга. Класс-потомок получает все поля и методы класса-родителя, но может дополнять их собственными либо переопределять уже имеющиеся. Большинство языков программирования поддерживает только единичное наследование (класс может иметь только один класс-родитель), лишь в некоторых допускается множественное наследование — порождение класса от двух или более классов-родителей. Множественное наследование создаёт целый ряд проблем, как логических, так и чисто реализационных, поэтому в полном объёме его поддержка не распространена. Вместо этого в 1990-е годы появилось и стало активно вводиться в объектно-ориентированные языки понятие интерфейса. Интерфейс — это класс без полей и без реализации, включающий только заголовки методов. Если некий класс наследует (или, как говорят, реализует) интерфейс, он должен реализовать все входящие в него методы. Использование интерфейсов предоставляет относительно дешёвую альтернативу множественному наследованию.
Взаимодействие объектов в абсолютном большинстве случаев обеспечивается вызовом ими методов друг друга.
Инкапсуляция обеспечивается следующими средствами
Контроль доступа
Поскольку методы класса могут быть как чисто внутренними, обеспечивающими логику функционирования объекта, так и внешними, с помощью которых взаимодействуют объекты, необходимо обеспечить скрытость первых при доступности извне вторых. Для этого в языки вводятся специальные синтаксические конструкции, явно задающие область видимости каждого члена класса. Традиционно это модификаторы public, protected и private, обозначающие, соответственно, открытые члены класса, члены класса, доступные только из классов-потомков и скрытые, доступные только внутри класса. Конкретная номенклатура модификаторов и их точный смысл различаются в разных языках.
Методы доступа
Поля класса, в общем случае, не должны быть доступны извне, поскольку такой доступ позволил бы произвольным образом менять внутреннее состояние объектов. Поэтому поля обычно объявляются скрытыми (либо язык в принципе не позволяет обращаться к полям класса извне), а для доступа к находящимся в полях данным используются специальные методы, называемые методами доступа. Такие методы либо возвращают значение того или иного поля, либо производят запись в это поле нового значения. При записи метод доступа может проконтролировать допустимость записываемого значения и, при необходимости, произвести другие манипуляции с данными объекта, чтобы они остались корректными (внутренне согласованными). Методы доступа называют ещё аксессорами (от англ. access — доступ), а по отдельности — геттерами (англ. get — чтение) и сеттерами (англ. set — запись)[2].
Свойства объекта
Псевдополя, доступные для чтения и/или записи. Свойства внешне выглядят как поля и используются аналогично доступным полям (с некоторыми исключениями), однако фактически при обращении к ним происходит вызов методов доступа. Таким образом, свойства можно рассматривать как «умные» поля данных, сопровождающие доступ к внутренним данным объекта какими-либо дополнительными действиями (например, когда изменение координаты объекта сопровождается его перерисовкой на новом месте). Свойства, по сути — не более чем синтаксический сахар, поскольку никаких новых возможностей они не добавляют, а лишь скрывают вызов методов доступа. Конкретная языковая реализация свойств может быть разной. Например, в C# объявление свойства непосредственно содержит код методов доступа, который вызывается только при работе со свойствами, то есть не требует отдельных методов доступа, доступных для непосредственного вызова. В Delphi объявление свойства содержит лишь имена методов доступа, которые должны вызываться при обращении к полю. Сами методы доступа представляют собой обычные методы с некоторыми дополнительными требованиями к сигнатуре.
Полиморфизм реализуется путём введения в язык правил, согласно которым переменной типа «класс» может быть присвоен объект любого класса-потомка её класса.
- 3) 1. Формы представления информации
- 6) Правила перевода целых чисел
- 7) Единицы измерения количества информации.
- Сверх-Truecolor
- Телевизионный цвет
- 13) Понятие о принципах работы эвм. Понятие о программном управлении работой компьютера.
- Физическая и логическая структура магнитных дисков
- Экранное покрытие
- Частота вертикальной развертки
- Частота горизонтальной развертки
- Шаг точек
- Допустимые углы обзора
- Классификация
- Системное по
- Прикладное по
- Расширение имени файла
- Имя файла
- Операции с файлом
- Операции, связанные с открытием файла
- Операции, не связанные с открытием файла
- Классификация по модели данных
- Классификация по среде постоянного хранения
- Классификация по содержимому
- Классификация по степени распределённости
- Другие виды бд
- Сверхбольшие базы данных
- Применение баз знаний
- Базы знаний и интеллектуальные системы
- Модели и методы исследований Символьное моделирование мыслительных процессов
- Работа с естественными языками
- Представление и использование знаний
- Машинное обучение
- Биологическое моделирование искусственного интеллекта
- Робототехника
- Машинное творчество
- Другие области исследований
- Современный искусственный интеллект
- 24) Язык ассемблера
- Основные понятия
- Определение ооп и его основные концепции
- Сложности определения
- Концепции
- Особенности реализации
- 26) Операторы ввода-вывода и преобразования информации
- 28) . Что такое компьютерный вирус
- 2. Функционирование вирусов.
- 3. Резидентные вирусы.
- 4. Опасные и неопасные вирусы.
- 4.1. Неопасные вирусы.
- 4.2. Опасные и очень опасные вирусы.
- 5. Заражаемые объекты.
- 5.1. Файловые вирусы.
- 5.2. Загрузочные вирусы.
- 5.3. Вирусы, заражающие драйверы.
- 5.4. Вирусы, заражающие командные файлы.
- 5.5. Вирусы, заражающие документы Word для Windows.
- 5.6. Вирусы, заражающие другие объекты.
- 6. Что вирус не может заразить.
- 7. Антивирусные программы.
- 7.1. Виды антивирусных программ.
- 7.2. Использование антивирусных программ.
- 7.3. Антивирусные комплексы.
- 7.4. Обновление антивирусных программ.
- 8. Действия при заражении вирусом.
- 8.1. Симптомы заражения вирусом.
- 8.2. Пять правил при заражении компьютера вирусом.
- 9. Раннее обнаружение вируса.
- 10. Выяснение сведений о вирусе.
- 11. Удаление вирусов.
- 12. Что могут и чего не могут компьютерные вирусы.
- 12.1. Вирусофобия.
- 12.2. И её последствия.
- 13. Что могут вирусы.
- 14. Чего вирусы не могут.
- 15. Методы маскировки вирусов.
- 15.1. Невидимые вирусы.