Чтение онлайн

ЖАНРЫ

Интернет-журнал "Домашняя лаборатория", 2007 №9
Шрифт:

using System;

namespace ConsoleHello

{

/// <summary>

/// Первый консольный проект — Приветствие

/// </summary>

class Class1

{

/// <summary>

/// Точка входа. Запрашивает имя и выдает приветствие

/// </summary>

static void Main

{

Console.WriteLine("Введите Ваше имя");

string name;

name = Console.ReadLine ;

if (name=="")

Console.WriteLine ("Здравствуй, мир!");

else

Console.WriteLine("Здравствуй, " + name +"!");

}

}

}

Я изменил текст в тегах <summary>,

удалил атрибут и аргументы процедуры Main, добавил в ее тело операторы ввода-вывода. Благодаря предложению using, мне не требуется при вызове методов класса Console каждый раз писать System.Console. Надеюсь, что программный текст понятен без дальнейших пояснений.

В завершение первого проекта построим его XML-отчет. Для этого в свойствах проекта необходимо указать имя файла, в котором будет храниться отчет. Установка этого свойства проекта, так же как и других свойств, делается в окне Property Pages, открыть которое можно по-разному. Я обычно делаю это так: в окне Solution Explorer выделяю строку с именем проекта, а затем в окне Properties нажимаю имеющуюся там кнопку Property Pages. Затем в открывшемся окне свойств, показанном на рис. 2.3, устанавливается нужное свойство. В данном случае я задал имя файла отчета hello.xml.

Рис. 2.3. Окно Property Pages проекта и задание имени XML-отчета

После перестройки проекта можно открыть этот файл с документацией. Если соблюдать дисциплину, то в нем будет задана спецификация проекта, с описанием всех классов, их свойств и методов. Вот как выглядит этот отчет в данном примере:

<?xml version="1.0"?>

<doc>

<assembly>

<name>ConsoleHello</name>

</assembly>

<members>

<member name="T: ConsoleHello.Class1>

<summary>

Первый консольный проект — Приветствие

</summary>

</member>

<member name="M: ConsoleHello.Class1.Main">

<summary>

Точка входа. Запрашивает имя и_выдает приветствие

</summary>

</member>

</members>

</doc>

Как видите, отчет описывает наш проект, точнее, сборку. Пользователь, пожелавший воспользоваться этой сборкой, из отчета поймет, что она содержит один класс, назначение которого указано в теге <summary>. Класс содержит лишь один элемент — точку входа Main с заданной спецификацией в теге <summary>.

Windows-проект

Проделаем аналогичную работу: построим Windows-проект, рассмотрим, как он выглядит по умолчанию, а затем дополним его до проекта "Приветствие". Повторяя уже описанные действия, в окне нового проекта (СМ. рис. 2.1) Я выбрал тип проекта Windows Application, дав проекту имя WindowsHello.

Как и в консольном случае, по умолчанию строится решение, содержащее единственный проект, содержащий единственное пространство имен (все три конструкции имеют совпадающие имена). В пространство имен вложен единственный класс Form1, но это уже далеко не столь простой класс,

как ранее. Вначале приведу его код, а потом уже дам необходимые пояснения:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentMode1;

using System.Windows.Forms;

using System.Data;

namespace WindowsHello {

{

/// <summary>

/// Summary description for Form1.

/// </summary>

public class Form1: System.Windows.Forms.Form

{

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentMode1.Container components = null;

public Form1

{

// Required for Windows Form Designer support

InitializeComponent ;

// TODO: Add any constructor code after

// InitializeComponent call

}

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose(bool disposing)

{

if(disposing)

{

if (components!= null)

{

components.Dispose ;

}

}

base.Dispose(disposing);

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support — do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent

{

this.components = new

System.ComponentMode1.Container ;

this.Size = new System.Drawing.Size(300, 300);

this.Text = "Form1";

}

#endregion

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread] static void Main

{

Application.Run(new Form1);

}

}

}

Начну с того, что теперь пространству имен предшествует 6 предложений using; это означает, что используются не менее 6-ти классов, находящихся в разных пространствах имен библиотеки FCL. Одни из таких используемых классов является класс Form из глубоко вложенного пространства имен System.Wndows.Forms. Построенный по умолчанию класс Form1 является наследником класса Form и автоматически наследует его функциональность — свойства, методы, события. При создании объекта этого класса, характеризующего форму, одновременно Visual Studio создает визуальный образ объекта окно, которое можно заселять элементами управления. В режиме проектирования эти операции можно выполнять вручную, при этом автоматически происходит изменение программного кода класса. Появление в проекте формы, открывающейся по умолчанию при запуске проекта, означает переход к визуальному, управляемому событиями программированию. Сегодня такой стиль является общепризнанным, а стиль консольного приложения следует считать анахронизмом, правда, весьма полезным при изучении свойств языка.

В класс Form1 встроено закрытое (private) свойство — объект components класса Container, в классе есть конструктор, вызывающий закрытый метод класса InitiaiizeComponent. в классе есть деструктор, освобождающий занятые ресурсы, которые могут появляться при добавлении элементов в контейнер components. Наконец, в классе есть точка входа — процедура Main с непустым телом.

Поделиться с друзьями: