- •1. Эволюция языков программирования. Что такое net?
- •Internet и появление языка Java.
- •2.Компоненты платформы net.
- •3.Модель выполнения приложения в среде .Net Framework. Промежуточный язык Microsoft (Microsoft Intermediate Language, msil). Сборки.
- •4. Обзор встроенных типов данных c#. Применение встроенной функциональности типов данных.
- •5.Операции ввода/вывода. Формат вывода. Пространство имён System. Класс System.Math.
- •6.Операции, операторы и выражения в c# .
- •Операторы
- •7. Массивы в c# (одномерные и двумерные). Класс System.Random, применение его методов для создания массива случайных чисел. Класс System.Array, использование его методов и свойства Length.
- •8. Структуры в c#, создание структуры.
- •9. Понятие объектно-ориентированного программирования.
- •10. Классы в c#. Члены класса: методы, поля, свойства и события. Форма определения класса.
- •11. Типы значений и ссылочные типы. Динамическое использование памяти: стеки и кучи. Упаковка и распаковка.
- •12. Конструкторы и деструкторы. Сборка «мусора».
- •13. Определение пользовательских методов класса. Модификаторы доступа к методам класса. Параметры методов класса, передача аргументов. Модификаторы ref, out, params параметров методов.
- •14. Возвращение методами объектов класса. Возвращение методами массивов.
- •15. Общие (статические) члены класса. Доступ к общим членам. Ограничения на static-методы.
- •Ограничения на static-методы.
- •16.Область видимости и время существования переменных. Преобразование и приведение типов.
- •17.Обработка исключительных ситуаций.
- •18.Перегрузка методов. Перегрузка конструкторов.
- •19.Перегрузка операторов. Перегрузка бинарных, унарных и операторов отношений.
- •20. Инкапсуляция и свойства. Формат записи свойств.
- •21.Индексаторы. Специальные приемы построения типов. Создание одномерного индексатора.
- •22.Создание двумерного индексатора.
- •23.Механизмы реализации инкапсуляции в c#.
- •24.Базовые классы и наследование. Доступы к членам классов.
- •25.Конструкторы и наследование.
- •26.Ссылки на базовый класс и объекты производных классов.
- •27.Виртуальные методы и их переопределение.
- •28.Использование абстрактных классов.
- •29.Механизмы реализации полиморфизма в c#.
- •30.Интерфейсы. Реализация интерфейсов. Стандартные интерфейсы среды .Net Framework.
- •31.Коллекции. Классы коллекций общего назначения.
- •32.Делегаты. Назначение делегатов. Многоадресатная передача.
- •33.События. Объявление и генерация событий. Реализация обработчиков событий
- •34.Обзор технологий программирования Windows-приложений.
- •35.Архитектура Windows Forms. Класс Form.
- •36.Элементы управления формы
23.Механизмы реализации инкапсуляции в c#.
Инкапсуляция — это механизм программирования, который связывает код (действия) и данные, которыми он манипулирует, и при этом предохраняет их от вмешательства извне и неправильного использования. В объектно-ориентированном языке код и данные можно связать таким образом, что будет создан автономный черный ящик. Внутри этого ящика находятся все необходимые данные и код. При таком связывании кода и данных создается объект. Другими словами, объект — это элемент, который поддерживает инкапсуляцию. Код, данные или обе эти составляющие объекта могут быть закрытыми внутринего или открытыми. Закрытый код или закрытые данные известны лишь остальной части этого объекта и доступны только ей. Это означает, что к закрытому коду или данным не может получить доступ никакая другая часть программы, существующая вне этого объекта. Если код или данные являются открытыми, к ним (несмотря на то, что они определены внутри объекта) могут получить доступ другие части программы. Как правило, открытые части объекта используются для обеспечения управляемого интерфейса с закрытыми элементами. Основной единицей инкапсуляции в С# является класс. Класс определяет форму объекта. Он задает как данные, так и код, который будет оперировать этими данными.В С# класс используется для создания объектов. Объекты — это экземпляры класса. Таким образом, класс — это по сути набор шаблонных элементов, которые показывают, как построить объект. Код и данные, которые составляют класс, называются членами класса. Данные, определенные в классе, называются переменными экземпляра (instance variable), а код, который оперирует этими данными, — методами-членами (member method), или просто методами. "Метод" — это термин, применяемый в С# для обозначения подпрограммы. Если вы знакомы с языками С или C++, то, вероятно, догадываетесь о том, что-то, что С#-программист называет методом, С/С++-программист назовет функцией. А поскольку С# — прямой потомок C++, термин "функция" также приемлемо использовать, когда речь идет о С#-методе.
24.Базовые классы и наследование. Доступы к членам классов.
Наследование является одним из фундаментальных понятий объектно-ориентированных систем. Под этим термином понимают возможность передачи данных и средств исполнения от родительского объекта. Вместо того, чтобы создавать новый объект с самого начала используют уже готовый объект и дополняют его теми средствами, которые необходимы.
Т.о.наследование упрощает многократное использование программного кода.
Наследование бывает 2-х видов:
-классическое(отношение подчиненности);
-модель локализации\диллегирования(объект уже не явл. уточненной версией др.объекта, а содержит в себе этот объект);
Наследование часто применять не нужно, а лишь там, где оно оправдано.
Класс, который наследуется, называется базовым; который наследует базовый – производным. Следовательно, производный класс – специализированная версия базового класса. При объявлении производного класса сначала записывается Имя_ производного класса: Имя_ базового.
Для создаваемого производного класса можно указать только один базовый класс. В С# в отличии от С++ не поддерживается наследование нескольких базовых классов в одном производном. Однако, можно создать иерархию наследования, в кот.один производный класс становится базовым для другого производного. В С# множественное наследование реализуется через интерфейс.
Доступы к членам классов и наследования.
В классах проекта Figura поля класса объявлены как public. Здесь нарушен принцип инкапсуляции. Можно эти поля объявить как private, но тогда производные классы не получат доступа к ним. Есть 2способа решения проблемы доступа к закрытым членам базового класса:
1.использовать public-свойства или методы, позволяющие получить доступ к закрытым членам базового класса;
2.использовать уровень доступа protected(защищен).
Использование защищенного доступа.
Защищенным явл. член класса, кот. открыт для своей иерархии класса, но закрыт вне этой иерархии.
Защищенный член класса создается с помощью модификатора доступа protected. По сути он явлю закрытым, но с одним исключением. Это исключение вступает в силу, когда защищенный член класса наследуется. В этом случае защищенный член базового класса становится защищен.членом производного класса, а следовательно доступным для производного класса.