![]() |
![]() ![]() |
![]() |
compiler |
![]() ![]()
Сообщение
#1
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
вот какой вопрос возник(словами не получается попробую на примере)
дано 3 объекта(одного типа M с двумя полями- днем и месецем.) необходимо прочитать данные для первых 2-х объектов(это я сам сделаю) и ввести разницу дат в 3-ий объект(как). примечание первый и второй объект являются родительскими для третьего. Помогите.. Собственно у меня все получается кроме обработки данных интересно было бы увидеть реализацию и на TP. Сообщение отредактировано: compiler - 22.04.2007 16:36 -------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата первый и второй объект являются родительскими для третьего. Вот с этого места - подробнее... Это как понимать? ОБА сразу? Или тип, к которому относятся И первый И второй объекты (то, есть, они принадлежат к одному типу) - родительский для типа третьего?Цитата Собственно у меня все получается кроме обработки данных Описания типов - в студию... |
compiler |
![]()
Сообщение
#3
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Вот с этого места - подробнее... Это как понимать? ОБА сразу? Или тип, к которому относятся И первый И второй объекты (то, есть, они принадлежат к одному типу) - родительский для типа третьего? или Описания типов - в студию...
fraction = object
num,
den:integer;
constructor init;
procedure reduction;
end;
FrRes =object(fraction)
procedure print;
end;
{...методы...}
var
f1,
f2:fraction;
FRes:FrRes;
а вот текст всей программы для которой необходима эта теория ![]() Сообщение отредактировано: compiler - 22.04.2007 17:02 -------------------- Спасибо!
Удачи! |
мисс_граффити |
![]()
Сообщение
#4
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Цитата Или тип, к которому относятся И первый И второй объекты (то, есть, они принадлежат к одному типу) - родительский для типа третьего? не получается так: Цитата дано 3 объекта(одного типа M с двумя полями- днем и месецем.) -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
compiler |
![]()
Сообщение
#5
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
не получается так: кажется я всех запутал. текст программы "в студии".-------------------- Спасибо!
Удачи! |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
так?
procedure FrRes.subtract(const f1,f2: fraction);
begin
num:=f1.num*f2.den-f2.num*f1.den;
den:=f1.den*f2.den;
end;
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
compiler, вот я не понимаю, зачем тебе ЗДЕСЬ наследование? Просто, чтоб было? Не надо оно тебе... Вот так:
{$mode objfpc}
type
fraction = object
num, den: integer;
constructor create;
constructor init;
procedure reduction;
procedure print;
end;
constructor fraction.create;
begin end;
constructor fraction.init;
begin
read(num, den);
reduction;
end;
procedure fraction.reduction;
var
a,b,nod:integer;
begin
a:=num;
b:=den;
while (a <> 0) and (b <> 0) do
if a >= b then a := a mod b
else b := b mod a;
nod := a + b;
num := num div nod;
den := den div nod;
end;
procedure fraction.print;
begin
write(num, ' / ', den);
end;
var
f1, f2: fraction;
operator - (const first, second: fraction) the_result: fraction;
begin
the_result.create;
the_result.den := first.den * second.den;
the_result.num := first.num * second.den - second.num * first.den;
the_result.reduction;
end;
begin
f1.init;
f2.init;
(f1 - f2).print;
readln;
end.
Welcome to FPC ![]() |
compiler |
![]()
Сообщение
#8
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
2 мисс_граффити ,наверно то но как собственно вызывать эту процедуру?(+ както она у меня не работает на FP)
2 volvo , спасибо за приглашение но без твоих комментариев мне будет не легко... (зачем собственно деректива в первой строчке? остальное вроде понял..) наследование было по двум причинам 1 потому что первые две дроби печатать не надо.. 2 что б было (в смысле в учебных целях) Сообщение отредактировано: compiler - 22.04.2007 17:45 -------------------- Спасибо!
Удачи! |
мисс_граффити |
![]()
Сообщение
#9
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
1. эта цель - она не цель
![]() разве обязательно использовать ВСЕ методы, которые есть? 2. так и думала... Цитата наверно то но как собственно вызывать эту процедуру? f1.init;
f2.init;
f1.reduction;
f2.reduction;
FRes.subtract(f1,f2); //вот
FRes.reduction;
FRes.print;
operator - (const first, second: fraction) the_result: fraction;
![]() -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
compiler |
![]()
Сообщение
#10
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
как задать константу у обьекта/класса?
заранее благодарен. -------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Зачем это тебе, расскажи ...
|
мисс_граффити |
![]()
Сообщение
#12
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Разработчики Java так любят делать, по-моему.
Определили в классе Double константы +бесконечность и -бесконечность, например... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
hardcase |
![]()
Сообщение
#13
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Константы?
Насколько я знаю такие экземпляры классов называются синглтоны. Нужно завести статическое поле/свойство в классе и при чтении возвращать объект, который создается единственный раз при инициализации класса (в нашем случае юнита, где находится класс). Сообщение отредактировано: hardcase - 23.06.2007 21:26 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата Нужно завести статическое поле/свойство в классе Можно код для FPC? (вопрос был именно про FPC, так что все сотрясания воздуха о своей крутизне в C#/Java/... можешь оставить при себе для более подходящих случаев ![]() |
hardcase |
![]()
Сообщение
#15
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Можно код для FPC? (вопрос был именно про FPC, так что все сотрясания воздуха о своей крутизне в C#/Java/... можешь оставить при себе для более подходящих случаев ![]() Возможно вот так.... Код interface TMyClass = class private class function GetSingletonObject: TMyClass; public class property SingletonObject: TMyClass read GetSingletonObject; end; implemetation var _SingletonObject: TMyClass; class function TMyClass.GetSingletonObject: TMyClass; begin Result := _SingleTonObject; end; initialization _SingletonObject := TMyClass.Create; //...дополнительная инициализация.... finalization _SingletonObject.Free; Сообщение отредактировано: hardcase - 24.06.2007 0:45 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
compiler |
![]()
Сообщение
#16
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Зачем это тебе, расскажи ... мне надо реализовать карту как обьект при этом мне могут понадобится границы... хотя наверное и не понадобится... или понадобится ![]() Добавлено через 1 мин. Возможно вот так.... а можно комментарии...-------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
В FPC нет понятия class property... Функция/процедура есть, а свойства - нет... Так что как минимум:
type
TMyClass = class
private
class function GetSingletonObject: TMyClass;
public
property SingletonObject: TMyClass read GetSingletonObject;
end;
кстати, кто мне объяснит, к поставленной задаче, каким боком вообще относится синглтон? Кто-то просил объект, число экземпляров которого ограничено одним (это - синглтон)? Я не заметил этого... compiler, константы не могут описываться внутри класса... Описывай их в Implementation-части модуля, а для обращения к ним - используй class function... Сообщение отредактировано: volvo - 24.06.2007 19:02 |
compiler |
![]()
Сообщение
#18
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
я чего то туплю.... ничего не понимаю...
-------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#19
|
Гость ![]() |
Что непонятно? Ну, вот, скажем:
unit z;
interface
type
T = class
private
function GetMaxSize: integer;
public
property maxSize: integer read GetMaxSize;
end;
implementation
const
the_max_size = 20;
function T.GetMaxSize: integer;
begin
result := the_max_size;
end;
end.
uses z;
var
obj: T;
begin
obj := T.create;
writeln(obj.maxSize);
end.
Что будет напечатано?А теперь попробуй получить доступ к the_max_size НЕ через maxSize... То есть, эффект совершенно аналогичен тому, как если бы константа была описана в самом классе... |
compiler |
![]()
Сообщение
#20
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
кажется понял, спасибо...
с меня + Добавлено через 3 мин. и еще вопрос... можно ли для класса описать сравнение с нулем? -------------------- Спасибо!
Удачи! |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 9:35 |