члены актуальны при создании компонентов. Поскольку мы в ближай-

шее время компоненты создавать не планируем, то и идентификатор

internal использовать не будем.

Для применения наследования необязательно создавать высокоинтел-

лектуальные коды, наподобие приведенных выше. Как уже отмечалось, наследовать (использовать как базисный) можно и стандартный, библи-

отечный класс. В качестве простой иллюстрации рассмотрим процесс

создания программы с графическим интерфейсом, который состоит из

одного-един ст вен ного, более чем скромного окна. Для выполнения этой

миссии мы на основе библиотечного класса Form путем наследования соз-

дадим собственный класс, через который, собственно, и реализуем окон-

ную форму.

Здесь речь идет о создании пользовательской оконной формы про-

граммными методами, без использования графического конструктора.

Для этих целей предназначен класс Form. Создание формы означает

на самом деле создание объекта этого класса. Другими словами, мы

могли бы просто в программе создать объект класса Form, а затем

с помощью статического метода Run() класса Application отобразить

эту форму на экране компьютера. На практике поступают несколь-

ко  иначе,  а  именно,  на  основе  класса  Form  создают  производный

класс, сразу прописав нужные свойства/характеристики и определив

важные настройки. Для создания оконной формы создают объект

этого производного класса. Этим мы и собираемся заняться в самое

ближайшее время.

Полезный в нашей работе программный код представлен во всей красе

в листинге 2.6.

Листинг 2.6.  Наследование класса Form

using System;

using System.Windows.Forms;

// Наследуется класс Form:

class MyForm:Form{

// Конструктор класса с текстовым аргументом:

public MyForm(string txt){

// Заголовок окна:

Наследование и уровни доступа           79

Text=txt;

// Высота окна:

Height=100;

// Ширина окна:

Width=300;

}

}

class MyFormDemo{

// Единый поток:

[STAThread]

// Главный метод программы:

public static void Main(){

// Создание объекта окна:

MyForm mf=new MyForm("Всем большой привет!");

// Отображение формы:

Application.Run(mf);

}

}

В результате выполнения этого программного кода появляется окно, по-

казанное на рис. 2.4.

Рис. 2.4.  Такое простое окно отображается в результате выполнения программы

Окно, как уже отмечалось, настолько простое, что даже комментировать

его внешний вид нет никакой возможности — ни кнопок, ни переключате-

лей. Из всех декоративных атрибутов — только строка заголовка. Это окно

можно перемещать, изменять (с помощью мышки) его размеры, свернуть/

развернуть, а также закрыть с помощью системной пиктограммы в правом

верхнем углу окна. Но, несмотря на такую простоту, окно это примечатель-

но тем, что является первым нестандартным окном, с которым мы имеем

дело в этой книге, созданным собственноручно.

Думается, излишне напоминать, что данная программа реализуется

в среде Visual C# Express как Windows-проект.

Теперь разберем по кирпичикам наш чудесный код, выполнение которого

приводит к столь примечательным результатам. Начнем с класса MyForm,

80

Глава 2. Классы и объекты

который создается на основе класса Form. Процесс наследования стан-

дартный: после имени создаваемого производного класса через двоеточие

указываем имя базового класса. После этого в фигурных скобках описы-

ваем дополнительный код. В данном случае это код конструктора класса

MyClass. Мы описали лишь один конструктор с текстовым аргументом.

Этот аргумент используется при присваивании значения полю Text.

Поле наследуется из класса Form. Значение этого поля определяет заго-

ловок создаваемого окна. Другим словами, если мы будем реализовывать

оконную форму через объект класса MyForm, в строке названия этого окна

будет текст, присвоенный в качестве значения полю Text. Поля Height и Width ответственны за высоту и ширину окна (в пунктах) соответствен-

но. В конструкторе этим полям также присваиваются значения (целочис-

ленные).

У класса Form имеются всевозможные поля (точнее, свойства — но

пока это не принципиально) и методы, которые наследуются при

создании  на  основе  класса  Form  производного  класса  MyForm.

Каждое поле определяет некоторое свойство или характеристику

оконной  формы.  Поэтому  настройка  параметров  оконной  формы

сводится  в  основном  к  присваиванию  правильных  значений  по-

лям/свойствам  объекта,  через  который  эта  форма  реализуется.

В рассматриваемом примере такая настройка выполняется прямо

в конструкторе.

В главном методе программы инструкцией MyForm mf=new MyForm("Всем боль-

шой привет!") создается объект mf класса MyForm. Это объект для оконной

формы. Аргументом конструктору передан текст, который будет впослед-

ствии отображаться в строке названия оконной формы. Но создание объ-

екта еще не означает, что форма появится на экране. Мы ее пока только

создали, и она надежно хранится в «закромах родины». А вот чтобы из-

влечь ее на свет божий, нужна команда Application.Run(mf). Из класса

Application вызывается статический метод Run(), аргументом которому

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

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