2016-07-16 19 views
0

友人を形作る最近の電話インタビューを持っていたし、彼は技術的な質問頼まれた:う計算表面積は

Q)私はいくつかの2D図形の面積を計算したい場合は、どのような「バケット」私が使う。彼は何らかのコードを書くのに20分を要し、面接官は彼に戻った。彼は電子メールでコードを送ったが、残りのインタビューではコードは議論されなかった(他の技術的な質問はなかった)。

Windowsが

namespace ShapesApp 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      this.Load += form_load; 
     } 

     public void form_load (Object o, EventArgs e) 
     { 
      List<Shape> listShape = new List<Shape>(); 
      Shapes.Circle circle = new Shapes.Circle(); 
      Shapes.Rectangle rectangle = new Shapes.Rectangle(); 
      Shapes.Square square = new Shapes.Square(); 
      Shapes.Triangle triangle = new Shapes.Triangle(); 
      listShape.Add(rectangle); 
      listShape.Add(square); 
      listShape.Add(triangle); 

      foreach (Shape shape in listShape) 
      { 
       double a = 10; 
       double b = 10; 
       double surfaceArea = shape.CalculateSurfaceArea(a,b); 
       Console.WriteLine("The surface area of a " + shape.GetType() + " is: " + surfaceArea); 
      } 
     } 

    } 
} 

アプリフォームシェイプ - クラスライブラリインタビュアーが、彼はテストで "苦労" と述べている

namespace Shapes 
{ 
    public abstract class Shape 
    { 
     abstract public double CalculateSurfaceArea(double Double1, double Double2); 
    } 

    public class Circle : Shape 
    { 
     public override double CalculateSurfaceArea(double pi, double radius) 
     { 
      return (pi * radius) * (pi * radius); 
     } 
    } 

    public class Triangle : Shape 
    { 
     public override double CalculateSurfaceArea(double Base, double Height) 
     { 
      return (Base*Height)/2; 
     } 
    } 

    public class Rectangle : Shape 
    { 
     public override double CalculateSurfaceArea(double Length, double Width) 
     { 
      return Length * Width; 
     } 
    } 

} 

:彼は私にコードを送りました。コードの何が間違っていますか?

+0

なぜ結果がコンソールに出力されます場合は、Windowsフォームを使用していますか? – Fabio

+0

piは定数なので、なぜパラメータとして渡され、正しく二乗されますか? – jdweng

+0

私は 'pi = -15.789'を割り当てることができますか? '... CalculateSurfaceArea(double pi、double radius)...';私は 'Length'!=' Width'で* square *を持つことができますか? –

答えて

0

計算領域は動作であり、すべてのシェイプはそれを計算するための独自の式を持っています。計算領域は変数と定数の異なる量を含むことができますので、メソッドはパラメータを取らず、変数はインタフェースを実装するクラスの関心事になります。

だから私は、面積を算出する方法は、インタフェースとして抽象化することができると思います。

public interface ICalculatingArea 
{ 
    double CalculateArea(); 
} 

その後、すべての形状は、独自の方法でそれを実装します。インタフェース型に形状クラスをキャストしCalculateAreaメソッドを使用するのに十分であるメインプログラムで

public class Rectangle:ICalculatingArea 
{ 

    public double Width {get; set;} 
    public double Length {get; set;} 

    public double CalculateArea() 
    { 
     return Length * Width; 
    } 
} 

関連する問題