Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Определение "объекта приложения"

Определение "объекта приложения"

В настоящее время тип HelloClass решает две задачи. Во-первых, этот класс определяет точку входа в приложение (метод Main()). Во-вторых, HelloClass поддерживает элемент данных и несколько конструкторов. Все это хорошо и синтаксически правильно, но немного странным может показаться то, что статический метод Main() создает экземпляр того же класса, в котором этот метод определен.

class HelloClass {
 …
 public static int Main(string[] args) {
 HelloClass c1 = new HelloClass();
 …
 }
}

Такой подход здесь и в других примерах используется только для того, чтобы сосредоточиться на иллюстрации решения соответствующей задачи. Более естественным подходом была бы факторизация типа HelloClass с разделением его на два отдельных класса: HelloClass и HelloApp. При компоновке C#-приложения обычно один тип используется в качестве "объекта приложения" (это тип, определяющий метод Main()), в то время как остальные типы и составляют собственно приложение.

В терминах ООП это называется разграничение обязанностей. В сущности, этот принцип проектирования программ требует, чтобы класс отвечал за наименьший объем работы. Поэтому мы можем изменить нашу программу следующим образом (обратите внимание на то, что здесь в класс HelloClass добавляется новый член PrintMessage()).

class HelloClass {
 public string userMessage;
 public HelloClass()  {Console.WriteLine("Вызван конструктор, заданный по умолчанию!");}
 public HelloClass(string msg) {
  Console.WriteLine("Вызван пользовательский конструктор!");
  userMessage = msg;
 }
 public void PrintMessage() {
  Console.WriteLine("Значение userMessage: {0}n", userMessage);
 }
}
class HelloApp {
 public static int Main(string[] args) {
  HelloClass c1 = new HelloClass("Эй, вы, там…");
  c1.PrintMessage();
 }
}

Исходный код. Проект HelloClass размещен в подкаталоге, соответствующем главе 3.

Оглавление книги


Генерация: 0.053. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз