yacs.domain
Class Domain

java.lang.Object
  extended byyacs.domain.Domain
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable
Direct Known Subclasses:
IntervalDomain, NumericFDDomain, SymbolicFDDomain

public class Domain
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

Klasse zur Repräsentation der Domäne einer Constraint-Variablen.

Copyright (C) 2005 Wolfgang Runte

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Version:
YACS 0.1.1
Author:
Wolfgang Runte (woru@tzi.org)
See Also:
Serialized Form

Constructor Summary
Domain()
          Konstruktor -- Instantiiert die Domäne.
Domain(DomainElement element)
          Konstruktor -- Die Domäne wird mit einem Element instantiiert.
Domain(java.util.List domain)
          Konstruktor -- Die Domäne wird mit einer Liste mit Elementen instantiiert (Instanzen des Interface yacs.domain.DomainElement).
 
Method Summary
 boolean add(DomainElement element)
          Der Domäne wird ein Element hinzugefügt, wenn sein Wert noch nicht vorhanden ist.
 java.lang.Object clone()
          Liefert eine Kopie dieses Objekts.
 Domain cloneDeep()
          Klont this und rekursiv alle darin referenzierten Objekte mit (die Selbheit indirekt mehrfach referenzierter Objekte bleibt erhalten).
 boolean containsElement(DomainElement element)
          Abfragemöglichkeit, ob ein bestimmtes Element in der Domäne enthalten ist.
 boolean deleteElement(DomainElement element)
          Löscht eine Element aus der Domäne.
 DomainElement getElement(DomainElement element)
          Liefert eine Referenz auf das in dieser Domäne vorhandene Element, welches der Belegung des übergebenen Elements entspricht.
 java.util.List getElements()
          Liefert eine "unmodifizierbare" Liste mit den Elementen der Domäne (Instanzen des Interface yacs.domain.DomainElement).
 boolean isEmpty()
          Liefert true wenn die Domäne leer ist, false wenn nicht.
 boolean narrow(int operatorType, DomainElement element)
          Führt eine Beschränkung der Domäne durch, so dass sie nur noch das übergebene Element enthält.
 int size()
          Liefert die Anzahl der Elemente in der Domäne.
 java.lang.String toString()
          Liefert die Domäne als String.
 boolean update(DomainElement element)
          Aktualisiert den Wert für das übergebene Element in der Domäne.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Domain

public Domain()
Konstruktor -- Instantiiert die Domäne.


Domain

public Domain(DomainElement element)
Konstruktor -- Die Domäne wird mit einem Element instantiiert.

Parameters:
element - DomainElement

Domain

public Domain(java.util.List domain)
Konstruktor -- Die Domäne wird mit einer Liste mit Elementen instantiiert (Instanzen des Interface yacs.domain.DomainElement).

Parameters:
domain - List
Method Detail

add

public boolean add(DomainElement element)
Der Domäne wird ein Element hinzugefügt, wenn sein Wert noch nicht vorhanden ist. Liefert true zurück, wenn dies erfolgreich war, false wenn nicht (Wert bereits vorhanden).

Parameters:
element - DomainElement

update

public boolean update(DomainElement element)
Aktualisiert den Wert für das übergebene Element in der Domäne.

Parameters:
element - DomainElement
Returns:
boolean

getElements

public java.util.List getElements()
Liefert eine "unmodifizierbare" Liste mit den Elementen der Domäne (Instanzen des Interface yacs.domain.DomainElement).

Returns:
List

getElement

public DomainElement getElement(DomainElement element)
Liefert eine Referenz auf das in dieser Domäne vorhandene Element, welches der Belegung des übergebenen Elements entspricht. Liefert null, wenn kein Element mit der entsprechenden Belegung existiert.

Returns:
List

deleteElement

public boolean deleteElement(DomainElement element)
Löscht eine Element aus der Domäne. Sollte nur aus der Klasse Variable aufgerufen werden, denn u.U. ist der zu löschende Wert die aktuelle Belegung der Variable. Dies wird in Variable abgefangen. Liefert true, wenn das Entfernen erfolgreich war (Element war in der Domäne enthalten), false wenn nicht.

Parameters:
element - DomainElement
Returns:
boolean

containsElement

public boolean containsElement(DomainElement element)
Abfragemöglichkeit, ob ein bestimmtes Element in der Domäne enthalten ist.

Parameters:
element - DomainElement
Returns:
boolean

isEmpty

public boolean isEmpty()
Liefert true wenn die Domäne leer ist, false wenn nicht.

Returns:
boolean

size

public int size()
Liefert die Anzahl der Elemente in der Domäne.

Returns:
int

narrow

public boolean narrow(int operatorType,
                      DomainElement element)
Führt eine Beschränkung der Domäne durch, so dass sie nur noch das übergebene Element enthält. Liefert true wenn die Domäne eingeschränkt wurde (Element war enthalten), false wenn nicht. (Anm.: Die Angabe operatorType (bezogen auf den Operator: "=", "!=", "<", ">", "<=", ">=") wird derzeit an dieser Stelle ignoriert.)

Parameters:
operatorType - int
element - DomainElement
Returns:
boolean

toString

public java.lang.String toString()
Liefert die Domäne als String.

Returns:
String

clone

public java.lang.Object clone()
Liefert eine Kopie dieses Objekts. Allerdings nur eine "shallow copy", d.h. die Felder des Objektes werden nicht geklont.

Returns:
Object

cloneDeep

public Domain cloneDeep()
Klont this und rekursiv alle darin referenzierten Objekte mit (die Selbheit indirekt mehrfach referenzierter Objekte bleibt erhalten).

Returns:
Domain