Объектно-ориентированное программирование

Использование класса диалоговых окон для создания небольшого приложения. Создание класса и методов в среде программирования Delphi. Простейшие классы и объекты в С++. Стандартные возможности меню Edit. Обращение к справочной системе Help. Написание кода.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 02.01.2020
Размер файла 444,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Методы класса

Методы класса синтаксически являются обычными процедурами и функциями языка. Их описание удовлетворяет обычным правилам объявления процедур и функций. Содержательно методы определяют ту самую абстракцию данных, которую реализует класс. Методы описывают операции, доступные над объектами класса. Два объекта одного класса имеют один и тот же набор методов.

Пример

В качестве примера определим простой класс «Оценки» (см. рис. 4.1.):

Рис. 4.1. Определение простого класса

Объявление этого класса будет иметь вид:

public class XMark

{

int predmetCode; // код предмета

int mark; // оценка по предмету

DateTime examDate; // дата сдачи

public string GetPredmetName() // метод получения названия предмета

{

return XPredmetList.GetNames()[this.predmetCode];

}

}

Ключевое слово this обозначает ссылку на тот объект, функцию которого мы вызвали. Эта ссылка доступна в любом методе любого объекта.

Однако, т.к. список предметов храниться в коллекции, то для его заполнения целесообразно использовать объявление еще одного класса «Предмет»:

public class XPredmetList

{

public static string[] GetNames()

{

return items.ToArray();

}

static List<string> items;

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

static XPredmetList()

{

items.AddRange(new string[] { "p1", "p2", "p3" });

}

}

Тогда описание класса «Студент», характеризующегося только атрибутами, примет следующий вид:

public class Student

{

int studentID;

string firstName;// Имя студента

string surName;// Фамилия студента

List<XMark> exams = new List<XMark>();// Оценки //данного студента

}

Объект.

Объекты в С# создаются на основе класса.

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

* Создание объекта -- состояние, когда происходит первоначальное создание экземпляра объекта. Такая инициализация известна под названием создания объекта и осуществляется конструктором объекта.

* Уничтожение объекта -- состояние, когда происходит уничтожение объекта, при котором очень часто возникает необходимость проведения различных восстановительных мероприятий, например, освобождения памяти. Эта работа входит в функции деструктора объекта.

Конструктор.

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

У каждого объекта имеется конструктор, используемый по умолчанию, который представляет собой метод без параметров (обеспечивает инициализацию переменной предопределённым значением). Его имя совпадает с именем самого класса, вызывается ключевым словом new. Например, мы можем создать объект типа string следующим образом:

string myString = new string () ;

или:

Class X

{

}

X.x = new X(); // Работает конструктор умолчания.

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

Попытка объявления ЛЮБОГО варианта конструктора (с параметрами или без) приводит к тому, что транслятор перестаёт заниматься построением собственных версий конструкторов. Отныне в классе нет больше конструктора умолчания. Теперь всё зависит от соответствия оператора определения объекта построенному нами конструктору. Объявим в производном классе оба варианта конструкторов.

Class X{

public X(int key){} }

X.0 = new X(125); //Работает конструктор с //параметрами.

X.1 = new X(); //Ошибка! Конструктора умолчания уже //нет!

Однажды взявшись за дело объявления конструкторов, разработчик класса должен брать на себя ответственность за создание ВСЕХ без исключения вариантов конструкторов, которые могут потребоваться для решения поставленной задачи.

Class X

{

public X(int key){}

public X(){}

}

X.0 = new X(125); // Работает конструктор с параметрами.

X.1 = new X(); // Работает новый конструктор без параметров.

Особенности конструктора заключаются в том, что:

- конструктор НЕ ИМЕЕТ НИКАКОГО спецификатора, возвращаемого даже void;

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

- в классе и в структуре можно объявлять множество вариантов конструкторов. Они должны отличаться списками параметров. В структуре невозможно объявить конструктор с пустым списком параметров;

- не существует выражения вызова для конструктора, управление в конструктор передаётся посредством выполнения специальной операции new.

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

Деструктор.

Деструкторы используются в.NET Framework для того, чтобы выполнять уборку за объектами. В общем случае нам не требуется писать какой бы то ни было код для метода деструктора; напротив, за нас будет работать операция, выполняющаяся по умолчанию. Однако, если необходимо выполнить какие-либо важные действия перед уничтожением экземпляра объекта, то можно задать определенные инструкции.

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

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

Если используемые ресурсы критичны, то это может привести к возникновению проблем.

Операция new

Ключевое слово new означает, что в среде выполнения следует выделить необходимое количество оперативной памяти под экземпляр создаваемого объекта. Выделение памяти производится из «кучи», находящейся в распоряжении среды выполнения.NET (managed heap -- управляемой кучи).

new операция используется для создания объектов и передачи управления конструкторам, например:

Class1 myVal = new Class1(); //Объект ссылочного типа. Создаётся в //куче.

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

int myInt = new int(); //Объект типа int размещается в стеке!

При определении объекта myInt ему было присвоено начальное значение 0, которое является значением по умолчанию для типа int. Следующий оператор имеет тот же самый эффект:

int myInt = 0; // Для размерного типа аналогично.

А вот для типов-значений конструкторов с параметрами в принципе нет!

int q = new int();

int q = new int(125); // Такого нет.

