2015-03-09 6 views
0

Итак, у меня есть объектно-ориентированное назначение. Малая его часть состоит в том, чтобы сделать граф, сделанный из узлов, который может быть либо категорией типа, либо типом.Абстрактные классы в Java

Категория имеет только имя ([a-zA-Z0-9] +) в качестве параметров.

У продукта есть имя ([a-zA-Z0-9] +) и id (> = 0).

В начале создан только узел с двумя категориями объектов в продукте, где оба нулевого значения и в зависимости от ввода я создал экземпляр одной из двух вещей, и все было в порядке.

Я действительно задумался над этим, и после того, как я проверил лекции, которые я нашел о абстрактных классах: D. Нет моей идеи - сделать Node abstract и Product and Category extension Node, так как:

Категория имеет сеттер и геттер для имени и toString У продукта есть сеттер и геттер для имени и идентификатора (конечно) и toString.

Сеттер, геттер и toString для имени идентичны. В конструкторе Product есть отличия, потому что он также устанавливает ID.

Итак, Будет ли это работать, лучше? Могу ли я создать узел, а затем после ввода сказать -> этот узел относится к типу категории

+3

Ваш вопрос действительно «абстрактный» на данный момент. Подумайте о добавлении некоторого кода, чтобы сделать его конкретным. –

ответ

0

Вы не можете просто создать узел, если он абстрактный.

Вы должны получать входные данные и, вероятно, тип, который хотите создать, и создать соответствующий не абстрактный класс для этого.

В качестве альтернативы вы можете создать их как Категорию, и если пользователь вводит идентификатор, создайте новый Продукт и скопируйте данные с первого объекта на второй. Но это не имеет большого смысла.

0

Кажется, что категория должна быть частью продукта. То есть у вас есть класс категории и класс продукта, который имеет два свойства: класс категории и id. Таким образом, вы можете создать категорию из любой точки вашего графика, а затем, если она является продуктом, передайте ее второму конструктору, чтобы дать ему идентификатор.

0

Я думаю, что это должен быть абстрактный метод, подтверждающий, что каждый тип узла может реализовываться независимо.

Узел предлагает, что это график состояний, которые вы просматриваете. Возможно, вы хотите, чтобы метод срабатывал при входе или выходе из этого состояния. Каждый тип может вкладывать в него все, что им нужно. Интерфейсы и шаблоны стратегий помогут здесь.

Держите график отдельно от того, что сделано.