Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Разработка классов транспортных средств




 

Разработать классы и создать приложение:

1. Разработать класс, который инкапсулирует информацию о транспортных средствах, таких как легковые автомобили, автобусы, грузовики. Этот класс (Vehicle) должен хранить следующие данные - количество Мест (Seats), объем бака (Сap), расстояние (mpl), которое проедет автомобиль, используя один литр топлива.

2. В классе использовать 3 поля (FSeats, Ffuelcap, Fmpl);

3. Создать объект Motor.

4. Ввести значения полей(FSeats, FCap, Fmpl).

5. Найти максимальное расстояние, которое может пройти автомобиль Motor, имея полный бак.

6. Создать класс (Vehicle1), который является наследником класса Vehicle, определить в нем 3 свойства Passengers (число пассажиров), Fuel (топлива в баке), Mpl, все типа Byte. Последнее свойство работает только на чтение. В процедурах записи значений свойств Passengers, Fuel использовать ограничения.

7. В классе Vehicle1, определить метод (MaxDistance), который определяет максимальную дальность поездки, с данной заправкой топливного бака.

8. Для класса Vehicle1 разработать конструктор с начальной инициализацией. При этом бак должен быть заполнен наполовину, пассажиров столько сколько мест.

9. Создать объект Motor1 класса Vehicle1.

10.Ввести значения свойств (Passengers, Fuel).

11.Вывести максимальную дальность поездки.

12.Ввести расстояние, которое должен пройти автомобиль Motor1 и найти оставшееся количество топлива.

13.Создать класс (Vehicle2), который является наследником класса Vehicle1, переопределить в нем метод (MaxDistance), который определяет максимальную дальность поездки, учетом числа пассажиров (пробег авто на 1 литр бензина уменьшается на (k-1), где к - число пассажиров).

14.В классе Vehicle2 определить метод FuelNeeded, который на заданное расстояние возвращает необходимое количество топлива.

15.Создать объект Motor2 класса Vehicle2, используя конструктор класса Vehicle1.

16.Присвоить объекту Motor1 данные объекту Motor2.

17.Ввести расстояние, и определить необходимое количество топлива для автомобилей Motor1 и Motor2.

Исходный текст Delphi приложения:

unit Unit1;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Spin;

TForm1 = class( TForm )

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button1: TButton;

Label4: TLabel;

Button3: TButton;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

SpinEdit3: TSpinEdit; Button3Click ( Sender: TObject ); Button1Click ( Sender: TObject );

{ Private declarations }

Public

{ Public declarations }

end;

TVehicle = class( TObject )

Fseats, Ffuelcap, Fmpl: integer; Create1 ;;

TVehicle1 = class( TVehicle )

FPassengers, FFuel: byte; GetPassegers: byte; SetPassegers ( N: byte ); GetFuel: byte; SetFuel ( N: byte ); Getmpl: integer; Create2; Passengers: byte read GetPassegers write SetPassegers; Fuel: byte read GetFuel write SetFuel; mpl: integer read Getmpl; MaxDistance: byte; virtual;;

TVehicle2 = class( TVehicle1 ) MaxDistance: byte; override;;

Form1: TForm1;

Motor: TVehicle;

Motor1: TVehicle1;

Motor2: TVehicle2; TVehicle.Create1; Create;

Fseats := 1;

FFuelcap := 1;

Fmpl := 1 ;;

{$R *.dfm}

constructor TVehicle1.Create2; Create;

Fseats := 2;

FFuelcap := 2;

Fmpl := 1;

Passengers := Fseats;

Fuel := FFuelcap div 2 ;; TVehicle1.GetPassegers: byte;

Result := FPassengers ;; Tvehicle1.SetPassegers ( N: byte ); N > Fseats then FPassengers := N else showmessage ( 'Число пассажиров не может быть больше числа мест' );; TVehicle1.GetFuel: byte;

Begin

