- •Введение в c# и платформу .Net Философия .Net
- •Введение в строительные блоки платформы .Net (clr, cts и cls)
- •Роль библиотек базовых классов
- •Понятие общей системы типов (cts)
- •Понятие общеязыковой спецификации (cls)
- •Понятие общеязыковой исполняющей среды (clr)
- •Различия между сборками, пространствами имен и типами
- •Лабораторная работа №1. Создание приложений на языке c# без использования ide Роль .Net Framework 4.5 sdk
- •Построение приложений c# с использованием csc.Ехе
- •Указание целевых входных и выходных параметров
- •Ссылка на внешние сборки
- •Компиляция нескольких файлов исходного кода
- •Лабораторная работа №2. Построение приложений .Net с помощью Visual Studio Создание нового проекта
- •Использование утилиты Solution Explorer
- •Ссылка на внешние сборки
- •Утилита Object Browser
- •Фрагменты кода и технология Surround With
- •Утилита Class Designer
- •Лабораторная работа №3. Основы программирования на c# Структура простой программы c#
- •Класс System.Console
- •Форматирование числовых данных
- •Системные типы данных и соответствующие ключевые слова c#
- •Объявление и инициализация переменных
- •Иерархия классов для типов данных
- •Члены числовых типов данных
- •Члены System.Boolean
- •Члены System.Char
- •Работа со строковыми данными
- •Базовые манипуляции строками
- •Управляющие последовательности
- •Итерационные конструкции c#
- •Лабораторная работа №4. Главные конструкции программирования на с# Методы и модификаторы параметров
- •Стандартное поведение передачи параметров по значению
- •Модификатор out
- •Модификатор ref
- •Модификатор params
- •Определение необязательных параметров
- •Вызов методов с использованием именованных параметров
- •Массивы в c# Объявление и инициализация массивов
- •Определение массива объектов
- •Базовый класс System.Array
- •Управление хранилищем, лежащим в основе перечисления
- •Объявление переменных типа перечисления
- •Динамическое извлечение пар “имя/значение” перечисления
- •Типы структур
- •Объектно- ориентированное программирование на c# Лабораторная работа №5. Работа с классами Знакомство с типом класса c#
- •Размещение объектов с помощью ключевого слова new
- •Определение специальных конструкторов
- •Роль ключевого слова this
- •Еще раз о необязательных аргументах
- •Понятие ключевого слова static
- •Определение статических полей данных
- •Определение статических классов
- •Основные принципы объектно-ориентированного программирования
- •Роль инкапсуляции
- •Роль наследования
- •Роль полиморфизма
- •Лабораторная работа №6. Инкапсуляция Модификаторы доступа c#
- •Стандартные модификаторы доступа
- •Первый принцип: службы инкапсуляции c#
- •Инкапсуляция с использованием традиционных методов доступа и изменения
- •Использование свойств внутри определения класса
- •Свойства, доступные только для чтения и только для записи
- •Взаимодействие с автоматическими свойствами
- •Понятие синтаксиса инициализации объектов
- •Работа с данными константных полей
- •Понятие полей, допускающих только чтение
- •Понятие частичных типов
- •Лабораторная работа №7. Наследование Базовый механизм наследования
- •Указание родительского класса для существующего класса
- •Ключевое слово sealed
- •Управление созданием базового класса с помощью ключевого слова base
- •Хранение секретов семейства: ключевое слово protected
- •Добавление запечатанного класса
- •Реализация модели включения/делегации
- •Определения вложенных типов
- •Лабораторная работа №8. Полиморфизм
- •Переопределение виртуальных членов в ide-среде Visual Studio
- •Запечатывание виртуальных членов
- •Абстрактные классы
- •Понятие полиморфного интерфейса
- •Сокрытие членов
- •Правила приведения к базовому и производному классу
- •Ключевое слово as
- •Ключевое слово is
- •Главный родительский класс System.Object
- •Переопределение System.Object.ToString()
- •Переопределение System.Object.Equals()
- •Статические члены System.Object
- •Лабораторная работа №9. Структурированная обработка исключений
- •Роль обработки исключений .Net
- •Строительные блоки обработки исключений в .Net
- •Базовый класс System.Exception
- •Простейший пример
- •Генерация общего исключения
- •Перехват исключений
- •Конфигурирование состояния исключения
- •Исключения уровня приложения (System.ApplicationException)
- •Построение специальных исключений, способ первый
- •Построение специальных исключений, способ второй
- •Обработка нескольких исключений
- •Общие операторы catch
- •Внутренние исключения
- •Какие исключения могут генерировать методы?
- •Результат наличия необработанных исключений
- •Лабораторная работа №10. Работа с интерфейсами Понятие интерфейсных типов
- •Реализация интерфейса
- •Вызов членов интерфейса на уровне объектов
- •Получение ссылок на интерфейсы: ключевое слово as
- •Получение ссылок на интерфейсы: ключевое слово is
- •Использование интерфейсов в качестве параметров
- •Использование интерфейсов в качестве возвращаемых значений
- •Массивы интерфейсных типов
- •Явная реализация интерфейсов
- •Проектирование иерархий интерфейсов
- •Множественное наследование посредством интерфейсных типов
ООП в С#
Оглавление
Введение в C# и платформу .NET 5
Философия .NET 5
Введение в строительные блоки платформы .NET (CLR, CTS и CLS) 5
Роль библиотек базовых классов 6
Понятие общей системы типов (CTS) 8
Понятие общеязыковой спецификации (CLS) 11
Понятие общеязыковой исполняющей среды (CLR) 11
Различия между сборками, пространствами имен и типами 12
Лабораторная работа №1. Создание приложений на языке C# без использования IDE 14
Роль .NET Framework 4.5 SDK 14
Построение приложений C# с использованием csc.ехе 15
Указание целевых входных и выходных параметров 16
Ссылка на внешние сборки 17
Компиляция нескольких файлов исходного кода 18
Лабораторная работа №2. Построение приложений .NET с помощью Visual Studio 20
Создание нового проекта 20
Использование утилиты Solution Explorer 20
Ссылка на внешние сборки 21
Утилита Object Browser 23
Фрагменты кода и технология Surround With 25
Утилита Class Designer 26
Лабораторная работа №3. Основы программирования на C# 30
Структура простой программы C# 30
Класс System.Console 31
Форматирование числовых данных 33
Системные типы данных и соответствующие ключевые слова C# 34
Объявление и инициализация переменных 35
Иерархия классов для типов данных 36
Члены числовых типов данных 38
Члены System.Boolean 38
Члены System.Char 39
Работа со строковыми данными 40
Базовые манипуляции строками 40
Управляющие последовательности 42
Итерационные конструкции C# 42
Лабораторная работа №4. Главные конструкции программирования на С# 47
Методы и модификаторы параметров 47
Стандартное поведение передачи параметров по значению 47
Модификатор out 48
Модификатор ref 49
Модификатор params 50
Определение необязательных параметров 51
Вызов методов с использованием именованных параметров 52
Массивы в C# 53
Объявление и инициализация массивов 53
Определение массива объектов 53
Базовый класс System.Array 55
Тип enum 57
Управление хранилищем, лежащим в основе перечисления 57
Объявление переменных типа перечисления 58
Динамическое извлечение пар “имя/значение” перечисления 59
Типы структур 60
Объектно- ориентированное программирование на C# 62
Лабораторная работа №5. Работа с классами 62
Знакомство с типом класса C# 62
Размещение объектов с помощью ключевого слова new 63
Определение специальных конструкторов 65
Роль ключевого слова this 66
Еще раз о необязательных аргументах 69
Понятие ключевого слова static 70
Определение статических полей данных 70
Определение статических классов 74
Основные принципы объектно-ориентированного программирования 76
Роль инкапсуляции 76
Роль наследования 76
Роль полиморфизма 78
Лабораторная работа №6. Инкапсуляция 80
Модификаторы доступа C# 80
Стандартные модификаторы доступа 80
Первый принцип: службы инкапсуляции C# 81
Инкапсуляция с использованием традиционных методов доступа и изменения 81
Использование свойств внутри определения класса 86
Свойства, доступные только для чтения и только для записи 88
Взаимодействие с автоматическими свойствами 90
Понятие синтаксиса инициализации объектов 90
Работа с данными константных полей 92
Понятие полей, допускающих только чтение 93
Понятие частичных типов 95
Лабораторная работа №7. Наследование 97
Базовый механизм наследования 97
Указание родительского класса для существующего класса 98
Ключевое слово sealed 99
Управление созданием базового класса с помощью ключевого слова base 102
Хранение секретов семейства: ключевое слово protected 104
Добавление запечатанного класса 104
Реализация модели включения/делегации 105
Определения вложенных типов 106
Лабораторная работа №8. Полиморфизм 108
Переопределение виртуальных членов в IDE-среде Visual Studio 111
Запечатывание виртуальных членов 112
Абстрактные классы 113
Понятие полиморфного интерфейса 114
Сокрытие членов 118
Правила приведения к базовому и производному классу 119
Ключевое слово as 121
Ключевое слово is 121
Главный родительский класс System.Object 122
Переопределение System.Object.ToString() 124
Переопределение System.Object.Equals() 124
Статические члены System.Object 126
Лабораторная работа №9. Структурированная обработка исключений 127
Роль обработки исключений .NET 127
Строительные блоки обработки исключений в .NET 128
Базовый класс System.Exception 129
Простейший пример 130
Генерация общего исключения 132
Перехват исключений 133
Конфигурирование состояния исключения 134
Исключения уровня приложения (System.ApplicationException) 138
Построение специальных исключений, способ первый 138
Построение специальных исключений, способ второй 140
Обработка нескольких исключений 141
Общие операторы catch 143
Внутренние исключения 144
Какие исключения могут генерировать методы? 146
Результат наличия необработанных исключений 146
Лабораторная работа №10. Работа с интерфейсами 148
Понятие интерфейсных типов 148
Реализация интерфейса 152
Вызов членов интерфейса на уровне объектов 154
Получение ссылок на интерфейсы: ключевое слово as 155
Получение ссылок на интерфейсы: ключевое слово is 156
Использование интерфейсов в качестве параметров 156
Использование интерфейсов в качестве возвращаемых значений 158
Массивы интерфейсных типов 159
Явная реализация интерфейсов 160
Проектирование иерархий интерфейсов 163
Множественное наследование посредством интерфейсных типов 164
Введение в c# и платформу .Net Философия .Net
Некоторые основные преимущества платформы .NET .NET Framework — это программная платформа для построения приложений на базе семейства операционных систем Windows, а также многочисленных операционных систем производства не Microsoft, таких как Mac OS X и различные дистрибутивы Unix и Linux. Для начала ниже приведен краткий перечень некоторых ключевых средств, поддерживаемых .NET.
Возможность взаимодействия с существующим кодом. Эта возможность, несомненно, является очень полезной, поскольку позволяет комбинировать существующие двоичные компоненты СОМ (т.е. обеспечивать взаимодействие с ними) с более новыми программными компонентами .NET и наоборот.
Поддержка многочисленных языков программирования. Приложения .NET можно создавать с использованием любого числа языков программирования (С#. Visual Basic, F# и т.д.).
Общий исполняющий механизм, разделяемый всеми поддерживающими .NET языками. Одним из аспектов этого механизма является наличие хорошо определенного набора типов, которые способен понимать каждый поддерживающий .NET язык.
Языковая интеграция. В .NET поддерживается межъязыковое наследование, межъязыковая обработка исключений и межъязыковая отладка кода. Например, базовый класс может быть определен в С#, а затем расширен в Visual Basic.
Обширная библиотека базовых классов. Эта библиотека позволяет избегать сложностей, связанных с выполнением низкоуровневых обращений к API-интерфейсам, и предлагает согласованную объектную модель, используемую всеми поддерживающими .NET языками.
Упрощенная модель развертывания. В отличие от СОМ, библиотеки .NET не регистрируются в системном реестре. Более того, платформа .NET позволяет сосуществовать на одном и том же компьютере нескольким версиям одной и той же сборки *.dll.
Введение в строительные блоки платформы .Net (clr, cts и cls)
С точки зрения программиста .NET представляет собой исполняющую среду и обширную библиотеку базовых классов. Уровень исполняющей среды называется общеязыковой исполняющей средой (Common Language Runtime) или, сокращенно, средой CLR. Главной задачей CLR является автоматическое обнаружение, загрузка и управление объектами .NET (вместо программиста). Кроме того, среда CLR заботится о ряде низкоуровневых деталей, таких как управление памятью, размещение приложения, координирование потоков и выполнение проверок, связанных с безопасностью (в числе прочих низкоуровневых нюансов).
Другим строительным блоком платформы .NET является общая система типов (Common Туре System) или, сокращенно, система CTS. В спецификации CTS полностью описаны все возможные типы данных и все программные конструкции, поддерживаемые исполняющей средой. Кроме того, в CTS показано, как эти сущности могут взаимодействовать друг с другом, и указано, как они представлены в формате метаданных .NET
Важно понимать, что отдельно взятый язык, совместимый с .NET, может не поддерживать абсолютно все функциональные средства, определенные спецификацией CTS. Поэтому существует общеязыковая спецификация (Common Language Specification) или, сокращенно, спецификация CLS, в которой описано подмножество общих типов и программных конструкций, которое должны поддерживать все языки программирования для .NET. Таким образом, если создаваемые типы .NET предлагают только средства, совместимые с CLS, ими могут пользоваться все языки, поддерживающие .NET. И, наоборот, в случае применения типа данных или программной конструкции, выходящей за рамки CLS, нельзя гарантировать возможность взаимодействия с такой библиотекой кода .NET каждым языком программирования .NET.
