С точки зрения ООП, главное - как это потом будет использоваться. Какие будут объекты и какие действия (методы) с ними будут производиться.
Например. Предполагается ли у этих объектов метод перемещения объекта (move)? или изменение цвета (color)?
Например
const c = new Circle(100, 200, 50);
c.move(200, 300).color('red')
А как вы реализуете эти методы? Просто поменять координаты в объекте ничего не даст. Надо менять атрибуты у элемента. А где у вас связь между объектом и элементом? У какого элемента менять, если он никак не запомнен в объекте.
В чем смысл метода create?
Что дает просто создание объекта (new Line (100, 200, 200, 300)
,без вызова create()?
А если вызвать create много раз?
const l = new Line (100, 200, 200, 300);
l.create();
l.create();
l.create();
Это так и задумывалось, что будут созданы 3 элемента?
Какой вообще смысл хранить координаты и прочие свойства элемента, если их всегда можно получить из атрибутов? Ведь при выполнении каких то действий с объектом их надо будет синхронизировать - менять и там и там. Легко сделать ошибку.
Ну вот такие мысли.
Главное - как использовать. От этого зависит, что и как делать.