package geometry;	
	
import java.awt.*;	
		
public class Colorable3DPoint extends ThreeDimensionalPoint 	
                              implements Colorable {	
	// instance variable 	
	Color color;    	
	
	// Colorable3DPoint(): default constructor 	
	
	public Colorable3DPoint() {	
		setColor(Color.BLUE);	
	}	
		
	// Colorable3DPoint(): specific constructor 	
	public Colorable3DPoint(int x, int y, int z, Color c) {	
		super(x, y, z);	
		setColor(c);	
	}	
		
	// getColor(): color property accessor 	
	public Color getColor() {	
		return color;	
	}	
		
	// setColor(): color property mutator 	
	public void setColor(Color c) {	
		color = c;	
	}	
		
	// clone(): clone facilitator 	
	public Object clone() {	
		int x = (int) getX();	
		int y = (int) getY();	
		int z = (int) getZ();	
		return new Colorable3DPoint(x, y, z, getColor());	
	}	
		
	// toString(): string representation facilitator 	
	public String toString() {	
		Color c = getColor();	
		return "[" + super.toString() + ", " + c.toString() + "]";	
	}	
		
	// equals(): equal facilitator 	
	public boolean equals(Object v) {	
		if (v instanceof Colorable3DPoint) {	
			Color c1 = getColor();	
			Color c2 = ((Colorable3DPoint) v).getColor();	
			return super.equals(v) && c1.equals(c2);	
		}	
		else {	
			return false;	
		}	
	}	
}	
	