Вложенные классы.

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

class Company

{

public class Account// описание счетного отдела

{

}

private class AccountBalance// описание бухгалтерии

{

}

}

...

class Program

{

static void Main(string[] args)

{

Company.Account var1;

// ошибка компиляции, т.к. класс недоступен

Company.AccountBalance var2;

}

}

Ссылки как параметры.

Напомним, что любые переменные можно разделить на два типа: значения (или величины) и ссылки.

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

Напомним, что ссылки можно использовать для передачи параметров в методы и возврата значений из методов. Чтобы создать ссылку для переменных встроенных типов, необходимо использовать ключевое слово ref.

Рассмотрим три примера:

Текст кода:

Результат:

class Point

{

public int x;

public int y;

}

class Program

{

static void PointSet(Point p)

{

p.x=10;

p.y=20;

}

static void Main()

{

Point val1 = new Point();

PointSet(val1);

Console.WriteLine(val1.x);

Console.WriteLine(val1.y);

}

}

10

20

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

class Point

{

public int x;

public int y;

}

class Program

{

static void PointSet(Point p)

{

p = new Point();

p.x=10;

p.y=20;

}

static void Main()

{

Point val1 = new Point();

PointSet(val1);

Console.WriteLine(val1.x);

Console.WriteLine(val1.y);

}

}

0

0

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

class Point

{

public int x;

public int y;

}

class Program

{

static void PointSet(ref Point p)

{

p = new Point();

p.x=10;

p.y=20;

}

static void Main()

{

Point val1 = new Point();

PointSet(ref val1);

Console.WriteLine(val1.x);

Console.WriteLine(val1.y);

}

}

10

20

не создается вторая копия ссылки, а передается переменная-ссылка в метод, используя механизм передачи по ссылке. И создавая новый объект, используется не копия ссылки на класс, а все та же старая ссылка, которая была объявлена в методе Main(). Поэтому объект, созданный в методе Main() подлежит удалению сборщиком мусора, а ссылка будет указывать на новый объект, созданный в методе класса.

Оператор is

Позволяет проверить соответствие типов, не прибегая к конвертированию (см. пример UsingInher).

class Point

{

public int x;

public int y;

}

class Program

{

static void Main()

{

object refToPoint = new object();

if (refToPoint is Point)

{

Point val = (Point)refToPoint;

Console.WriteLine(val.ToString());

}

else

{

Console.WriteLine("Invalid cast");

}

}

}

Оператор as

Операция аs позволяет выполнить безопасное преобразование типа за один шаг, без необходимости первоначальной проверки его на совместимость, но если этого сделать нельзя, то результатом проверки его выполнения будет NULL (см. пример UsingInher).

class Point

{

public int x;

public int y;

}

class Program

{

static void Main()

{

object refToPoint = new object();

Point val = refToPoint as Point;

if (val!=null)

{

Console.WriteLine(val.ToString());

}

else

{

Console.WriteLine("Invalid cast");

}

}

}

Переменные только для чтения и константы.

Среди полей класса можно выделить такие два типа, как:

- константы,

- «только для чтения» (readonly).

Константные переменные определяются исключительно при объявлении. Значение константной переменной изменить невозможно:

class Point

{

public const double pi=3.14;

static void Main()

{

pi++; //ошибка компиляции

}

В отличие от констант, readonly - переменные инициализируются уже на этапе выполнения, и компилятору не обязательно знать их значение на этапе компиляции.

Инициализация осуществляется тремя способами:

1) используется значение переменной по умолчанию:

class ReadOnlyTest

{

public readonly int test;

}

после компиляции test=0;

2) устанавливается заданное значение, используя конструктор:

class Program

{

class ReadOnlyTest

{

public readonly int test;

public ReadOnlyTest(int i)

{

test = i;

}

}

static void Main()

{

ReadOnlyTest t = new ReadOnlyTest(5);

Console.WriteLine(t.test);

}

3) инициализируется непосредственно при объявлении:

class ReadOnlyTest

{

public readonly int test=10;

public readonly ArrayList test2 = new ArrayList();

}

static void Main()

{

ReadOnlyTest t = new ReadOnlyTest();

Console.WriteLine(t.test);

}

Ключевое слово static.

1) Если ключевое слово применяется к переменной класса, то речь идет о статической переменной.

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

2) Если ключевое слово применяется к классу, то речь идет о статическом классе.

Это классы, которые способны содержать только статические данные и методы. Основное их назначение - создание утилитных классов, т.е. таких классов, методы которых вызываются без создания объекта класса.

static class TestStr

{

public static void Mystr()

{

Console.WriteLine("My string");

}

}

class Program

{

static void Main()

{

TestStr.Mystr();

}

}

3) Статические конструкторы - это те методы класса, которые будут гарантированно вызваны до создания хоть одного объекта класса, причем только один раз. Чаще всего применяется для инициализации статических переменных.

class StaticTest

{

public static int i;

static StaticTest()

{

i = 10;

Console.WriteLine("Static Constructor");

}

}

class Program

{

static void Main()

{

StaticTest t = new StaticTest();

StaticTest t2 = new StaticTest();

StaticTest t3 = new StaticTest();

}

}

В результате на экране отобразиться сообщение "Static Constructor" только один раз.

Ход выполнения работы

