Back to slide -- Keyboard shortcut: 'u'  previous -- Keyboard shortcut: 'p'  next -- Keyboard shortcut: 'n'          point/class-static-factory-methods/Point-after.cs - A better solution with static factory methods.Lecture 4 - slide 28 : 29
Program 2

using System;

public class Point {

  public enum PointRepresentation {Polar, Rectangular}

  private double r, a;     // polar data repr: radius, angle

  // Construct a point with polar coordinates
  private Point(double r, double a){
     this.r = r;
     this.a = a;

  public static Point MakePolarPoint(double r, double a){
    return new Point(r,a);

  public static Point MakeRectangularPoint(double x, double y){
    return new Point(RadiusGivenXy(x,y),AngleGivenXy(x,y));

  private static double RadiusGivenXy(double x, double y){
    return Math.Sqrt(x * x + y * y);

  private static double AngleGivenXy(double x, double y){
    return Math.Atan2(y,x);

  // Remaining Point operations not shown