Обработка событий выбора пунктов меню аналогична примеру 15.5 и имеет вид




procedure TfrmPopupMenu.DisplayMessage(Sender: TObject);

begin

muiMessage.Checked:= not(muiMessage.Checked);

pmiMessage.Checked:= muiMessage.Checked;

lblMessage.Visible:= muiMessage.Checked;

end;


procedure TfrmPopupMenu.DisplayEditor(Sender: TObject);

begin

muiEditor.Checked:= not(muiEditor.Checked);

pmiEditor.Checked:= muiEditor.Checked;

memEditor.Visible:= muiEditor.Checked;

end;

procedure TfrmPopupMenu.AboutBox(Sender: TObject);

begin

Application.MessageBox('Это простой редактор, версия 0.02',

'О программе...', MB_OK);

end;

Так как обработка событий главного и всплывающего меню одинакова, то централизовать действия можно с помощью списка действий (см. пример 15. 4) или же, выбрав один и тот же метод для обработки событий выбора пункта меню (OnClick) на совпадающих пунктах меню.

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

1. Для решения задачи табулирования функции согласно варианту создать форму и разместить на ней:

· главное меню (компонент типа TMainMenu) с командами: завершить работу программы, табулировать функцию, очистить поле вывода результатов;

· контекстное меню (компонент типа TPopupMenu);

· группу переключателей, с помощью которых задать способ вывода результатов (на экран, в файл, в массив), если не один из способов не выбран меню «Табулирование» не должно быть доступным.

· поля ввода исходных данных;

· область просмотра (компонент типа TMemo), которая должна снабжаться вертикальной полосой прокрутки и служить только для вывода информации.

2. В поля ввода допустимо вводить только цифры и точку, все остальные символы не должны водиться. Поле вывода не должно быть доступно для редактирования. Следует обработать все возможные исключительные ситуации. Возможный вид главной формы показан на рис. 15.9.

 

Рис. 15.9. Вид формы лабораторной работы №15

Варианты

1. . Проверка: в интервале [2,3] F(2,2985)≈0.

2. Проверка: в интервале [-1,0] F(- 0,2877)≈0.

3. Проверка: в интервале [0,1] F(0,4538)≈0.

4. Проверка: в интервале [1,2] F(1,2388)≈0.

5. Проверка: в интервале [1,2] F(1,8756)≈0.

6. Проверка: в интервале [0,1] F(0,7672)≈0.

7. Проверка: в интервале [1,2] F(1,1183)≈0.

8. Проверка: в интервале [0,1] F(0,5629)≈0.

9. Проверка: в интервале [2,4] F(3,23)≈0.

10. Проверка: в интервале [1,3] F(1,3749)≈0.

11. Проверка: в интервале [1.2,2] F(1,3077)≈0.

12. Проверка: в интервале [3,4] F(3,5265)≈0.

13. Проверка: в интервале [1,3] F(1,8832)≈0.

14. Проверка: в интервале [2,3] F(2,0267)≈0.

15. Проверка: в интервале [2,3] F(2,8459)≈0.

16. Проверка: в интервале [0,1.5] F(1,1474)≈0.

17. Проверка: в интервале [1,2] F(1,36016)≈0.

18. Проверка: в интервале [2,3] F(2,25078)≈0.

19. Проверка: в интервале [0,1] F(0,5768)≈0.

20. Проверка: в интервале [0.5,1] F(0,7376)≈0.

21. Проверка: в интервале [2,3] F(2,2985)≈0.

22. Проверка: в интервале [-1,0] F(-0,2877)≈0.

23. Проверка: в интервале [0,1] F(0,4538)≈0.

24. Проверка: в интервале [1,2] F(1,2388)≈0.

25. Проверка: в интервале [1,2] F(1,8756)≈0.

26. Проверка: в интервале [0,1] F(0,7672)≈0.

27. Проверка: в интервале [1,2] F(1,1183)≈0.

28. Проверка: в интервале [0,1] F(0,5629)≈0.

29. Проверка: в интервале [2,4] F(3,23)≈0.

30. Проверка: в интервале [1,3] F(1,3749)≈0.

Контрольные вопросы

1. Компонент флажок. Основные свойства.

2. Группа компонентов. Основное назначение и свойства.

3. Список действий. Основное назначение. Редактор списка действий.

4. Компонент меню. Основные свойства этого компонента.

5. Компонент TPopupMenu (контекстное меню). Основные свойства.

6. Компонент TMemo (многострочный редактор). Основные свойства.

Лабораторная работа № 16
Обработка динамических массивов данных.
Компонент TStringGrid (Таблица строк)

Цель работы: Изучение компонента TStringGrid и его основных свойств.

Теоретические сведения

Компонент TStringGrid (таблица строк)

Компонент TStringGrid (таблица) представляет собой элемент, позволяющий отображать данные, разбитые на строки и столбцы. Добавляется компонент с помощью кнопки на дополнительной (Additional) панели инструментов. Таблица строк позволяет хранить и автоматически отображать текстовую информацию. Некоторые свойства компонента TStringGrid приведены в табл. 16.1.

Таблица 16.1. Свойства TMemo

Свойство Описание свойства Примеры значений
ColCount Количество столбцов таблицы 3; 7
RowCount Количество строк таблицы 5; 8
DefaultColWith Ширина колонки приведена в пикселях, свойство распространено на все ячейки, кроме тех, где установлены свои значения 64 — по умолчанию; 50
DefaultRowHeight Высота строки дана в пикселях, свойство распространено на все ячейки, кроме тех, где установлены свои значения 24 — по умолчанию; 50
FixedCols Количество фиксированных столбцов таблицы, которые не перемещаются слева и могут выделяться цветом 1 — по умолчанию); 3
FixedRows Количество фиксированных строк таблицы, которые не перемещаются вверх и могут выделяться цветом 1 — по умолчанию; 2
Cells[ACol, ARow: Integer]: string; Строка, содержащаяся в столбце ACol и строке ARow Произвольная строка символов
ScrollBars Наличие полос прокрутки ssBoth — обе полосы; ssNone — прокрутка допустима

Пример 16.1. Создать и вывести на экран динамическую матрицу целых чисел указанного размера. Матрицу заполнить с помощью датчика случайных чисел. Экранная форма программы показана на рис. 16.1. Фрагмент кода программы с описанием матрицы, подпрограммой формирования матрицы и вывода матрицы в компонент TStringGrid имеет вид

 

type

TaArray= arrayofarrayof integer; //описание типа динамической матрицы

...

var

FrmMain: TFrmMain;

A:TAarray; //глобальная переменная — динамическая матрица

Implementation

{формирование динамической матрицы размера Row Х Col}

procedure inputArray( var Arr:TAarray;Row,Col:integer);

var i,j:integer;

begin

randomize;

SetLength(Arr,Row,Col); //выделяем память под матрицу

for i:=low(Arr) to high(arr) do

for j:=low(Arr[i]) to high(Arr[i]) do

Arr[i,j]:=random(10); //заполняем элементы матрицы

// случайными числами от 0 до 10

end;

{Обработчик события нажатия кнопки «Заполнение матрицы»}

procedure TFrmMain.BtnRandClick(Sender: TObject);

var i,j,r,c:integer;

begin

r:=strtoint(EdtRow.Text);

c:=strtoint(EdtCol.Text);

inputArray(A,r,c); //заполнение матрицы

strGrdA.ColCount:=c+1;

StrGrdA.RowCount:=r+1;

StrGrdA.ColWidths[0]:=90;//увеличиваем ширину 0-го столбца

StrGrdA.Cells[0,0]:='строки/столбцы';

for j:=1 to c+1 do

StrGrdA.Cells[j,0]:=inttostr(j); //строка заголовка

for i:=1 to r+1 do

StrGrdA.Cells[0,i]:=inttostr(i); //столбец заголовка

for i:=low(A) to high(A) do //вывод матрицы в компонент

for j:=low(A[i]) to high(A[i]) do