1. Создать новое консольное приложение под именем: NUmericApple, для вывода на экран номера создаваемого объекта (экземпляра) класса.

2. В приложении создать класс «Яблоко». Для этого в Solution Explorer на имени проекта нажать правую кнопку мыши > последовательно выбрать пункты Add > Class > дать имя новому классу Apple.

3. В файле Apple.cs объявить класс, описывающий яблоко:

class Apple

{

// номер первого создаваемого объекта класса

static int number = 1;

// номер по порядку создаваемого объекта класса

private int muNumber = 0;

// конструктор класса

public Apple()

{

this.muNumber = number;

number++;

}

//метод вывода на экран номера объекта класса

public string GetNumber()

{

return String.Format("Яблоко номер {0}", this.muNumber);

}

}

4. В основной программе дописать:

static void Main(string[] args)

{

Apple a = new Apple();

Console.WriteLine(a.GetNumber());

Apple a1 = new Apple();

Console.WriteLine(a1.GetNumber());

Apple a2 = new Apple();

Console.WriteLine(a2.GetNumber());

}

5. Запустить проект.

Задания для самостоятельного выполнения

Варианты заданий

Построить иерархию классов в соответствии с вариантом задания:

1) Студент, преподаватель, персона, заведующий кафедрой

2) Служащий, персона, рабочий, инженер

3) Рабочий, кадры, инженер, администрация

4) Деталь, механизм, изделие, узел

5) Организация, страховая компания, нефтегазовая компания, завод

6) Журнал, книга, печатное издание, учебник

7) Тест, экзамен, выпускной экзамен, испытание

8) Место, область, город, мегаполис

9) Игрушка, продукт, товар, молочный продукт

10) Квитанция, накладная, документ, счет

11) Автомобиль, поезд, транспортное средство, экспресс

12) Двигатель, двигатель внутреннего сгорания, дизель, реактивный двигатель

13) Республика, монархия, королевство, государство

14) Млекопитающее, парнокопытное, птица, животное

15) Корабль, пароход, парусник, корвет

Требования к оформлению отчетов по лабораторным работам

Отчет должен содержать:

- титульный лист;

- цель и задачи работы;

- описание хода выполнения самостоятельного задания с приведением экранных форм с исходным кодом, разработанного приложения;

- выводы по работе;

- список использованной литературы.

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

1. MsgBox является функцией, методом или подпрограммой?

2. InputBox является функцией, методом или подпрограммой?

3. Для чего используется в операторах вывода символ &?

4. Какие типы стандартных диалоговых окон вы знаете?

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

6. При помощи какой функции вызываются диалоговые окна в настоящей работе?

7. Какие константы могут быть использованы в окнах сообщения?

8. Что такое класс?

9. Что такое объект?

10. Что такое метод?

11. Какими свойствами обладает ООП?

12. Что означает инкапсуляция?

13. Что означает наследование?

14. Что такое полиморфизм?

15. Приведите пример описания класса.

16. Как осуществляется описание скрытых элементов в классе?

17. Каким образом осуществляется описание доступных элементов в классе?

18. Как осуществляется описание защищенных элементов в классе?

19. Какие уровни доступа пользователей вы знаете?

20. Приведите пример определения класса.

21. Приведите пример определения метода.

22. Приведите пример объявления метода

23. Какой метод называется встроенным?

24. Какой метод называется внешним?

25. Перечислите свойства конструкторов.

26. Назначение деструкторов?

27. Отличительные особенности деструкторов.

28. Какую роль выполняет «Сообщение» в MsgBox?

29. Какую роль выполняет «Атрибуты» в MsgBox?

30. Какую роль выполняет «Заголовок» в MsgBox?

31. Чем определяется возвращаемое значеиие функции MsgBox()?

32. Каков тип возвращаемого значения функции MsgBox()?

33. Каков тип возвращаемого значения функции InputBox()?

34. Чем определяется уровень абстракции?

Приложение А

Таблица №1. Параметры и константы окна сообщения MsgBox.

Константа

Значение

Стиль

vbOKOnly

0

Отображается только кнопка ОК

vbOKCancel

1

Отображаются кнопки ОК и Cancel

vbAbortRetrylgnore

2

Отображаются кнопки Abort, Retry и Ignore

vbYesNoCancel

3

Отображаются кнопки Yes, No и Cancel

vbYesNo

4

Отображаются кнопки Yes и No

vbRetryCancel

5

Отображаются кнопки Retry и Cancel

vbCritical

16

Отображается значок критического сообщения

vbQuestion

32

Отображается вопросительный знак

(предупреждение)

vbExclamation

48

Отображается восклицательный знак (предупреждение)

vblnformation

64

Отображается значок информационного сообщения

Таблица №2. Возвращаемые значения функции MsgBox() при нажатии соответствующих кнопок в окне MsgBox.

Константа

Значение

Нажатая кнопка

vbOK

1

ОК

vbCancel.

2

Cancel

vbAbort

3

Abort

vbRetry

4

Retry

vblgnore

5

Ignore

vbYes

6

Yes

vbNo

7

No

Приложение В

Разработка простого приложения на Delphi

1. Основные понятия и приемы

1.1. Работа с формами

