Open RonaldoSosa opened 4 days ago
Depende de muchas cosas si es un híbrido o no.
En primer lugar, ¿estás seguro que esa clase no representa una DS? Para eso tienes que analizar los métodos que no son como GetSomeoneValue2
, por ejemplo, si TypeClass
se ve así:
public class TypeClass {
public int[] Value1;
public int Value2;
}
Y ChiefClass
se ve así:
public class ChiefClass {
private TypeClass _data;
public string[] GetSomeoneValue()
{
return _data.Value1.Select(x => x.ToString()).ToArray();
}
public int GetSomeoneValue2() => _data.Value2;
}
ChiefClass
es una DS y de hecho, es innecesaria, porque GetSomeoneValue
podría estar en TypeClass
.
Si es que llegas a que ChiefClass
es una clase que tiene métodos del estilo DoSomething
, en el cual llamas a más de un método privado, creas clases complejas y/o existen varias formas de implementarlas. La pregunta es si ChiefClass
es un híbrido o un objeto.
Para eso, debes analizar los métodos del estilo DoSomething
, si DoSomething
utiliza los atributos Value1
, Value3
, no tiene sentido que ChiefClass
tenga el método GetSomeoneValue2
, porque si ChiefClass
es un objeto, nosotros queremos cambiar la implementación de DoSomething
cuando queramos, eso incluye, no utilizar la DS TypeClass
y utilizar otra DS o incluso, ninguna DS, pero el método GetSomeoneValue2
te estaría impidiendo ese cambio.
Esto va más allá aún, tu sólo deberías tener métodos Get
en tus clases que representan objetos, sólo si tu puedes cambiar la implementación de esa clase. Como algo así:
public class Units {
private List<Unit> _units;
public void AddUnit(Unit unit) {
_units.Add(unit);
}
public int GetUnitsCount() {
return _units.Count;
}
}
Yo puedo cambiar List
por ListArray
y el GetUnitsCount
no me amarra a una implementación particular, incluso si tuviese algo así:
public class Units {
private List<Unit> _units;
private int _count;
public void AddUnit(Unit unit) {
_units.Add(unit);
_count++;
}
public int GetUnitsCount() {
return _count;
}
}
Hola! Una consulta sobre objects and data structures, por lo que tengo entendido las clases deben representar un objeto, escondiendo su estructura interna y exponiendo abstracciones, o una estructura de datos, que expone su estructura interna sin implementar funcionalidades importantes, entonces quería saber si yo tengo una clase(clase jefe) la cual tiene como atributo privado otra clase que es una estructura de datos, y entonces a través de algunos métodos expone algunos de los valores de la estructura de datos, la clase jefe se consideraría una clase hibrída? En general la mayoría de mis métodos devuelven un valor obtenido al usar algunos de los atributos de la clase que se comporta como estructura de datos pero que se le aplicaron ciertas funcionalidades pero un par de métodos solo devuelven el valor tal cual. Mi sutuación es más o menos la siguiente.
public class ClassChief {
}