【C#】【book】「実戦で役立つ C# プログラミングのイディオム/定石&パターン」の学習記録(1)

下記の「実戦で役立つ Cプログラミングのイディオム/定石&パターン」を使った学習記録のページです。
本ページのプログラムは「実戦で役立つ Cプログラミングのイディオム/定石&パターン」をもとにして作成したものも多数あります。

本学習のトップページ

本学習のトップページへ
 

1.1 クラス

商品情報を扱う Product クラスを作り、Main から呼び出す
 

Product.cs
using System;

namespace Product
{
  class Program
  {
    static void Main(string[] args)
    {
      // 商品番号 123, 価格 180円
      Product karinto = new Product( code:123, name:"かりんとう", price:180 );
      Console.WriteLine( "-------------" );
      Console.WriteLine( "name  : {0}", karinto.Name );
      Console.WriteLine( "code  : {0}", karinto.Code );
      Console.WriteLine( "price : {0}", karinto.Price );
      Console.WriteLine( "tax   : {0}", karinto.GetTax() );
      Console.WriteLine( "Amount: {0}", karinto.GetPriceIncludingTax() );

      Product daifuku = new Product( code:235, name:"大福", price:160 );
      Console.WriteLine( "-------------" );
      Console.WriteLine( "name  : {0}", daifuku.Name );
      Console.WriteLine( "code  : {0}", daifuku.Code );
      Console.WriteLine( "price : {0}", daifuku.Price );
      Console.WriteLine( "tax   : {0}", daifuku.GetTax() );
      Console.WriteLine( "Amount: {0}", daifuku.GetPriceIncludingTax() );
    }
  }
}

 

Program.cs
using System;
using System.Collections.Generic;
using System.Text;

// 商品クラス
namespace Product
{
  class Product
  {
    // 商品コード
    public int Code { get; set; }
    // 商品名
    public string Name { get; set; }
    // 商品価格 (税抜)
    public int Price { get; set; }

    // コンストラクタ
    public Product(int code, string name, int price)
    {
      this.Code = code;
      this.Name = name;
      this.Price = price;
    }

    // 消費税額を求める (8%)
    public int GetTax()
    {
      return (int)(Price * 0.08);
    }

    // 税込価格を求める
    public int GetPriceIncludingTax()
    {
      return Price + GetTax();
    }
  }
}

 

結果

f:id:dnkrnka:20181025223712p:plain
 
 

1.2 構造体

Program.cs
using System;

namespace StructDateTime
{
  class Program
  {
    static void Main( string[] args )
    {
      DateTime date = new DateTime( 2015, 7, 29 );
      int year = date.Year;

      // 10日後を求める
      DateTime daysAfter10 = date.AddDays( 10 );

      //「10日後は 2015 / 8 / 8 です」と表示される
      Console.WriteLine( "10日後は {0}/{1}/{2} です", daysAfter10.Year, daysAfter10.Month, daysAfter10.Day );
    }
  }
}

 

1.6 継承

  • 基底(親)クラスは Person
  • 具象(子)クラスは Employee
Person.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace Person
{
  public class Person
  {
    public string Name { get; set; }
    public DateTime Birthday { get; set; }
    public int GetAge()
    {
      DateTime today = DateTime.Today;
      int age = today.Year - Birthday.Year;
      if ( today < Birthday.AddYears( age ) )
      {
        age--;
      }
      return age;
    }
  }
}

 

Employee.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace Person
{
  public class Employee : Person
  {
    public int Id { get; set; }
    public string DivisionName { get; set; }
    public int Career { get; set; }
  }
}

 

Program.cs
  • Employee クラスを使う
using System;

namespace Person
{
  class Program
  {
    static void Main( string[] args )
    {
      Employee employee = new Employee
      {
        Id = 100,
        Name = "山田太郎",
        Birthday = new DateTime( 1992, 4, 5 ),
        DivisionName = "第一営業部",
        Career = 20,
      };

      Console.WriteLine( "{0} ({1}))は、{2}に所属しています。勤続年数は{3}です。",
        employee.Name, employee.GetAge(), employee.DivisionName, employee.Career );
    }
  }
}