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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2009, 16:26   #1
dzhI
 
Регистрация: 10.02.2009
Сообщений: 9
По умолчанию Объектно-ориентированное программирование

Необходимо Расширить приложение «Классы», создав новый класс TFish со свойствами и методами, аналогичными имеющимся у классов TDog и TCat.
dzhI вне форума Ответить с цитированием
Старый 16.03.2009, 16:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И что не получается?
Код:
TFish=class(TIkrinka)
 procedure Havaet(kogo:string)
....
end;
ну и так далее по аналогии.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.03.2009, 16:45   #3
dzhI
 
Регистрация: 10.02.2009
Сообщений: 9
По умолчанию

Вот как выглядит для Tcat и Tdog
Сначала создал базовый класс TAnimal:
Код:
 TAnimal = class(TObject)
      private
        Name: string;
      public
        function GetName: string;
        property TheName: string read GetName;
   end;
Создал три дочерних класса, ну еще для человека...
Код:
THuman = class(TAnimal);
   TDog = class(TAnimal);
   TCat = class(TAnimal)
       public
          procedure SetName(AName: string);
          property TheName: string read GetName write SetName;
   end;
Записал три переменные...
Код:
var
    Human:THuman;
    Dog:TDog;
    Cat:TCat;

procedure TForm1.FormCreate(Sender: TObject);

begin
  Human := THuman.Create('Человек');
  Dog := TDog.Create('Собака');
  Cat := TCat.Create('Кот');
end;

procedure TForm1.FormCreate(Sender: TObject);

begin
  Human := THuman.Create('Человек');
  SpeedButton1.Caption := Human.TheName;
  Dog := TDog.Create('Собака');
  SpeedButton2.Caption := Dog.TheName;
  Cat := TCat.Create('Кот');
  SpeedButton3.Caption :=  Cat.TheName;
end;
Допустим переименуем Кота
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   Cat.TheName := Edit1.Text;
   SpeedButton3.Caption := Cat.TheName;
end;
Далее проводим разные функции типа...
function TellMe: string; override;
Код:
function THuman.TellMe;
begin
  Result := TheName;
end;
 function TDog.TellMe;
begin
  Result := 'Гав-Гав!'
end;
function TCat.TellMe;
begin
  Result := 'Мяу!'
end;

Нужно придумать методы для TFish ... есть еще варианты?!

Последний раз редактировалось Stilet; 16.03.2009 в 16:57.
dzhI вне форума Ответить с цитированием
Старый 16.03.2009, 16:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да мало ли?
Ты что не знаеш что рыбы делать любят? Кушают, плавают, икру мечут...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.03.2009, 17:02   #5
dzhI
 
Регистрация: 10.02.2009
Сообщений: 9
По умолчанию

а еще, как записать всё в одну прогу, я только знаю как отдельные функции прописать...
dzhI вне форума Ответить с цитированием
Старый 17.03.2009, 17:08   #6
dzhI
 
Регистрация: 10.02.2009
Сообщений: 9
По умолчанию Подредакте прогу.

Так. Вообщем практически разобрался с программой, нужна помощь с выводом Tellme, вроде бы всё объявил, не могу понять, где ошибся. Также посмотрите, где есть недочеты, так как по листингу не все процедуры и функции работают. Буду благодарен апгрэйду проги!!!!

PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsButtonsExtCtrls;

type
 TFish 
= class(TObject)
      private
        
Namestring;
      public
        function 
GetNamestring;
        
Procedure SetName(s:string);
        
destructor Destroyoverride;
        function 
TellMestringvirtual; abstract;
        
constructor Createoverload;
//        property TheName: string read GetName;
   
end;
 
TAkula=class(TFish)
  private

   
tip:string;
 
end;
  
TForm1 = class(TForm)
    
SpeedButton1TSpeedButton;
    
SpeedButton2TSpeedButton;
    
Button1TButton;
    
Edit1TEdit;
    
Label1TLabel;
    
RadioGroup1TRadioGroup;
    
procedure FormCreate(SenderTObject);
    
procedure Say(p:TFish);
    
procedure Button1Click(SenderTObject);
    
procedure SpeedButton1Click(SenderTObject);
    
procedure RadioGroup1Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var      
p:TAkula;
  
Form1TForm1;

implementation

{$R *.dfm}

TAnimal }

function 
TFish.GetNamestring;
begin
result
:=Name;
end;

function 
TFish.TellMe;
 
begin
   Result
:= 'Tcccc!'
 
end;

procedure TFish.SetName(sstring);
begin
name
:=s;
end;

constructor TFish.Create;
begin
   Name 
:= 'Безымянный';
  
end;

procedure TForm1.FormCreate(SenderTObject);
begin
p
:=TAkula.Createp.SetName('Серая');
  
SpeedButton1.Caption:=p.GetName;
p:=TAkula.Create;
  
SpeedButton2.Caption:=p.GetName;

end;



procedure TForm1.Button1Click(SenderTObject);
begin
   p
.SetName(Edit1.Text);
   
SpeedButton1.Caption :=p.GetName;
end;

procedure TForm1.SpeedButton1Click(SenderTObject);
begin
 p
.Destroy;
  
SpeedButton1.Caption :=p.GetName;
end;

destructor TFish.Destroy;
begin
  ShowMessage
(Self.GetName' умерла!');
  
inherited Destroy;
     
end;

procedure TForm1.Say(Fish:TFish);
     
begin
  Label1
.Caption:= Fish.TellMe;
end;

procedure TForm1.RadioGroup1Click(SenderTObject);
begin
    
case  RadioGroup1.ItemIndex of
   0
Say(p);
   
1Say(p);
  
end;
end;


end
Прикрепил также архив с программой. Буду благодарен.
Вложения
Тип файла: rar Project2.rar (8.2 Кб, 27 просмотров)

Последний раз редактировалось dzhI; 17.03.2009 в 17:11.
dzhI вне форума Ответить с цитированием
Старый 18.03.2009, 12:45   #7
dzhI
 
Регистрация: 10.02.2009
Сообщений: 9
По умолчанию

Неужели нет людей, которые помогут?
dzhI вне форума Ответить с цитированием
Старый 19.03.2009, 13:20   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Лови.
Почитай Тексейру и Пачеко. Они класно пишут про то как с таким ООПешить
Вложения
Тип файла: rar Project2.rar (187.8 Кб, 36 просмотров)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.03.2009, 13:38   #9
dzhI
 
Регистрация: 10.02.2009
Сообщений: 9
По умолчанию

Благодарен!
dzhI вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объектно-ориентированное программирование (Паскаль) Ake Помощь студентам 1 22.02.2009 20:14
1C программирование Last Свободное общение 8 21.01.2009 12:10
[C++] Объектно-ориентированная среда. Двумерный массив. xsix Помощь студентам 31 29.12.2008 16:49
программирование на си фамил Общие вопросы C/C++ 3 31.05.2008 20:03