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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2011, 11:00   #1
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию Позднее связывание и полиморфизм Delphi

Есть класс:

Код:
type
TDateAbstract = class
  private
  fDate: TDateTime;
  public
    constructor Create;virtual;abstract;
    procedure SetValue (NewDate: TDateTime);virtual;abstract;
    procedure Increase (NumberOfDays: Integer = 1);virtual;abstract;
    procedure Decrease (NumberOfDays: Integer =1);virtual;abstract;
    function GetText: string;virtual;abstract;
end;
Есть задание:
Создать наследников класса TDate, которые знают сколько дней осталось до конца месяца. Добавьте поле rest и метод для вывода остатка. Переопределите нужные методы и конструктор.

Посоветуйте с чего начать ? И что за поле rest ?
iCaesy вне форума Ответить с цитированием
Старый 09.10.2011, 11:57   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Код:
program Project11;
{$R *.res}
uses
 Windows,SysUtils,DateUtils;

type
  TDateAbstract = class
  private
   fDate: TDateTime;
  public
    constructor Create;virtual;abstract;
    procedure SetValue (NewDate: TDateTime);virtual;abstract;
    procedure Increase (NumberOfDays: Integer = 1);virtual;abstract;
    procedure Decrease (NumberOfDays: Integer =1);virtual;abstract;
    function GetText: string;virtual;abstract;
  end;

  TDate = class(TDateAbstract)
  protected
   function GetDayCount: integer;
  public
    property rest : integer read GetDayCount;
    constructor Create;override;
    procedure SetValue (NewDate: TDateTime);override;
  end;


{ TDate }

constructor TDate.Create;
begin
  inherited;
  fDate := 0;
end;

procedure TDate.SetValue(NewDate: TDateTime);
begin
  fDate :=  NewDate;
end;

function TDate.GetDayCount: integer;
begin
  result:= DaysInAMonth(YearOf(fDate), MonthOf(fDate))-DayOf(fDate);
end;

var D : TDate;

begin
   D := TDate.Create;
   D.SetValue(Now);
   MessageBox(0,PChar('До конца месяца '+DateToStr(Now)+
     ' осталось '+IntToStr(D.rest)+' дней'),'Результат',0);
   D.Free;
end.
Цитата:
И что за поле rest ?
скорее всего єто свойство класса.
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 09.10.2011, 13:04   #3
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

Что - то у меня кучу ошибок выдает =( Ща выложу
iCaesy вне форума Ответить с цитированием
Старый 09.10.2011, 13:10   #4
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

И Что это значит
Код:
{$R *.res}
iCaesy вне форума Ответить с цитированием
Старый 09.10.2011, 13:29   #5
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

Мне нужно чтобы оно работало на форме. Что нужно поменять, а то куча ошибок...
iCaesy вне форума Ответить с цитированием
Старый 09.10.2011, 13:32   #6
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Ты в какой делфи пишешь?
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 09.10.2011, 14:32   #7
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

Delphi 7
(10 символов)
iCaesy вне форума Ответить с цитированием
Старый 09.10.2011, 14:56   #8
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

блин я тоже. Вот держи во вложении.
Вложения
Тип файла: zip _METHOD.ZIP (226.1 Кб, 11 просмотров)
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 09.10.2011, 15:06   #9
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

А если допустим нужно не до конца месяца, а до конца недели посчитать, какие корректировки нужно сделать ?
Если не сложно, пытаюсь разобраться)).
iCaesy вне форума Ответить с цитированием
Старый 09.10.2011, 15:08   #10
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

DaysInAMonth(YearOf(fDate), MonthOf(fDate))-DayOf(fDate);
все фразы Month заменить на Week, + для справки прочитать что делают функции в DateUtils
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полиморфизм Zorgan Visual C++ 22 29.08.2011 12:23
полиморфизм slayerblya Общие вопросы C/C++ 1 27.02.2011 01:43
Полиморфизм mister2010 Общие вопросы C/C++ 30 24.05.2010 01:07
Позднее связывание _Art_ Общие вопросы C/C++ 1 19.12.2009 12:53
Связывание таблиц в MySQL Front и Delphi Droid БД в Delphi 1 22.06.2009 12:12