Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Переопределенный метод Invite 
:(
    Опции темы
dawystrik
  Дата 23.3.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



Вот у меня дана лабораторная:
Постановка задачи:

1. Вычислить значение арифметического выражения для следующих типов данных:

A,b:integer;
A,b:single;
A:integer, b:single;
A:single, b:integer.

2. Реализовать переопределенный метод Invite, в котором выводится сообщение о том, метод какого класса вызван.
3. Реализовать в родительском классе абстрактный метод .
4. Реализовать в производных классах виртуальный метод , который вычисляет значение арифметического выражения для разных типов данных.
5. Используя инструментальную среду Delphi в консольном режиме (или Windows приложение) вывести на экран значения выражения для разных типов данных.
Арифметическое выражение:
(arctg(c - d/2))/(2*a - b/c)

Подскажите,пожалуйста,что это за "переопределенный метод Invite" и как "Реализовать в родительском классе абстрактный метод" и "Реализовать в производных классах виртуальный метод , который вычисляет значение арифметического выражения для разных типов данных"?
PM MAIL   Вверх
Christoph
Дата 23.3.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 2
Всего: 11



это все классика, читай ООП


--------------------
user posted image
PM MAIL ICQ   Вверх
dawystrik
Дата 23.3.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



я нигде не могу найти переопределенный метод Invite
PM MAIL   Вверх
Christoph
Дата 23.3.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 2
Всего: 11



 smile почитай про перепопределние методов, а метод может называться по разному, хоть Invite, хоть Zooko (вспомнил рекламу "Invite просто добавь воды")


--------------------
user posted image
PM MAIL ICQ   Вверх
dawystrik
Дата 23.3.2009, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



помогите,пожалуйста,мне с программкой,а то я в этих методах не разбираюсь...
PM MAIL   Вверх
CodeMonkey
Дата 23.3.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 1
Всего: 89



Вам лабораторная на то и дана, чтобы вы разобрались smile 

Подсказка: метод Invite - вы должны реализовать его САМИ. Подумать как и сделать. Что должен делать метод? Ну вот: "котором выводится сообщение о том, метод какого класса вызван". Если хоть немного подключить сюда свою голову, то увидите, что:
- из "метод какого класса вызван" следует, что вы должны написать несколько классов.
- в самом методе должно выводиться сообщение (как? Ну должны же у вас читаться лекции!).
- метод ещё как-то должен узнать, из какого класса его вызвали. Есть несколько вариантов решения. Вы должны выбрать подходящий, исходя из своих лекций.

Всё. Голова + лекции = результат. Делов на 15 минут.

Добавлено через 1 минуту и 26 секунд
P.S.
Цитата(dawystrik @  23.3.2009,  16:46 Найти цитируемый пост)
помогите,пожалуйста,мне с программкой,а то я в этих методах не разбираюсь...

А если вы хотите готовую программу не думая - вам бы в соседние разделы: просить написать программу за соответствующую плату ;)


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
THandle
Дата 23.3.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 
PM   Вверх
dawystrik
Дата 23.3.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



молодцы,всё без меня переместили,я что сказала,что мне готовая программа нужна???а по поводу лекций,я учусь заочно и лекций у нас не было!!!
PM MAIL   Вверх
CodeMonkey
Дата 23.3.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 1
Всего: 89



Цитата(dawystrik @  23.3.2009,  17:39 Найти цитируемый пост)
я что сказала,что мне готовая программа нужна???

См.:
Цитата(dawystrik @  23.3.2009,  16:46 Найти цитируемый пост)
помогите,пожалуйста,мне с программкой




--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
THandle
Дата 23.3.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Цитата(dawystrik @  23.3.2009,  15:35 Найти цитируемый пост)

Подскажите,пожалуйста,что это за "переопределенный метод Invite" и как "Реализовать в родительском классе абстрактный метод" и "Реализовать в производных классах виртуальный метод , который вычисляет значение арифметического выражения для разных типов данных"? 


Example:

Код


type
  TMyParentClass = class
  public
    function SummInt(const A, B: Integer): Integer; virtual; abstract;
    procedure Invite;
  end;

  TMyFirstClass = class(TMyParentClass)
  public
    function SummInt(const A, B: Integer): Integer; virtual;
    procedure Invite;
  end;

{ TMyParentClass }

procedure TMyParentClass.Invite;
begin
  ShowMessage('Parent class');
end;

{ TMyFirstClass }

procedure TMyFirstClass.Invite;
begin
  ShowMessage('First class');
end;

function TMyFirstClass.SummInt(const A, B: Integer): Integer;
begin
  Result := A + B;
  ShowMessage(IntToStr(Result));
end;



dawystrik, почитайте хотя бы того же Пачеко, глава 2:

http://www.delphilab.ru/content/view/17/46/
PM   Вверх
CodeMonkey
Дата 23.3.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 1
Всего: 89



