COMP COMP::operator-(COMP r)




{

COMP tmp;

tmp.a = a-r.a; tmp.b = b-r.b;

return tmp;

}

COMP COMP::operator*(COMP r)

{

COMP tmp;

tmp.a = a*r.a-b*r.b; tmp.b = a*r.b+b*r.a;

return tmp;

}

 

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

Перегрузку рассмотрим на примере операции сложения. Как известно, при сложении двух комплексных чисел складываются их вещественные и мнимые части. Внутри тела функции-оператора организуется локальная переменная tmp – комплексное число. Следующие два присваивания добавляют к левому операнду – первому слагаемому правый операнд – второе слагаемое. Результат остается в промежуточной переменной и возвращается инструкцией return. Аналогично перегружается оператор вычитания и, в соответствии с правилом умножения комплексных чисел, - оператор произведения.

Теперь нам осталось взглянуть на вызывающую наш пример часть программы:

 

{

COMP z1(1.1,2.2),z2(-1.0,-2.0),z3,z5;

COMP *z4 = new COMP();

*z4 = z1+z2;

z3 = z1-z2;

z5 = z1*z2;

printf(“%lf\n”,z4->b);

printf(“%lf\n”,z3.b);

printf(“%lf”,z5.a);

}

 

Здесь стандартным образом с использованием конструкторов с параметрами создаются два комплексных числа z1 и z2. С помощью конструкторов без параметров создаются числа z3 и z5. Комплексное число z4 объявляется через указатель с использованием оператора new. Далее демонстрируется выполнение сложения, вычитания и умножения с перегруженными на комплексные числа операторами. Результаты выводятся на экран.

 

Приложения с графическим интерфейсом

 

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

Для начала мы еще раз, несколько подробнее, рассмотрим технику работы с Builder ’ом, и сделаем это на нескольких типичных примерах. В соответствии с традициями обучения работе с новыми для пользователя системами программирования поставим себе задачу разработать приложение, которое всего лишь выводит на экран приветствие при своем запуске.

Прежде всего, создадим с помощью проводника Windows или любого файлового менеджера специальную папку для хранения проекта приложения. Пусть это будет каталог NewFold в корневом директории диска С. То есть DOS ’овский путь к паке выглядит как C:\NewFold. Теперь запускаем Builder и попадаем в его стартовое окно, изображенное на рисунке.

 

 

По умолчанию программа открывается в состоянии, готовом к разработке 32-разрядного Windows -приложения, с чем мы и согласимся. Давайте для начала сохраним наш пока пустой проект в подготовленной папке. Для этого из пункта меню File нужно взвыть подпункт Save all или воспользоваться комбинацией клавиш Ctrl+Shift+S. Откроется окно перемещений по файловой системе, где вы должны войти в нашу папку NewFold и нажать кнопку Сохранить. Тем самым будет создан и сохранен файл главного текстового модуля с именем Unit1.cpp. мя конечно можно и изменить, но мы оставим предлагаемое по умолчанию. Затем здесь же будет предложено создать и сохранить файл проекта Project1.bpr. Давайте и с этим согласимся. Теперь, если вы заглянете в папку проекта, вы обнаружите там готовый, но пока пустой проект, состоящий из нескольких файлов-заготовок. Самое главное то, что теперь можно закрыть Builder и назавтра или через год снова начать работу с проектом. Давайте закроем и снова откроем программу. Вызвать проект можно через пункт меню File - подпункт Open Project (Ctrl+F11), перейдя далее в папку проекта и открыв тот самый файл проекта Project1.bpr. Можно поступить и по-другому. Откройте пункт File, подпункт Reopen. Здесь вы увидите ссылку на нужный файл и, возможно, на другие недавно используемые файлы.

Итак, проект загружен. Давайте посмотрим, что система успела сделать автоматически без вашего участия. В папке проекта образовано несколько файлов, среди которых для нас интересен главный текстовый модуль Unit1.cpp. Для того, чтобы посмотреть содержимое этого файла можно открыть его окно. Оно находится под окном формы Form1 на представленном выше рисунке. Щелкните мышью по области, частично скрытой формой, то есть в зоне, где написано Insert. Откроется листинг, представленный далее.

 

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

 

Пока здесь практически ничего нет. Правда, мы уже понимаем, что к основному модулю подключаются два заголовка vcl.h и Unit1.h. Строка TForm1 *Form1; означает, что создается указатель Form1 на некий класс. Это - класс так называемой формы. Форма представляет собой специальный графический элемент Windows, который будет открываться при запуске изготовленного приложения. В рабочем окне формы можно размещать различные управляющие элементы, выводить результаты расчетов, рисовать графики и делать многое другое. Пока же в нашей форме вообще ничего нет, и соответствующее окно будет иметь только стандартный инструмент закрытия - крестик в правом верхнем углу.

Хотя мы называем проект пустым, из него можно изготовить приложение, которое можно запустить на исполнение и которое, естественно ничего делать не будет. Выберите пункт меню Run и подпункт с тем же названием, или просто нажмите функциональную клавишу F9 на клавиатуре. Система выполнит компиляцию программы, редактирование связей (линковку) и запустит приложение. С открывшимся окном программы можно сделать только одно – закрыть его. Ведь наша первая программа ничего делать не умеет. Если вы заглянете в папку проекта, то обнаружите там новые файлы, в частности, исполняемый файл программы Project1.exe. Это и есть наша программа, которую можно запускать уже и без Builder ’а и даже на другом компьютере.

