Структура программ реального мира. Пространства имен.

 

Реальное программирование на 99% состоит из использования уже готовых классов и функций, написанных другими программистами или написания собственных. Так как в реальности мы имеем дело с сотнями и тысячами сложных классов, состоящих из сотен свойств и методов, то даже классы приходится разбивать на группы - пространства имен.

Для нашей тестовой программы мы используем пространство имен TestConsoleApplication, состоящее из двух классов - Program и Person.

Класс Program автоматически создается для каждого Net приложения, это стандартный класс. Как правило он состоит из одной функции/метода static void Main(string[] args), которая выполняется при запуске приложения.

Разработчики C# и .Net очень любят классы. Просто очень-очень. Так что в итоге здесь все является классами и даже функции без классов не существуют. Если вам не нужны ни классы ни экземпляры, и вы хотите просто сделать нескольких функций - вам все равно придется создать класс, в который добавить несколько статических (не требующих создания экземпляра) функций.

Классическим пример такой функции может послужить умножение

ublic static int Multiply(int a, int b)

{

return a * b;

}

 

Которое где-то в другом месте вызывается как

System.Console.WriteLine(SomeClassName.Multiply(2, 2));

 

Но на самом деле в .Net уже есть такой класс со сборником арифметических функций Math - в который входят функции для вычисления всевозможных синусов, тангенсов, квадратных корней, округления чисел.

Другой пример класса который по сути своей является библиотекой функций - класс Convert, содержащий функции для преобразования одних типов данных в другие

 

int testNum = Convert.ToInt32("34");

 

 

В .Net Framework входит множество уже готовых классов от программистов Microsoft, разделенных на множество пространств имен. Самые-самые базовые входят в пространство имен System.

Теперь можно полностью объяснить использовавшийся в этой и предыдущей статьях код

System.Console.WriteLine("Привет мир!");

 

В данном случае мы вызываем функцию public static void WriteLine(string value) из класса Console входящего в пространство имен System. И уже где-то там внутри нее, скорее всего еще несколькими уровнями ниже выполняется рисование по пикселям окна с консолью и наших букв.

Чтобы не писать каждый раз пространство имен используется директива using

и на самом деле если мы уже прописали

using System;

 

то вывод текста в консоль можно было бы записать проще (помешали лень и копирование в буфер)

Console.WriteLine(person1.GetFio());

 

 

В C# классами и обьектами является все, в том числе строки. Каждая строка - это на самом деле экземпляр класса String. Теперь можно понять и следующий код:

string fio = surname + " " + name.Substring(0, 1) + ". " + otchestvo.Substring(0, 1) + ".";

 

Здес мы вызываем один из методов класса String - public string Substring(int startIndex, int length), который возвращает кусок строки и принимает два аргумента, индекс символа, с которого надо начать вырезание подстроки (нумерация начинается с 0) и длину вырезаемой подстроки.

Если же нам не нужны методы вообще, просто хочется собрать в кучку данные - можно использовать структуры. С другой стороны можно создать специальный класс без функций, с одними данными - для этого есть умное название обьект для передачи данных (Data Transfer Object, DTO).