Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры C#.doc
Скачиваний:
16
Добавлен:
22.09.2019
Размер:
472.58 Кб
Скачать

23.Механизмы реализации инкапсуляции в c#.

Инкапсуляция — это механизм программирования, который связывает код (действия) и данные, которыми он манипулирует, и при этом предохраняет их от вмешательства извне и неправильного использования. В объектно-ориентированном языке код и данные можно связать таким образом, что будет создан автономный черный ящик. Внутри этого ящика находятся все необходимые данные и код. При таком связывании кода и данных создается объект. Другими словами, объект — это элемент, который поддерживает инкапсуляцию. Код, данные или обе эти составляющие объекта могут быть закрытыми внутринего или открытыми. Закрытый код или закрытые данные известны лишь остальной части этого объекта и доступны только ей. Это означает, что к закрытому коду или данным не может получить доступ никакая другая часть программы, существующая вне этого объекта. Если код или данные являются открытыми, к ним (несмотря на то, что они определены внутри объекта) могут получить доступ другие части программы. Как правило, открытые части объекта используются для обеспечения управляемого интерфейса с закрытыми элементами. Основной единицей инкапсуляции в С# является класс. Класс определяет форму объекта. Он задает как данные, так и код, который будет оперировать этими данными.В С# класс используется для создания объектов. Объекты — это экземпляры класса. Таким образом, класс — это по сути набор шаблонных элементов, которые показывают, как построить объект. Код и данные, которые составляют класс, называются членами класса. Данные, определенные в классе, называются переменными экземпляра (instance variable), а код, который оперирует этими данными, — методами-членами (member method), или просто методами. "Метод" — это термин, применяемый в С# для обозначения подпрограммы. Если вы знакомы с языками С или C++, то, вероятно, догадываетесь о том, что-то, что С#-программист называет методом, С/С++-программист назовет функцией. А поскольку С# — прямой потомок C++, термин "функция" также приемлемо использовать, когда речь идет о С#-методе.

24.Базовые классы и наследование. Доступы к членам классов.

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

Т.о.наследование упрощает многократное использование программного кода.

Наследование бывает 2-х видов:

-классическое(отношение подчиненности);

-модель локализации\диллегирования(объект уже не явл. уточненной версией др.объекта, а содержит в себе этот объект);

Наследование часто применять не нужно, а лишь там, где оно оправдано.

Класс, который наследуется, называется базовым; который наследует базовый – производным. Следовательно, производный класс – специализированная версия базового класса. При объявлении производного класса сначала записывается Имя_ производного класса: Имя_ базового.

Для создаваемого производного класса можно указать только один базовый класс. В С# в отличии от С++ не поддерживается наследование нескольких базовых классов в одном производном. Однако, можно создать иерархию наследования, в кот.один производный класс становится базовым для другого производного. В С# множественное наследование реализуется через интерфейс.

Доступы к членам классов и наследования.

В классах проекта Figura поля класса объявлены как public. Здесь нарушен принцип инкапсуляции. Можно эти поля объявить как private, но тогда производные классы не получат доступа к ним. Есть 2способа решения проблемы доступа к закрытым членам базового класса:

1.использовать public-свойства или методы, позволяющие получить доступ к закрытым членам базового класса;

2.использовать уровень доступа protected(защищен).

Использование защищенного доступа.

Защищенным явл. член класса, кот. открыт для своей иерархии класса, но закрыт вне этой иерархии.

Защищенный член класса создается с помощью модификатора доступа protected. По сути он явлю закрытым, но с одним исключением. Это исключение вступает в силу, когда защищенный член класса наследуется. В этом случае защищенный член базового класса становится защищен.членом производного класса, а следовательно доступным для производного класса.