Result := FFuel ;;

procedure Tvehicle1.SetFuel ( N: byte ); N > Ffuelcap then FFuel := N else showmessage ( 'указано число превышающее вместимость бака' );; TVehicle1.Getmpl: integer;

Result := Fmpl ;; TVehicle1.MaxDistance: byte;

Result := Ffuel div Fmpl ;; Tvehicle2.MaxDistance: byte;

Result := Ffuel div ( Fmpl -( Passengers - 1 ));; TForm1.Button3Click ( Sender: TObject );

motor.Free;

close ;; TForm1.Button1Click ( Sender: TObject );

Motor := TVehicle.Create1;

Motor.Fseats := strtoint ( spinEdit1.Text );

Motor.Ffuelcap := strtoint ( spinEdit2.Text );

Motor.Fmpl := strtoint ( spinEdit3.Text );

Label4.Caption := 'Максимальное расстояние ' + inttostr ( Motor.Ffuelcap div Motor.Fmpl )+ ' км';

end;


Разработка структур классов (Кошки)

 

Исходный текст программы, содержащей классы, служащие для описания объектов типа «кошки»:

unit CatSource1;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, jpeg, ExtCtrls, StdCtrls;

TForm1 = class( TForm )

Edit1: TEdit;

ComboBox1: TComboBox;

Edit2: TEdit;

Edit4: TEdit;

Image1: TImage;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

Button10: TButton;

Button11: TButton; Button1Click ( Sender: TObject ); Button2Click ( Sender: TObject ); Button3Click ( Sender: TObject ); Button4Click ( Sender: TObject ); Button5Click ( Sender: TObject ); Button6Click ( Sender: TObject ); Button7Click ( Sender: TObject ); Button8Click ( Sender: TObject ); Button9Click ( Sender: TObject ); Button10Click ( Sender: TObject ); Button11Click ( Sender: TObject ); FormActivate ( Sender: TObject );

{ Private declarations }

Public

{ Public declarations }

end;

TCats1 = class( TObject )

FName: string;

FSex: byte; Create1; GetName :string; SetName ( N :string); GetSex :string; SetSex ( S :string); Name :string read GetName write SetName; Sex :string read GetSex write SetSex; CatDescription :string;;

TCats2 = class( TCats1 )

//FAge: byte; Create2; GetAge: byte; SetAge ( A: byte ); Age: byte read GetAge write SetAge; CatDescription :string; virtual;;

TCats3 = class( TCats2 )

//FBreed

//FColor: string; Create3; GetColor :string; SetColor ( C :string); Color :string read GetColor write SetColor; CatDescription :string; override;;

Form1: TForm1;

Cat1: TCats1;

Cat2: TCats2;

Cat3: TCats3;

LastUsedCat: byte;

{$R *.dfm}

//constructors

constructor TCats1.Create1; Create;

Name := 'Lucky';

Sex := 'male cat' ;; TCats2.Create2; Create1;

Age := 1 ;; TCats3.Create3; Create2;

Color := 'black' ;;

//functions and procedures for classes

//TCats1

function TCats1.GetName;

Result := FName ;; TCats1.SetName ( N :string);

FName := N ;; TCats1.GetSex :string; FSex = 1 then Result := 'male cat' else Result := 'female cat' ;; TCats1.SetSex ( S :string); S = 'male cat' then FSex := 1 else if S = 'female cat' then Fsex := 0 else showmessage ( 'Пол указан неверно' );; TCats1.CatDescription :string;

Result := 'This cat is a ' + Sex + ', name''s ' + Name ;;

//TCats2

function TCats2.GetAge: byte;

Result := FAge ;; TCats2.SetAge ( A: byte );

FAge := A ;; TCats2.CatDescription :string; AgeDescription :string; Age < 3 then ageDescription := 'a young' else if Age < 5 then ageDescription := 'a mature' else AgeDescription := 'an old';

