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;
  }
}


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

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

Войти через центр авторизации
Похожие вопросы