Проектирование форм - ядро визуальной разработки в среде Delphi. Каждый помещаемый в форму компонент или любое задаваемое свойство сохраняется в файле, описывающем форму (DFM-файл), а также оказывает некоторое влияние на исходный текст, связанный с формой (PAS-файл).

Можно начать новый пустой проект, создав пустую форму, или начать с существующей формы (используя различные доступные шаблоны), или добавить в проект новые формы. Проект (приложение) может иметь любое число форм. программирование delphi edit код

При работе с формой можно обрабатывать свойства самой формы, свойства одного из ее компонентов или нескольких компонентов одновременно. Чтобы выбрать форму или компонент, можно просто щелкнуть по нему мышью или воспользоваться Object Selector (комбинированный список в Object Inspector), где всегда отображены имя и тип выбранного элемента. Для выбора нескольких компонентов можно нажать клавишу Shift и щелкать по компонентам левой кнопкой мыши.

SpeedMenu формы содержит ряд полезных команд. Для изменения относительного расположения компонентов одного вида можно использовать команды Bring to Front и Send To Back. Командой Revert To Inherited можно воспользоваться, чтобы в унаследованной форме установить те значения свойств выбранного компонента, которые были у них в родительской форме. При выборе сразу нескольких компонентов вы можете выровнять их или изменить их размеры.

С помощью SpeedMenu можно также открыть два диалоговых окна, в которых устанавливается порядок обхода визуальных управляющих элементов и порядок создания невизуальных управляющих элементов. Команда Add To Repository добавляет текущую форму в список форм, доступных для использования в других проектах.

Для установки положения компонента, кроме применения мыши, имеются еще два способа:

¦ Установка значений для свойств Top и Left;

¦ Использование клавиш курсора при нажатой клавише Ctrl.

Метод Ctrl+клавиша курсора особенно удобен при тонкой под- стройке положения элемента. Точно так же, нажимая клавиши курсора при нажатой клавише Shift, можно подстроить размер компонента.

1.2. Палитра компонентов

Чтобы добавить в текущую форму новый компонент, нужно выбрать его на одной из страниц палитры Components, щелкнув по нему мышью, а затем, чтобы разместить новый элемент, щелкнуть в форме. Причем в форме можно или двигать мышь с нажатой левой кнопкой, чтобы установить сразу и размер, и положение компонента, или просто щелкнуть один раз, позволяя Delphi установить размер по умолчанию.

Каждая страница палитры содержит ряд компонентов, которые обозначены пиктограммами и именами, появляющимися в виде подсказки. Эти имена являются официальными названиями компонентов. В действительности это названия классов, описывающих компоненты без первой буквы T (например, если класс называется Tbutton, имя будет Button). Если необходимо поместить в форму несколько компонентов одного и того же вида, то при выборе компонента щелчком в палитре удерживайте нажатой клавишу Shift. Затем при каждом щелчке в форме Delphi будет вставлять новый компонент выбранного вида. Чтобы остановить эту операцию, просто щелкните по стандартному селектору (пиктограмма стрелки) слева от палитры Components.

1.3. Object Inspector

Object Inspector используется при проектировании формы для установки свойств компонента (или самой формы). В его окне в двух колонках изменяемого размера перечислены свойства (или события) выбранного элемента и их значения. Окно Object Selector в верхней части Object Inspector указывает текущий компонент и его тип данных, и этот селектор можно использовать для изменения текущего выбора.

В Object Inspector перечислены не все свойства компонентов, а только те, что могут быть установлены на этапе проектирования. Правая колонка Object Inspector разрешает правильное редактирование в соответствии с типом данных свойств. В зависимости от свойства можно вставить строку или число, выбрать из списка опций (на эту возможность указывает стрелка) или вызвать специальный редактор (об этом говорит овальная кнопка). Для некоторых свойств, таких как Color, разрешен и ввод значения, и выбор элемента из списка, и вызов специального редактора.

1.4. Написание кода

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

Вставим в форму компонент - кнопку - и заставим его откликаться на событие, связанное с нажатием левой кнопки мыши. При щелчке по кнопке мышью в работающей программе возникает событие OnClick (По щелчку). Пока это событие никак не обрабатывается программой, и поэтому нажатие кнопки не приведет ни к каким последствиям. Чтобы заставить программу реагировать на нажатие кнопки, необходимо написать на языке Object Pascal фрагмент программы, который называется обработчиком события. Фрагмент оформляется в виде специальной подпрограммы - процедуры.

Чтобы заставить Delphi самостоятельно сделать заготовку для процедуры обработчика события OnClick, дважды щелкните мышью по вставленной кнопке. В ответ Delphi активизирует окно кода и вы увидите в нем такой текстовый фрагмент:

procedure TForm1.Button1Click(Sender: Tobject);

begin

end;

Слово procedure извещает компилятор о начале подпрограммы - процедуры. За ним следует имя процедуры TForm1.Button1Click. Это имя - составное: оно состоит из имени класса TForm1 и собственно имени процедуры Button1Click.

Каждый компонент принадлежит к строго определенному классу, а все конкретные экземпляры компонентов, вставляемые в форму, получают имя класса с добавленным числовым индексом. По используемому в Delphi соглашению все имена классов начинаются с буквы Т. Таким образом, имя TForm1 означает имя класса с добавленным числовым индексом. По используемому в Delphi соглашению все имена классов начинаются с буквы Т. Таким образом, имя TForm1 означает имя класса, созданного по образцу стандартного класса Tform. Если вы посмотрите начало текста в окне кода, то увидите следующие строки:

