Читаем C#. Объектно ориентированное программирование полностью

поля и методы выполняется в упрощенной форме.

Выше мы столкнулись с неоднозначностью — и поля класса, и аргу-

менты конструктора имеют совпадающие имена. Аргумент метода или

конструктора во многом соответствует представлению о локальной

переменной — эта переменная известна и доступна только внутри

метода или конструктора. Если имя локальной переменной совпа-

дает с полем класса, приоритет остается за локальной переменной.

Следовательно, если внутри метода (или класса) просто написать имя

переменной, это будет именно локальная переменная (в нашем случае

аргумент). Поэтому по необходимости ссылку на одноименные поля

выполняем с использованием ключевого слова this.

Следует также отметить, что это не единственный способ использова-

ния ключевого слова this. В этом мы убедимся несколько позже.

В коде конструктора есть команда вызова метода show(). Этот метод ото-

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

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

структора, в окне сообщения будут отображены значения полей вновь соз-

данного объекта.

Также у класса есть конструктор с одним текстовым аргументом. Аргумент

конструктора определяет значение поля name. Два других поля получают

значения по умолчанию — у поля number будет значение 10000, а поле catego ry получит значение 'B'. Как и в случае конструктора с тремя аргументами, напоследок в конструкторе с одним аргументом вызывается метод show().

Помимо этих двух конструкторов, у класса есть еще один, достаточно по-

лезный конструктор создания копии. Это общее установившееся название

для конструкторов, которые позволяют создавать новые объекты на основе

уже существующих объектов. При этом новый объект на самом деле совсем

не обязательно должен быть копией исходного объекта (того объекта, что

передается аргументом конструктору). Просто параметры объекта, пере-

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

ний полей создаваемого объекта. У конструктора создания копии сигнатура

такая: License(License obj). У этого конструктора один аргумент, который

является объектом класса License. Значения полей создаваемого объекта

формируются на основе полей объекта-аргумента конструктора. Значе-

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

му значению поля name объекта-аргумента текстовой фразы " - дубликат".

Поле number создаваемого объекта на единицу больше соответствующего

поля объекта-аргумента конструктора. Значение поля category у обоих

Конструкторы и деструкторы           69

объектов совпадает. Традиционно в конце выполнения всех вычислений

результат отображаем с помощью метода show().

У деструктора класса License сигнатура простая и лаконичная: ~License().

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

string txt="Удаление объекта!\n"+getInfo() инициализируется текстовая

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

фразы "Удаление объекта!\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 создаются две

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных