The new Point3D class is here When the following client program runs the output is which is identical to the output from the accompanying slide. It requires a bit more work to implement Point3D by aggregation instead of
          by extension of class Point2D.using System;
public class Point3D {
  private Point2D point2DPart;
  private double z;
  public Point3D(double x, double y, double z){
   point2DPart = new Point2D(x,y);
   this.z = z;
  }
  public double X{
    get {return point2DPart.X;}
  }
  public double Y{
    get {return point2DPart.Y;}
  }
  public double Z{
    get {return z;}
  }
  public void Move(double dx, double dy, double dz){
    point2DPart.Move(dx, dy);
    z += dz;
  }
  public override string ToString(){
    return "Point3D: " + "(" + X + ", " + Y + ", " + Z + ")" + ".";
  }
}using System;
public class Application{
  public static void Main(){
    Point2D p1 = new Point2D(1.1, 2.2),
            p2 = new Point2D(3.3, 4.4);
    Point3D q1 = new Point3D(1.1, 2.2, 3.3),
            q2 = new Point3D(4.4, 5.5, 6.6);
    p2.Move(1.0, 2.0);
    q2.Move(1.0, 2.0, 3.0);
    Console.WriteLine("{0} {1}", p1, p2);
    Console.WriteLine("{0} {1}", q1, q2);
  }
}
Point2D: (1,1, 2,2). Point2D: (4,3, 6,4).
Point3D: (1,1, 2,2, 3,3). Point3D: (5,4, 7,5, 9,6).