Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ООП C#.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
13.94 Mб
Скачать

ООП в С#

Оглавление

Введение в 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.