StrGrdA.Cells[j+1,i+1]:=inttostr(A[i,j]);

end;

Рис. 16.1. Экранная форма примера 16.1

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

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

· главное меню;

· компоненты TStringGrid для ввода и вывода результатов;

· контекстное меню.

2. Разработать отдельные подпрограммы с параметрами:

· формирования динамической квадратной матрицы целочисленных данных;

· вывода на экран динамической матрицы в компонент StringGrid,

· удаления элементов (с изменением размера) динамической матрицы, заданных в варианте.

Размер исходной матрицы N вводится с клавиатуры и фактически не ограничен (ограничен оперативной памятью).

3. Обработать все возможные исключительные ситуации.

Возможный вид формы изображен на рис. 16.2.

 

 

Рис. 16.2. Экранная форма лабораторной работы №16

Варианты

1. Удалить все элементы, кратные 3: 2. Удалить все элементы, равные 0:
3. Удалить все четные элементы: 4. Удалить все нечетные элементы:
5. Удалить все нулевые элементы в четных строках: 6. Удалить все элементы, равные 0:
7. Удалить все элементы, равные 0, выше главной диагонали: 8. Удалить все элементы, равные 0, в нечетных столбцах:
9. Удалить все элементы, равные 1, расположенные ниже дополнительной диагонали: 10. Удалить все элементы слева от нечетных значений:
11. Удалить все элементы, равные 0: 12. Удалить все элементы, которые больше N / 2:
13. Удалить все элементы, равные 1, выше главной диагонали: 14. Удалить все элементы, которые меньше N / 2:
15. Удалить все элементы, равные 0, в четных строках и 1 в нечетных: 16. Удалить все четные элементы:
17. Удалить все элементы, кратные 2: 18. Удалить все элементы, кратные 3:
19. Удалить все ненулевые элементы, стоящие справа от четных значений: 20. Удалить все элементы, равные 0, с нечетной суммой индексов:
21. Удалить все элементы, равные 1, с четной суммой индексов 22. Удалить k нулевых элементов в k строке:
23. Удалить все нулевые элементы, расположенные выше главной диагонали и все единичные ниже ее: 24. Удалить все элементы, стоящие ниже нечетного значения на главной диагонали:
25. Удалить все четные элементы, расположенные выше дополнительной диагонали:

Контрольные вопросы

1. Компонент TStringGrid (таблица строк). Особенности его использования для вывода матрицы.

2. Основные свойства таблицы строк.

3. Особенности создания форм многооконных приложений.

4. Доступ к элементам дочерних форм.

5. Особенности закрытия дочерних форм.

Лабораторная работа № 17
Работа с объектами. Инкапсуляция. Наследование.
Полиморфизм. Создание заставки

Цель работы: получение навыков по созданию собственных классов.

Теоретические сведения

Понятие класса и объекта

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

Пример объявления простого класса:

TPerson = class

private

fname: string[15];

faddress: string[35];

public

procedure Show;

end;

Данные класса называют полями, процедуры и функции — методами. В приведенном примере TPerson — это имя класса, fname и faddress — име­на полей, show — имя метода.

В программе помещают описание класса в раздел описания типов (type).

Объекты в программе как представители класса объявляются в разделе var, например:

var

student: TPerson;

professor: TPerson;

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

Выделение памяти осуществляется с помощью специального метода клас­са — конструктора, которому обычно присваивают имя Create (создать). Для того, чтобы подчеркнуть особую роль и поведение конструктора, в опи­сании класса вместо слова procedure используется слово constructor.

Например, описание класса TPerson, в состав которого введен конст­руктор, имеет вид

 

TPerson = class

private

fname: string [15];

faddress: string [ 35 ];

constructor Create; // конструктор

public

procedure show; // метод

end;

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

constructor TPerson.Create;

begin

fname:= '';

faddress:= ' ';

end;

Выделение памяти для данных объекта происходит путем присваивания зна­чения результата применения метода-конструктора к типу (классу) объекта. Например, после выполнения инструкции

professor:= TPerson.Create;

