Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно сделать "проброс" параметров класса? / 8 сообщений из 8, страница 1 из 1
14.06.2017, 12:20:34
    #39471436
gssbox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать "проброс" параметров класса?
Иногда возникает необходимость передать какое то свойство класса внутри класса наружу см. пример ниже:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
  public
   property Param1: byte read GetParam1 write SetParam1;
   property Param2: byte read FParam2 write FParam2;
 end;

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;



В приведенном примере мне нужно получить доступ к свойству TMyClass1.Param1 из TMyClass2.
Сейчас я в таком случае делаю это так как привел в примере выше.
Подозреваю что есть более изящные способы передачи.
Может кто подскажет как вы поступаете в таком случае?
...
Рейтинг: 0 / 0
14.06.2017, 12:26:29
    #39471439
Как правильно сделать "проброс" параметров класса?
gssboxПодозреваю что есть более изящные способы передачи. нет
...
Рейтинг: 0 / 0
14.06.2017, 12:42:50
    #39471456
ma1tus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать "проброс" параметров класса?
Переформулировать подозрительный "проброс" в изящное "предоставление доступа".
...
Рейтинг: 0 / 0
14.06.2017, 12:54:13
    #39471459
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать "проброс" параметров класса?
gssboxИногда возникает необходимость передать какое то свойство класса внутри класса наружу см. пример ниже:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
  public
   property Param1: byte read GetParam1 write SetParam1;
   property Param2: byte read FParam2 write FParam2;
 end;

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;



В приведенном примере мне нужно получить доступ к свойству TMyClass1.Param1 из TMyClass2.
Сейчас я в таком случае делаю это так как привел в примере выше.
Подозреваю что есть более изящные способы передачи.
Может кто подскажет как вы поступаете в таком случае?

Это называется композиция или агрегирование. Вполне нормальная реализация.
...
Рейтинг: 0 / 0
14.06.2017, 13:08:09
    #39471468
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать "проброс" параметров класса?
gssboxИногда возникает необходимость передать какое то свойство класса внутри класса наружу см. пример ниже:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
  public
   property Param1: byte read GetParam1 write SetParam1;
   property Param2: byte read FParam2 write FParam2;
 end;

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;



В приведенном примере мне нужно получить доступ к свойству TMyClass1.Param1 из TMyClass2.
Сейчас я в таком случае делаю это так как привел в примере выше.
Подозреваю что есть более изящные способы передачи.
Может кто подскажет как вы поступаете в таком случае?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
interface

type
 TMyClass1 = Class
  private
  public
    FParam1: byte;
 end;

 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
  public
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
 end;

 TMyClass3 = Class
  private
    FMyClass1: TMyClass1;
  public
    function GetSetParam1: pByte;
 end;

implementation

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;

function TMyClass3.GetSetParam1: pByte;
begin
  Result := @fMyClass1.FParam1
end;



:)_
...
Рейтинг: 0 / 0
14.06.2017, 13:16:27
    #39471472
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать "проброс" параметров класса?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class(TMyClass1)
  private
    FParam2: byte;
  public
   property Param2: byte read FParam2 write FParam2;
 end;

var
  My : TMyClass2 ;
begin
  My.Param1 := 0 ;
  My.Param2 := My.Param1 ;
end;



Бггг
...
Рейтинг: 0 / 0
14.06.2017, 13:20:04
    #39471476
gssbox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать "проброс" параметров класса?
чччДgssboxИногда возникает необходимость передать какое то свойство класса внутри класса наружу см. пример ниже:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
  public
   property Param1: byte read GetParam1 write SetParam1;
   property Param2: byte read FParam2 write FParam2;
 end;

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;



В приведенном примере мне нужно получить доступ к свойству TMyClass1.Param1 из TMyClass2.
Сейчас я в таком случае делаю это так как привел в примере выше.
Подозреваю что есть более изящные способы передачи.
Может кто подскажет как вы поступаете в таком случае?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
interface

type
 TMyClass1 = Class
  private
  public
    FParam1: byte;
 end;

 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
  public
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
 end;

 TMyClass3 = Class
  private
    FMyClass1: TMyClass1;
  public
    function GetSetParam1: pByte;
 end;

implementation

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;

function TMyClass3.GetSetParam1: pByte;
begin
  Result := @fMyClass1.FParam1
end;



:)_

Да уж в извращенизяществе Вам не откажешь
...
Рейтинг: 0 / 0
14.06.2017, 13:27:00
    #39471482
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать "проброс" параметров класса?
gssbox,

не надо искать проблем там, где их нет.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно сделать "проброс" параметров класса? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]