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
LIST
'게임 모딩 > C#' 카테고리의 다른 글
[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 |
[C#] 5.목록 형식을 사용한 데이터 컬렉션 관리 (0) | 2025.01.26 |