Створення проекту із застосуванням наслідування та поліморфізму.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Автоматизовані Системи Управління

Інформація про роботу

Рік:
2009
Тип роботи:
Розрахункова робота
Предмет:
Об’єктно-орієнтоване програмування
Група:
КН-32

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет “Львівська Політехніка” Кафедра АСУ Розрахункова робота №2 з предмету Об'єктно-орієнтоване програмування на тему: Створення проекту із застосуванням наслідування та поліморфізму” Виконав: ст. гр. КН-32 Перевірила: Бунь А.Р. Львів - 2009 Зміст Індивідуальне завдання. Тексти головного файлу проекту, файлів модулів та форм. Аналіз отриманих результатів та висновки. Індивідуальне завдання. Створити проект Delphi для дослідження основних властивостей ООП – наслідування та поліморфізму: 1. Розробити компоненту на основі класу із полями у відповідності до варіанту. Передбачити конструктори (з параметрами та без), деструктор, селектори і модифікатори. Врахувати необхідність приховання даних. 2. Описати дочірні класи. Визначити та реалізувати необхідні поля та методи. 3. У дочірніх класах перевантажити або перевизначити операції (у відповідності до варіанту), які вводяться у батьківському класі як абстрактні методи (для кожного класу – з різною реалізацією). 4. Передбачити застосування поліморфного присвоєння та динамічного зв’язування. 5. Самостійно продумати і реалізувати спосіб демонстрації отриманих результатів. Примітка. Опис компонент, класів та реалізацію методів виконати в окремих програмних модулях. Варіант 12. Клас “коло”: координати центра, радіус, колір, ознака візуалізації (чи показувати на екрані). Дочірні класи: “вписаний многокутник” (кількість сторін); “описаний многокутник” (кількість сторін). Перевантажити операції: інкременту – збільшення кількості сторін, зміна знаку – зміна ознаки візуалізації, перетворення типу: вписаний – описаний многокутник. Перевизначити метод “малювання”. Тексти головного файлу проекту, файлів модулів та форм. //--------- project1.dpr ------------- program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. //--------- unit1.pas ------------- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Circle, StdCtrls; type TForm1 = class(TForm) Circle1: TCircle; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; M:TOmnoh; Z:TVmnoh; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Circle1:=TCircle.Create(Circle1.x,Circle1.y,Circle1.rad,1011,1); Circle1.Draw(Canvas); end; procedure TForm1.Button2Click(Sender: TObject); begin Circle1.SizeInc; end; procedure TForm1.Button3Click(Sender: TObject); begin Circle1.SizeInc(5); end; procedure TForm1.Button4Click(Sender: TObject); begin Circle1.SizeDec; end; procedure TForm1.Button5Click(Sender: TObject); begin Circle1.SizeDec(5); end; procedure TForm1.FormCreate(Sender: TObject); begin //Circle1:=TCircle.Create; Circle1.x:=250; Circle1.Y:=250; Circle1.rad:=90; end; procedure TForm1.Button6Click(Sender: TObject); begin //M.n:=strtoint(Edit1.text); M:=TOmnoh.Create(Circle1.x,Circle1.y,Circle1.rad,Circle1.kol,Circle1.viz); M.Draw(canvas); end; procedure TForm1.Button7Click(Sender: TObject); begin Z:=TVmnoh. Create(Circle1.x,Circle1.y,Circle1.rad,Circle1.kol,Circle1.viz); Z.Draw(canvas); end; end unit Circle; interface uses SysUtils, Classes,Controls,Graphics, Windows; type TCircle = class(TComponent) private { Private declarations } protected { Protected declarations } public x,y,rad,kol,viz:integer; constructor Create; overload; constructor Create(x,y,rad,kol,viz:integer); overload; procedure Draw(canvas:TCanvas); virtual; procedure SizeInc; overload; virtual; procedure SizeInc(d:integer); overload; virtual; procedure SizeDec; overload; virtual; procedure SizeDec(d:integer); overload; virtual; { Public declarations } published { Published declarations } end; type TVmnoh = class(TCircle) private protected public n:integer; procedure Draw(canvas:TCanvas); override; published end; type TOmnoh = class(TCircle) private protected public n:integer; procedure Draw(canvas:TCanvas); override; published end; procedure Register; implementation procedure Register; begin RegisterComponents('Additional', [TCircle]); end; {-----------------------------TCircle-----------------------------} procedure TCircle.Draw(Canvas:TCanvas); begin canvas.Brush.color:=kol; canvas.Ellipse(self.x-self.rad,self.y-self.rad,self.x+self.rad,self.y+self.rad); End; constructor TCircle.Create(x,y,rad,kol,viz:integer); begin self.x:=x; self.y:=y; self.rad:=rad; self.kol:=kol; self.viz:=viz; end; constructor TCircle.Create; begin self.x:=250; self.y:=250; self.rad:=90; self.kol:=1111; viz:=1; end; procedure TCircle.SizeInc; begin self.rad:=self.rad+1; self.rad:=self.rad+1; end; procedure TCircle.SizeInc(d:integer); begin self.rad:=self.rad+d; self.rad:=self.rad+d; end; procedure TCircle.SizeDec; begin self.rad:=self.rad-1; self.rad:=self.rad-1; end; procedure TCircle.SizeDec(d:integer); begin self.rad:=self.rad-d; self.rad:=self.rad-d; end; {-----------------------------TVmnoh-----------------------------} procedure TVmnoh.Draw(canvas:TCanvas); var m:array[1..6] of TPoint; r,i:integer; begin n:=6; r:=round(rad/(cos(3.14/n))); for i:=1 to n do begin // r:=round(rad/(cos(3.14/n)));//R=r*(cos(2*3.14*i)/n) m[i].X:=round(x+r*cos((2*3.14*i)/n)); m[i].Y:=round(y+r*sin((2*3.14*i)/n)); end; canvas.Brush.Color:=clRed; canvas.Polygon(m); end; {-----------------------------TOmnoh-----------------------------} procedure TOmnoh.Draw(canvas:TCanvas); var m:array[1..6] of TPoint; i:integer; begin n:=6; for i:=1 to n do begin m[i].X:=round(x+rad*cos((2*3.14*i)/n)); m[i].Y:=round(y+rad*sin((2*3.14*i)/n)); end; canvas.Brush.Color:=clRed; canvas.Polygon(m); end; end. Аналіз отриманих результатів та висновки.   Висновок: Під час виконання розрахункової я поглибив свої знання з курсу »Обєктно орієнтовне програмуваня».
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!