Estoy trabajando en una biblioteca de clase usando C#. Diseñé 3 clases principales para ayudar a modelar nuestros datos. Están diseñados de tal manera que la clase A contiene una lista de instancias de la clase B y clase B contiene una referencia a una instancia de clase C, es decir:En C# u OOP, ¿deberían las 2 clases estar relacionadas entre sí?
public class Policy
{
public List <PolicyTerm> myTerms;
person Customer;
string PolicyNumber;
}
public class PolicyTerm
{
public Billing myBill;
Datetime effectivedate;
List <Activities> termActivities;
public doAction()
{
use value from Policy, like PolicyNumber;
}
}
public class Billing
{
float remainingBalance;
Datetime nextDueDate;
public void doSomething()
{
reference value from PolicyTerm, such as effective date;
use value from Policy, such as PolicyNumber;
}
}
El problema que tengo es cuando intento utilizar un método dentro PolicyTerm o Facturación que necesita datos de la clase contenedora. En el ejemplo anterior, este sería el método "doSomething" que intenta usar un valor de PolicyTerm, como la fecha de vigencia del término al solicitar o guardar datos en nuestra base de datos.
Me pregunto si tengo el diseño correcto para mis clases debido a este escenario. ¿Debo simplemente agregar una referencia a la clase "padre" dentro de las clases secundarias, a fin de que los datos del padre estén disponibles? ¿O es necesario que reconsidere la estructura general y el diseño del código?
Siento que el diseño de la clase funciona bien para modelar los datos y nuestras reglas comerciales, pero crea algunas limitaciones como la situación anterior. Me gustó la separación de PolicyTerm y Billing por la posibilidad de permitir que el código se modifique y pruebe de forma independiente. Además, siento que mantiene cada sección más pequeña y simple.
Cualquier consejo que se pueda proporcionar sería muy apreciado.
Actualización: El bloque de código se actualizó para proporcionar más detalles sobre el código en cuestión.
¿Por qué no bajar de la real código que quieres usar y muéstranos eso? Algo como esto realmente depende de la situación. – ChaosPandion