///******************************************************************* //* //* Projeto: Aulas de Projeto de Software I //* //* Modulo: pONTO.java //* //* Objetivo: Define objeto .... //* //* Classes & Funcoes Exportadas: Heranca //* //* Versao Original: 1.0 Data: agosto 2001 //* //* Autor: Ismael H F Santos //* //* Email: ismael@tecgraf.puc-rio.br //* //******************************************************************** //* //* Historico de Alteracoes: //* //* DATA AUTOR COMENTARIO //* ---- ----- ---------- //* xx/yy/00 .... .... //* //*******************************************************************/ ////////////////////////////////////////////////////////// // //* Concrete Class Pessoa // --------------------- // // Objetivo: ..... // ///////////////////////////////////////////////////////// class Ponto2D { protected int x; protected int y; public Ponto2D() { // Construtor Vazio this(0,0); } public Ponto2D(int x, int y) { this.x = x; this.y = y; } public Ponto2D( Ponto2D p2D ) { // Construtor de Copia this.x = p2D.x; this.y = p2D.y; } public double distancia(Ponto2D p) { double distX = p.x - x; double distY = p.y - y; return Math.sqrt(distX*distX + distY*distY); } public String toString() { return String.format("x=%d, y=%d", x, y); } } class Ponto3D extends Ponto2D { private int z; public Ponto3D() { // Construtor Vazio z = 0; } public Ponto3D(int x, int y, int z) { super(x, y); this.z = z; } public Ponto3D( Ponto2D p2D ) { // Construtor de Copia super(p2D); z = 0; } public Ponto3D( Ponto3D p3D ) { // Construtor de Copia super(p3D); this.z = p3D.z; } public String toString() { return super.toString()+ String.format(", z=%d", z); } public double distancia(Ponto3D p) { double distX = p.x - x; double distY = p.y - y; double distZ = p.z - z; return Math.sqrt(distX*distX + distY*distY+ distZ*distZ); } } public class Ponto { public static void main(String[] args) { Ponto2D p0 = new Ponto2D(); Ponto2D p2 = new Ponto2D(1,1); System.out.println("p0 : " + p0); System.out.println("p2 : " + p2); Ponto3D p3 = new Ponto3D(1,2,3); Ponto3D p03D = new Ponto3D(p0); System.out.println("p3 : " + p3); System.out.println("p03D: " + p03D); System.out.printf("%nDistanciap2-p0: %.2f %n", p0.distancia(p2)); System.out.printf("Distanciap0-p2: %.2f %n%n", p2.distancia(p0)); System.out.printf("Distanciap3-p0: %.2f %n", p0.distancia(p3)); System.out.printf("Distanciap0-p3: %.2f %n", p3.distancia(p03D)); } }