Читаем Интернет-журнал "Домашняя лаборатория", 2007 №9 полностью

Как видите, отчет описывает наш проект, точнее, сборку. Пользователь, пожелавший воспользоваться этой сборкой, из отчета поймет, что она содержит один класс, назначение которого указано в теге

.
Класс содержит лишь один элемент — точку входа Main с заданной спецификацией в теге .


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 description for Form1.

     /// 

     public class Form1: System.Windows.Forms.Form

     {

          /// 

          /// Required designer variable.

          /// 

          private System.ComponentMode1.Container components = null;

          public Form1()

          {

               // Required for Windows Form Designer support

               InitializeComponent ();

               // TODO: Add any constructor code after

               // InitializeComponent call

          }

         /// 

         /// Clean up any resources being used.

         /// 

         protected override void Dispose(bool disposing)

         {

               if(disposing)

               {

                     if (components!= null)

                {

                        components.Dispose ();

                 }

           }

           base.Dispose(disposing);

      }

      #region Windows Form Designer generated code

      /// 

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

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

      /// 

      private void InitializeComponent ()

      {

             this.components = new

                 System.ComponentMode1.Container ();

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

             this.Text = "Form1";

       }

       #endregion

       /// 

       /// The main entry point for the application.

       /// 

       [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 с непустым телом.


Начало начал — точка "большого взрыва"

Основной операцией, инициирующей вычисления в объектно-ориентированных приложениях, является вызов метода F некоторого класса х, имеющий вид:

x. F(arg1, arg2, argN);

В этом вызове х называется целью вызова, и здесь возможны три ситуации:

• х — имя класса. В этом случае метод f должен быть статическим методом класса, объявленным с атрибутом static, как это имеет место, например, для точки вызова — процедуры Main;

• х — имя объекта или объектное выражение. В этом случае f должен быть обычным, не статическим методом. Иногда такой метод называют экземплярным, подчеркивая тот факт, что метод вызывается экземпляром класса — некоторым объектом;

• х — не указывается при вызове. Такой вызов называется неквалифицированным, в отличие от двух первых случаев. Заметьте, неквалифицированный вызов вовсе не означает, что цель вызова отсутствует, — она просто задана по умолчанию. Целью является текущий объект (текущий класс для статических методов). Текущий объект имеет зарезервированное имя this. Применяя это имя, любой неквалифицированный вызов можно превратить в квалифицированный вызов. Иногда без этого имени просто не обойтись.

Но как появляются объекты? Как они становятся текущими? Как реализуется самый первый вызов метода, другими словами, кто и где вызывает точку входа — метод Main? с чего все начинается?

Перейти на страницу:

Похожие книги

Гостиная
Гостиная

Эта книга предназначена для тех, кто хотел бы собственными руками обустроить свою гостиную, сделав ее уютной и удобной. Здесь вы найдете исчерпывающие советы по созданию гармоничного интерьера, удобному освещению, размещению ковров, цветов и картин, а также других мелочей, которые превратят вашу гостиную в комфортабельную комнату, удовлетворяющую потребностям каждого члена семьи.В этой книге также даны подробные рекомендации по ремонту гостиной, которые помогут осуществить задуманное вами преобразование. Методы, описанные здесь, вполне доступны каждому. Надеемся, что эта книга поможет вам подойти к обустройству гостиной творчески, а ремонтные работы доставят истинное удовольствие.

Линиза Жалпанова , Линиза Жувановна Жалпанова , Наталья Михайловна Сухинина , Наталья Сухинина

Сделай сам / Дом и досуг