Je définis deux classes abstraites: AC1
et AC2
. AC1
a une propriété (variable) qui est List
de type AC2
(List<AC2>
) (c'est ma façon de définir une relation de 1 à plusieurs).Erreur lors de l'application de la relation de l'entité avec les classes abstraites lors de l'affectation d'une liste contenant une classe plus dérivée
Ensuite, j'ai défini R1
qui vient de AC1
(R1 : AC1
) et R2 : AC2
. Le problème vient quand j'écris le constructeur de R1. Je passe en paramètre une liste de type R2 (List<R2>
) et essaye ensuite de l'assigner à la propriété (variable) définie dans AC1 (List<AC2>
), mais elle échoue car elle ne peut pas implicitement convertir de R2 en AC2 (même lorsque R2 vient de AC2).
Exemple de code:
abstract class AC2
{
//several properties and methods here
}
abstract class AC1
{
List<AC2> dammVariable {get; set;} //problematic variable (see class R1)
//other stuff here
}
class R2 : AC2
{
//some properties exclusive for R2 here
public R2(){}
}
class R1 : AC1
{
//some properties exclusive for R1 here
public R1(List<R2> r2s)
{
this.dammVariable = r2s; //I found the error right here
}
}
Je vais avoir quelques autres classes à venir de cette classes abstraites, mais chaque fois que je crée une classe (X2, par exemple) qui vient de AC2 je besoin d'un Classe X1 qui a un List<X2>
.
Est-ce que j'échoue dans la conception ou la mise en œuvre?
J'apprécie toute aide.
Ne confondez pas OOP avec le modèle entité-relation. La POO est beaucoup plus proche du modèle de données de réseau et ne supporte pas les relations ternaires et d'ordre supérieur, les relations non dirigées, les entités faibles, les relations d'identification ou les contraintes de participation. Je vous suggère d'utiliser la POO pour la modélisation de systèmes, pas pour la modélisation de données. – reaanb