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

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

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

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

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

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

Міністерство освіти та науки України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій Кафедра АСУ  З в і т до розрахункової роботи №2 на тему: «Створення проекту із застосуванням наслідування та поліморфізму» з дисципліни «Об'єктно-орієнтоване програмування» Виконав Студент гр. КН-31 Перевірив Бунь А. Р. Львів – 2009 р. Індивідуальне завдання Варіант 3. Створити: Клас “вікно”: координати, розміри, одиниці виміру для координат, одиниці виміру для розмірів. Дочірні класи: “вікно у будинку” (матеріал, товщина, спосіб відкривання, стан – відкрите, закрите); “ вікно у програмі” (стиль, наявність дочірніх вікон, стан – видиме, невидиме). Перевантажити операції: порівняння – за координатами, розмірами та матеріалом або стилем, інкременту – як зміну матеріалу або стилю, зміни знаку – як зміну стану. Перевизначити метод “малювання”. Тексти головного файлу проекту, файлів модулів та форм 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, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Memo1: TMemo; RadioGroup1: TRadioGroup; GroupBox1: TGroupBox; Label1: TLabel; ComboBox1: TComboBox; Label2: TLabel; ComboBox2: TComboBox; Button1: TButton; Label3: TLabel; Label4: TLabel; Label5: TLabel; ComboBox3: TComboBox; ComboBox4: TComboBox; Button2: TButton; Label6: TLabel; Label7: TLabel; ComboBox5: TComboBox; Label8: TLabel; ComboBox6: TComboBox; Button3: TButton; Label9: TLabel; GroupBox2: TGroupBox; Label10: TLabel; Button4: TButton; Label11: TLabel; RadioGroup2: TRadioGroup; Label12: TLabel; GroupBox3: TGroupBox; Label13: TLabel; RadioGroup3: TRadioGroup; Button5: TButton; Label14: TLabel; GroupBox4: TGroupBox; Button6: TButton; Label15: TLabel; procedure RadioGroup1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type TWindow=class x:integer;//координати (x) y:integer;//координати (y) height:integer;//розмір (висота) width_window:integer;//розмір (ширина) px:String;//одиниці виміру для координат sm:String;//одиниці виміру для розмірів constructor Create;overload; function Compare(height1,width1,height2,width2:Integer):String;overload; function Compare(height1,width1:real;height2,width2:Integer):String;overload; function Compare(height1,width1:integer;height2,width2:real):String;overload; function Compare(height1,width1,height2,width2:Real):String;overload; function Size(size1,size2,size3,size4:integer):String;overload; function Size(size1,size2,size3,size4:real):String;overload; function Size(size1,size2:real;size3,size4:integer):String;overload; function Size(size1,size2:integer;size3,size4:real):String;overload; function Style(style1,style2:integer):String;overload; function Style(style1,style2:real):String;overload; function Style(style1:real;style4:integer):String;overload; function Style(style1:integer;style4:real):String;overload; function Increment:integer;overload; function Increment(increment:integer):integer;overload; function Increment(increment:real):integer;overload; function Stan:integer;overload; function Stan(znak:integer):integer;overload; constructor Create(x1,y1,height1,width_window1:integer; sm1,px1:string);overload; destructor Destroy;override; function Draw:String;virtual;abstract; end; type TWindowHome=class(TWindow) material:String;//матеріал width_home:integer;//товщина method_open:String;//спосіб відкривання status_home:String;//стан - відкрите, закрите constructor Create; function Draw:String;override; end; type TWindowProgram=class(TWindow) style:String;//стиль home_window:String;//наявність дочірніх вікон status_program:String;//стан - видиме, невидиме constructor Create; end; var Form1: TForm1; Win:TWindow; WinHome:TWindowHome; WinProg:TWindowProgram; implementation constructor TWindow.Create; begin x:=0; y:=0; height:=0; width_window:=0; px:='px'; sm:='sm'; end; constructor TWindow.Create(x1,y1,height1,width_window1:integer; sm1,px1:string); begin x:=x1; y:=y1; height:=height1; width_window:=width_window1; px:=px1; sm:=sm1; end; destructor TWindow.Destroy; begin MessageBoxA(0,'Виклик деструктора','Деструктор',MB_OK); inherited; end; constructor TWindowHome.Create; begin material:='дерево';//матеріал width_home:=100;//товщина method_open:='автоматичний';//спосіб відкривання status_home:='відкрите';//стан - відкрите, закрите end; constructor TWindowProgram.Create; begin style:='Класичний'; home_window:='Немає';//наявність дочірніх вікон status_program:='Невидиме';//стан - видиме, невидиме end; function TWindowHome.Draw:String; begin Result:='Перевизначення методу TWindowHome.Draw'; end; function TWindow.Compare(height1,width1,height2,width2:Integer):String; begin Result:='Метод перевантажено. Координати: '+ IntToStr(height1)+', '+IntToStr(width1)+', '+IntToStr(height2)+', '+IntToStr(width2); end; function TWindow.Compare(height1,width1:Real;height2,width2:Integer):String; begin Result:='Метод перевантажено. Координати: '+ FloatToStr(height1)+', '+FloatToStr(width1)+', '+IntToStr(height2)+', '+IntToStr(width2); end; function TWindow.Compare(height1,width1:integer;height2,width2:real):String; begin Result:='Метод перевантажено. Координати: '+ intToStr(height1)+', '+intToStr(width1)+', '+floatToStr(height2)+', '+floatToStr(width2); end; function TWindow.Compare(height1,width1,height2,width2:real):String; begin Result:='Метод перевантажено. Координати: '+ FloatToStr(height1)+', '+FloatToStr(width1)+', '+FloatToStr(height2)+', '+FloatToStr(width2); end; function TWindow.Size(size1,size2,size3,size4:integer):String; begin Result:='Метод перевантажено. Розміри: '+ intToStr(size1)+'x'+intToStr(size2)+', '+intToStr(size3)+'x'+intToStr(size4); end; function TWindow.Size(size1,size2,size3,size4:real):String; begin Result:='Метод перевантажено. Розміри: '+ floatToStr(size1)+'x'+floatToStr(size2)+', '+floatToStr(size3)+'x'+floatToStr(size4); end; function TWindow.Size(size1,size2:real;size3,size4:integer):String; begin Result:='Метод перевантажено. Розміри: '+ floatToStr(size1)+'x'+floatToStr(size2)+', '+intToStr(size3)+'x'+intToStr(size4); end; function TWindow.Size(size1,size2:integer;size3,size4:real):String; begin Result:='Метод перевантажено. Розміри: '+ intToStr(size1)+'x'+intToStr(size2)+', '+floatToStr(size3)+'x'+floatToStr(size4); end; function TWindow.Style(style1,style2:integer):String; begin Result:='Метод перевантажено. Стиль: Windows XP & Windows XP'; end; function TWindow.Style(style1,style2:real):String; begin Result:='Метод перевантажено. Стиль: Windows Vista & Windows Vista'; end; function TWindow.Style(style1:real;style4:integer):String; begin Result:='Метод перевантажено. Стиль: Windows Vista & Windows XP'; end; function TWindow.Style(style1:integer;style4:real):String; begin Result:='Метод перевантажено. Стиль: Windows XP & Windows Vista'; end; function TWindow.Increment():integer; begin Result:=0; end; function TWindow.Increment(increment:integer):integer; begin Result:=1; end; function TWindow.Increment(increment:real):integer; begin Result:=2; end; function TWindow.Stan:integer; begin Result:=0; end; function TWindow.Stan(znak:integer):integer; begin Result:=-1; end; {$R *.dfm} procedure TForm1.RadioGroup1Click(Sender: TObject); begin if RadioGroup1.ItemIndex=0 then begin Memo1.Clear; Win:=TWindow.Create; Memo1.Lines.Add('Конструктор TWindow (без параметрів):'); Memo1.Lines.Add('Координата Х: '+IntToStr(Win.x)); Memo1.Lines.Add('Координата Y: '+IntToStr(Win.y)); Memo1.Lines.Add('Розмір (висота): '+IntToStr(Win.height)); Memo1.Lines.Add('Розмір (ширина): '+IntToStr(Win.width_window)); Memo1.Lines.Add('Одиниці виміру для координат: '+Win.px); Memo1.Lines.Add('Одиниці виміру для розмірів: '+Win.sm); Win.Destroy; end else if RadioGroup1.ItemIndex=1 then begin Memo1.Clear; Win:=TWindow.Create(1,2,3,4,'sm','px'); Memo1.Lines.Add('Конструктор TWindow (без параметрів):'); Memo1.Lines.Add('Координата Х: '+IntToStr(Win.x)); Memo1.Lines.Add('Координата Y: '+IntToStr(Win.y)); Memo1.Lines.Add('Розмір (висота): '+IntToStr(Win.height)); Memo1.Lines.Add('Розмір (ширина): '+IntToStr(Win.width_window)); Memo1.Lines.Add('Одиниці виміру для координат: '+Win.px); Memo1.Lines.Add('Одиниці виміру для розмірів: '+Win.sm); Win.Destroy; end else if RadioGroup1.ItemIndex=2 then begin Memo1.Clear; WinHome:=TWindowHome.Create; Memo1.Lines.Add('Конструктор TWindowHome:'); Memo1.Lines.Add('Матеріал: '+WinHome.material); Memo1.Lines.Add('Товщина: '+IntToStr(WinHome.width_home)); Memo1.Lines.Add('Спосіб відкривання: '+WinHome.method_open); Memo1.Lines.Add('Стан: '+WinHome.status_home); WinHome.Destroy; end else if RadioGroup1.ItemIndex=3 then begin Memo1.Clear; WinProg:=TWindowProgram.Create; Memo1.Lines.Add('Конструктор TWindowProgram:'); Memo1.Lines.Add('Cтиль: '+WinProg.style); Memo1.Lines.Add('Наявність дочірніх вікон: '+WinProg.home_window); Memo1.Lines.Add('Статус: '+WinProg.status_program); WinProg.Destroy; end; end; procedure TForm1.Button1Click(Sender: TObject); begin if (ComboBox1.ItemIndex=0) and (ComboBox2.ItemIndex=0) then begin Label3.Caption:=Win.Compare(100,100,200,200); end else if (ComboBox1.ItemIndex=1) and (ComboBox2.ItemIndex=0) then begin Label3.Caption:=Win.Compare(100.5,100.5,200,200); end else if (ComboBox1.ItemIndex=0) and (ComboBox2.ItemIndex=1) then begin Label3.Caption:=Win.Compare(200,200,100.5,100.5); end else if (ComboBox1.ItemIndex=1) and (ComboBox2.ItemIndex=1) then begin Label3.Caption:=Win.Compare(100.5,100.5,200.5,200.5); end; end; procedure TForm1.Button2Click(Sender: TObject); begin if (ComboBox3.ItemIndex=0) and (ComboBox4.ItemIndex=0) then begin Label6.Caption:=Win.Size(100,100,200,200); end else if (ComboBox3.ItemIndex=1) and (ComboBox4.ItemIndex=0) then begin Label6.Caption:=Win.Size(100.5,100.5,200,200); end else if (ComboBox3.ItemIndex=0) and (ComboBox4.ItemIndex=1) then begin Label6.Caption:=Win.Size(200,200,100.5,100.5); end else if (ComboBox3.ItemIndex=1) and (ComboBox4.ItemIndex=1) then begin Label6.Caption:=Win.Size(100.5,100.5,200.5,200.5); end; end; procedure TForm1.Button3Click(Sender: TObject); begin if (ComboBox5.ItemIndex=0) and (ComboBox6.ItemIndex=0) then begin Label9.Caption:=Win.Style(1,1); end else if (ComboBox5.ItemIndex=1) and (ComboBox6.ItemIndex=0) then begin Label9.Caption:=Win.Style(1.5,2); end else if (ComboBox5.ItemIndex=0) and (ComboBox6.ItemIndex=1) then begin Label9.Caption:=Win.Style(2,1.5); end else if (ComboBox5.ItemIndex=1) and (ComboBox6.ItemIndex=1) then begin Label9.Caption:=Win.Style(1.5,2.5); end; end; procedure TForm1.Button4Click(Sender: TObject); begin if RadioGroup2.ItemIndex=2 then begin RadioGroup2.ItemIndex:=Win.Increment; Label12.Caption:='Метод перевантажено'; end else if RadioGroup2.ItemIndex=0 then begin RadioGroup2.ItemIndex:=Win.Increment(1); Label12.Caption:='Метод перевантажено'; end else if RadioGroup2.ItemIndex=1 then begin RadioGroup2.ItemIndex:=Win.Increment(2.0); Label12.Caption:='Метод перевантажено'; end; end; procedure TForm1.Button5Click(Sender: TObject); begin if RadioGroup3.ItemIndex=1 then begin RadioGroup3.ItemIndex:=Win.Stan; end else RadioGroup3.ItemIndex:=-Win.Stan(1); end; procedure TForm1.Button6Click(Sender: TObject); var WinHome:TWindowHome; begin WinHome:=TWindowHome.Create; Label15.Caption:=WinHome.Draw; end; end. Аналіз отриманих результатів та висновки  Висновок При виконанні даної розрахункової роботи я ознайомився з побудовою проекту з використанням наслідування і поліморфізму, створив батьківський клас та дочірні до нього класи, перевантажив методи описані у варіанті індивідуального завдання і перевизначив метод малювання.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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