- •2.Основные понятия объектно-ориентированного программирования — класс, объект, поле, метод, свойство.
- •4.Конструкторы и деструкторы. Функциональное назначение. Виды конструкторов.
- •5.Объекты и их жизненный цикл. Создание и уничтожение объектов.
- •6. Инкапсуляция. Определение. Функциональное назначение. Реализация. Примеры применения
- •7 Инкапсуляция. Свойства. Функциональное назначение. Реализация. Создание индексатора. Примеры применения.
- •8.Инкапсуляция. Скрытие членов класса. Функциональное назначение. Реализация. Примеры применения.
- •9.Наследование. Функциональное назначение. Реализация. Примеры применения.
- •10.Наследование. Конструктор по умолчанию. Назначение.
- •13. Методы. Определение. Функциональное назначение. Способы реализации. Примеры применения.
- •14.Полиморфизм. Функциональное назначение. Способы реализации. Примеры применения.
- •15.Перегрузка методов. Функциональное назначение. Способ реализации. Примеры применения.
- •16.Виртуальные методы. Функциональное назначение. Примеры применения.
- •17.Перегрузка операций. Функциональное назначение. Способ реализации. Примеры применения.
- •19.Исключительные ситуации. Понятие. Способы обработки исключительных ситуаций. Примеры применения.
- •20.Интерфейсы. Функциональное назначение. Иерархия интерфейсов. Множественное наследование: проблемы и способы их разрешения.
- •Interface имя{ тип_возврата имя_метода1 {список_параметров) ;
- •Void iProps.Prop3() { Console.WriteLine("Свойство 3 интерфейса 1"); }
- •Void iPropsOne.Prop3() { Console.WriteLine("Свойство 3 интерфейса 2"); }
- •21. Структуры (struct) и перечисления (enum). Отличия структур от классов.
- •1 RedDel имеет значение 2
- •Концепция типа данных. Встроенные типы данных и их реализация в языке с#
- •Концепция типа данных. Соглашения о совместимости и приведение типов
- •Концепция типа данных. Числовые типы данных.
- •Концепция типа данных. Символьные типы данных.
- •Концепция типа данных. Составные типы данных. Массивы и их реализация в с#. Структуры.
- •Концепция типа данных. Явное и неявное преобразование типов.
- •7. Концепция типа данных. Определение собственных типов данных.
- •Концепция типа данных. Значащие (размерные) (Value type) и ссылочные (Reference type) типы данных. Упаковка и распаковка (Boxing, Unboxing).
- •Концепция типа данных. Переменные и константы и их реализация в с#.
- •10. Принцип модульности программ. Глобальные и локальные имена. Область видимости имен. Выбор области видимости.
- •11. Принцип модульности программ. Метод, как отдельный модуль программы. Интерфейсная и скрытая часть метода. Формальные и фактические параметры метода. Примеры применения.
- •12. Унарные и мультипликативные операции. Примеры применений.
- •13. Аддитивные и сдвиговые операции. Примеры применений.
- •14. Операции отношения и действий над типами данных. Примеры применений.
- •If (a is a) Console.WriteLine("Объект а имеет тип a.");
- •If(b is в) Console.WriteLine("Объект b имеет тип в."); if(a is object) Console.WriteLine("а — это объект."); }}
- •15. Логические операции. Примеры применений.
- •16. Организация циклов в с#. Примеры применений.
- •17. Операторы перехода и оператор присваивания.
- •18. Операторы условного перехода. Примеры применений.
Концепция типа данных. Переменные и константы и их реализация в с#.
Переменная — это экземпляр типа. Скалярную переменную можно рассматривать как сущность, обладающую именем, значением и типом. Имя и тип задаются при объявлении переменной и остаются неизменными на все время ее жизни. Значение переменной может меняться в ходе вычислений. Получение начального значения переменной называется ее инициализацией. Попытка использовать неинициализированную переменную приводит к ошибкам, обнаруживаемым еще на этапе компиляции. Объявление переменных:
int x, s; //без инициализации x=10; s=20; //отложенная инициализация
int y =0, u = 77; //обычный способ инициализации
int z= new int(); //допустимая инициализация в объектном стиле
Любой блок определяет область объявления, или область видимости (scope) объектов. Блок начинается открывающей, а завершается закрывающей фигурными скобками. Таким образом, при создании блока создается и новая область видимости, которая определяет, какие объекты видимы для других частей программы. Область видимости также определяет время существования этих объектов. Самыми важными в С# являются области видимости, которые определены классом и методом. Область видимости, определяемая методом, начинается с открывающей фигурной скобки. Но если метод имеет параметры, они также относятся к области видимости метода.
Как правило, переменные, объявленные в некоторой области видимости, невидимы (т.е. недоступны) для кода, который определяется вне этой области видимости. Таким образом, при объявлении переменной внутри области видимости вы локализируете ее и защищаете от неправомочного доступа и/или модификации. Эти правила области видимости обеспечивают основу для инкапсуляции.
int x; // Переменная х известна всему коду в пределах метода Main().
х = 10; if(х = = 10) { // Начало новой области видимости,
int у = 20; // Переменная у известна только этому блоку.
// Здесь известны обе переменные х и у. }
// у = 100; // Переменная у здесь неизвестна. // Переменная х здесь известна.
Переменные создаются после входа в их область видимости, а разрушаются при выходе из нее. Таким образом, переменная, объявленная внутри некоторого метода, не будет хранить значение между вызовами этого метода. Время существования переменной ограничивается ее областью видимости.
Константы C# могут появляться, как обычно, в виде литералов и именованных констант. Вот пример константы, заданной литералом и стоящей в правой части оператора присваивания: y = 7.7f; // константа типа float
Значение константы "7.7f" является одновременно ее именем, оно же позволяет однозначно определить тип константы. Заметьте, иногда, как в данном случае, приходится добавлять к значению специальные символы для точного указания типа. Синтаксис объявления: добавляется модификатор const, инициализация констант обязательна и не может быть отложена.
Пример объявления констант:
const int SmallSize = 38, LargeSize =58; const int MidSize = (SmallSize + LargeSize)/2;
const double pi = 3.141593;
