Point.java
/**
* @(#)Point.java
* Copyright (C) 2008-2011 delhezi.com
*
* This class is released under the:
* GNU Lesser General Public License (LGPL) version 3 or later.
* http://www.gnu.org/copyleft/lesser.html
*/
package com.delhezi.ga.genes;
/**
* Klasa <code>Point</code>: Klasa przechowująca informacje o punkcie;
* Klasa przykładowa, ale może należało użyć java.awt.geom.Point2D;
* UWAGA;
* W przypadku kiedy w trakcie działania programu może dojść do zmiany
* obiektu (np. mutacja pojedynczego genu), obiekt należy traktować jako
* ZMIENIALY co wymagana zapewnienie GLEBOKIEGO kopiowania w klasie
* com.delhezi.ga.Chromosome; Wówczas obiekt powinien implementować
* interfejs Cloneable + funkcję clone() + fubkcje set, w innym wypadku
* należy zrezygnowac z tych elementów.
* @version 1.0 2008-11-02
* @author <a href="mailto:wojciech.wolszczak@delhezi.com">
* Wojciech Wolszczak</a>
*/
public class Point { //extends java.awt.geom.Point2D //implements Cloneable
/** Wspłórzędna x. */
private int x;
/** Wspłórzędna y. */
private int y;
/**
* Konstruktor.
* @param x Wspłórzędna x.
* @param y Wspłórzędna y.
* @since 1.0
*/
public Point(final int x, final int y) {
this.x = x;
this.y = y;
}
/**
* Zwraca wspłórzędną x.
* @return Wspłórzędna x.
* @since 1.0
*/
public final int getx() {
return this.x;
}
/**
* Ustawia wspłórzędną y.
* @return Wspłórzędna y.
* @since 1.0
*/
public final int gety() {
return this.y;
}
/**
* Ustawia wspłórzędną x.
* @param x Wspłórzędna x.
* @since 1.0
*/
public final void setx(final int x) {
this.x = x;
}
/**
* Ustawia wspłórzędną y.
* @param y Wspłórzędna y.
* @since 1.0
*/
public final void sety(final int y) {
this.y = y;
}
//
// * Kopiuje chromosom.
// * W przypadku kiedy w trakcie mutacji może dojść do zmiany
// * wartości obiektu
// * wymagane jest zapewnienie GLEBOKIEGO kopiowania w klasie
// * com.delhezi.ga.Chromosome
// * W tym celu zaimplementować w klasie genu interfejs Cloneable,
// * klasę clone
// * oraz DOPISAC OPCJE w funkcji com.delhezi.ga.Chromosome.clone()
// * return Kopia chromosomu.
// * since 1.0
//
//@Override
//public Point clone() {
// try {
// return (Point) super.clone();
// } catch (CloneNotSupportedException ex) {
// throw new AssertionError(); //Błąd JVM.
// Nie powinien się zdarzyć.
// }
//}
/**
* @param object xxx
* @return boolean Porównanie objektów.
*/
@Override
public final boolean equals(final Object object) {
if (object instanceof Point) {
Point other = (Point) object;
return (this.getx() == other.getx() && this.gety() == other.gety());
}
return super.equals(object);
}
/**
* @return int.
*/
@Override
public final int hashCode() {
long bits = java.lang.Double.doubleToLongBits(getx());
bits ^= java.lang.Double.doubleToLongBits(gety()) * 31;
return (((int) bits) ^ ((int) (bits >> 32)));
}
/**
* String charakteryzujący gen.
* @return String charakteryzujący gen.
* @since 1.0
*/
@Override
public final String toString() {
return "GENE type=point [x=" + this.getx() + ",y=" + this.gety() + "]";
}
}