THandle, убил всю самостоятельную работу на корню! smile


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
THandle
Дата 23.3.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



CodeMonkey, после этого:

Цитата(dawystrik @  23.3.2009,  17:39 Найти цитируемый пост)
сказала


Я не мог не сказать хоть пару слов по теме)

PM   Вверх
dawystrik
Дата 24.3.2009, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



ну-ну!!!

Добавлено через 4 минуты и 39 секунд
Цитата(dawystrik @  23.3.2009,  17:39 Найти цитируемый пост)
я что сказала,что мне готовая программа нужна???

См.:
Цитата(dawystrik @  23.3.2009,  16:46 Найти цитируемый пост)
помогите,пожалуйста,мне с программкой

я что так и написала "сделайте мне программу"?Помочь - это не означает сделать,если Вы не понимаете значения данного слова,то не надо других в заблуждение вводить.

Добавлено через 6 минут и 55 секунд
CodeMonkey, после этого:

Цитата(dawystrik @  23.3.2009,  17:39 Найти цитируемый пост)
сказала


Я не мог не сказать хоть пару слов по теме)

очень по-мужски обсуждать за спиной...создайте где-нибудь во флудилке тогда тему как подколоть и обосрать человека...как вам идея??
PM MAIL   Вверх
THandle
Дата 24.3.2009, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



dawystrik, не обижайтесь пожалуйста.

Цитата(dawystrik @  24.3.2009,  02:12 Найти цитируемый пост)
очень по-мужски обсуждать за спиной...создайте где-нибудь во флудилке тогда тему как подколоть и обосрать человека...как вам идея?? 


Даже в мыслях не было ничего подобного... Прошу прощения, если обидел.

Насчет переноса темы: я перенес тему сюда, так как она просто больше соответствует разделу. Тут люди чаще помогают с подобными вопросами.


dawystrik, что Вам остается непонятным, с учетом моего предпредудущего поста?
PM   Вверх
Rrader
  Дата 24.3.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 14
Всего: 191



Цитата

(arctg(c - d/2))/(2*a - b/c)


А c и d откуда взять?


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
dawystrik
Дата 24.3.2009, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



Цитата

(arctg(c - d/2))/(2*a - b/c)


А c и d откуда взять?
ввести с клавиатуры
PM MAIL   Вверх
Rrader
  Дата 24.3.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 14
Всего: 191



Код

program Project1;

{$APPTYPE CONSOLE}

uses Windows, Dialogs, Math;

type
  TBaseClass = class(TObject)
  protected
    procedure Invite; virtual; abstract;
  end;

  TIntegerClass = class(TBaseClass)
  private
    A, B: Integer;
  public
    procedure Invite; override;
    function Evaluate(C, D: Integer): Single; virtual;
  end;

  TSingleClass = class(TBaseClass)
  private
    A, B: Single;
  public
    procedure Invite; override;
    function Evaluate(C, D: Integer): Single; virtual;
  end;

  TIntSingleClass = class(TBaseClass)
  private
    A: Integer;
    B: Single;
  public
    procedure Invite; override;
    function Evaluate(C, D: Integer): Single; virtual;
  end;

  TSingleIntClass = class(TBaseClass)
  private
    A: Single;
    B: Integer;
  public
    procedure Invite; override;
    function Evaluate(C, D: Integer): Single; virtual;
  end;

{ TIntegerClass }


function TIntegerClass.Evaluate(C, D: Integer): Single;
begin
  Result := ArcTan(C - D / 2) / (A shl 1 - B / C);
  WriteLn('Result is : ', Result);
end;

procedure TIntegerClass.Invite;
begin
  ShowMessage('Вызван из: ' + ClassName);
end;

{ TSingleClass }

function TSingleClass.Evaluate(C, D: Integer): Single;
begin
  Result := ArcTan(C - D / 2) / (A * 2 - B / C);
  WriteLn('Result is : ', Result);
end;

procedure TSingleClass.Invite;
begin
  ShowMessage('Вызван из: ' + ClassName);
end;

{ TIntSingleClass }

function TIntSingleClass.Evaluate(C, D: Integer): Single;
begin
  Result := ArcTan(C - D / 2) / (A shl 1 - B / C);
  WriteLn('Result is : ', Result);
end;

procedure TIntSingleClass.Invite;
begin
  ShowMessage('Вызван из: ' + ClassName);
end;

{ TSingleIntClass }

procedure TSingleIntClass.Invite;
begin
  ShowMessage('Вызван из: ' + ClassName);
end;

function TSingleIntClass.Evaluate(C, D: Integer): Single;
begin
  Result := ArcTan(C - D / 2) / (A * 2 - B / C);
  WriteLn('Result is : ', Result);
end;

