(0) Wenn eine Klasse Foo
ein Feld vom Typ enthält Predicate<Bar>
oder etwas ähnliches, was würde Foo
‚s Beziehung mit Bar
sein?UML Beziehungen mit Generika und Nullable-Feldern
class Foo {
Predicate<Bar> validator;
}
(1) Wenn eine Klasse Foo
einen generischen Container enthält, von Bar
(nicht unbedingt eine Liste könnte eine Schachtel einen Bar
sein), was Foo
ist Beziehung s‘mit Bar
?
class Foo {
SomethingThatHasA<Bar> barContainer;
}
(2) Wenn eine Klasse Foo
ein NULL festlegbaren Mitglied Typ hat Bar
, hat Foo
lediglich eine Abhängigkeit haben, auf, haben eine Verbindung mit, oder ist eine Zusammensetzung aus Bar
?
class Foo {
Bar bar; // may be null
}
(3) (Dies könnte mehr Sinn in C machen ++ als anderswo) Wenn eine Klasse Foo
normalerweise von einem Bar
Objekt zusammengesetzt sein (dh nicht ohne Bar
lebt), aber darf Haben Sie einen Standardkonstruktor, der alle seine Felder als eine Art leerer Schieferzustand ausschaltet/annulliert, der keine Verwendung hat, bis er später ausgefüllt wird. Würde Foo
noch eine Zusammensetzungsbeziehung mit Bar
haben?
class Foo {
private:
Bar* bar; // or possibly just a non-pointer Bar
public:
Foo() : bar(nullptr) {}
Foo(/* whatever */) : bar(/* something */) {}
};
In 'Klasse Foo {Bar bar;}' 'bar' kann nicht' null' sein. Meinst du "Klasse Foo {Bar * bar;}" oder fehle ich etwas? – user463035818
@ tobi303 Täter ist das Sprach-Tag-Spamming. In Java und C# 'Bar' kann' null' stehen. –
Entschuldigung, nur das Szenario in (3) ist in C++ –