type

TForm1 = class(TForm) Button1: Tbutton;

procedure TForm1.Button1Click(Sender: Tobject);

private

{private declarations}

public

{public declaration}

end;

var

Form1: TForm1;

Строка TForm1 = class(TForm) определяет новый класс TForm1, который порожден от стандартного класса TForm. Стандартный класс TForm описывает пустое Windows-окно, в то время как класс TForm1 описывает окно с уже вставленным в него компонентом кнопка.

Каждый раз, когда вы работаете над событием, Delphi открывает редактор с исходным файлом, связанным с формой. Редактор позволяет работать над несколькими файлами исходного текста одновременно, используя образ “записной книжки с ярлычками”. Каждая страница записной книжки соответствует отдельному файлу.

1.5. Компиляция проекта

Компиляция проекта происходит при запуске его на выполнение. Транслируя проект, Delphi компилирует только те файлы, которые изменялись. Но если вы выберите в меню Project команду Build All, то будет откомпилирован каждый файл, даже если он не изменялся.

Проект содержит список файлов исходного кода, которые являются частями проекта, а также соответствующих им форм (при наличии таковых). Сначала каждый файл исходного кода превращается в откомпилированный модуль Delphi - файл с тем же именем, что и у исходного файла на языке Паскаль, но с расширением DCU.

Во время компиляции и компоновки самого проекта откомпилированные модули, составляющие проект, сливаются (или связываются) друг с другом и с кодом библиотеки VCL, образуя исполнимый файл.

1.6. Интегрированный отладчик

В Delphi имеется встроенный отладчик, обладающий огромным количеством возможностей. При каждом запуске из среды Delphi программа уже выполняется в отладчике. Для установки точки останова или щелкните в промежутке между левой рамкой окна редактирования и текстом, или выберите в SpeedMenu команду Toggle Breakpoint, или нажмите клавишу F5.

Когда вы разместили ряд точек останова, можете использовать команду Breakpoints меню View, чтобы открыть окно Breakpoints List. Один из пунктов в верхней части окна Breakpoints List предполагает добавление условия в точке останова так, чтобы программа выполнялась только при выполнении данного условия. Кнопка Step Over на линейке SpeedBar позволяет просмотреть выполнение операторов один за другим, а кнопка Trace Into позволяет трассировать вызываемые методы (т.е. выполнять шаг за шагом код подпрограмм).

Если программа остановлена в отладчике, вы можете проверить значение любого идентификатора (для переменных, объектов, компонентов, свойств и т.д.), который доступен в этой точке программы. Для этого существуют два способа: использовать диалоговую панель Evaluate/Modify или добавить элемент в окно Watch List. Самый простой способ открыть диалоговую панель Evaluate/Modify - выделить переменную в редакторе исходного текста, а затем выбрать команду Evaluate/Modify из SpeedMenu редактора. Вы можете устанавливать элементы наблюдения, используя команду Add Wath at Cursor в Speed Menu редактора.

1.7. Обращение к справочной системе Help

Для вызова справочной системы необходимо выбрать соответствующую команду в выпадающем меню Help или отметить элемент интерфейса в исходном тексте и нажать клавишу F1. При нажатии кнопки “Разделы” в окне Help появляется диалоговое окно справочной системы Windows, которое позволяет вам просмотреть содержание всех файлов Help группы, отыскать ключевое слово по индексу или начать процесс поиска.

1.8. Меню и команды Delphi

Чтобы выдать команду в среде Delphi, можно воспользоваться тремя основными способами:

¦ С помощью меню.

¦ С помощью полоски SpeedBar (инструментальной линейки).

¦ С помощью SpeedMenu (одного из локальных меню, которое активизируется при нажатии правой кнопки мыши).

Меню File

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

К командам, работающим с проектами, относятся New, New Application, Open, Reopen, Save Project As, Save All, Close All, Add to Project и Remove from Project. С файлами исходного кода работают команды New, New Form, New Data Module, Open, Reopen, Save As, Save, Close и Print. Основной командой является File/New, которую можно использовать для вызова экспертов, для начала работы с новым приложением, для наследования формы из уже существующей и т.д. Чтобы открыть проект или файл исходного кода, с которыми вы работали последний раз, используйте команду File/Ropen.

Меню Edit

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

Меню Search

Если вы выберете команду Incremental Search, то вместо того чтобы показать диалоговое окно, где вводится образец для поиска, Delphi переходит в редактор. Когда вы введете первую букву, редактор перейдет к первому слову, которое начинается с этой буквы. Продолжайте набор букв и, курсор будет последовательно переходить к словам, в начале которых будут стоять введенные символы. Эта команда очень эффективна и чрезвычайно быстра. Команда Browse Symbol вызывает Object Browser - инструмент, который можно использовать для просмотра многих деталей при исследовании откомпилированной программы.

Меню View

