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

> 

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

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> ООП во FP, робота с обьектами
сообщение
Сообщение #1


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

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

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


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

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

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

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


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


Гость






Цитата
первый и второй объект являются родительскими для третьего.
Вот с этого места - подробнее... Это как понимать? ОБА сразу? Или тип, к которому относятся И первый И второй объекты (то, есть, они принадлежат к одному типу) - родительский для типа третьего?

Цитата
Собственно у меня все получается кроме обработки данных
Описания типов - в студию...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


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

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

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


Цитата(volvo @ 22.04.2007 16:47) *
Вот с этого места - подробнее... Это как понимать? ОБА сразу? Или тип, к которому относятся И первый И второй объекты (то, есть, они принадлежат к одному типу) - родительский для типа третьего?

или
Цитата(volvo @ 22.04.2007 16:47) *
Описания типов - в студию...


fraction = object
num,
den:integer;

constructor init;
procedure reduction;
end;

FrRes =object(fraction)
procedure print;
end;
{...методы...}
var
f1,
f2:fraction;
FRes:FrRes;


а вот текст всей программы для которой необходима эта теорияПрикрепленный файл  005.PAS ( 1.12 килобайт ) Кол-во скачиваний: 447


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


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


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Цитата
Или тип, к которому относятся И первый И второй объекты (то, есть, они принадлежат к одному типу) - родительский для типа третьего?

не получается так:
Цитата
дано 3 объекта(одного типа M с двумя полями- днем и месецем.)


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


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

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

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


Цитата(мисс_граффити @ 22.04.2007 16:59) *
не получается так:
кажется я всех запутал. текст программы "в студии".


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


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


так?
procedure FrRes.subtract(const f1,f2: fraction);
begin
num:=f1.num*f2.den-f2.num*f1.den;
den:=f1.den*f2.den;
end;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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

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

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


2 мисс_граффити ,наверно то но как собственно вызывать эту процедуру?(+ както она у меня не работает на FP)

2 volvo , спасибо за приглашение но без твоих комментариев мне будет не легко... (зачем собственно деректива в первой строчке? остальное вроде понял..)
наследование было по двум причинам
1 потому что первые две дроби печатать не надо..
2 что б было (в смысле в учебных целях)

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


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


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


1. эта цель - она не цель smile.gif
разве обязательно использовать ВСЕ методы, которые есть?

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;

good.gif


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


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

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

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


как задать константу у обьекта/класса?
заранее благодарен.


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


Гость






Зачем это тебе, расскажи ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Разработчики Java так любят делать, по-моему.
Определили в классе Double константы +бесконечность и -бесконечность, например...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


code warrior
****

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

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


Константы?
Насколько я знаю такие экземпляры классов называются синглтоны.
Нужно завести статическое поле/свойство в классе и при чтении возвращать объект, который создается единственный раз при инициализации класса (в нашем случае юнита, где находится класс).

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


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цитата
Нужно завести статическое поле/свойство в классе
Можно код для FPC? (вопрос был именно про FPC, так что все сотрясания воздуха о своей крутизне в C#/Java/... можешь оставить при себе для более подходящих случаев dry.gif )
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


code warrior
****

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

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


Цитата(volvo @ 24.06.2007 0:47) *
Можно код для FPC? (вопрос был именно про FPC, так что все сотрясания воздуха о своей крутизне в C#/Java/... можешь оставить при себе для более подходящих случаев dry.gif )

Возможно вот так....
Код

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 -


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


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

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

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


Цитата(volvo @ 23.06.2007 19:01) *
Зачем это тебе, расскажи ...
мне надо реализовать карту как обьект при этом мне могут понадобится границы... хотя наверное и не понадобится... или понадобится smile.gif ну а потом для общего развития.


Добавлено через 1 мин.
Цитата(hardcase @ 24.06.2007 0:44) *
Возможно вот так....
а можно комментарии...


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


Гость






В FPC нет понятия class property... Функция/процедура есть, а свойства - нет... Так что как минимум:

type
TMyClass = class
private
class function GetSingletonObject: TMyClass;
public
property SingletonObject: TMyClass read GetSingletonObject;
end;



кстати, кто мне объяснит, к поставленной задаче, каким боком вообще относится синглтон? Кто-то просил объект, число экземпляров которого ограничено одним (это - синглтон)? Я не заметил этого...

compiler, константы не могут описываться внутри класса... Описывай их в Implementation-части модуля, а для обращения к ним - используй class function...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


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

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

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


я чего то туплю.... ничего не понимаю...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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... То есть, эффект совершенно аналогичен тому, как если бы константа была описана в самом классе...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


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

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

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


кажется понял, спасибо...

с меня +

Добавлено через 3 мин.
и еще вопрос... можно ли для класса описать сравнение с нулем?


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

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

 





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