전체 코드

using System.ComponentModel;
using System.Numerics;
using System.Threading;

namespace CSharp
{
    internal class Program
    {

        // Knight 를 객체로 표현
        // 속성 : hp, attack, pos
        // 기능 : Move, Attack, Die

        //객체를 표현하는 문법은 class

        // 붕어빵 틀에 해당한다고 생각하면 편함
        // 재료만 잘 넣어주면 결과가 나옴

        class Knight
        {
            // public 외부에서도 접근할 수 있다는 의미
            public int hp;
            public int attack;

            public void Move()
            {
                Console.WriteLine("Knight Move");
            }
            public void Attack()
            {
                Console.WriteLine("Knight Attack");
            }
        }

        static void Main(string[] args)
        {
            // 절차 지향 (procedure) 지향
            // 함수 지향적
            // 함수의 순서가 중요
            // 순서가 바뀌면 로직이 바뀜


            // 객체 지향 (OOP) Object Oriented Programming
            // 프로그램을 객체 단위로 구성

            // 객체를 사용하는 문법은 new 이다.
            // 설계도를 기반으로 만들면된다.




            Knight knight = new Knight();
            // new를 사용하면 에러 발생
            // 또하나의 문법이 있다.
            //Knight knight1 = null; 프로그램이 뻗음 존재하지 않은 곳에 접근할 수 없음
            // 
            
            knight.hp = 100;
            knight.attack = 10;
            knight.Move();
            knight.Attack();
           
        }

    }
}

1️⃣ OOP(객체지향 프로그래밍) 개념 정리

✅ 절차지향 vs 객체지향

절차지향 프로그래밍 (Procedural)객체지향 프로그래밍 (OOP)
프로그램을 함수 단위로 구성프로그램을 객체 단위로 구성
함수 호출 순서에 종속됨객체의 속성(데이터) + 기능(메서드)으로 구성
유지보수가 어려움유지보수가 용이
중복 코드가 많아짐코드 재사용성 증가

OOP는 모든 것을 객체 단위로 생각하며, 데이터(속성)와 동작(기능)을 함께 묶어 관리하는 방식입니다.


2️⃣ 코드 분석 (상세 설명)

📌 1) Knight 클래스 정의

    class Knight
    {
        public int hp;     // 체력
        public int attack; // 공격력

        public void Move()
        {
            Console.WriteLine("Knight Move");
        }

        public void Attack()
        {
            Console.WriteLine("Knight Attack");
        }
    }

클래스(Class)란?

  • Knight 클래스는 기사(Knight) 캐릭터를 나타내는 객체의 설계도(틀)입니다.
  • 붕어빵 틀과 같은 개념Knight 클래스를 기반으로 여러 개의 Knight 객체를 생성 가능.

멤버 변수(속성)

  • hp: 기사의 체력을 저장하는 변수.
  • attack: 기사의 공격력을 저장하는 변수.

멤버 함수(기능)

  • Move(): 기사의 이동 동작을 수행.
  • Attack(): 기사의 공격 동작을 수행.

📌 2) 객체 생성 및 사용 (Main 메서드)

        static void Main(string[] args)
        {
            // 🔹 객체 생성
            Knight knight = new Knight(); // new 키워드 사용

            // 🔹 속성 값 설정
            knight.hp = 100;      // 체력 설정
            knight.attack = 10;   // 공격력 설정

            // 🔹 기능 실행
            knight.Move();        // "Knight Move" 출력
            knight.Attack();      // "Knight Attack" 출력
        }

객체(Object)란?

  • Knight 클래스(설계도)를 기반으로 생성된 실제 메모리에 존재하는 실체.
  • Knight knight = new Knight();knight라는 객체 생성.

객체 생성 방식
| 선언만 한 경우 | new 키워드 사용 |
|----------------|------------------|
| Knight knight; | Knight knight = new Knight(); |
| 메모리 할당 없음 | 메모리 할당(O) |

객체의 속성 값 설정

knight.hp = 100;
knight.attack = 10;
  • 객체를 생성한 후 속성 값을 설정해야 사용 가능.

객체의 기능 실행

knight.Move();  // "Knight Move" 출력
knight.Attack();  // "Knight Attack" 출력
  • 객체의 메서드를 호출하여 동작을 수행.

3️⃣ 객체지향 프로그래밍(OOP)의 핵심 개념

📌 클래스(Class)

  • 객체의 설계도로, 객체가 가져야 할 속성과 기능을 정의.
  • 붕어빵 틀과 같은 개념.

📌 객체(Object)

  • 클래스를 기반으로 new 키워드를 통해 생성된 실체.
  • 메모리에 로드되어 사용 가능.

📌 멤버 변수(Field)

  • 객체가 가지는 데이터(속성).
  • hp, attack과 같은 속성을 통해 데이터를 저장.

📌 멤버 함수(Method)

  • 객체가 수행하는 동작(기능).
  • Move(), Attack() 등의 함수로 객체의 동작을 정의.

profile
李家네_공부방

0개의 댓글