Большинство команд меню View применяются для отображения какого-либо окна среды Delphi, например, Project Manager, Breakpoints List или Components List. Эти окна не связаны друг с другом. Команда Toggle Form/Unit используется для перехода от формы, над которой вы работаете к ее исходному коду, и обратно. Команда New edit window создает дубликат окна редактирования и его содержимого. В Delphi это единственный способ просмотреть два файла рядом друг с другом, поскольку редактор для показа нескольких загруженных файлов использует ярлычки. После дублирования окна редактирования могут содержать разные файлы. Последние две команды меню View можно использовать для удаления с экрана полоски SpeedBar и палитры Components, хотя при этом среда Delphi становится менее удобной для пользователя. Команда Build All заставляет Delphi откомпилировать каждый исходный файл проекта, даже если после последней трансляции он не был изменен. Для проверки написанного кода без создания программы можно использовать команду Syntax Check. Команда Information дает некоторые подробности о последней выполненной вами трансляции. Команда Options применяется для установки опций проекта: опций компилятора и редактора связей, опций объекта приложения и т.д.

Меню Run

Меню Run можно было бы назвать Debug (отладка). Большинство команд в нем относится к отладке, включая саму команду Run. Программа, запускаемая внутри среды Delphi, выполняется в ее интегрированном отладчике (если не отключена соответствующая опция). Для быстрого запуска приложения используется клавиша F9. Остальные команды применяются в процессе отладки для пошагового выполнения программы, установки точек прерывания, просмотра значений переменных и объектов, и т.п.

Меню Component

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

Меню Tools

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

1.9. Полоска кнопок быстрого доступа SpeedBar

Наиболее часто используемые команды Delphi имеются в инструментальной линейке SpeedBar. Изменить размеры SpeedBar можно, буксируя толстую линию между ней и палитрой Сcomponents. Другие разрешенные в SpeedBar операции добавляют, удаляют или заменяют пиктограммы с помощью команды Configure собственного локального меню SpeedBar. Эта операция вызывает инструмент SpeedBar Editor. Чтобы добавить пиктограмму в SpeedBar, необходимо найти ее в нужной категории и отбуксировать в полоску. Подобным образом можно отбуксировать пиктограмму за пределы SpeedBar или просто передвинуть ее в другое место.

1.10. Локальное меню SpeedMenu

Хотя меню Delphi содержит большое количество элементов, не все команды доступны через выпадающие меню. Иногда для некоторых окон или областей окна приходится использовать SpeedMenu (локальное меню). Чтобы активизировать SpeedMenu, нужно нажать над необходимым элементом интерфейса пользователя правую кнопку мыши или клавиши Alt и F10.

1.11. Файлы, создаваемые системой

Когда вы сохраняете новый проект, Delphi создает ряд файлов.

Здесь приводится список наиболее важных файлов.

¦ Основной файл проекта типа.DPR. Это основной модуль исходного текста проекта. Имеется только один DPR-файл для каждого проекта. Этот файл, кроме всего прочего, перечисляет имена других файлов, составляющих проект.

¦ Файлы формы типа.DFM. Это двоичные файлы ресурсов, содержащие определение визуальных форм. В проекте может быть много форм и каждая имеет собственный.DFM файл.

¦ Файл модуля Паскаля типа.PAS. Содержит код Object Pascal для соответствующей формы или для автономного модуля кода.

¦ Файл опций проекта типа.OPT. Файл, который содержит различные установки Delphi (текстовый файл).

¦ Откомпилированные файлы модуля типа.DCU. Содержат объектный код существующего.PAS-файла модуля.

¦ Откомпилированные программные файлы типа.EXE. Это собственно программы Windows.

¦ Откомпилированные файлы динамических библиотек типа.DLL. Это откомпилированные модули Windows, которые могут использоваться одновременно многими программами Windows.

1.12. Страницы репозитории объектов

В Delphi есть несколько команд меню, с помощью которых вы можете создать новую форму, новое приложение, новый модуль данных, новый компонент и т.п. Эти команды находятся в меню File, а также в других выпадающих меню. Но, если вместо них выдать команду File/New, Delphi откроет окно Object Repository.

Репозиторий используется для создания новых элементов любого вида: форм, приложений, модулей данных, библиотек, компонентов и т.д. Диалоговое окно Object Repository содержит несколько страниц:

¦ Страница New позволяет создавать новые элементы многих разных типов.

¦ Страница текущего проекта (в действительности на ярлычке данной страницы вы увидите имя проекта, например, Project1) позволяет унаследовать форму или модуль данных от аналогичного объекта, включенного в ваш текущий проект.

¦ Страницы Forms, Dialogs, Data Modules позволяют создавать новые формы, диалоговые панели и модули данных, используя эксперты или существующие объекты этих типов.

¦ Страница Project позволяет скопировать файлы из хранящегося в репозитории проекта.

В нижней части диалогового окна Object Repository находятся три радиокнопки, с помощью которых можно указать: хотите ли вы скопировать существующий элемент, унаследовать его или применить непосредственно, не копируя.

- Страница New

Список элементов, которые можно создать с помощью этой страницы:

¦ Application создает новый пустой проект.

¦ Data Module создает новый пустой модуль данных.

¦ DLL создает новую библиотеку DLL.

¦ Form создает новую пустую форму.

¦ Text открывает в редакторе новый текстовый файл.

¦ Unit создает новый пустой модуль, не связанный с формой.

- Страница Forms

Ниже приведен список необходимых для работы предопределенных форм:

¦ About Box - простая панель “О программе”.

