Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 46 47 [48] 49 50 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#706
,
|
|
|
|
отчего же? считаю. мне больше нравится чисто посылка сообщения, как в SmallTalk или ObjC хотя бы. но при чем тут инкапсуляция в том свете, в котором о ней говорит Повстанецъ, я не понимаю |
|
Сообщ.
#707
,
|
|
|
|
Т.е. даже мысли не возникает, что объект бывает в этом мире и не в куче... А потом ещё говорят, что я зашоренный плюсами... |
|
Сообщ.
#708
,
|
|
|
|
--Ins--, ты понимаешь это:
![]() ![]() class Rect { public: //... void SetRect(const Rect &rect); const Rect & GetRect() const; }; ? |
|
Сообщ.
#709
,
|
|
|
|
Цитата D_KEY @ Не вижу практического применения, иначе давно бы сделал. Это все и так успешно делается на уровне проектных решений. Встраивать в язык фабрики, наблюдателей, адаптеры и т.п. - не вижу смысла. плох тот язык, который не может паттерн сделать частью себя =) |
|
Сообщ.
#710
,
|
|
|
|
Цитата MyNameIsIgor @ что объект бывает в этом мире и не в куче... А у вас мысль возникает что объект всегда ссылочный тип? Только в с++ иначе |
|
Сообщ.
#711
,
|
|
|
|
Цитата korvin @ ObjC ![]() Цитата korvin @ но при чем тут инкапсуляция в том свете, в котором о ней говорит Повстанецъ, я не понимаю Тут сочетание непоследованности существования ссылочных типов и типов значений в одном языке и того факта, что свойства провоцируют на плохую инкапсуляцию. |
|
Сообщ.
#712
,
|
|
|
|
Цитата D_KEY @ --Ins--, ты понимаешь это: И че? Где у меня SetRect (или SetPoint) дергается, ну-ка покажи? |
|
Сообщ.
#713
,
|
|
|
|
Цитата korvin @ отчего же? считаю. мне больше нравится чисто посылка сообщения, как в SmallTalk или ObjC хотя бы. но при чем тут инкапсуляция в том свете, в котором о ней говорит Повстанецъ, я не понимаю А ты подумай, от чего зависит состояние Rect, от того, на какой объект ссылается закрытое поле Point или от того, какое состояние этот объект имеет? А тут ты напрямую меняешь состояние в обход всех выстроенных абстракций. Так понятно? |
|
Сообщ.
#714
,
|
|
|
|
Цитата --Ins-- @ А у вас мысль возникает что объект всегда ссылочный тип? Эээээ... Ещё раз, вы у программиста на шарпе об этом спрашиваете? Вы хорошо подумали, прежде чем задать вопрос? |
|
Сообщ.
#715
,
|
|
|
|
Цитата korvin @ плох тот язык, который не может паттерн сделать частью себя =) Что значит частью? Библиотекой? Да нет проблем - это очень даже широко используется, во всяком случае в С++, т.к. писать обобщенный код на нем можно, в отличии от делфи... |
|
Сообщ.
#716
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Не вижу практического применения, иначе давно бы сделал. Это все и так успешно делается на уровне проектных решений. Встраивать в язык фабрики, наблюдателей, адаптеры и т.п. - не вижу смысла. плох тот язык, который не может паттерн сделать частью себя =) В принципе, согласен Ключевое слово "может". С++ тут, кстати, не так уж и плох. Есть правда некоторые проблемы, но все-таки. |
|
Сообщ.
#717
,
|
|
|
|
А итераторы? |
|
Сообщ.
#718
,
|
|
|
|
Цитата korvin @ Ситуативнуе. Одноразовое. Контексто-зависимое решение. Вырвиглазное к тому же, спагетти-код, гарантия 100%.тебе дали инструмент -- инкапсуляция, скрой реализацию TRect, скрой его реализацию (TPoint), возвращай свойство Left (значение Point.X) и Top (значение Point.Y) Если это всё, на что способна столь удачная объектная система, то она явно не соответствует прозвучавшей тут рекламе. |
|
Сообщ.
#719
,
|
|
|
|
а если так?
![]() ![]() type TRect = class strict private type TContainedPoint = record private Ref:PPoint; function GetX:Integer; procedure SetX(Value:Integer); function GetY:Integer; procedure SetY(Value:Integer); public property X:Integer read GetX write SetX; property Y:Integer read GetY write SetY; class operator Implicit(Value:TPoint):TContainedPoint; class operator Implicit(Value:TContainedPoint):TPoint; end; strict private type TRectCoords = record case Integer of 0: (Points: array[0..1] of TPoint); 1: (Coords: array[0..3] of Integer); end; strict private FCoords: TRectCoords; function GetCoord(Index: Integer): Integer; procedure SetCoord(Index: Integer; Value: Integer); function GetPoint(Index: Integer): TContainedPoint; procedure SetPoint(Index: Integer; Value: TContainedPoint); public property Left: Integer index 0 read GetCoord write SetCoord; property Top: Integer index 1 read GetCoord write SetCoord; property Right: Integer index 2 read GetCoord write SetCoord; property Bottom: Integer index 3 read GetCoord write SetCoord; property LeftTop: TContainedPoint index 0 read GetPoint write SetPoint; property RightBottom: TContainedPoint index 1 read GetPoint write SetPoint; property Coords[Index: Integer]: Integer read GetCoord write SetCoord; property Points[Index: Integer]: TContainedPoint read GetPoint write SetPoint; end; function TRect.GetCoord(Index: Integer): Integer; begin Result := FCoords.Coords[Index]; end; procedure TRect.SetCoord(Index: Integer; Value: Integer); begin FCoords.Coords[Index] := Value; end; function TRect.GetPoint(Index: Integer): TContainedPoint; begin Result.Ref := @FCoords.Points[Index]; end; procedure TRect.SetPoint(Index: Integer; Value: TContainedPoint); begin FCoords.Points[Index] := Value.Ref^; end; function TRect.TContainedPoint.GetX:Integer; begin Result:=Ref.X; end; procedure TRect.TContainedPoint.SetX(Value:Integer); begin Ref.X:=Value; end; function TRect.TContainedPoint.GetY:Integer; begin Result:=Ref.Y; end; procedure TRect.TContainedPoint.SetY(Value:Integer); begin Ref.Y:=Value; end; class operator TRect.TContainedPoint.Implicit(Value:TPoint):TContainedPoint; begin Result.Ref:=@Value; end; class operator TRect.TContainedPoint.Implicit(Value:TContainedPoint):TPoint; begin Result:=Value.Ref^; end; |
|
Сообщ.
#720
,
|
|
|
|
Цитата --Ins-- @ А итераторы? А итераторы встроены в язык? Когда? Ещё сегодня утром они были в библиотеке. |