C# 문법 2주차 - 메서드

Amberjack·2024년 1월 2일
0

C# 문법

목록 보기
15/44

🧮 메서드

🤔 메서드란?

메서드(Method)는 일련의 코드 블럭으로, 특정한 작업을 수행하기 위해 사용되는 독립적인 기능 단위

코드의 재사용성과 모듈화를 위해 사용되며, 필요할 때 호출되어 실행한다.

👷 메서드의 역할과 중요성

  • 코드의 재사용성

    메서드를 사용하면 동일 작업을 반복해서 구현하지 않아도 된다. 필요할 때 메서드를 호출하여 작업을 수행할 수 있다.
  • 모듈화

    메서드를 사용하여 코드를 작은 단위로 분리하고 관리할 수 있다. 각 메서드는 특정 기능을 수행하므로 코드의 구조가 더욱 명확해진다.
  • 가독성과 유지보수성

    메서드를 사용하면 코드가 간결해지고 가독성이 좋아진다. 코드 수정이 필요한 경우 해당 메서드만 수정하면 되기 때문에 유지보수가 용이해진다.
  • 코드의 중복 제거

    반복적인 작업을 메서드로 묶어 사용하면 코드 중복을 방지할 수 있다.
  • 코드의 추상화

    메서드를 통해 작업 단위를 추상화하고, 메서드 이름을 통해 어떤 역할을 하는지 파악할 수 있다.

🖥️ 메서드 선언과 호출

🔠 메서드의 구조와 문법

▪️ 메서드 선언하기

[접근 제한자] [리턴 타입] [메서드 이름]([매개변수])
{
    // 메서드 실행 코드
}
  • 접근 제한자(Access Modifier)

    메서드에 접근할 수 있는 범위를 지정. public, private, protected를 주로 사용
  • 리턴 타입(Return Type)

    메서드가 반환하는 값의 데이터 타입. 반환 값이 없을 경우 void를 사용한다.
  • 매개변수(Parameters)

    메서드에 전달되는 입력 값, 필요한 경우 0개 이상의 매개변수를 정의할 수 있다.
  • 메서드 실행 코드(Method Body)

    중괄호 안에 메서드가 수행하는 작업을 구현하는 코드.

선언 예시)

// 예시 1: 반환 값이 없는 메서드
public void SayHello()
{
    Console.WriteLine("안녕하세요!");
}

// 예시 2: 매개변수가 있는 메서드
public void GreetPerson(string name)
{
    Console.WriteLine("안녕하세요, " + name + "님!");
}

// 예시 3: 반환 값이 있는 메서드
public int AddNumbers(int a, int b)
{
    int sum = a + b;
    return sum;
}

📢 메서드 호출 방법

  • 메서드를 호출하기 위해서는 메시드 이름과 필요한 매개변수를 전달하여 호출

  • 메서드 호출은 다음과 같은 형식으로 이루어진다.

    [메서드 이름]([전달할 매개변수]);
    
    // ex)
    AddNumbers(10, 20);
  • 호출 시 전달되는 매개변수는 메서드의 매개변수와 순서, 타입이 일치해야 한다.

  • 메서드는 호출되면 해당 메서드의 실행 코드를 수행, 리턴 값이 필요할 경우 반환한다.

🔢 매개변수와 반환값

🤔 매개변수의 개념과 활용

  • 매개변수는 메서드에 전달되는 입력 값. 메서드 내에서 이 값을 활용, 원하는 작업 수행
  • 매개변수는 메서드의 선언부에 정의, 0개 이상의 매개변수를 정의할 수 있다.
  • 매개변수는 메서드 호출 시 전달되는 값에 따라 동적으로 결정된다.
    // 예제
    void PrintFullName(string firstName, string lastName)
    {
        Console.WriteLine("Full Name: " + firstName + " " + lastName);
    }
    
    // 메서드 호출
    PrintFullName("John", "Doe");