¦ Duil List Box - форма с двумя разными списками; позволяет пользователю выбрать ряд элементов в одном списке и нажатием кнопки переместить их во второй. Кроме компонентов, эта форма содержит значительное количество не очень простого кода на языке Паскаль.

- Страница Dialogs

Эта страница похожа на предыдущую, но содержит другие элементы.

¦ Dialog Expert - простой эксперт, который способен сгенерировать различные диалоговые панели с одной или несколькими страницами.

¦ Dialog with help - два варианта диалоговой панели с кнопкой вызова справочной информации.

¦ Password dialog - диалоговая панель с простым окном редактирования, которая имеет необходимые для ввода пароля опции; код отсутствует.

¦ Standart Dialog Box - стандартная диалоговая панель, которая доступна в двух вариантах с различным расположением кнопок.

- Страница Data Modules.

Модуль данных - это особый вид формы, который никогда не появляется на экране во время выполнения и может использоваться для хранения невизуальных компонентов. Чаще всего он применяется для описания доступа к базе данных.

- Страница Projects

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

¦ Application Expert - простой эксперт, в котором вы можете выбрать файловую структуру и некоторые другие элементы приложения.

¦ MDI Application задает ключевые элементы программы с интерфейсом

Multiple Document Interface (MDI). В этом приложении определена основная форма для окна MDI-фрейма, содержащая меню, строку состояния и инструментальную линейку. Кроме того, в нем имеется вторая форма, которую на этапе выполнения можно использовать для создания дочерних окон.

¦ SDI Application определяет основную форму со стандартными атрибутами современного интерфейса пользователя, включая инструментальную линейку и строку состояния, а также типичную панель About.

1.13. Эксперты Delphi

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

Пример

1. Войдите в среду Delphi, дважды щелкнув мышью на пиктограмму Delphi или через меню “Пуск”.

2.Совершите экскурс в среду визуального программирования Delphi. При этом результаты своей работы не сохраняйте на диске.

3. Попытайтесь создать различные приложения с помощью Expert-ов Delphi, исследовать в окне редактирования полученный код. Приложения на диске не запоминать.

4. Выберите пункт меню File/New Application, этим вы создадите новый проект приложения.

5. Выберите команду File/Save Project As…

¦ В появившемся диалоге перейдите к корневому каталогу диска C, выбрав соответствующий пункт в выпадающем списке вверху окна.

¦ Откройте папку, соответствующую названию вашей группы (например, Р-123). Если такой нет, то создайте её, щелкнув правой кнопкой мыши на свободном месте, выбрав из появившегося контекстного меню пункт Создать/папку и введя нужное название (после чего не забудьте её открыть).

¦ Создайте (как описано в предыдущем пункте) папку "Ваша_фамилия Lab1".

¦ Сохраните Unit1.pas под новым именем Main.pas, а Project1.dpr под новым именем Lab1.dpr.

1. Выберите из политры Standard визуальных компонентов и поместите в форму следующие компоненты:

¦ Окно редактирования со связанной с ним меткой Operand 1. В этом окне вводится первый операнд.

¦ Окно редактирования со связанной с ним меткой Operator. В этом окне вводится операция. В программе следует предусмотреть операции +, -, / и *.

¦ Окно редактирования со связанной с ним меткой Operand 2. В этом окне вводится второй операнд.

¦ Окно редактирования со связанной с ним меткой Result. В этом окне отображается результат запрошенной вами операции.

Пример простого калькулятора приведен на рис.1.1.

1.В событиях OnClick каждой кнопки опишите соответствующие действия, например, для кнопки код события должен выглядеть следующим образом:

If Edit2.Text='0' Then ShowMessage('Знаменатель равен "0"!')

Else

Edit3.Text:=FloatToStr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text));

Обратите внимание, что в данном действии осуществляется проверка деления на ноль. Оператор ShowMessage выдает сообщение, представленное на рис. 1.2 в случае, когда Y равен "0".

Рис. 1.1. Пример формы калькулятора

Рис. 1.2. Сообщение об ошибке

Процедуры FloatToStr и StrToFloat выполняют преобразования из числовой переменной в строковую и из строковой в числовую соответственно.

Остальные клавиши должны быть описаны соответственно.

2. Измените программу, дополнив ее возможностями очистки содержимого полей (например, кнопка Clear) и вычисления значения заданной функции, согласно варианту индивидуального задания.

3. Сохраните форму и проект.

Литература

1. Трусов М. А. Visual Basic.NET / Трусов М. А. - М.: НТ Пресс, 2006. - 176 с.:

2. Зиборов В.В. Visual Basic 2010 на примерах. - СПб.: БХВ-Петербург, 2010. - 336с.

3. Кузьменко, В.Г. Visual Basic 6 / В.Г. Кузьменко. - М.: Бином-Пресс, 2011. - 672 с.

2. Колосов С. В. Объектно-ориентированное программирование в среде Delphi. Лабораторный практикум для студентов всех специальностей. Мн.: БГУИР, 2001. - 47 с.

3. Данилина И.И. Программирование в системе Delphi. Сб. описаний лабораторных работ. - Екатеринбург: УрГУПС, 2009. - 40 с.

4. Фаронов В.В. DELPHI. Программирование на языке высокого уровня. Учебник для ВУЗов. / В. В. Фаронов. - М.; СПб.; Нижний Новгород: Питер, 2010. - 640 с.

