// Represents a three-dimensional point 	
	
package geometry;	
	
import java.awt.*;	
	
public class ThreeDimensionalPoint extends Point {	
	// private class constant 	
	private final static int DEFAULT_Z = 0;	
	
	// private instance variable 	
	public int z = DEFAULT_Z;	
	
	// ThreeDimensionalPoint(): default constructor 	
	public ThreeDimensionalPoint() {	
		super();	
	}	
	
	// ThreeDimensionalPoint(): specific constructor 	
	public ThreeDimensionalPoint(int a, int b, int c) {	
		super(a, b);	
		setZ(c);	
	}	
	
	// getZ(): z-coordinate accessor 	
	public double getZ() {	
		return z;	
	}	
	
	// setZ(): y-coordinate mutator 	
	public void setZ(int value) {	
		z = value;	
	}	
	
	// translate(): shifting facilitator 	
	public void translate(int dx, int dy, int dz) {	
		translate(dx, dy);	
			
		int zValue = (int) getZ();	
	
		setZ(zValue + dz);	
	}	
	
	// toString(): conversion facilitator 	
	public String toString() {	
		int a = (int) getX();	
		int b = (int) getY();	
		int c = (int) getZ();	
		return getClass() + "[" + a + ", " + b + ", " + c + "]";	
	}	
		
	// equals(): equality facilitator 	
	public boolean equals(Object v) {	
		if (v instanceof ThreeDimensionalPoint) {	
			ThreeDimensionalPoint p = (ThreeDimensionalPoint) v;	
			int z1 = (int) getZ();	
			int z2 = (int) p.getZ();	
	
			return super.equals(p) && (z1 == z2);	
		}
		else {	
	
			return false;	
		}	
	}	
	
	// clone(): clone facilitator 	
	public Object clone() {	
		int a = (int) getX();	
		int b = (int) getY();	
		int c = (int) getZ();	
	
		return new ThreeDimensionalPoint(a, b, c);	
	}	
}	
	
