Представление логических операций OO способом с Java - PullRequest
1 голос
/ 24 июня 2011

Моя java-программа позволит фильтровать содержимое csv-файла на основе определенной пользователем логической операции.Данные будут считаны из содержимого csv файла из двух столбцов

left    right
5       10
2       6

, и пользователь предоставит логическую операцию условия в командной строке, ссылаясь на левый и правый.Программа должна фильтровать содержимое CSV-файлов на основе результатов логической операции.

IF ((left < right) AND (left !=10)) THEN 5 ELSE right 

Я планирую представить типы операций в виде перечисления

enum Operation
    >,
    <,
    ==,
    !=

 public boolean evaluate(int left,int right);

, которое будет поддерживатьметод оценки.Специальная логика для операции будет реализована в определенных типах перечислений.

Интерфейс условия будет поддерживать методы для доступа к левому операнду, операции и правому операнду

interface Condition
{
    public int getLeft();
    public Operation();
    public int getRight();
}

Для случая ANDЯ бы просто вел список Условий и перебирал список, чтобы убедиться, что все условия выполняются.Но как показать, что я представляю, ЕСЛИ ЭТО ДРУГИЕ ключевые слова?

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Как насчет того, чтобы вместо такого подхода использовать что-то вроде Velocity?Вы в основном читаете все числа в left в массиве и все числа в right в другом массиве и передаете эти массивы в контекст Velocity, а затем позволяете пользователю вводить стиль Velocity, если он условный, и позволяете Velocity позаботиться оотдых?

0 голосов
/ 24 июня 2011

Следуя вашему соглашению об интерфейсе:

interface Conditional {
    public Condition Condition();
    public int TrueValue();
    public int FalseValue();
}

Я бы использовал классы, и вместо того, чтобы ссылаться на целые, я бы тоже сослался на класс Expression.

...