var
  C, D: Integer;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  WriteLn('Please enter C and D...' + sLineBreak);
  ReadLn(C);
  WriteLn;
  ReadLn(D);
  with TIntegerClass.Create do
  try
    A := 20;
    B := 10;
    Invite;
    Evaluate(C, D);
  finally
    Free;
  end;
  with TSingleClass.Create do
  try
    A := 10.15;
    B := 5.25;
    Invite;
    Evaluate(C, D);
  finally
    Free;
  end;
  with TSingleIntClass.Create do
  try
    A := 10.15;
    B := 5;
    Invite;
    Evaluate(C, D);
  finally
    Free;
  end;
  with TIntSingleClass.Create do
  try
    A := 10;
    B := 5.25;
    Invite;
    Evaluate(C, D);
  finally
    Free;
  end;
  ReadLn;
end.


Задание не самое лучшее, пришлось много однотипного кода продублировать.

Это сообщение отредактировал(а) Rrader - 24.3.2009, 12:22


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
dawystrik
Дата 24.3.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



проверьте,плиз,на правильность согласно моему условию,а то ошбику выдает,а как исправить - фиг его знает
Код
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, Classes;
type
    TParent=class(TObject)
        a:array of string;
     protected
        procedure ShowList; virtual;
     public
        procedure Invite;virtual; abstract;
        procedure Show;
    end;
    TChild=class(TParent)
     public
        procedure Invite; override;
        procedure ShowList; override;
    end;


procedure TParent.ShowList;
var i:byte; s:string;
begin
    s:='';
    for i:=0 to High(a) do
      s:=s+a[i]+#13#10;
    write(s);
end;

procedure TParent.Show;
begin
    write('a list:');
    ShowList;
end;

procedure TChild.Invite;
begin
writeln((self as TObject).ClassName);
end;
 
procedure TChild.ShowList;
var i:byte; s:string;
begin
    s:='';
    for i:=0 to High(a) do
      s:=s+a[i]+' : ';
    write(s);
end;
function Ar1(var a,b,c,d:integer):real;
begin
if c=0 then
begin
   Writeln ('Na nol delit nelzja!!!!');
   Exit;
end;
Ar1:=(arctan(c - (d/2)))/(2*a - (b/c));
end;
function Ar2(var e,f:single;c,d:integer):double;
begin
if c=0 then
begin
   Writeln ('Na nol delit nelzja!!!!');
   Exit;
end;
Ar2:=(arctan(c - (d/2)))/(2*e - (f/c));
end;
function Ar3(var f:single; e,c,d:integer):double;
begin
if c=0 then
begin
   Writeln ('Na nol delit nelzja!!!!');
   Exit;
end;
Ar3:=(arctan(c - (d/2)))/(2*e - (f/c));
end;
function Ar4(var e:single; f,c,d:integer):double;
begin
if c=0 then
begin
   Writeln ('Na nol delit nelzja!!!!');
   Exit;
end;
Ar4:=(arctan(c - (d/2)))/(2*e - (f/c));
end;
var com,g:byte;
    a,b,c,d:integer;
    e,f:single;
begin
  writeln('Vuberite odnu iz command:');
  writeln('1. Pokazat imja klassa TParent');
  writeln('2. Pokazat imja klassa TChild');
  writeln('3. Vuchislit vurajenie (arctg(c - d/2))/(2*a - b/c)');
  writeln('4. Vuxod');
  read(com);
  case com of
    1: begin write('Type of class: '); TParent.Create.Invite; end;    {ERROR!!!!!}
    2: begin write('Type of Child-class: ');TChild.Create.Invite; end; {CORRECT}
    3: begin writeln('Vvedite a: ');
             Writeln('Vvedite b:');
             Writeln('Vvedite c:');
             Writeln('Vvedite d:');
             Writeln('Vuberite tip a i b:');
             Writeln('1. a,b:integer;');
             Writeln('2. a,b:single;');
             Writeln('3. a:integer, b:single;');
             Writeln('4. a:single, b:integer;');
             readln(a);
             readln(b);
             readln(c);
             readln(d);
             readln(e);
             readln(f);
             readln(g);
             case g of
                  1: begin Writeln('Rezultat raven: ',Ar1(a,b,c,d));
                           Writeln('Najmite <Enter> dlja vuxoda')
                     end;
                  2: begin Writeln('Rezultat raven: ',Ar2(e,f,c,d));
                           Writeln('Najmite <Enter> dlja vuxoda')
                     end;
                  3: begin Writeln('Rezultat raven: ',Ar3(e,f,c,d));
                           Writeln('Najmite <Enter> dlja vuxoda')
                     end;
                  4: begin Writeln('Rezultat raven: ',Ar4(e,f,c,d));
                           Writeln('Najmite <Enter> dlja vuxoda')
                     end;
                  end;
    4: begin
         Exit
       end;
  end;
  readln;
  readln;
end.


PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1710 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.