Re[3]: "Гибкий" конструктор для инициализации объекта класса
От: Sm0ke Россия ksi
Дата: 25.08.23 13:04
Оценка:
Здравствуйте, zelenprog, Вы писали:


S>>Чтож, вычислили параметры, закинули в конструктор / или там в метод init()


Z>А что за метод init()?


Z>Предлагаете делать у каждого класса такой метод?

Z>Напомню: у конструктора нету параметров.

Каждому классу, требующему инициализацию, исходя из параметров
можно сделал метод init(params), раз конструктор без параметров.



Или: Про фабрику вам уже советовали

это Можно сделать так:

class Car ( int wheels, float max_speed )

class Test ( string path, file handle )

// фабрика
class maker ()

maker::new_car(int wheels, float max_speed)
{
  ret = new Car;
  ret.wheels = wheels;
  ret.max_speed = max_speed;
  return ret;
}

maker::new_test(string path)
{
  ret = new Test;
  ret.path = path;
  ret.handle = CreateFile(path);
  return ret;
}


Что тут происходит? Это класс maker, в котором несколько методов для создания целевых объектов. Фабричный метод создаёт, инициализирует и возвращает готовый экземпляр требуемого типа.

Не все языки позволяют выносить методы отдельно за пределы class def
// фабрика
class maker (

  Car new_car(int wheels, float max_speed)
  {
    ret = new Car;
    ret.wheels = wheels;
    ret.max_speed = max_speed;
    return ret;
  }

  Test new_test(string path)
  {
    ret = new Test;
    ret.path = path;
    ret.handle = CreateFile(path);
    return ret;
  }
)




кст. В вашем языке можно передать и хранить тип данных как значение?
Отредактировано 25.08.2023 13:21 Sm0ke . Предыдущая версия . Еще …
Отредактировано 25.08.2023 13:17 Sm0ke . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.