Теперь пойдем дальше и разместим на форме управляющую кнопку. Для начала сделайте так, чтобы активным стало окно формы, например, свернув окно текстового модуля. Нам понадобится обратиться к панели так называемых визуальных компонентов. Эта панель (см. рисунок) имеет множество вкладок, среди которых по умолчанию открыта вкладка Standard. Она-то нам и нужна. Найдите на вкладке маленькую картинку, изображающую кнопку с названием ОК, сделайте по ней щелчок левой кнопкой мыши, переведите мышиный курсор в любое место рабочего поля формы и снова сделайте щелчок мышью. В результате на форме появится кнопка с именем Button1. Сделайте по ней двойной щелчок, и вы снова попадете в окно Unit1.cpp. Вы обнаружите, что к предыдущему тексту добавлена конструкция:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

}

 

Это – функция обработки события, которое заключается в нажатии мышкой на управляющую кнопку (разумеется, если программа запущена).

На секунду прервем свою увлекательную работу по разработке приложения и примем некоторые меры безопасности - сохраним изменения, сделанные в проекте. Для этого снова нажмем одновременно три клавиши Ctrl+Shift+S. Рекомендуется делать сохранения почаще во избежание неприятностей, которые могут возникнуть, например, при перебоях с электроэнергией. Вернемся в окно главного текстового модуля. Кстати, чтобы сразу попасть в место текста, где находится функция-обработчик, достаточно во время работы с проектом сделать двойной щелчок по кнопке.

Внутри фигурных скобок в функции-обработчике можно запрограммировать любые действия, которые приложение должно выполнить при нажатии на управляющую кнопку. Мы хотим, чтобы наша программа поздоровалась с окружающим миром при щелчке на кнопке. Самый простой способ - вывести нужный текст в специальное окно сообщений. Поместим между фигурными скобками слово ShowMessage. Что это такое? Это - некая новая конструкция, о которой мы пока ничего не знаем. Самое время воспользоваться системой помощи, которую предоставляет нам Builder. Для вызова справки по любому служебному слову в программе достаточно установить курсор ввода в любое место на этом слове и нажать клавишу F1 на клавиатуре. Проделав эту операцию над словом ShowMessage, мы откроем окно помощи, представленное на рисунке.

 

 

В краткой аннотации мы читаем, что конструкция предназначена для вывода в окно сообщений текста и кнопки ОК. Более подробная информация представлена в нижней части окна, а формальное объявление – в средней. Особенно вглядываться в формальное объявление не стоит. Нам нужно только установить, что после имени конструкции в круглых скобках должна стоять строка типа AnsiString. Этот тип - пример множества новых типов данных, появившихся в языке С++ в дополнение к стандартным типам языка С. Заметим попутно, что многие имена типов в С++ просто являются псевдонимами стандартных имен С. Например тип UINT – это ни что иное, как обычное unsigned int. В нашем случае тип AnsiString мало чем отличается от обычного строкового типа. В этом можно убедиться, открыв ссылку Example в окне помощи и просмотрев пример использования конструкции. В результате мы придем к выводу о том, что в скобках должна быть помещена обычная строка текста, взятая в кавычки. Именно этот текст и будет отображен в окне сообщений.

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

 

ShowMessage(“Hello World!);

 

Ошибка заключается в том, что мы «забыли» закрыть кавычки справа. А сделали мы это для того, чтобы продемонстрировать реакцию системы на ошибку в программе. Давайте нажмем заветную кнопку F9. На этапе компиляции система начнет «ругаться» и в результате выдаст окно, представленное ниже.

 

 

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

Итак, в качестве первой ошибки компилятор констатирует наличие незавершенной строки или символьной константы, и мы знаем, что компилятор в данном случае прав. Вторая ошибка заключается в отсутствии закрывающей скобки при вызове функции, и это, мягко говоря, не соответствует действительности. То же самое следует сказать и о третьей ошибке - отсутствии символа «;» в выражении. Наведенные ошибки!

Исправим ошибку, поставим в нужном месте закрывающие кавычки. Теперь и компиляция, и линковка и запуск программы должны пройти без осложнений. В результате откроется окно созданной программы с кнопкой Button1. Когда вы щелкнете по кнопке мышью, появится окно сообщений с приветствием и кнопкой ОК, показанное на следующем рисунке.

 

 

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

Как мы с вами поняли, по умолчанию Builder создает проект для приложения, базирующегося на использовании формы. В ряде случаев использование формы не является необходимым, а иногда и нежелательно. Рассмотрим разработку приложения без формы и, следовательно, без организации окна приложения.

Прежде всего, необходимо с помощью любого текстового редактора написать текст, представленный в следующем листинге. Текст следует сохранить в рабочей папке будущего проекта под именем, например, Unit1.cpp.

 

#include <windows.h>

Int PASCAL



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: