IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> ООП во FP, робота с обьектами
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


вот какой вопрос возник(словами не получается попробую на примере)
дано 3 объекта(одного типа M с двумя полями- днем и месецем.) необходимо прочитать данные для первых 2-х объектов(это я сам сделаю) и ввести разницу дат в 3-ий объект(как).

примечание
первый и второй объект являются родительскими для третьего.
Помогите.. Собственно у меня все получается кроме обработки данных

интересно было бы увидеть реализацию и на TP.

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






{$mode objfpc}
type
dir = (left, right, up, dn);
T = object
x, y: integer;
procedure print;
end;

procedure T.print;
begin
writeln('X: ', x, ' Y: ', y);
end;

const
p: array[dir] of record
s: string;
px, py: integer;
end =
(
(s:'left' ; px:-1; py: 0),
(s:'right'; px: 1; py: 0),
(s:'up' ; px: 0; py:-1),
(s:'dn' ; px: 0; py: 1)
);


operator := (const d: dir): T;
begin
with result do begin
x := p[d].px; y := p[d].py;
end;
end;

operator := (const s: string): T;
var i: dir;
begin
result.x := 0; result.y := 0;

for i := low(dir) to high(dir) do
if p[i].s = s then
with result do begin
x := p[i].px; y := p[i].py;
end;

end;

var
x: T;

begin
x := 'left';
x.print;

x := 'right'; // <--- Здесь - работаешь со строкой
x.print;

x := up; // <--- А тут - с перечислимым типом
x.print;
end.



Цитата
нельзя ли использовать различные методы сравнения(в смысле перезагруженные операторы сравнения) в зависимости от передаваемых параметров?
Можно, только для этого должны перегружаться операторы для сравнения данных разных типов... Например, так:
// Тут твой тип будет сравниваться с целым числом
operator < (x: T; i: integer): boolean;
begin
// ...
end;
// А тут - со вторым значением такого же типа
operator < (x: T; i: T): boolean;
begin
// ...
end;

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Огромное спасибо! но у меня есть пару вопросов, может некоторые прямо не касающееся темы...
Цитата(volvo @ 2.07.2007 19:16) *


type
dir = (left, right, up, dn); // ? dir это множество?
T = object
x, y: integer;
procedure print;
end;

const
p: array[dir] of record//???
s: string;
px, py: integer;
end = //?
(
(s:'left' ; px:-1; py: 0),
(s:'right'; px: 1; py: 0),
(s:'up' ; px: 0; py:-1),
(s:'dn' ; px: 0; py: 1)
);
оperator := (const d: dir): T; //вот это здорово!
//а то я делал по аналогии со сравнением,
//приходилось описывать возращаемый результат
//и 2 получаемых(правильный термин?)...