5. Основы работы в среде Delphi / Б.Ф. Кирьянов; НовГУ им. Ярослава Мудрого. - Великий Новгород, 2013. - 33 с.

6. Страуструп Б. Язык программирования С++/Б.Страуструп. СПб.: БИНОМ, 1999.

7. Шилдт Г. Самоучитель С++/Г. Шилдт. 3-е изд. СПб.: BXV-Петербург, 2002.

8. Эккель Б. Философия С++. Введение в стандартный С++/Б. Эккель. 2-е из- д. СПб.: Питер, 2004.

9. Эккель Б. Философия С++. Практическое программирование/Б. Эккель, Ч. Эллисон. СПб.: Питер, 2004.

10. Павловская Т.А. С++. Объектно-ориентированное программирование: Практикум/ Т. А. Павловская, Ю. А. Щупак. СПб.: Питер, 2004.

11. Фридман А. Л. Язык программирования С++. Курс лекций/А. Л. Фридман. М.: ИНТУИТ, 2003.

12. Глушаков С.В. Программирование на Visual C++ - М.: ООО "Издательство АСТ"; Харьков "Феликс", 2003 - 726 с.

Размещено на Allbest.ru

...

Подобные документы

  • Объектно-ориентированное программирование как методология программирования, опирающаяся на инкапсуляции, полиморфизме и наследовании. Общая форма класса. Наследование как процесс, посредством которого один объект получает свойства другого объекта.

    презентация [214,9 K], добавлен 26.10.2013

  • Методология объектно-ориентированного программирования в Java. Понятия класса, объекта и объектной переменной. Динамическая и статическая объектные модели. Логическое структурирование приложения. Наследование в Java. Отличия интерфейсов от классов.

    курс лекций [547,2 K], добавлен 01.05.2014

  • Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.

    курсовая работа [880,1 K], добавлен 21.04.2015

  • Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.

    презентация [184,3 K], добавлен 18.03.2014

  • Изучение принципов объектно-ориентированного программирования, в котором основными концепциями являются понятия классов и объектов. Свойства этого вида программирования: инкапсуляция, полиморфизм, наследование. Описание класса. Конструкторы и деструкторы.

    презентация [74,8 K], добавлен 14.10.2013

  • Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.

    курсовая работа [40,8 K], добавлен 15.07.2009

  • Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.

    курсовая работа [1,8 M], добавлен 16.09.2015

  • Разработка приложения "Ведомость начисления заработной платы" в среде программирования C++Builder. Алгоритм и сценарий работы программы. Проектирование интерфейса пользователя. Написание программных модулей и результаты тестирования данной программы.

    курсовая работа [597,4 K], добавлен 31.01.2016

  • Описания объектов, свойств, методов, формы и основных модулей текста программы в среде Delphi. Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования. Анализ результатов тестирования программного продукта.

    курсовая работа [2,4 M], добавлен 27.08.2012

  • Классы и свойства объектно-ориентированного пространства. Методика создания новых классов в delphi: выбор родительского класса, изменение существующих компонентов, создание подклассов для элементов управления windows. Создание новой ветви классов.

    контрольная работа [13,0 K], добавлен 07.07.2012

  • Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.

    контрольная работа [51,7 K], добавлен 22.01.2013

  • Понятие объектно-ориентированного программирования, общая характеристика языков высокого уровня. Разработка программного обеспечения для реализации компьютерной игры "пинбол" с помощью императивного программирования в среде Microsoft Visual Basic.

    курсовая работа [428,9 K], добавлен 19.09.2012

  • Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).

    отчет по практике [1,1 M], добавлен 07.12.2010

  • Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.

    дипломная работа [1,8 M], добавлен 14.09.2011

  • Основные концепции объектно-ориентированного программирования. Разработка компонента ActiveX (элемента управления Label с новым свойством Caption) на базе стандартного текстового поля. Тестирование пользовательского класса Auto и коллекции его объектов.

    курсовая работа [834,8 K], добавлен 07.04.2014

  • Использование скриптового языка программирования для разработки web-приложений (сценариев). Изучение основ объектно-ориентированного программирования в языке PHP. Ознакомление со специальными методами для работы с классами. Назначение интерфейсов.

    контрольная работа [25,1 K], добавлен 14.03.2015

  • Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое, как планируется, будет обеспечивать решение специализированных задач по формированию, обработке на ЭВМ и выводу информации.

    курсовая работа [967,6 K], добавлен 20.05.2008

  • Объектно-ориентированный язык программирования: общая характеристика и свойства. Базовый и производный классы, конструкторы производного класса. Конструкторы и неопределенность при множественном наследовании. Роль наследования при разработке программ.

    курсовая работа [688,3 K], добавлен 23.12.2013

  • Описание разрабатываемой программы с точки зрения пользователя. Диаграмма вариантов использования приложения. Объектное представление программы. Разработка класса корабля, прикладного окна и события but. Окно приложения с перемещающимися кораблями.

    курсовая работа [207,0 K], добавлен 05.04.2014

  • Понятие алгоритма и его характеристики как основного элемента программирования. Формы представления алгоритмов, основные алгоритмические структуры. Структурное и событийно-ориентированное программирование. Объектно-ориентированное программирование.

    реферат [86,0 K], добавлен 17.07.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.