⌨️ 반환값의 개념과 활용

  • 반환값은 메서드가 수행한 작업의 결과를 호출자에게 반환하는 값
  • 반환값은 메서드의 리턴 타입에 지정, 해당 타입의 값을 반환해야 함
    // 예제
    int AddNumbers(int a, int b)
    {
        int sum = a + b;
        return sum;
    }
    
    // 메서드 호출 및 반환값 사용
    int result = AddNumbers(10, 20);
    Console.WriteLine("Sum: " + result);

▪️ void 형식과 반환값이 없는 메서드

  • void는 메서드의 리턴 타입으로 사용되며, 해당 메서드가 값을 반환하지 않음을 나타냄
  • 반환값이 없는 메서드는 호출자에게 반환하지 않는다.
    // 예제
    void PrintMessage(string message)
    {
        Console.WriteLine("Message: " + message);
    }
    
    // 메서드 호출
    PrintMessage("Hello, World!");

🛻 메서드 오버로딩

같은 이름 다른 동작의 메서드 오버로딩

🚒 오버로딩 개념과 활용

  • 메서드 오버로딩은 동일한 이름의 메서드를 다양한 매개변수 목록으로 다중 정의하는 개념.
  • 매개변수의 개수, 타입, 순서가 다른 여러 메서드를 동일한 이름으로 정의, 메서드 호출 시 매개변수의 형태에 따라 선택되도록 할 수 있다.
  • 오버로딩은 메서드의 기능, 작업은 동일하지만 입력값에 따라 다르게 동작해야 할 때 사용한다.
// 예제
static void PrintMessage(string message)
{
    Console.WriteLine("Message: " + message);
}

static void PrintMessage(int number)
{
    Console.WriteLine("Number: " + number);
}

static void Main(string[] args)
{
    // 메서드 호출
    PrintMessage("Hello, World!");  // 문자열 매개변수를 가진 메서드 호출
    PrintMessage(10);  // 정수 매개변수를 가진 메서드 호출
}

📢 재귀 호출

🤔 재귀 호출 개념과 동작 원리

  • 재귀 호출? 메서드가 자기 자신을 호출하는 것!
  • 재귀 호출은 호출 스택에 호출된 메서드의 정보를 순차적으로 쌓고, 메서드가 반환되면서 스택에서 순차적으로 제거되는 방식.
// 재귀 호출 예시)
static void Main(string[] args)
{
    // 메서드 호출
    CountDown(5);
}

static void CountDown(int n)
{
    if (n <= 0)
    {
        Console.WriteLine("Done");
    }
    else
    {
        Console.WriteLine(n);
        CountDown(n - 1);  // 자기 자신을 호출
    }
}

⚠️ 재귀 호출의 활용과 주의점

  • 재귀 호출은 복잡한 문제를 단순한 방식으로 해결할 수 있는 장점이 있다.
  • 재귀 호출 시 주의점은 종료 조건을 명확히 정의해야 한다. 종료 조건을 만족하지 못하면 무한 루프가 발생할 수 있다.
  • 재귀 호출은 메모리 사용량이 크고 속도가 느리기 때문에 필요할 때 적절히 사용해야 한다.

메서드를 활용하여 넓이 구하기

  1. 원의 넓이 : PI × 반지름 r^2
  2. 사각형의 넓이 : 가로 × 세로
    static void Main(string[] args)
    {
        Console.WriteLine($"원의 넓이 : {getCircleArea(5): 0.00}");
        Console.WriteLine($"사각형의 넓이 : {getSquareArea(10, 5)}");
    }
    
    // 원의 넓이를 구하는 메서드
    static double getCircleArea(double r)
    {
        double area = Math.PI * (r * r);
    
        return area;
    }
    
    // 사각형의 넓이를 구하는 메서드
    static int getSquareArea(int a, int b)
    {
        int area = a * b;
    
        return area;
    }

0개의 댓글