
- •1. Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки
- •2.Основные понятия объектно-ориентированного программирования — класс, объект, поле, метод, свойство.
- •4.Конструкторы и деструкторы. Функциональное назначение. Виды конструкторов.
- •5.Объекты и их жизненный цикл. Создание и уничтожение объектов.
- •6.Инкапсуляция. Определение. Функциональное назначение. Реализация. Примеры применения
- •7 Инкапсуляция. Свойства. Функциональное назначение. Реализация. Создание индексатора. Примеры применения.
- •8.Инкапсуляция. Скрытие членов класса. Функциональное назначение. Реализация. Примеры применения.
- •9.Наследование. Функциональное назначение. Реализация. Примеры применения.
- •10.Наследование. Конструктор по умолчанию. Назначение.
- •11. Методы. Определение. Функциональное назначение. Способы реализации. Примеры применения.
- •12.Полиморфизм. Функциональное назначение. Способы реализации. Примеры применения.
- •13.Перегрузка методов. Функциональное назначение. Способ реализации. Примеры применения.
- •14.Виртуальные методы. Функциональное назначение. Примеры применения.
- •15.Перегрузка операций. Функциональное назначение. Способ реализации. Примеры применения.
- •17.Исключительные ситуации. Понятие. Способы обработки исключительных ситуаций. Примеры применения.
- •18.Интерфейсы. Функциональное назначение. Иерархия интерфейсов. Множественное наследование: проблемы и способы их разрешения.
- •Концепция типа данных. Встроенные типы данных и их реализация в языке с#
- •2. Концепция типа данных. Соглашения о совместимости и приведение типов
- •4. Концепция типа данных. Символьные типы данных.
- •5. Концепция типа данных. Составные типы данных. Массивы и их реализация в с#. Структуры.
- •7. Концепция типа данных. Определение собственных типов данных.
- •8. Концепция типа данных. Значащие (размерные) (Value type) и ссылочные (Reference type) типы данных. Упаковка и распаковка (Boxing, Unboxing).
- •9. Концепция типа данных. Переменные и константы и их реализация в с#.
- •10. Принцип модульности программ. Глобальные и локальные имена. Область видимости имен. Выбор области видимости.
- •12. Унарные и мультипликативные операции. Примеры применений.
- •13. Аддитивные и сдвиговые операции. Примеры применений.
- •11. Принцип модульности программ. Метод, как отдельный модуль программы. Интерфейсная и скрытая часть метода. Формальные и фактические параметры метода. Примеры применения.
- •14. Операции отношения и действий над типами данных. Примеры применений.
- •15. Логические операции. Примеры применений.
- •17. Операторы перехода и оператор присваивания.
- •16. Организация циклов в с#. Примеры применений.
- •18. Операторы условного перехода. Примеры применений.
Концепция типа данных. Встроенные типы данных и их реализация в языке с#
Концепция типов данных состоит в том, что каждой информации приписывается тип, который описывается: множеством допустимых значений типа, набором операций для этого типа, диапазоном допустимых значений, количеством памяти, необходимой для хранения данного типа. Тип данных определяет допустимые действия над данными.
Все встроенные типы C# однозначно отображаются, а фактически совпадают с системными типами каркаса Net Framework, размещенными в пространстве имен System. Поэтому всюду, где можно использовать имя типа, например, — int, с тем же успехом можно использовать и имя System.Int32.
Таблица, содержащая описание всех встроенных типов языка C# и их осн. характеристики
Логический тип Имя типа Системный тип Значения Размер Bool System.Boolean true, false 8 бит Арифметические целочисленные типы Имя типа Системный тип Диапазон Размер Sbyte System.SByte -128 — 127 Знаковое, 8 Бит Byte System.Byte 0 — 255 Беззнаковое, 8 Бит Short System.Short -32768 —32767 Знаковое, 16 Бит Ushort System.UShort 0 — 65535 Беззнаковое, 16 Бит Int System.Int32 ≈(-2*10^9 — 2*10^9) Знаковое, 32 Бит Uint System.UInt32 ≈(0 — 4*10^9) Беззнаковое, 32 Бит Long System.Int64 ≈(-9*10^18 — 9*10^18) Знаковое, 64 Бит Ulong System.UInt64 ≈(0— 18*10^18) Беззнаковое, 64 Бит Арифметический тип с плавающей точкой Имя типа Системный тип Диапазон Точность Float System.Single +1.5*10^-45 - +3.4*10^38 7 цифр Double System.Double +5.0*10^-324 - +1.7*10^308 15-16 цифр Арифметический тип с фиксированной точкой Имя типа Системный тип Диапазон Точность Decimal System.Decimal +1.0*10^-28 - +7.9*10^28 28-29 значащих цифр Символьные типы Имя типа Системный тип Диапазон Точность Char System.Char U+0000 - U+ffff 16 бит Unicode символ String System.String Строка из символов Unicode Объектный тип Имя типа Системный тип Примечание Object System.Object Прародитель всех встроенных и пользовательских типов
2. Концепция типа данных. Соглашения о совместимости и приведение типов
В программировании переменной одного типа часто присваивается значение переменной другого типа. Например, как показано в следующем фрагменте программы, мы могли бы присвоить переменной типа float значение типа int .
int i; float f;
i = 10; f = i; // float-переменной присваивается int-значение.
Если в инструкции присваивания смешиваются совместимые типы, значение с правой стороны (от оператора присваивания) автоматически преобразуется в значение "левостороннего" типа. Таким образом, в предыдущем фрагменте программы значение, хранимое в int-переменной i, преобразуется в значение типа float, а затем присваивается переменной f. Но, поскольку в С# не все типы совместимы и действует строгий контроль типов, не все преобразования типов разрешены в неявном виде. Например, типы bool и int несовместимы. Тем не менее с помощью операции приведения типов все-таки возможно выполнить преобразование между несовместимыми типами. Приведение типов — это выполнение преобразования типов в явном виде.
При присвоении значения одного типа данных переменной другого типа будет выполнено автоматическое преобразование типов, если: эти два типа совместимы; тип приемника больше (т.е. имеет больший диапазон представления чисел), чем тип источника.
При соблюдении этих двух условий выполняется преобразование с расширением, или расширяющее преобразование. Например, тип int — достаточно "большой" тип, чтобы сохранить любое допустимое значение типа byte, а поскольку как int , так и byte — целочисленные типы, здесь может быть применено автоматические преобразование. Для расширяющих преобразований числовые типы, включая целочисленные и с плавающей точкой, совместимы один с другим. Например, преобразование типов из long в double является расширяющим, которое выполняется автоматически.
double D; long L;
L = 100123285L; D = L;
Несмотря на возможность автоматического преобразования типов из long в double, обратное преобразование типов (из double в long) автоматически не выполняется, поскольку это преобразование не является расширяющим.
Несмотря на большую пользу автоматического преобразования типов оно не в состоянии удовлетворить все нужды программирования, поскольку реализуется только при расширяющем преобразовании между совместимыми типами. Во всех остальных случаях приходится применять приведение к типу. Приведение к типу — это явно заданная инструкция компилятору преобразовать один тип в другой. Инструкция приведения записывается в следующей общей форме:
(тип_приемника) выражение
Здесь элемент тип_приемника определяет тип для преобразования заданного выражения. Например, если вам нужно, чтобы выражение х/у имело тип int , напишите следующие программные инструкции:
double х, у; (int) (х / у) ;
В этом фрагменте кода, несмотря на то, что переменные х и у имеют тип double, результат вычисления заданного выражения приводится к типу int. Круглые скобки, в которые заключено выражение х / у , обязательны. В противном случае (без круглых скобок) операция приведения к типу int была бы применена только к значению переменной х, а не к результату деления. Для получения результата желаемого типа здесь не обойтись без операции приведения, поскольку автоматического преобразования из типа double в int не существует.
Если приведение приводит к сужающему преобразованию, возможна потеря информации. Например, в случае приведения типа long к типу int информация будет утеряна, если значение типа long больше максимально возможного числа, которое способен представить тип int , поскольку будут "усечены" старшие разряды long-значения. При выполнении операции приведения типа с плавающей точкой к целочисленному будет утеряна дробная часть простым ее отбрасыванием. Например, при присвоении переменной целочисленного типа числа 1,23 в действительности будет присвоено число 1. Дробная часть (0,23) будет утеряна.
// Приведение типа byte к типу char.
b = 88; // ASCII-код для буквы X.
ch = (char) b;
3. Концепция типа данных. Числовые типы данных.
Арифметические целочисленные типы Имя типа Системный тип Диапазон Размер Sbyte System.SByte -128 — 127 Знаковое, 8 Бит Byte System.Byte 0 — 255 Беззнаковое, 8 Бит Short System.Short -32768 —32767 Знаковое, 16 Бит Ushort System.UShort 0 — 65535 Беззнаковое, 16 Бит Int System.Int32 ≈(-2*10^9 — 2*10^9) Знаковое, 32 Бит Uint System.UInt32 ≈(0 — 4*10^9) Беззнаковое, 32 Бит Long System.Int64 ≈(-9*10^18 — 9*10^18) Знаковое, 64 Бит Ulong System.UInt64 ≈(0— 18*10^18) Беззнаковое, 64 Бит Арифметический тип с плавающей точкой Имя типа Системный тип Диапазон Точность Float System.Single +1.5*10^-45 - +3.4*10^38 7 цифр Double System.Double +5.0*10^-324 - +1.7*10^308 15-16 цифр Арифметический тип с фиксированной точкой Имя типа Системный тип Диапазон Точность Decimal System.Decimal +1.0*10^-28 - +7.9*10^28 28-29 значащих цифр