Концепции
Появление в ООП отдельного понятия класса закономерно вытекает из желания иметь множество объектов со сходным поведением. Класс в ООП — это в чистом виде абстрактный тип данных, создаваемый программистом. С этой точки зрения объекты являются значениями данного абстрактного типа, а определение класса задаёт внутреннюю структуру значений и набор операций, которые над этими значениями могут быть выполнены. Желательность иерархии классов (а значит, наследования) вытекает из требований к повторному использованию кода — если несколько классов имеют сходное поведение, нет смысла дублировать их описание, лучше выделить общую часть в общий родительский класс, а в описании самих этих классов оставить только различающиеся элементы.
Необходимость совместного использования объектов разных классов, способных обрабатывать однотипные сообщения, требует поддержки полиморфизма — возможности записывать разные объекты в переменные одного и того же типа. В таких условиях объект, отправляя сообщение, может не знать в точности, к какому классу относится адресат, и одни и те же сообщения, отправленные переменным одного типа, содержащим объекты разных классов, вызовут различную реакцию.
Отдельного пояснения требует понятие обмена сообщениями. Первоначально (например, в том же Smalltalk) взаимодействие объектов представлялось как «настоящий» обмен сообщениями, то есть пересылка от одного объекта другому специального объекта-сообщения. Такая модель является чрезвычайно общей. Она прекрасно подходит, например, для описания параллельных вычислений с помощью активных объектов, каждый из которых имеет собственный поток исполнения и работает одновременно с прочими. Такие объекты могут вести себя как отдельные, абсолютно автономные вычислительные единицы. Посылка сообщений естественным образом решает вопрос обработки сообщений объектами, присвоенными полиморфным переменным — независимо от того, как объявляется переменная, сообщение обрабатывает код класса, к которому относится присвоенный переменной объект.
Однако общность механизма обмена сообщениями имеет и другую сторону — «полноценная» передача сообщений требует дополнительных накладных расходов, что не всегда приемлемо. Поэтому в большинстве ныне существующих объектно-ориентированных языков программирования используется концепция «отправка сообщения как вызов метода» — объекты имеют доступные извне методы, вызовами которых и обеспечивается взаимодействие объектов. Данный подход реализован в огромном количестве языков программирования, в том числе C++, Object Pascal, Java, Oberon-2. В настоящий момент именно он является наиболее распространённым в объектно-ориентированных языках.
Концепция виртуальных методов, поддерживаемая этими и другими современными языками, появилась как средство обеспечить выполнение нужных методов при использовании полиморфных переменных, то есть, по сути, как попытка расширить возможности вызова методов для реализации части функциональности, обеспечиваемой механизмом обработки сообщений.
- 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. Невидимые вирусы.