Проблема с ассоциациями
От: nayato Россия  
Дата: 20.04.05 15:36
Оценка:
Здравствуйте,
Вопрос в следующем: есть четыре следующих класса:

TBClass = class(TObject)
end;

TAClass = class(TObject)
private
    fBs: array of TBClass;
protected
    function getBs(Index: Integer): TBClass;
public
    constructor Create(BCount: Integer);
    property Bs[Index: Integer]: TBClass read getBs;
end;

TBClass1 = class(TBClass)
end;

TAClass1 = class(TAClass)
protected
    function getBs(Index: Integer): TBClass1;
public
    constructor Create(BCount: Integer);
    property Bs[Index: Integer]: TBClass1 read getBs;
end;

...

constructor TAClass.Create(BCount: Integer);
var
  i: Integer;
begin
    for i := 0 to BCount-1 do
        fBs[i] := TBClass.Create;
end;

function TAClass.getBs(Index: Integer): TBClass;
begin
    Result := fBs[Index];
end;

constructor TAClass1.Create(BCount: Integer);
var
  i: Integer;
begin
    for i := 0 to BCount-1 do
        fBs[i] := TBClass1.Create;
end;

function TAClass1.getBs(Index: Integer): TBClass1;
begin
    Result := TBClass1(fBs[Index]);
end;


В ООП по идее никаких проблем с такими манипуляциями не возникает. Вот только некорректно на UML получается: между TAClass и TBClass имеется ассоциация по отношению агрегирования. Между классами TAClass1 и TBClass1 по идее тоже. Но по спецификации UML TAClass1 и TBClass1 должны наследовать отношения своих потомков. А здесь получается, что новая ассоциация перекрывает родительскую. И как с этим быть?
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.