Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.03.2009, 05:47   #1
Dawystrik
Пользователь
 
Аватар для Dawystrik
 
Регистрация: 22.10.2008
Сообщений: 32
Восклицание Не тот результат!

Вот дано такое задание:
Постановка задачи:
1. Создать класс - транспортные средства, имеющий имя и способ передвижения.. Определить конструктор, деструктор и методы доступа (чтения и записи) к полям класса.
Создать два производных класса:
Класс – пароход, имеющий имя, двигатель, грузоподъемность.
Класс – самолет, имеющий имя, двигатель, дальность полета.
Определить конструкторы, деструкторы, методы доступа (чтения и записи) имени, двигателя, грузоподъемности, дальности полета.
Создать экземпляры объектов всех классов.
В методах доступа к данным класса предусмотреть вывод сообщений поясняющих, метод какого класса вызывается.Написать программу, демонстрирующую различные виды переопределения свойств.
2. Программа должна быть реализована в виде модуля (Realiz.pas) и основной программы (Lab3_main.pas).
3. Свойства, объявленные в производных классах должны иметь такой же идентификатор, как и у свойств родительского класса.
При переопределении свойств необходимо изменить:
• Область видимости родительского свойства;
• Спецификаторы доступа родительского свойства;
4. В реализации программы должен быть предусмотрен вывод значения, спецификатора доступа(read, write) и области видимости (public, protected, private) родительского и переопределенного в производных классах свойства.
Dawystrik вне форума
Старый 22.03.2009, 05:50   #2
Dawystrik
Пользователь
 
Аватар для Dawystrik
 
Регистрация: 22.10.2008
Сообщений: 32
По умолчанию

Вот мой код:
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender:TObject);
    procedure Button2Click(Sender:TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
   TTransp_sred = class
     private
       fName:string;
     protected
       procedure SetP(const new_name: string);
     public
       constructor Create(Name:string);
       Destructor Destroy; override;
       function Get:string;
     published
       property name:string read Get write SetP;
   end;
   TParohod = class(TTransp_sred)
     private
       fGruzopod1:string;
       fDvigatel1:string;
     protected
       procedure SetP(const new_name: string);
       function Get:string;virtual;
     public
       constructor Create(name:string; Gruzopod1:string; Dvigatel1:string);
       Destructor Destroy; override;
     published
       property Gruzopod1:string read Get write SetP;
   end;
   TSamolet = class(TTransp_sred)
     private
       fGruzopod2:string;
       fDvigatel2:string;
     protected
       procedure SetP(const new_name: string);
       function Get:string;virtual;
     public
       constructor Create(name:string; Gruzopod2:string; Dvigatel2:string);
       Destructor Destroy; override;
     published
       property  Gruzopod2:string  read Get write SetP;
   end;
const
   SZL = 20;
var
  Form1: TForm1;
  List:array[1..SZL] of TTransp_sred;
  n:integer = 0;
 
implementation
 
{$R *.dfm}
 
constructor TTransp_sred.Create(Name:string);
   begin
        fName:=name;
   end;
Destructor TTransp_sred.Destroy;
begin
end;
constructor TParohod.Create(Name:string; Gruzopod1:string; Dvigatel1:string);
   begin
        inherited create(name);
        fGruzopod1:=Gruzopod1;
        fDvigatel1:=Dvigatel1;
   end;
Destructor TParohod.Destroy;
begin
end;
constructor TSamolet.Create(Name:string;Gruzopod2:string;Dvigatel2:string);
   begin
        inherited create(name);
        fGruzopod2:=Gruzopod2;
        fDvigatel2:=Dvigatel2;
   end;
Destructor TSamolet.Destroy;
begin
end;
function TTransp_sred.Get:string;
   begin
        result:=fname;
   end;
procedure TTransp_sred.SetP;
begin
  fname:=new_name;
end;
function TParohod.Get:string;
   begin
        result:='Пароход' +' '+ fname + #13+'Грузоподъемность:' + fGruzopod1+ #13+
                'Двигатель:' + fDvigatel1;
   end;
procedure TParohod.SetP;
begin
  fname:=new_name;
end;
function TSamolet.Get:string;
   begin
        result:='Самолет'+' '+fname + #13+'Грузоподъемность:' + fGruzopod2+#13+
                'Двигатель:' + fDvigatel2;
   end;
procedure TSamolet.SetP;
begin
  fname:=new_name;
end;
procedure TForm1.Button1Click(Sender:TObject);
   begin
       if n < SZL then
          begin
              n:=n+1;
              if RadioButton1.Checked
                 then
                     List[n]:=TSamolet.Create(Edit1.Text,Edit2.Text,Edit3.Text)
                 else
                     List[n]:=TParohod.Create(Edit1.Text,Edit2.Text,Edit3.Text);
              Edit1.Text:='';
              Edit2.Text:='';
              Edit3.Text:='';
              Edit1.SetFocus;
          end
       else ShowMessage('Список заполнен!');
end;
procedure TForm1.Button2Click(Sender:TObject);
var
   i:integer;
   st:string;
begin
   for i:=1 to SZL do
      if list[i] <> NIL then
                     st:=st + list[i].Get + #13;
   ShowMessage('Список'+#13+st);
end;
end.
Результат выдает немного не тот который должен быть,вместо 3 значений(Название,грузоподъёмность, Двигатель) выдает только одно.А вместо того,чтобы выдавать по функции Get - выдает только то,что я ввела,то есть должно выводить,например
"Самолет ЕГ152,Грузоподъемность:123,Двигател ь:ракетный"
выдает
"ЕГ152" или "123" или "ракетный".
Помогите найти ошибку!!!
Вложения
Тип файла: rar 2.rar (173.0 Кб, 8 просмотров)
Dawystrik вне форума
Старый 22.03.2009, 09:05   #3
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Первое, что бросилось в глаза:

TTransp_sred = class
//...
function Get:string; <- где virtual ?
alexBlack вне форума
Старый 22.03.2009, 09:50   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Название темы.
закрыто.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тот самый Pascal... Двумерные массивы... Сеня Помощь студентам 21 29.01.2009 00:36
Всё тот же старый COM, кто поможет? Prot Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 14.09.2008 15:01
Все тот же IdHTTP (Post) AVer Работа с сетью в Delphi 5 28.09.2007 10:40