IMCAT.DEV
로그인 가입
C# 입문 객체지향

C# 속성과 메서드

C# 속성과 메서드 — 초급

속성과 메서드

1. 도입 (왜 배워야 하는가)

C#에서 속성과 메서드는 객체 지향 프로그래밍(OOP)의 핵심 구성 요소입니다. 속성은 객체의 상태를 정의하고, 메서드는 그 상태를 조작하는 방법을 제공합니다. 실무에서 객체 지향적 설계를 통해 코드의 재사용성과 유지보수성을 높일 수 있기 때문에 이 두 개념을 이해하는 것은 필수적입니다. 만약 이 개념을 모른다면, 객체 지향 프로그래밍의 장점을 활용하지 못하고 복잡한 코드로 인해 유지보수가 어렵고, 버그가 발생하기 쉬운 상황에 처할 수 있습니다.

2. 핵심 개념 설명

  • 속성 (Property): 객체의 특성을 나타내는 변수입니다. 예를 들어, '사람' 객체는 '이름', '나이'와 같은 속성을 가질 수 있습니다.
  • 메서드 (Method): 객체가 수행할 수 있는 동작을 정의합니다. 예를 들어, '사람' 객체는 '걷다', '말하다'와 같은 메서드를 가질 수 있습니다.
  • 관련 용어 정리

    용어설명
    클래스객체의 설계도, 속성과 메서드를 포함
    인스턴스클래스의 실제 객체

    3. 기본 코드 예제

    다음은 속성과 메서드를 사용하는 간단한 예제입니다.

    using System;
    
    class Person
    {
        // 속성 정의
        public string Name { get; set; }
        public int Age { get; set; }
    
        // 메서드 정의
        public void Introduce()
        {
            Console.WriteLine($"안녕하세요, 제 이름은 {Name}이고, 나이는 {Age}살입니다.");
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person(); // Person 클래스의 인스턴스 생성
            person.Name = "홍길동";        // 속성에 값 할당
            person.Age = 30;              // 속성에 값 할당
            person.Introduce();           // 메서드 호출
        }
    }
  • 실행 결과:
  • 안녕하세요, 제 이름은 홍길동이고, 나이는 30살입니다.
  • 코드 한 줄씩 동작 설명:
  • 1. using System;: System 네임스페이스를 사용하기 위해 지정합니다. 2. class Person: Person이라는 클래스를 정의합니다. 3. public string Name { get; set; }: Name이라는 속성을 정의합니다. 4. public int Age { get; set; }: Age라는 속성을 정의합니다. 5. public void Introduce(): Introduce라는 메서드를 정의합니다. 6. Console.WriteLine(...): 인사말을 출력합니다. 7. class Program: 프로그램의 시작점인 클래스를 정의합니다. 8. static void Main(...): Main 메서드를 통해 프로그램 실행을 시작합니다. 9. Person person = new Person();: Person의 인스턴스를 생성합니다. 10. person.Name = "홍길동";: Name 속성에 "홍길동"을 할당합니다. 11. person.Age = 30;: Age 속성에 30을 할당합니다. 12. person.Introduce();: Introduce 메서드를 호출하여 인사말을 출력합니다.

    4. 실전 활용 예제

    예제 1: 쇼핑몰 장바구니 구현

    쇼핑몰에서 장바구니를 구현할 때, 제품의 속성과 장바구니에 담길 수 있는 메서드를 사용할 수 있습니다.

    class Product
    {
        public string ProductName { get; set; }
        public decimal Price { get; set; }
        public int Quantity { get; set; }
    
        public decimal CalculateTotalPrice()
        {
            return Price * Quantity;
        }
    }
    
    class ShoppingCart
    {
        private List<Product> products = new List<Product>();
    
        public void AddProduct(Product product)
        {
            products.Add(product);
        }
    
        public decimal GetTotalPrice()
        {
            decimal total = 0;
            foreach (var product in products)
            {
                total += product.CalculateTotalPrice();
            }
            return total;
        }
    }

    예제 2: 학생 성적 관리

    학생의 성적을 관리하는 프로그램에서 학생의 속성과 성적을 계산하는 메서드를 활용할 수 있습니다.

    class Student
    {
        public string Name { get; set; }
        public List<int> Grades { get; set; } = new List<int>();
    
        public double CalculateAverage()
        {
            return Grades.Average();
        }
    }

    5. 흔한 실수와 주의사항

    1. 속성을 잘못 사용하기:
    2.    public string Name; // 잘못된 예

      - 올바른 코드:

         public string Name { get; set; }; // 올바른 예
    3. 메서드 호출 시 인스턴스 생성 잊기:
    4.    Person person;
         person.Introduce(); // NullReferenceException 발생

      - 올바른 코드:

         Person person = new Person();
         person.Introduce(); // 정상 작동

      6. 정리

    5. 속성과 메서드는 객체 지향 프로그래밍의 기본 요소입니다.
    6. 속성은 객체의 상태를 나타내고, 메서드는 행동을 정의합니다.
    7. 실무에서 객체 지향 설계를 통해 코드의 재사용성과 유지보수성을 높일 수 있습니다.
    8. 다음에 학습하면 좋은 주제로는 상속과 다형성이 있습니다.