- •Введение в программирование на c# в .Net Что такое .Net и зачем она нужна?
- •Первая программа на c# и основные приемы работы в системе ms Visual Studio
- •Структура программы
- •Собственные пространства имен
- •Особенности языка c#
- •Полноценный логический тип данных
- •Оператор switch
- •Основные классы
- •Класс Console
- •Класс Convert
- •Строковый тип данных string (класс String)
- •Метод Split
- •Enumeration – перечислимый тип
- •Метод IndexOf()
- •Метод Format
- •Метод ToCharArray
- •Объектно-ориентированное программирование Эволюция от структур к классам Используем структуры
- •Структурный тип как параметр
- •Помещаем метод в структурный тип
- •Превращение в класс
- •Классы и объекты
- •Значимые и ссылочные переменные
- •Конструкторы класса
- •Статические элементы
- •Генерация случайных чисел
- •Массивы в языке c#
- •Многомерные массивы
- •Класс ArrayList
- •Инкапсуляция
- •Обработка ошибок
- •Свойства класса
- •Язык uml
- •Связи между объектами
- •Наследование (Inheritance)
- •Класс Object
- •Защищенные переменные
- •Вызов базового конструктора
- •Переопределение методов. Обращение к «затененным» элементам класса
- •Многоуровневое наследование
- •Полиморфизм
- •Метод ToString
- •Типичные ситуации проявления полиморфизма
- •Абстрактные классы и полиморфизм
- •Литература
- •Лекция 21. События Классы с событиями
- •Класс sender. Как объявляются события?
- •Делегаты и события
- •Как зажигаются события
- •Классы receiver. Как обрабатываются события
- •Классы с событиями, допустимые в .Net
- •Пример «Списки с событиями»
- •Две проблемы с обработчиками событий
- •Классы с большим числом событий
- •Проект «Город и его службы»
- •Вариант 1
- •Обработчик события:
- •Отметьте истинные высказывания:
- •Вариант 2
- •Вариант 3
- •Отметьте истинные высказывания:
- •Все аргументы события принадлежат:
Структура программы
Сразу предупредим – в данной главе нет исчерпывающего изложения соответствующей информации. Целью главы является выделение основных структурных свойств программы на языке C#. Постепенно Вы будете узнавать другие подробности на эту тему.
Напомним, что главной структурной единицей программы на языке C++ была функция, а программа состояла из множества таких функций, среди которых обязательно должна быть функция main. Кроме этого на верхнем уровне можно было описывать глобальные переменные и собственные типы данных, такие как struct.
Идея создания программистом собственных типов данных в языке C# приобрела центральное место (как и в других объектно-ориентированных языках). По-прежнему это можно делать с помощью структурных типов struct. Однако еще более полноценную реализацию понятия тип удалось реализовать с помощью концепции классов.
Такие классы, как Console и Convert называются встроенными только по той причине, что они написаны другими программистами и включены в стандартный набор классов. Однако программист может создавать свои собственные классы, обеспечивая их необходимыми ему функциями-методами.
В языке C# самостоятельных функций вообще нет – есть только методы классов, а вся программа – это просто несколько классов, описанных один за другим. Кроме того, пропали глобальные переменные – как убедились разработчики, глобальные переменные привносят в программу много опасных проблем.
Есть еще один важный вопрос: если структура программы однородна и представляет множество классов, то с какого места начинается выполнение программы. Для этого в одном (и только в одном) из классов обязательно доложен быть определен метод Main (с большой буквы!). Таким образом, ошибкой будет и отсутствие метода Main и наличие нескольких методов Main.
Наша первая программа удовлетворяет перечисленным требованиям. Вся она состоит из единственного класса Program. В этом классе содержится только один метод, и он называется Main – как говорится минимальный джентльменский набор.
Ответ на вопрос «что означает слово static в заголовке метода Main» вы узнаете позже, а на вопрос «зачем нужны параметры в методе Main» мы в нашем кратком курсе отвечать не будем – нельзя объять … сами знаете что.
Еще вопросы есть? По-крайней мере еще один важный вопрос должен остаться – что означает конструкция namespace в нашей программе.
Собственные пространства имен
Мы уже говорили, что пространства имен – это способ группировки классов. А если речь идет о классах, разработанных самим программистом? Здесь также используются пространства имен. Достаточно окружить несколько описаний классов конструкцией namespace, и они уже образуют новое пространство имен:
namespace AAA
{ <описание класса>
. . .
<описание класса>
}
Пространство имен может группировать классы, находящиеся в разных исходных файлах. И, наоборот, в одном исходном файле могут содержаться классы из разных пространств имен. Ниже соответствующий пример.
Файл x.cs |
Файл y.cs |
namespace AAA { class A {. . .} class B {. . .} } namespace BBB { class C {. . .} class D {. . .} } |
namespace BBB { class E {. . .} class F {. . .} } namespace AAA { class G {. . .} class H {. . .} } |
