CsharpNovice
@CsharpNovice
Учусь

Конструктор и как правильно использовать атрибуты?

Всем привет!
Начинаю учить ООП и С#, есть небольшой опыт работы с ПХП но без классов. Тренируюсь на демо проекте по продаже ТВ.

Вот есть меня три начальных класса ТВ, Покупатель и Менеджер (его задача продать телевизор или записать строку в БД). Псевдо код ниже. Класс 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;
  }
}


Спасибо!
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
CsharpNovice
@CsharpNovice Автор вопроса
Учусь
Сама себе отвечу, нужна еще одна сущность агрегат, TvOrder.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы