View Javadoc

1   /* This file is part of the project "Hilbert II" - http://www.qedeq.org" target="alexandria_uri">http://www.qedeq.org
2    *
3    * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4    *
5    * "Hilbert II" is free software; you can redistribute
6    * it and/or modify it under the terms of the GNU General Public
7    * License as published by the Free Software Foundation; either
8    * version 2 of the License, or (at your option) any later version.
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13   * GNU General Public License for more details.
14   */
15  
16  package org.qedeq.kernel.bo.logic.model;
17  
18  /**
19   * One function for our model.
20   *
21   * @author  Michael Meyling
22   */
23  public abstract class Function {
24  
25  
26      /** Minimum number of arguments this function has. */
27      private final int minimum;
28  
29      /** Maximum number of arguments this function has. */
30      private final int maximum;
31  
32      /** Display text. */
33      private final String display;
34  
35      /** Description for this function. */
36      private final String description;
37  
38      static Function createConstant(final Entity entity) {
39          return new Function(0, 90, "->" + entity, "contant " + entity.getDescription()) {
40              public Entity map(final Entity[] entities) {
41                  return entity;
42              }
43          };
44      }
45  
46      /**
47       * Constructor.
48       *
49       * @param   minimum         Minimum number of arguments this function has.
50       * @param   maximum         Maximum number of arguments this function has.
51       * @param   display         Show this to represent the function within outputs.
52       * @param   description     Description for this function.
53       */
54      public Function(final int minimum, final int maximum, final String display,
55              final String description) {
56          this.minimum = minimum;
57          this.maximum = maximum;
58          this.display = display;
59          this.description = description;
60      }
61  
62      /**
63       * Get minimum number of arguments this function has.
64       *
65       * @return  Minimum number of arguments for this function.
66       */
67      public int getMinimumArgumentNumber() {
68          return minimum;
69      }
70  
71      /**
72       * Get maximum number of arguments this function has.
73       *
74       * @return  Maximum number of arguments for this function.
75       */
76      public int getMaximumArgumentNumber() {
77          return maximum;
78      }
79  
80      /**
81       * Get display text.
82       *
83       * @return  Representation of this function for textual output.
84       */
85      public String toString() {
86          return display;
87      }
88  
89      /**
90       * Get description.
91       *
92       * @return  Description of this function.
93       */
94      public String getDescription() {
95          return description;
96      }
97  
98      /**
99       * Calculate truth value.
100      *
101      * @param   entities    Calculate function for this entities.
102      * @return  Truth value.
103      */
104     public abstract Entity map(Entity[] entities);
105 
106 }