еще раз спасибо!


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
compiler   ООП во FP   22.04.2007 20:36
volvo   Вот с этого места - подробнее... Это как понимать?…   22.04.2007 20:47
compiler   Вот с этого места - подробнее... Это как понимать?…   22.04.2007 20:59
мисс_граффити   не получается так:   22.04.2007 20:59
compiler   не получается так:кажется я всех запутал. текст пр…   22.04.2007 21:06
мисс_граффити   так? procedure FrRes.subtract(const f1,f2: fractio…   22.04.2007 21:10
volvo   compiler, вот я не понимаю, зачем тебе ЗДЕСЬ насле…   22.04.2007 21:14
compiler   2 мисс_граффити ,наверно то но как собственно вызы…   22.04.2007 21:22
мисс_граффити   1. эта цель - она не цель :) разве обязательно исп…   22.04.2007 21:29
compiler   как задать константу у обьекта/класса? заранее бла…   23.06.2007 22:57
volvo   Зачем это тебе, расскажи ...   23.06.2007 23:01
compiler   Зачем это тебе, расскажи ...мне надо реализовать к…   24.06.2007 22:28
мисс_граффити   Разработчики Java так любят делать, по-моему. Опр…   23.06.2007 23:34
hardcase   Константы? Насколько я знаю такие экземпляры класс…   24.06.2007 1:24
volvo   Можно код для FPC? (вопрос был именно про FPC, та…   24.06.2007 3:47
hardcase   Можно код [b]для FPC? (вопрос был именно про FPC…   24.06.2007 4:44
volvo   В FPC нет понятия class property... Функция/процед…   24.06.2007 23:01
compiler   я чего то туплю.... ничего не понимаю...   24.06.2007 23:04
volvo   Что непонятно? Ну, вот, скажем: unit z; interfac…   24.06.2007 23:19
compiler   кажется понял, спасибо... с меня + Добавлено чер…   24.06.2007 23:31
volvo   Это смотря что ты хочешь сравнивать с нулем... То …   25.06.2007 2:01
compiler   через метод не так интересно... интересно было бы …   25.06.2007 15:22
мисс_граффити   сорри, FPC у меня нет, проверить могу только в дел…   25.06.2007 2:01
volvo   В таком случае (если у тебя 2 поля должны быть одн…   25.06.2007 18:08
compiler   В таком случае (если у тебя 2 поля должны быть одн…   25.06.2007 18:23
volvo   Ты бы уточнял, ЧЕГО ты хочешь? Либо КАЖДОЕ поле ср…   25.06.2007 19:55
compiler   Либо КАЖДОЕ поле сравнивать с ОДНИМ И ТЕМ ЖЕ числ…   27.06.2007 20:53
compiler   Добрый день! У меня есть вопрос, мне надо пере…   2.07.2007 17:47
volvo   {$mode objfpc} type dir = (left, right, up,…   2.07.2007 23:16
compiler   Огромное спасибо! но у меня есть пару вопросов…   4.07.2007 21:34
volvo   1. Нет, это перечислимый тип. 2. Непонятен способ…   4.07.2007 21:55
compiler   1. Нет, это перечислимый тип.а где про него можна …   4.07.2007 22:06
volvo   Перечислимые типы сравни с: Множественные типы Н…   4.07.2007 22:11
compiler   с горем пополам вроде понл совершенно [b]новый тип…   4.07.2007 22:32
volvo   Нет... Во всяком случае - с помощью перечислимых т…   4.07.2007 22:45
compiler   а вообще возможно ли такое реализовать(именно с ну…   4.07.2007 23:05
volvo   А зачем? У тебя же есть уже Integer, зачем второй …   4.07.2007 23:20
compiler   А зачем? когда-то хотел ради интереса, но практиче…   4.07.2007 23:26
compiler   двигаюсь дальше появляются новые ошибки... в этот …   5.07.2007 0:28
volvo   map это у тебя что? Не имя ли объекта? Если так, т…   5.07.2007 1:09
compiler   тут я разобрался, но у меня возникают проблемы при…   8.07.2007 21:28
volvo   Потому, что у тебя программа не знает о переопреде…   8.07.2007 22:51
compiler   спасибо! А можна где нибудь посмотреть пример…   8.07.2007 23:47
volvo   Можно посмотреть пример, как ты это делаешь?   9.07.2007 0:27
compiler   Можно посмотреть пример, как ты это делаешь?{…   9.07.2007 0:38
volvo   Ты пытаешься вызвать процедуру через тип объекта, …   9.07.2007 1:19
compiler   м-да... Ты пытаешься вызвать процедуру через тип о…   9.07.2007 16:42
volvo   Того, что есть в документации (prog.pdf, chapters …   9.07.2007 16:50
compiler   Того, что есть в документации (prog.pdf, chapters …   9.07.2007 17:03
volvo   Ну, отличий тоже хватает: 1) (там же - 8.2.13) …   9.07.2007 17:28
compiler   4) Уровень доступа publishedа можна тут по подробн…   9.07.2007 17:48
compiler   где можна посмотреть конструктор для class-а, с ин…   13.07.2007 16:57
compiler   и деструктор(имея указатель на уничтожаемый обьект…   13.07.2007 17:39
volvo   Модуль: unit _u; interface type T = object pr…   13.07.2007 19:51
compiler   volvo, спасибо большое, твоя программка заставила …   14.07.2007 19:35
volvo   [b]6.2. Class instantiation Remember that [color=r…   14.07.2007 20:39


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 2:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name