Result := 'This cat is ' + ageDescription + ' ' + Sex + ', name''s ' + Name ;;

//TCats3

function TCats3.GetColor :string;

Result := FColor ;; TCats3.SetColor ( C :string);

FColor := C ;; TCats3.CatDescription :string; AgeDescription :string; Age < 3 then ageDescription := 'a young' else if Age < 5 then ageDescription := 'a mature' else AgeDescription := 'an old';

Result := 'This cat is ' + ageDescription + ' ' + Color + ' ' + Sex + ', name''s ' + Name ;;

//Other things like button events handlers etc.

procedure TForm1.Button1Click ( Sender: TObject );

Cat1.Free;

Cat2.Free;

Cat3.Free;

close ;; TForm1.Button2Click ( Sender: TObject );

Cat1 := TCats1.Create1;

LastUsedCat := 1 ;; TForm1.Button3Click ( Sender: TObject );

Memo1.Lines.Add ( Cat1.CatDescription ); on EAccessViolation

do

showmessage ( 'Create a cat first' );; TForm1.Button4Click ( Sender: TObject );

Edit1.Text := Cat1.Name; Cat1.Sex = 'male cat' then ComboBox1.ItemIndex := 1 else ComboBox1.ItemIndex := 2; on EAccessViolation

do

showmessage ( 'You should have a cat first' );; TForm1.Button5Click ( Sender: TObject );

Cat2 := TCats2.Create2;

LastUsedCat := 2 ;; TForm1.Button6Click ( Sender: TObject );

Memo1.Lines.Add ( Cat2.CatDescription ); on EAccessViolation

do

showmessage ( 'Create a cat first' );; TForm1.Button7Click ( Sender: TObject );

Edit1.Text := Cat2.Name; Cat2.Sex = 'male cat' then ComboBox1.ItemIndex := 1 else ComboBox1.ItemIndex := 2;

Edit2.Text := inttostr ( Cat2.Age ); on EAccessViolation

do

showmessage ( 'You should have a cat first' );

 

end; TForm1.Button8Click ( Sender: TObject );

Cat3 := TCats3.Create3;

LastUsedCat := 3 ;; TForm1.Button9Click ( Sender: TObject );

Memo1.Lines.Add ( Cat3.CatDescription ); on EAccessViolation

do

showmessage ( 'Create a cat first' );; TForm1.Button10Click ( Sender: TObject );

Edit1.Text := Cat3.Name; Cat3.Sex = 'male cat' then ComboBox1.ItemIndex := 1 else ComboBox1.ItemIndex := 2;

Edit2.Text := inttostr ( Cat3.Age );

Edit4.Text := Cat3.Color; on EAccessViolation

do

showmessage ( 'You should have a cat first' );; TForm1.Button11Click ( Sender: TObject ); LastUsedCat = 1 then

Cat1.Name := Edit1.Text; ComboBox1.ItemIndex = 1 then Cat1.Sex := 'male cat' else Cat1.Sex := 'female cat'; if LastUsedCat = 2 then

Cat2.Name := Edit1.Text; ComboBox1.ItemIndex = 1 then Cat2.Sex := 'male cat' else Cat2.Sex := 'female cat';

Try

Cat2.Age := strtoint ( Edit2.Text ); on EConvertError

do

showmessage ( 'Age should have an integer value' ); if LastUsedCat = 3 then

Cat3.Name := Edit1.Text; ComboBox1.ItemIndex = 1 then Cat3.Sex := 'male cat' else Cat3.Sex := 'female cat';

Cat3.Age := strtoint ( Edit2.Text ); on EConvertError

do

showmessage ( 'Age should have an integer value' );

Cat3.Color := Edit4.Text; showmessage ( 'There is no cats here yet.' );; TForm1.FormActivate ( Sender: TObject );

Begin

LastUsedCat := 0 ;;.


Заключение

программирование инкапсуляция полиморфизм

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

 


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...