내일배움캠프/IL

[내배캠][Unity_6기][IL] C# 클래스와 객체

binary는 호남선 2024. 8. 31. 08:45

- 다음 내용은 Unity 퀘스트 모음집 \ C# 사전 문법 기초 \ 클래스와 객체 페이지들을 학습하고 작성되었습니다.

OOP(Object Oriented Programming)

- 객체 : 세상의 모든 요소, 속성와 메서드로 이루어짐

ex)

[ 현실 세계에서의 객체 ]

고양이 : 속성(나이, 털 색깔, 털 길이 등), 매서드(그루밍하기, 식빵굽기 등)

우산 : 속성(길이, 무게, 색상 등), 매서드(접기, 펼치기 등)

[ 게임에서의 적용 ]

몬스터 : 속성(종, 공격력, 방어력 등), 매서드(공격하기, 이동하기 등)

콜리플라워 : 속성(위치, 성장 단계, 품질 등), 매서드(물 받기, 수확되기 등)

 

- 객체 지향 프로그래밍 : 프로그램에 필요한 요소들을 객체로 모델링하고, 객체를 유기적으로 연결하여 프로그램을 설계

객체 지향 특징

1. 캡슐화 (Encapsulation)

- 객체의 속성과 매서드를 하나 묶어 외부에서 직접 접근하지 못하도록 보호

- 객체 내부의 세부 구현을 숨기고, 필요한 부분만 외부에 공개하여 보안과 안정성 향상

2. 추상화 (Abstraction)

- 복잡한 시스템에서 핵심적인 공통 부분만을 표현

- 공통된 부분을 기반으로 유연한 확장 가능

3. 상속 (Inheritance)

- 상위 클래스 속성과 매서드를 하위 클래스에서 재사용

- 코드 재사용성 높이고, 계층관계 모델링

4. 다형성 (Polymorphism)

- 하나의 기능을 다양한 형태로 변형하여 사용

- 오버로딩(같은 이름의 메서드가 여러 개 있는 경우)

- 오버라이딩(상위 클래스의 메서드를 하위 클래스에서 재정의하는 경우)

객체 지향의 장점

- 코드 재사용성, 생산성 향상, 유지보수 용이

class

- 객체의 속성과 메서드를 모아 클래스로 만듦

- 기본 형태

class 클래스 이름
{
   클래스의 속성(변수)
   클래스의 기능(함수)
}

- 클래스 내부에서 함수 호출이나 계산은 불가능

// 데이터 많을 수록 변수로 관리하기 어려움
string userId1 = "Pro";
int level1 = 100;

// ...
string userId100 = "Noob";
int level100 = 1;

// 공통 요소를 모아 클래스로 만들기
class User
{
    string userId;
    int level;

    public void DisplayInfo()
		{
			Console.WriteLine("ID : " + userId + "\tLV : " + level);
		}
}

객체

- 객체를 사용하려면 먼저 생성해야함

- 객체 생성 형식

데이터 형식 클래스 객체 저장할 변수명 = new 생성자();
User myUser = new User();

- 클래스 내부에 접근하려면 .(마침표) 사용

User myUser = new User();	// 객체 생성
myUser.userId = "Noob";	// 속성 값 접근
myUser.level = 1;
myUser.DisplayInfo();	// 함수 호출

// 클래스 정의
class User
{
    public string userId;
    public int level;

    public void DisplayInfo()
		{
			Console.WriteLine("ID : " + userId + "\tLV : " + level);
		}
}