Ответы на билеты (билет18)

Посмотреть архив целиком

2) Полиморфи́зм языках программирования) — взаимозаменяемость объектов с одинаковым интерфейсом.

Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию - например, реализация класса может быть изменена в процессе наследования

Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество методов».

Полиморфизм — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, инкапсуляцией и наследованием).

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

В объектно-ориентированных языках

В объектно-ориентированных языках класс является типом данных. Полиморфизм реализуется с помощью наследования классов. Класс-потомок наследует сигнатуры методов класса-родителя, но реализация этих методов может быть другой, соответствующей специфике класса-потомка. Это называется переопределением метода. Другие функции могут работать с объектом класса-родителя, при этом вместо него во время исполнения будет подставляться один из классов-потомков. Это называется поздним связыванием.

Класс-потомок сам может быть родителем. Это позволяет строить сложные схемы наследования — древовидные или сетевидные.

Абстрактные или виртуальные методы не имеют реализации вообще. Они специально предназначены для наследования. Их реализация должна быть определена в классах-потомках. Очевидно, что не может существовать объект класса, в котором хотя бы один метод абстрактный, так как неизвестно, как он должен работать.

Класс может наследовать функциональность от нескольких классов. Это называется множественным наследованием. Множественное наследование создаёт известную проблему (в C++), когда класс наследуется от нескольких классов-посредников, которые в свою очередь наследуются от одного класса. Если метод общего предка был переопределён в посредниках, неизвестно, какую реализацию метода должен наследовать общий потомок. Решается эта проблема путём отказа от множественного наследования для классов и разрешением множественного наследования для полностью абстрактных классов (т. н. интерфейсов) (C#, Delphi, Java).

Примеры

Класс геометрических фигур (эллипс, многоугольник) может иметь методы для геометрических трансформаций (cмещение, поворот, масштабирование).

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

3) Класс наряду с понятием «Объект», является важным понятием объектно-ориентированного подхода в программировании (хотя существуют и беcклассовые объектно-ориентированные языки, например, JavaScript). Под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов. Таким образом, любой объект может принадлежать или не принадлежать определенному классу, то есть обладать или не обладать поведением, которое данный класс подразумевает. Класс определяет для объекта контракт, то есть правила, с помощью которых с объектом могут работать другие объекты (обычно это делается с помощью определения методов класса). Кроме того классы могут находиться друг с другом в различных отношениях, таких как Наследование или Агрегация.

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

Объект экземпляр класса.

Объект наряду с понятием «класс», является важным понятием объектно-ориентированного подхода в программировании. Под объектом подразумевается некоторая сущность, обладающая состоянием и поведением. Как правило при рассмотрении объектов выделяется, что объект принадлежат одному или нескольким классам, которые в свою очередь определяют поведение объекта. Время с момента создания объекта до его уничтожения называется временем жизни объекта.

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

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


Библиотеки классов используются для хранения созданных в Visual FoxPro пользовательских классов. Для создания библиотеки предназначено диалоговое окно New Class (Новый класс), рассмотренное нами в предыдущем разделе. При разработке приложения удобно иметь несколько библиотек классов, в которых размещаются отдельные группы классов. Например, в одной библиотеке можно располагать все классы кнопок, используемых в приложении, а в другой — классы форм.



В случае необходимости вы можете копировать класс из одной библиотеки в другую. Для этого перейдите на вкладку Classes (Классы) окна проекта и раскройте обе библиотеки. Затем выберите копируемый класс, нажмите кнопку мыши и, удерживая ее нажатой, перенесите класс в новую библиотеку. В заключение отпустите кнопку мыши.

Для удаления класса из библиотеки выберите класс и нажмите кнопку Remove (Удалить) в окне проекта.

При необходимости вы можете переименовать выбранный класс, используя команду Rename (Переименовать) контекстного меню окна проекта.

Замечание

Для удаления класса из библиотеки классов вы можете воспользоваться командой REMOVE CLASS, а для изменения имени класса — командой RENAME CLASS.





Случайные файлы

Файл
2.10.doc
81301.rtf
160991.rtf
26575-1.rtf
74096-1.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.