728x90
    
    
  
1. 개체 지향 프로그래밍(OOP)
이번 시간에는 C#의 개체 지향 프로그래밍에 대해 배워보겠습니다. C# 개체 지향 프로그램을 더욱 이해할 수 있도록 게임 형식으로 코드를 짜서 설명해보도록 하겠습니다. 각 개념은 게임 캐릭터와 요소를 통해 설명합니다.
2. 클래스 및 객체
클래스와 객체에 대한 자세한 구성 설명은 아래와 같습니다. C#으로 RPG 게임을 만든다고 가정해보겠습니다.
- 클래스: 게임 캐릭터를 정의하는 청사진
 - 객체: 캐릭터의 인스턴스
 
using System;
// Character 클래스 정의
public class Character
{
    public string Name { get; set; } // 캐릭터 이름 속성
    public int Health { get; set; }
    // 캐릭터 공격 메서드
    public void Attack()
    {
        Console.WriteLine($"{Name}가 공격!"); // 공격 메시지 출력
    }
}
public class Pro
{
    public static void Main(string[] args)
    {
        Character hero = new Character(); // Charactor 객체를 생성
        hero.Name = "전사"; // 캐릭터 이름 설정
        hero.Health = 100; // 캐릭터 체력 설정
        hero.Attack(); // 공격 메서드 호출
    }
}
3. 상속
상속은 기본 캐릭터 클래스에 파생된 다양한 캐릭터 유형으로 메인 클래스를 상속받는 Worrior 클래스를 정의할 수 있습니다.
using System;
public class Character
{
    public string Name { get; set; } // 캐릭터 이름 속성
    public int Health { get; set; }
    // 캐릭터 공격 메서드
    public void Attack()
    {
        Console.WriteLine($"{Name}가 공격!"); // 공격 메시지 출력
    }
}
// Vehicle 클래스를 상속받는 Warrior 클래스 정의
public class Worrior : Character
{
    // Worrior 클래스 전용 공격 메서드
    public void Attack()
    {
        Console.WriteLine($"{Name}이 공격 자세를 취함"); // 공격 메서드 호출
    }
    public void Defend()
    {
        Console.WriteLine($"{Name}이 방어 자세를 취함"); // 방어 메서드 호출
    }
}
public class Program
{
 
    public static void Main(string[] args)
    {
        Worrior worrior = new Worrior(); // Worrior 객체 생성
        worrior.Name = "전사";
        worrior.Attack();
        worrior.Defend();
    }
}
4. 다형성
다형성은 다양한 캐릭터가 동일한 메서드를 사용하 다른 행동을 수행합니다.
// Animal 클래스 정의
public class  Animal
{
    // 기본 Speak 메서드 정의
    public virtual void Speak()
    {
        Console.WriteLine("동물이 소리냄"); // 기본 동작
    }
}
// Dog 클래스는 Animal 클래스를 상속 받아 Speak 메서드를 오버라이드함
public class Dog : Animal
{
    public string Name { get; set; }
    public override void Speak()
    {
        Console.WriteLine("멍멍!"); // 소리냄
    }
}
// Cat 클래스는 Animal 클래스를 상속 받아 Speak 메서드를 오버라이드함
public class Cat: Animal
{
    public string Name { get; set; }
    public override void Speak()
    {
        Console.WriteLine($"야옹!"); // 고양이 소리
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        Animal myDog = new Dog { Name = "강아지" }; // Dog 객체 생성
        Animal myCat = new Cat { Name = "고양이" }; // Cat 객체 생성
        myCat.Speak(); // Cat 객체의 Speak 메서드 호출
        myDog.Speak(); // Dog 객체의 Speak 메서드 호출 
    }
}
5. 캡슐화
캡슐화는 캐릭터의 상태를 보호하고, 외부에 직접 접근하지 못하도록 합니다.
// GameShop 클래스 정의
public class GameShop
{
    private decimal balance; // 잔액을 보호하기 위한 private로 설정
    // 예금을 위한 메서드
    public void Deposit(decimal amount)
    {
        if (amount > 0)
        {
            // 예금액이 0보다 큰경우 잔엑애 예금액 추가
            balance += amount;
            Console.WriteLine($"예금액: {amount}, 현재 잔액: {balance}"); // 잔액 출력
        }
    }
    // 현재 잔액 반환 메서드
    public decimal GetBalance()
    {
        return balance; // 잔액 반환
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        GameShop account = new GameShop(); // GameShop 객체 생성
        account.Deposit(3000); // 2000원 예금
        Console.WriteLine($"잔액: { account.GetBalance()}원");
    }
}
6. 추상화
복잡한 시스템을 단순화해 중요한 부분만을 보여주는 개념입니다.
// 추상 클래스 GameCharacter 정의
public abstract class GameCharacter
{
    public abstract void Move(); // 이동 메서드 추상
}
// Hero 클래스는 GameCharacter를 상속 Move 메서드 구현
public class Hero : GameCharacter
{
    public override void Move()
    {
        Console.WriteLine("캐릭터가 앞으로 이동"); // 이동 메시지
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        GameCharacter hero = new Hero(); // Hero 객체 생성
        hero.Move();
    }
}
GitHub - Koras02/project
Contribute to Koras02/project development by creating an account on GitHub.
github.com
728x90
    
    
  LIST
    '게임 모딩 > C#' 카테고리의 다른 글
| [C#] 11장. C# 예외 처리 (1) | 2025.08.18 | 
|---|---|
| [C#] 10장. C# 패턴일치 (0) | 2025.02.26 | 
| [C#] 8.C#의 네임스페이스, 클래스, 레코드, 인터페이스, 제네릭, 익명 형식 (0) | 2025.02.03 | 
| [C#] 7. C#의 형식 시스템 (0) | 2025.01.27 | 
| [C#] 6. C# 프로그램의 일반적인 구조체 (0) | 2025.01.27 |