001/*
002 * JScience - Java(TM) Tools and Libraries for the Advancement of Sciences.
003 * Copyright (C) 2006 - JScience (http://jscience.org/)
004 * All rights reserved.
005 * 
006 * Permission to use, copy, modify, and distribute this software is
007 * freely granted, provided that this notice is preserved.
008 */
009package org.jscience.mathematics.structure;
010
011/**
012 * This interface represents an algebraic structure with two binary operations
013 * addition and multiplication (+ and ·), such that (R, +) is an abelian group, 
014 * (R, ·) is a monoid and the multiplication distributes over the addition.
015 * 
016 * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
017 * @version 3.0, February 13, 2006
018 * @see <a href="http://en.wikipedia.org/wiki/Mathematical_ring">
019 *      Wikipedia: Mathematical Ring</a>
020 */
021public interface Ring<R> extends GroupAdditive<R> {
022
023    /**
024     * Returns the product of this object with the one specified.
025     *
026     * @param  that the object multiplier.
027     * @return <code>this · that</code>.
028     */
029    R times(R that);
030
031}