выделяется необходимая память для данных объекта professor.

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

professor.fname

Для ос­вобождения памяти, занимаемую объектом, используют специальный метод-деструктор Free, который вызывает деструктор. Например, осво­бождение памяти, занимаемую полями объекта professor, имеет вид:

professor.Free;

Метод

Методы класса – это процедуры и функции, объявление которых включено в описание класса. Они выполняют действия с полями класса, для чего указывают имя объекта и имя метода, от­делив одно имя от другого точкой. Например, инструкция professor.Show; вызывает применение метода show к объекту professor. Фактически инст­рукция применения метода к объекту — это специфический способ записи вызова процедуры.

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

Например, определение метода show класса TPerson имеет вид:

procedure TPerson.Show;

begin

writeln('Имя:' + fname + #13 + 'Адрес:' + faddress);

end;

В операторах метода доступ к полям объекта осуществляется без указания имени объекта.

Инкапсуляция и свойства объекта

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

Ограничение доступа к полю объекта реализуется с по­мощью свойствобъекта. Свойство объекта характеризуется полем, сохраняю­щим значение свойства, и двумя методами, обеспечивающими доступ к по­лю свойства. Метод установки значения свойства называетсяметодом записи свойства (write), а метод получения значения свойства — методом чтения свойства (read).

В описании класса перед именем свойства записывают зарезервированное слово property (свойство). После имени свойства указывается его тип, затем имена мето­дов, обеспечивающих доступ к значению свойства. После слова read указывается имя метода, обеспечивающего чтение свойства, после слова write — имя метода, отвечающего за запись свойства.

Например, описание класса TPerson, содержащего два свойства: Name и Address, имеет вид

type

TName = string[15];

TAddress = string[35];

TPerson= class // класс

private

FName: TName; // значение свойства Name

FAddress: TAddress; // значение свойства Address

Constructor Create(Name:Tname);

Procedure Show;

Function GetName: TName;

Function GetAddress: TAddress;

Procedure SetAddress(NewAddress:TAddress);

public

Property Name: Tname // свойство Name

read GetName; // доступно только для чтения

Property Address: TAddress // свойство Address

read GetAddress // доступно для чтения

write SetAddress; // и записи

end;

В программе для установки значения свойства записывается оператор присваивания значения свойству. Например, чтобы присвоить значение свойству Address объекта student, достаточно записать

student.Address:= 'С.Петербург, ул.Садовая 21, кв.З';

Компилятор перетранслирует преобразует приведенную инструкцию присваивания зна­чения свойству в инструкцию вызова метода

student.SetAddress('С.Петербург, ул.Садовая 21, кв.З');

Наследование

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

В объявлении класса-потомка указывается класс родителя. Например, класс TEmployee (сотрудник) может быть порожден от рассмотренного выше класса TPerson путем добавления поля FDepartment (отдел). Объявление класса TEmployee в этом случае может выглядеть так:

TEmployee = class (TPerson)

FDepartment: integer; // номер отдела

constructor Create (Name:TName; Dep:integer);

end;

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

constructor TEmployee.Create(Name:Tname;Dep:integer);

begin

inherited Create(Name);

FDepartment:=Dep;

end;

В приведенном примере директивой inherited вызывается конструктор ро­дительского класса. После этого присваивается значение полю класса-потомка.

Полиморфизм и виртуальные[BP3] методы

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

Например, определены три класса, один из которых является базовым для двух других:

Type

// базовый класс

TPerson = class

fname: string; // имя

constructor Create(name:string);

function info: string; virtual;

end;

// производный от TPerson

TStud = class (TPerson)

fgr:integer; // номер учебной группы

constructor Create(name:string;gr:integer);

function info: string; override;

end;

// производный от TPerson

TProf = class (TPerson)

fdep:string; // название кафедры

constructor Create (name:string;dep:string);

function info: string; override;

end;

Var p: TPerson; // Определяем переменную типа TPerson

Begin

p:= TStud.Create(’Иванов’);

Writeln(p.info); // Вызов TPerson.info замещается TStud.info

p.Free;

p:= TProf.Create(’Петров’);

Writeln(p.info); // Вызов TPerson.info замещается TProf.info

end.

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

Директивы, используемые при объявлении класса

Любой создаваемый класс может содержать секции (разделы), характеризуемые зарезервированными словами, определяющими области видимости класса:

· Published (опубликованные)

· Private (закрытые)

· Protected (защищенные)

· Public (открытые)

· Automated (автоматизированные)

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

Published также не ограничивает область видимости, однако в ней перечисляются свойства, которые должны быть доступны не только на этапе исполнения, но и на этапе конструирования программы (в окне инспектора объектов).

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

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

Automated используется только для объявления свойств и методов, которые будут добавлены к так называемому интерфейсу OLE-объектов автоматизации; область видимости членов этой секции не ограничена.

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

1. Создать приложение с использованием наследования, инкапсуляции и полиморфизма которое позволяет:

· создавать динамический список объектов класса согласно варианту;

· просматривать список;

· демонстрировать применение методов к объектам.

2. Разместить описание свойств и методов класса и подклассов в отдельном модуле. Класс должен иметь общие свойства и методы, а подклассы — свои свойства. Класс должен обязательно иметь свойство - указатель на следующий объект для организации динамической структуры.

3. Создать виртуальные методы для формирования строки с описанием объекта и реализации вычислений.

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

Возможный вид формы показан на рис. 17.1.

 

[BP4]

Рис. 17.1. Вид формы для лабораторной работы №17

Варианты

1. Класс «Плоские фигуры», имеющий свойства (высота, основание) и методы (формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: треугольник и параллелограмм. Для вычисления площадей воспользоваться формулами

и .

 

2. Класс «Плоские фигуры», имеющий свойства (сторона 1, сторона 2) и методы (формирование строки с описанием объекта и вычисление периметра). Описать классы-потомки: треугольник со свойством сторона 3, и параллелограмм. Для вычисления периметров воспользоваться формулами

и .

 

3. Класс «Параллелограммы», имеющий свойство (сторона 1) и методы (формирование строки с описанием объекта и вычисление периметра). Описать классы-потомки: прямоугольник со свойством сторона 2, и квадрат. Для вычисления периметров воспользоваться формулами

и .

 

4. Класс «Параллелограммы», имеющий свойство (сторона 1) и методы (формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: прямоугольник со свойством сторона 2, и квадрат. Для вычисления площадей воспользоваться формулами

и .

 

5. Класс «Четырехугольники», имеющий свойства (сторона 1, высота) и методы (формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: трапеция со свойством сторона 2, и ромб. Для вычисления площадей воспользоваться формулами

и .

 

6. Класс «Круглые тела», имеющий свойство (радиус) и методы (формирование строки с описанием объекта и вычисление объема). Описать классы-потомки: цилиндр со свойством высота, и сфера. Для вычисления объема воспользоваться формулами

и .

 

7. Класс «Круглые тела», имеющий свойство (радиус) и методы (формирование строки с описанием объекта и вычисление площади полной поверхности). Описать классы-потомки: цилиндр со свойством высота, и сфера. Для вычисления площади полной поверхности воспользоваться формулами

и .

 

8. Класс «Круглые тела», имеющий свойство (радиус) и методы (формирование строки с описанием объекта и вычисление площади полной поверхности). Описать классы-потомки: конус со свойством высота, и сфера. Для вычисления площади полной поверхности воспользоваться формулами

и .

 

9. Класс «Круглые тела», имеющий свойство (радиус) и методы: (формирование строки с описанием объекта и вычисление объема). Описать классы-потомки: конус со свойством высота, и сфера. Для вычисления объема воспользоваться формулами

и .

 

10. Класс «Круглые тела», имеющий свойства (радиус, высота) и методы (формирование строки с описанием объекта и вычисление объема). Описать классы-потомки: конус и цилиндр. Для вычисления объема воспользоваться формулами

и .

 

11. Класс «Круглые тела», имеющий свойства (радиус, высота) и методы (формирование строки с описанием объекта и вычисление площади полной поверхности). Описать классы-потомки: конус и цилиндр. Для вычисления площади полной поверхности воспользоваться формулами

и .

 

12. Класс «Параллелепипед», имеющий свойство (сторона 1) и методы (формирование строки с описанием объекта и вычисление площади полной поверхности). Описать классы-потомки: прямоугольный параллелепипед со свойствами сторона 2, сторона 3 и куб. Для вычисления площади полной поверхности воспользоваться формулами

и .

 

13. Класс «Параллелепипед», имеющий свойство (сторона 1) и методы (формирование строки с описанием объекта и вычисление объема). Описать классы-потомки: прямоугольный параллелепипед со свойствами сторона 2, сторона 3 и куб. Для вычисления объема воспользоваться формулами

и .

 

14. Класс плоские фигуры, имеющий свойства: сторона и методы: формирование строки с описанием объекта и вычисление площади. Описать классы-потомки: треугольник со свойством высота и квадрат. Для вычисления площадей воспользоваться формулами

и .

 

15. Класс «Плоские фигуры», имеющий свойство (сторона) и методы (формирование строки с описанием объекта и вычисление периметра). Описать классы-потомки: треугольник со свойствами сторона 1 и сторона 2 и квадрат. Для вычисления периметров воспользоваться формулами

и .

 

16. Класс «Плоские фигуры», имеющий свойство (сторона 1) и методы (формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: прямоугольник со свойством сторона 2 и параллелограмм со свойством высота. Для вычисления площадей воспользоваться формулами

и .

 

17. Класс «Плоские фигуры», имеющий свойство (сторона 1) и методы (формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: трапеция со свойствами сторона 2 и высота, и квадрат. Для вычисления площадей воспользоваться формулами

и .

 

18. Класс «Плоские фигуры», имеющий свойство (сторона 1) и методы: формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: треугольник со свойством высота и прямоугольник сосвойством сторона 2. Для вычисления площадей воспользоваться формулами

и .

 

19. Класс «Плоские фигуры», имеющий свойства (сторона 1, сторона 2) и методы (формирование строки с описанием объекта и вычисление периметра). Описать классы-потомки: треугольник со свойством сторона 3 и прямоугольник. Для вычисления периметров воспользоваться формулами

и .

 

20. Класс «Плоские фигуры», имеющий свойства (сторона 1, высота) и методы (формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: трапеция со свойством сторона 2, и параллелограмм. Для вычисления площадей воспользоваться формулами

и .

 

21. Класс «Объемные тела», имеющий свойство (сторона или высота) и методы (формирование строки с описанием объекта и вычисление объема). Описать классы-потомки: цилиндр со свойством радиус, и куб. Для вычисления объема воспользоваться формулами

и .

 

22. Класс «Объемные тела», имеющий свойство (сторона или высота) и методы (формирование строки с описанием объекта и вычисление площади полной поверхности). Описать классы-потомки: цилиндр со свойством радиус, и куб. Для вычисления площади полной поверхности воспользоваться формулами

и .

 

23. Класс «Объемные тела», имеющий свойство (сторона или высота) и методы (формирование строки с описанием объекта и вычисление объема). Описать классы-потомки: конус со свойством радиус, и куб. Для вычисления объема воспользоваться формулами

и .

 

24. Класс «Плоские фигуры», имеющий свойства (сторона 1, высота) и методы (формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: треугольник и трапеция со свойством сторона 2. Для вычисления площадей воспользоваться формулами

и .

 

25. Класс «Плоские фигуры», имеющий свойства (сторона 1, сторона 2) и методы (формирование строки с описанием объекта и вычисление площади). Описать классы-потомки: прямоугольник и трапеция со свойством высота. Для вычисления площадей воспользоваться формулами

и .

Контрольные вопросы

1. Понятие класса, поля и метода.

2. Понятие инкапсуляции.

3. Понятие полиморфизма.

4. Основные принципы наследован



Поделиться:




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

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


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