프로그래밍/(도서)프랙티컬 C#

[C#] 프랙티컬 C# - 2.1 거리 환산 프로그램

Victory_HA 2022. 3. 31. 22:35

2.1 거리 환산 프로그램

  • ft -> m 으로 환산하여 출력하는 DistanceConverter프로그램을 만들어야합니다.2.1.1 첫 버전
  • 1 ft = 0.3048 m 2 ft = 0.6096 m 3 ft = 0.9144 m 4 ft = 1.2192 m 5 ft = 1.5240 m ...

DistanceConverter 첫 버전

  • 1~10 feet를 meter로 환산해서 출력해주는 프로그램입니다.
  • {1:0.0000}에서 0.0000은 소수 4번째 자리까지 표시하는 포맷 설정입니다.
    class Program 
    {
      static void Main(string[] args)
      {
          for(int feet = 1; feet <= 10; feet++)
          {
              double meter = feet * 0.3048;
              Console.WriteLine("{0} ft = {1:0.0000} m", feet, meter);
          }
      }
    }

2.1.2 메서드로 독립시킨다.

  • DistanceConverter메서드를 생성하여 재사용성을 높일 수 있습니다.
class Program 
{
    static void Main(string[] args)
    {
        for(int feet = 1; feet <= 10; feet++)
        {
            double meter = DistanceConverter(feet);
            Console.WriteLine("{0} ft = {1:0.0000} m", feet, meter);
        }
    }

    static double DistanceConverter(int feet)
    {
        return (feet * 0.3048); 
    }
}

2.1.7 정적 메서드

  • 인스턴스 속성 혹은 인스턴스 필드를 이용하지 않는 메서드는 정적 메서드로 만들 수 있습니다.
  • FromMeter 메서드에 static 키워드 사용하여 정적 메서드로 만들었습니다.
    • DistanceConverter 인스턴스 생성이 필요하지 않습니다.
  • FromFeet 메서드는 정적 메서드가 아니기 때문에 호출하려면 DistanceConver 인스턴스를 생성 후, 인스턴스에서 호출 할 수 있습니다.

정적 메서드 이용해서 출력하기

    class Program 
    {
        static void Main(string[] args)
        {

            double ret;
            for (int feet = 1; feet <= 10; feet++)
            {
                ret = DistanceConverter.FromMeter(feet);

                Console.WriteLine($"{feet} ft = {ret} m");
            }

            Console.ReadKey();
        }
    }

    public class DistanceConverter
    {
        public static double FromMeter(int num)
        {
            return (num * 0.3048);
        }
        public double FromFeet(int num)
        {
            return num / 0.3048;
        }
    }

2.1.8 정적 클래스

  • 클래스 안에 있는 모든 멤버가 정적 멤버일 경우 클래스를 정적 클래스로 지정하는 방법이 있습니다.
  • AS-IS 예제에서 모든 멤버가 정적 멤버입니다.
  • TO-BE 예제에서 클래스를 정적 클래스로 만들어주면 메서드에 static 키워드 없이 AS-IS와 동일하게 모든 멤버를 사용할 수 있습니다.

AS-IS

    public class DistanceConverter
    {
        public static double FromMeter(int num)
        {
            return (num * 0.3048);
        }
        public static double FromFeet(int num)
        {
            return num / 0.3048;
        }
    }

TO-BE

    public static class DistanceConverter
    {
        public double FromMeter(int num)
        {
            return (num * 0.3048);
        }
        public double FromFeet(int num)
        {
            return num / 0.3048;
        }
    }

2.1.9 상수 정의

const 키워드

  • 변수 값을 고정할 때 사용합니다.
  • const로 지정한 상수느 public으로 지정하지 않는 것이 좋습니다.
  • public으로 지정해서 다른 클래스가 접근할 수 있게 한 경우에는 const 대신 static readonly 사용을 권장합니다.

const 사용 예제

private const double ratio = 0.3048;

프랙티컬 C# 본문 발췌