Слайд 2Развитие программирования
Структурное программирование
С
ООП
С++
Java
Microsoft
С#
Слайд 3Платформа .NET
Платформа .NET состоит из общеязыковой среды выполнения (среды CLR) и библиотеки
классов .NET Framework.
Слайд 6Определение
Объе́ктно-ориенти́рованное программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия
объектов и классов (либо, в менее известном варианте языков с прототипированием, — прототипов)
Слайд 83 концепции*
Все языки OOP основаны на трёх основополагающих концепциях
ИНКАПСУЛЯЦИЯ
НАСЛЕДОВАНИЕ
ПОЛИМОРФИЗМ
Слайд 9ИнКАПСУЛяция
это механизм, который объединяет данные и код, манипулирующий этими данными, а также
защищает и то, и другое от внешнего вмешательства или неправильного использования.
Слайд 12Абстракция
придание объекту характеристик, которые отличают его от всех других объектов, четко определяя
его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов
Слайд 13Абстракция
Фундаментальная идея состоит в разделении несущественных деталей реализации подпрограммы и характеристик существенных
для корректного ее использования. Такое разделение может быть выражено через специальный «интерфейс», сосредотачивающий описание всех возможных применений программы
Слайд 14Абстракция
Автосалон
Страховая компания
Владелец
ГИБДД
Слайд 16Классы
это элемент, описывающий абстрактный тип данных и его частичную или полную реализацию.
Наряду с понятием «объекта» класс является ключевым понятием в ООП.
Слайд 18Объект класса
это переменная от класса
<Название класса> <имя переменной> = new <Название класса>(<параметры>);
Слайд 19Что есть у классов
Поля
Константы
Свойства
Методы
Конструкторы и деструктор
События
Индексаторы
Операторы
Вложенные типы
Слайд 20Поля
Поле - это переменная любого типа, которая объявлена непосредственно в классе
Слайд 21Поля
Поля инициализируются непосредственно перед вызовом конструктора для экземпляра объекта.
Поля могут быть
отмечены модификаторами доступа
Также при необходимости поле может быть объявлено с модификатором static.
Слайд 23Константы
Константы предназначены для описания таких значений, которые не должны изменяться в программе.
Для определения констант используется ключевое слово const:
Слайд 24Свойства
это член, предоставляющий гибкий механизм для чтения, записи или вычисления значения закрытых
полей. Свойства фактически представляют собой специальные методы, называемые методами доступа. Это позволяет легко получать доступ к данным и помогает повысить безопасность и гибкость методов.
Слайд 25Свойства
У свойства могут быть два ключевых слова set и get
Слайд 28Методы
это блок кода, содержащий ряд инструкций. Программа инициирует выполнение инструкций, вызывая метод
и указывая все аргументы, необходимые для этого метода. В C# все инструкции выполняются в контексте метода.
Слайд 29Сигнатура метода
Методы объявляются в классе или в структуре путем указания модификаторов доступа,
необязательных модификаторов, (abstract или sealed), возвращаемого значения, имени метода и всех параметров этого метода. Все эти части вместе представляют собой сигнатуру метода.
Слайд 32Необязательные параметры
C# позволяет использовать необязательные параметры. Для таких параметров нам необходимо объявить
значение по умолчанию.
Слайд 33Именованные параметры
Именованные параметры позволяют нарушать порядок передачи параметров в функцию.
Слайд 34Модификаторы доступа
public
protected
internal
protected internal
private (по умолчанию)
Слайд 35Зачем они? public
Общий (public) доступ является уровнем доступа с максимальными правами. Ограничений
доступа к общим членам не существует.
Слайд 36Зачем они? private
Закрытый (private) доступ является уровнем доступа с минимальными правами. Доступ
к закрытым членам можно получить только внутри тела класса, в которой они объявлены.
Слайд 39Типы данных
Ссылочные
(классы, массивы, интерфейсы, делегаты)
типы-значения (элементарные типы, перечисления, структуры)
Слайд 40Перечисления
Перечисление объявляется с помощью ключевого слова enum, идентифицируется по имени и представляет
собой непустой список неизменяемых именованных значений интегрального типа.
Слайд 42Структурные типы
Структуры делятся на следующие категории:
Числовые типы
Целочисленные типы
Типы с плавающей запятой
decimal
bool
Структуры, определяемые
пользователем.
Слайд 44Привидение типов
Используемые в программе типы характеризуются собственными диапазонами значений, которые определяются свойствами
типов – в том числе и размером области памяти, предназначенной для кодирования значений соответствующего типа.
Слайд 45Привидение типов
int a = 10;
short d = 30;
long l = 40005;
int df
= a + d +l;
System.Convert
Слайд 46Упаковка и распаковка
Упаковка представляет собой процесс преобразования типа значения в тип object
или в любой другой тип интерфейса, реализуемый этим типом значения.
Когда тип значения упаковывается средой CLR, она создает оболочку значения внутри System.Object и сохраняет ее в управляемой куче.
Слайд 47Boxing и unboxing
Упаковка используется для хранения типов значений в куче со сбором
мусора.
int i = 123;
object o = i;
Слайд 48Boxing и unboxing
Распаковка является явным преобразованием из типа object в тип значения.
int
i = 123;
object o = i;
int j = (int)o;
Слайд 50Область видимости
Переменные можно объявлять в любом месте блока. Точка объявления переменной
в буквальном смысле соответствует месту ее создания.
Новый блок – новая область видимости. Объекты, объявляемые во внутренних блоках, не видны во внешних блоках.
Блок ограничивается { }
Слайд 51Область видимости
Объекты, объявленные в методе и во внешних блоках, видны и
во внутренних блоках.
Одноименные объекты во вложенных областях конфликтуют.
Объекты, объявляемые в блоках одного уровня вложенности в методе, не видны друг для друга. Конфликта имен не происходит.
Слайд 53Объявление и инициализация
В чем разница?
int a;
int a = 8;
Console.WriteLine(a.toString());
Слайд 54Переполнение
int a = 2000000000;
int b = 2000000000;
Console.WriteLine("a = {0}\nb = {1}\n", a,
b);
Console.WriteLine("a + b = {0}", a + b);
Слайд 55Переполнение
Причиной некорректных результатов выполнения арифметических операций является особенность представления значений арифметических типов.
Арифметические типы имеют ограниченные размеры. Поэтому любая арифметическая операция может привести к переполнению.
Слайд 57checked и unchecked
unchecked
{
w = x+y;
}
checked
{
z = x+w;
}