- •1. Эволюция языков прогр-я.
- •2. Что такое .Net? Обзор технологий программирования под Windows.
- •3. Компоненты платформы .Net. Что такое .Net Framework?
- •4. Модель выполнения приложения в среде .NetFramework. Промежуточныйязык Microsoft (Microsoft Intermediate Language, msil). Сборки
- •5. Обзор встр. Типов данных в с#. Применение встроенной функц-сти типов данных.
- •6. Операции ввода-вывода. Формат вывода. Пространство имён System. Класс Math. Пространство имён System и класс Math
- •7. Арифметические операции. Операции отношений и логические операции. Операторы и выражения в c# .
- •Операторы сравнения в c#. Лог. Операции для условий
- •Операторы
- •8. Одномерные массивы в c#. Класс System.Random, применение его методов для создания массива случайных чисел. Класс System.Array, использование его методов и свойства Length.
- •9. Двумерныемассивы в c#. Виды двумерных массивови способы их определения; способы создания; построчный вывод на экран
- •10. Структуры в c#. Создание структур, доступ к элементам, массивы структур.
- •11.Объект и его свойства. Характеристики ооп.
- •12.Классы в c#. Форма определения класса. Члены класса: методы, поля, свойства и события.
- •13.Конструкторы. Параметризованные конструкторы. Использование оператора new.
- •14. Типы значений и ссылочные типы. Динамическое использование памяти: стеки и кучи. Упаковка и распаковка.
- •15. Деструкторы. Сборка «мусора».
- •16. Определение методов класса. Модификаторы доступа к методам класса. Параметры методов класса, передача аргументов.
- •17. Модификаторы ref, out, params параметров методов.
- •18. Общие (статические) члены класса. Доступ к общим членам. Ограничения на static-методы.
- •19.Область видимости и время существования переменных.
- •20. Преобразование и приведение типов.
- •21. Обработка исключительных ситуаций.
- •22. Перегрузка методов и перегрузка конструкторовкак механизм реализации полиморфизма. Виды конструкторов.
- •23. Понятие стека. Класс «Стек из символов», его основные методы.
- •24. Перегрузка операторов. Перегрузка бинарных, унарных и операторов отношений.
- •25. Свойства как механизм реализации инкапсуляции. Формат записи свойств.
- •26. Индексаторы. Специальные приемы построения типов. Создание одномерных и двумерных индексаторов.
- •27.Наследование. Базовые и производные классы. Доступы к членам базовых классов.
- •28.Конструкторы и наследование (проект «Наследование»).
- •29. Ссылки на базовый класс и объекты производных классов.
- •30. Виртуальные методы и их переопределение.
- •31. Абстрактные классы.
- •32. Понятие интерфейса. Определение интерфейса.
- •33. Способы реализации интерфейса.
- •34.Некоторые станд.Интерфейсы среды .Net Framework.
- •35. Механизмы реализации полиморфизма в c#.
- •36. Понятие обобщенного программирования. Принципы обобщенного программирования (абстрагирование, иерархия, типизация).
- •37. Коллекции и наборы. Обзор коллекций. Интерфейсы коллекций. Классы коллекций общего назначения.
- •38. Классы ArrayList, Queue, Stack. Методы работы с различными структурами данных.
- •39. Динамическая идентификация типов. Проверка типа с помощью ключевого слова is. Использование операторов as, typeof.
- •40. Обобщение. Разработка обобщенных наборов, методов, классов.
- •41. Отражение и атрибуты. Понятие отражения. Класс System.Type. Получение информации о методах и типах. Атрибуты. Основы применения атрибутов.
- •42.Принципы работы Windows-приложений c пользователем.
- •43. Делегаты. Назначение делегатов. Многоадресатная передача.
- •44. События. Объявление и генерация событий. Реализация обработчиков событий.
- •Объявление события:
- •45.Понятие компонента и компонентной модели, компонентно-ориентированного программирования.
- •46.Принципы и технологии внедрения и связывания объектов. Ос Windows позволяет:
25. Свойства как механизм реализации инкапсуляции. Формат записи свойств.
Все объектно-ориентир.языки исп-т 3 базовых принципа объектно-ориентириентированного программирования: -инкапсуляция- как данный язык скрывает внутренние особенности реализации объектов; -наследование- как данный язык обеспечивает возможность многократного использования программного кода; -полиморфизм- как данный язык позволяет интерпретировать родственные объекты унифицированным способом(это перегрузка методов и конструкторов, переопределение методов). Одним из аспектов инкапсуляции является защита данных. Данные об объекте должны определяться как приватные (private). Это значит, что поля данных объекта (члены переменные класса) не должны быть непосредственно доступны из открытого интерфейса. Если пользователь объекта желает изменить сост.объекта, то он должен делать это косвенно, с помощью методов чтения (get()) и модификации (set()). Платформа .NET реализует принцип инкапсуляции на основе использования свойств. Свойства – специальный член класса, позволяющий получить доступ к полю данных об объекте. Для хранения свойств память не выдел. Свойства используются для инкапсуляции полей в классе, позволяя выполнять чтение и запись их значений. Свойство состоит из имени или двух блоков программного кода, называемых функциями доступа или аксессорами(для чтения - get(), для записи-set()). Имя свойства можно использовать в выражениях и в операторах присваивания как обычную переменную.
Формат записи св-в: public тип_св-ва Имя_св-ва {get { // оператор чтения поля } set {// операторы модифик.поля } }
Аксессор set автомат.принимает параметр value, кот.содержит значение, присваиваемое св-ву. Можно присваивать св-ва, предназн.только для чтения либо только для записи. Св-во не должно изменять состояние члена-перем.при вызове get-аксессоров, но компилятор не обнаружит изменения. Св-во нельзя передавать методу в качестве ref или out параметра. Св-ва нельзя перегружать. Можно создавать стат.св-во. Преим-ва св-в в том, что пользователи объекта получ.возм-сть изменять внутр.данные и использовать св-ва в выражениях.
26. Индексаторы. Специальные приемы построения типов. Создание одномерных и двумерных индексаторов.
В некот. ситуациях бывает удобно индексировать содержимое объекта так, словно он представляет собой массив. Индексация массивов реализуется с использованием оператора [ ]. Св-ва и индексаторы расширяют возм-сти класса. Свойства и индексаторы расширяют возможности класса. Св-ва предлагают эффект. способ управления доступом к данным экземпляра класса. Индексаторы обеспечивают механизм, посредством кот. к объектам можно получать доступ по индексам на основе синтаксиса массивов. Индексатор позволяет обеспечить индексированный доступ к объекту. Гл. назначение – создавать специализированные массивы, на кот. налагается одно или несколько ограничений. Индексаторы служат для доступа к классам, содержащим наборы похожих элементов. При работе с коллекциями доступ 1) к их содержимому осуществляется с помощью индексатора. С помощью индексатора можно также работать с коллекцией, как с обычным массивом. 2) привести примеры семейств из офисных пакетов. 3) при использовании индексаторов пользовательские типы коллекции лучше согласуются со структурой библиотек базовых классов .Net. Индексатор в С# представляет собой несколько “искаженное” свойство. Объявление индексаторов позволяет создать классы, имитирующие виртуальные массивы. Индексаторы могут характеризоваться одной или несколькими размерностями. Одномерные индексаторы. Формат записи: public Тип_возврата this[int index] { get { // возврат значения, заданного с пом.индекса } set { // установка значения, заданного с пом.индекса } } Объявление индексатора очень похоже на объявление св-ва. Оба аксессора в кач-ве параметра принимают индекс. Если индекс стоит слева от оператора присваивания, то вызывается аксессор set и устанавливается элемент, заданный параметром индекс. В противном случае вызывается аксессор get и возвращается значение, соответствующее параметру индекс. Индексаторы необязат.создавать с поддержкой как get- , так и set- аксессоров. Можно создать индексатор, предназначенный только для чтения (реализовав только get-аксессор) или только для записи (реализовав только set-аксессор). Индексаторы можно перегружать. Чаще всего индексатор перегружается, чтобы иметь возможность использовать объект класса в качестве индекса, значение которого вычисляется специальным образом. Индексаторы без использования базового массива. Индексатор может не использовать базовый массив. Вполне достаточно, чтобы индексатор обеспечивал функционирование, кот. для пользователя выглядело бы, как будто идет работа с массивом (виртуальный массив). Создание двумерного индексатора. Можно создавать и многомерные индексаторы. Задание 3: Добавить в проект Matrix класс bezop_mas2D, содержащий двумерный индексатор: class bezop_mas2D
{ int [,] mas; // ваше имя массива
int rows, cols; // ваши имена размерностей
public int dlina; // количество элементов в матрице
public bool errflag; //коструктор
public beop_mas2D(int r, int c)
{ rows = r; сols = c; mas = new int[rows, cols]; dlina = rows * cols; }
//Индексатор: public int this [int index1, int index2]
{ get { if(ok(index1, index2))
{ errflag = false; return mas[index1, index2]; }
else { errflug = true; return 0; } }
set { if(ok(index1, index2))
{ mas[index1, index2] = value; errflag = false; }
else errflag = true; }
private bool ok(int index1, int index2)
{ if(index1 >= 0 && index1 < rows && index2 >= 0 && index2 < cols)
return true;
return false; } ←// для индексатора }←// для класса
//Проверить работу класса в main():
bezop_mas2D mas2D = new bezop_mas2D(3,5);
Console.WriteLine(“Мягкое приземление при работе с матрицей”);
for (i = 0; i < 6; i++) mas2D[i, i] = I * 10;
Console.WriteLine(“Работа с уведомлением об ошибках”);
for(i = 0; i < 6; i++)
{ mas2D[i, i] = i * 10; If(mas2D.errflag)
Console.WriteLine(“mas2D[” + i + “,” + i + “] вне границ”); } Console.WriteLine();
Cоnsole.WriteLine(“Создана матрица”); for(i = 0; i < 6; i++) {x = mas2D[i, i];
if(!mas2D.errflag) Console.Write(x + “ ”);
else Console.WriteLine(“mas2D[” + i + “,” + i + “] вне границ”); } } }
Индексаторы и свойства применяются для разработки массивов ( в виде класса ), в которых границы индексов устанавливает пользователь, т.к. не всегда удобна индексация с нуля.