2017-03-12 4 views
-1
using System; 

namespace lab4 
{ 
    class Lab4 
    { 
     static void Main(string[] args) 
     { 
      Prompt.prompt(); 
     } 
    } 
} 

public class CommissionEmployee 
{ 
    public string FirstName { get; } 
    public string LastName { get;} 
    public string SSN { get;} 
    private decimal grossSales; 
    private decimal commissionRate; 




     public CommissionEmployee(string firstName, string lastName, string ssn, decimal grossSales, decimal commissionRate) 
    { 
     FirstName = firstName; 
     LastName = lastName; 
     GrossSales = grossSales; 
     CommissionRate = commissionRate;//might be wrong 


    } 

    public decimal GrossSales 
    { 
     get 
     { 
      return grossSales; 
     } 
     set 
     { 
      if (value < 0) 
      { 
       throw new ArgumentOutOfRangeException(nameof(value), 
       value, $"{nameof(GrossSales)} must be >=0"); 
      } 


      grossSales = value; 
     } 
    } 

    public decimal CommissionRate 
    { 
     get 
     { 
      return commissionRate; 
     } 
     set 
     { 
      if (value <=0 || value >=1) 
      { 
       throw new ArgumentOutOfRangeException(nameof(value), 
       value, $"{nameof(CommissionRate)} must be > 0 and <1"); 
      } 
      grossSales = value; 
     } 



    } 

    public virtual decimal Earnings() => CommissionRate * GrossSales; 



} 


public class Plumber : CommissionEmployee 
{ 

    private string custName; 
    private string Location; 

    public Plumber(string firstName, string lastName, string ssn, decimal grossSales, decimal commissionRate, string custName, string location) : 
     base (firstName, lastName, ssn, grossSales, commissionRate) 
    { 

     custName = CustName; 
     Location = location; 

    } 

    public string CustName 
    { 
     get 
     { 
      return custName; 
     } 
     set 
     { 
      CustName = value; 
     } 
    } 
    public string location 
    { 
     get 
     { 
      return Location; 
     } 
     set 
     { 
      location = value; 
     } 
    } 



    public override decimal Earnings() => GrossSales * CommissionRate; 

    public override string ToString() => 
     $"Name: {FirstName} {LastName}/n" + 
     $"Social Security Number: {SSN}/n" + 
     $"Sales: {GrossSales}/n" + 
     $"Rate of Commission: {CommissionRate}/n" + 
     $"Customer Name: {CustName}/n" + 
     $"Location of Service: {Location}/n" + 
     $"Earnings: {Earnings()}/n"; 



} 

public class Prompt 
{ 

    public static void prompt() 
    { 

     Plumber Plumber1 = new Plumber(); 
     Console.WriteLine("Please enter the plumber's first name: "); 
     string first = Console.ReadLine(); 
     Plumber1.CustName = first; 


    } 
} 

}配管工

それは私のパラメータに入力せずに、新たな配管工オブジェクトを作成することはできませんのために必要なパラメータに対応して与えられた引数はありません。しかし、割り当ては、ユーザーにそれらのプロパティを入力するよう促すようにしています。それは私はこれがデフォルトのコンストラクタを呼び出しているが、あなたの配管工のクラスは、デフォルトコンストラクタ(パラメータなし)を持っていない空のparameters.Error CS7036

+0

次の2つのオプションから選択する必要があります。お電話しようとしているようにそれは、パラメータなしのコンストラクタを持つように 'Plumber'クラスを修正、またはしようと停止します存在しないパラメータのないコンストラクタを呼び出します。 –

答えて

0
Plumber Plumber1 = new Plumber(); 

を使用せません。配管工の唯一のコンストラクタはオーバーロードされたコンストラクタです:

public Plumber(string firstName, string lastName, string ssn, decimal grossSales, decimal commissionRate, string custName, string location) : 

あなたはこれをしたい場合ように、あなたは配管工にデフォルトコンストラクタを追加する必要があるだろうが、配管工が唯一の非デフォルトコンストラクタを持つCommissionEmployeeから継承しますPlumberの任意のコンストラクタは、基本クラスCommissionEmployeeのデフォルト以外のコンストラクタを呼び出さなければなりません。だから、CommisionEmployeeにデフォルトコンストラクタを追加することもできます。

public CommissionEmployee() {} 
... 
public Plumber() : base() {}