Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С# и объектно-ориентированное программирование.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.3 Mб
Скачать

С# и объектно-ориентированное программирование. Содержание

1. Разбор простой программы на С#. 3

1.1 Варианты метода Main () 4

2. Формальное определение класса в С# 6

2.1Ссылки на самого себя 7

2.2 Построение цепочки вызовов конструкторов с использованием this. 7

3. Модификаторы доступа С# 8

4. Средства инкапсуляции С# 9

4.1 Инкапсуляция с использованием традиционных методов доступа и изменения 9

4.2 Инкапсуляция с использованием свойств .NET 10

4.3 Свойства, доступные только для чтения и только для записи 11

4.4 Статические свойства 11

4.5 Статические конструкторы 11

5 Наследование в С# 12

5.1 Работа с конструктором базового класса 13

5.2 Множественное наследование. 14

5.3 Ключевое слово sealed 14

6 Поддержка полиморфизма в С# 15

6.1 Ключевые слова virtual и override 15

6.2 Абстрактные классы 17

6.3 Полиморфный интерфейс 18

6.4 Сокрытие методов 21

7 Правила приведения к базовому и производному классу 23

7.1 Ключевое слово as 24

7.2 Ключевое слово is 25

8 Применение модели включения – делегирования. 25

8.1 Определение вложенных типов 28

9 Обработка исключений 28

9.1 Роль обработки исключений в .NET 29

9.2 Составляющие процесса обработки исключений в .NET 31

9.3 Генерация общего исключения 31

9.4 Перехват исключений 32

9.5 Создание специальных исключений, способ первый 34

9.6 Обработка нескольких исключений. 35

9.7 Блок finally 36

9.8 Замечания по работе с исключениями 37

10 Время жизни объектов 38

10.1 Базовые сведения о времени жизни объектов 38

10.2 CIL-код, генерируемый для ключевого слова new 39

10.3 Роль корневых элементов приложения 40

10.4 Поколения объектов 41

10.5 Параллельная сборка мусора в версиях .NET 1.0 - .NET 3.5 42

10.6 Фоновая сборка мусора в версии .NET 4.0 43

10.7 Создание финализируемых объектов 43

10.8 Описание процесса финализации 44

10.9 Создание высвобождаемых объектов 45

10.10 Повторное использование ключевого слова using в С# 47

10.11 Взаимодействие со сборщиком мусора 48

10.12 Принудительная активизация сборки мусора 49

10.13 Создание финализируемых и высвобождаемых типов 52

10.14 Формализованный шаблон очистки 53

  1. Разбор простой программы на с#.

В языке С# вся логика программы должна содержаться внутри определения какого то типа (тип представляет собой общий термин, которым обозначается любой элемент из множества {класс, интерфейс, структура, перечисление, делегат}). В отличие от многих других языков, в С# не допускается создавать ни глобальных функций, ни глобальных элементов данных. Вместо этого требуется, чтобы все члены данных и методы содержались внутри определения типа.

Для начала создадим новый проект типа Console Application (Консольное приложение) по имени SimpleCSharpAppB.

Как показано ниже, в исходном коде Program.cs ничего особо примечательного нет:

Имея такой код, далее модифицируем метод Main() в классе Program, добавив в него следующие операторы:

В результате получилось определение типа класса, поддерживающее единственный метод по имени Main(). По умолчанию классу, в котором определяется метод Main(), в Visual Studio 2010 назначается имя Program; при желании это имя легко изменить. Класс, определяющий метод Main(), должен обязательно присутствовать в каждом исполняемом приложении на С# (будь то консольная программа, настольная программа для Windows или служба Windows), поскольку он применяется для обозначения точки входа в приложение.

Формально класс, в котором определяется метод Main(), называется объектом приложения. Хотя в одном исполняемом приложении допускается иметь более одного такого объекта (это может быть удобно при проведении модульного тестирования), при этом обязательно необходимо информировать компилятор о том, какой из методов Main() должен использоваться в качестве входной точки. Для этого нужно либо указать опцию main в командной строке, либо выбрать соответствующий вариант в раскрывающемся списке на вкладке Application (Приложение) окна редактора свойств проекта в Visual Studio 2010.

Обратите внимание, что в сигнатуре метода Main() присутствует ключевое слово static (область действия статических (static) членов охватывает уровень всего класса (а не уровень отдельного объекта) и потому они могут вызываться без предварительного создания нового экземпляра класса).

На заметку! С# является чувствительным к регистру языком программирования. Следовательно, Main и main или Readline и ReadLine будут представлять собой не одно и то же. Поэтому необходимо запомнить, что все ключевые слова в С# вводятся в нижнем регистре (например: public, lock, class, dynamic), а названия пространств имен, типов и членов всегда начинаются (по соглашению) с заглавной буквы, равно как и любые вложенные в них слова (как, например, Console.WriteLine, System.Windows.Forms.MessageBox и System.Data.SqlClient). Как правило, при каждом получении от компилятора ошибки, связанной с "неопределенными символами", требуется проверить регистр символов.

Помимо ключевого слова static, данный метод Main() имеет еще один параметр, который представляет собой массив строк (string[] args). Хотя в текущий момент этот массив никак не обрабатывается, в данном параметре в принципе может содержаться любое количество аргументов командной строки (процесс получения доступа к которым будет описан чуть ниже). И, наконец, данный метод Main() был сконфигурирован с возвращаемым значением void, которое свидетельствует о том, что решено не определять возвращаемое значение явным образом с помощью ключевого слова return перед выходом из области действия данного метода.

Логика Program содержится внутри самого метода Main(). Здесь используется класс Console из пространства имен System. В число его членов входит статический метод WriteLine(), который позволяет отправлять строку текста и символ возврата каретки на стандартное устройство вывода. Кроме того, здесь вызывается метод Console.ReadLine(), чтобы окно командной строки, запускаемое в IDE-среде Visual Studio 2010, оставалось видимым во время сеанса отладки до тех пор, пока не будет нажата клавиша <Enter>.