Выбрать главу

фразы "Удаление объекта!\n" и текста, который возвращается в качестве

результата закрытым методом класса getInfo().

ПРИМЕЧАНИЕ Инструкция \n означает переход к новой строке. Метод getInfo() возвращает в качестве результата текстовую фразу, которая содержит

информацию о значении полей объекта.

Командой MessageBox.Show(txt,"Удаление",MessageBoxButtons.OK, Mes sa-ge Box Icon.Er ror) отображаем окно с сообщением об удалении объекта.

ПРИМЕЧАНИЕ Инструкция  MessageBoxIcon.Error  в  списке  аргументов  метода

MessageBox.Show() означает, что в окне сообщения будет отобра-

жаться красная пиктограмма с белым крестом — как в классическом

окне с сообщением об ошибке.

Закрытый метод getInfo() для формирования текстовой информации на

основе значений полей объекта не имеет объекта, и в качестве значения —

текст (объектная переменная класса string). Будущий результат метода

поэтапно записывается во внутреннюю локальную текстовую переменную

text. При этом мы используем текстовые фразы, значения полей объекта

и инструкции \n (переход к новой строке) и \t (символ табуляции). После

того как нужное значение сформировано, возвращаем переменную text в качестве результата метода с помощью инструкции return text.

Инструкция  return  завершает  выполнение  метода.  Если  после  ин-

струкции указано значение (переменная), это значение возвращается

в качестве результата метода.

Метод show() для отображения окна с сообщением не возвращает резуль-

тата и не имеет аргументов. Командой string txt=getInfo() формируется

текст для отображения в окне сообщения, а само окно отображаем с по-

мощью команды MessageBox.Show(txt,"Лицензия",MessageBoxButtons.OK, Mes sageBoxIcon.Information).

70

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

ПРИМЕЧАНИЕ Инструкция MessageBoxIcon.Information в списке аргументов метода

MessageBox.Show() означает, что в окне сообщения будет отображать-

ся синяя пиктограмма с белой буквой i — как в классическом окне

с информационным сообщением.

В главном методе программы Main() в классе LicenseDemo создаются две

объектные переменные, Lic1 и Lic2, класса License. После этого разными

методами создается несколько объектов. Так, команда создания объекта

с помощью конструктора с тремя аргументами имеет вид Lic1=new License("Иванов

И.И.",11111,'A'). «Копия» объекта создается командой

Lic2=new Licen se(Lic1). Наконец, команда создания объекта с помощью

конструктора с одним текстовым аргументом выглядит как Lic2=new License("Петров П.П."). В результате выполнения этого несложного программ-

ного кода последовательно появляется несколько диалоговых окон, кото-

рые представлены и прокомментированы в табл. 2.1.

ПРИМЕЧАНИЕ Первые три информационных окна, которые отображаются конструк-

торами, отображаются одно за другим после щелчка на кнопке ОК

предыдущего окна. Три окна с предупреждением об удалении объ-

екта  отображаются  в  результате  выполнения  деструктора.  И  если

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

точно,  то,  когда  именно  будет  вызван  деструктор,  сказать  можно

только примерно. В C# используется система автоматической сборки

мусора — если в программе на объект утрачены ссылки, то такой

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

это  произойдет  сразу  после  утраты  ссылки.  Например,  командой

Lic2=new  License(Lic1)  создается  новый  объект,  и  ссылка  на  него

записывается  в  переменную  Lic2.  Однако  после  выполнения  ко-

манды Lic2=new License("Петров П.П.") ссылка на этот объект будет

утрачена,  поскольку  теперь  переменная  Lic2  ссылается  на  другой

объект,  созданный  инструкцией  new  License("Петров  П.П.").  Это

повод для удаления объекта из памяти (и вызова деструктора). Еще

одна хорошая причина вызова деструкторов — удаление объектов

перед завершением работы программы. В нашем случае в программе

(в главном методе) создается три разных объекта (напомним, объекты

создаются там, где есть инструкция new). Поэтому при завершении

работы  программы  из  памяти  выгружается  три  объекта.  Три  раза

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

с предупреждением об удалении объектов. Гипотетически — потому

что, если пользователь будет нажимать кнопки ОК в последних окнах

полную версию книги