Всем привет!
Начинаю учить ООП и С#, есть небольшой опыт работы с ПХП но без классов. Тренируюсь на демо проекте по продаже ТВ.
Вот есть меня три начальных класса ТВ, Покупатель и Менеджер (его задача продать телевизор или записать строку в БД). Псевдо код ниже. Класс TV создается через фабрику в которую передают ID ТВ, класс фабрики идет в базу ( орм пока нет ) находит эту запись и заодно смотрит есть ли клиент. и если есть создает объект клиент и тоже передает его в конструктор ТВ.
Скажем в будущем будет класс RepairMgr которому надо будет знать какой телевизор и кто клиент. Так как телевизор продан то у конкретного объекта уже будет атрибут типа Клиент.
Вопрос собственно следущий. Я начинаю сразу с TDD и что бы протестировать класс RepairMgr я передают только ТВ и RepairMgr сам получает клиента.
Мне кажется это не правильным, правда не могу понять почему. По идее кажется правильным сделать new RepairMgr($tvObj, $clientObj); Но тогда получается что выше передавать Клиента в конструктор телевизора избыточно?
В целом у меня ощущение что я путаю какие то подходы, вроде как объект-у ТВ самому и не особо нужно знать продан он или нет но и не включать клиента туда тоже странно.
Подскажите как правильно?
Плюс еще вопрос, как правильно понять что должно быть атрибутами класса а что можно передать в параметры метода? В данном случае например, есть свойство "расширенная гарантия". Это должно быть атрибутом или передано в метод? так как расширенная гарантия по идее конкретно к ТВ относится но и так же может быть сама по себе..
class TV
{
has string name, required;
has Customer customer, not required;
}
class Customer
{
has name, required;
}
class SalesMgr(TV tv, Customer customer)
{
has name;
method 'SoldTV'(TV tv, Customer customer, Enum options) => {
tv.customer = Customer;
}
}
Спасибо!