- 다음 내용은 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);
}
}'내일배움캠프 > IL' 카테고리의 다른 글
| [내배캠][Unity_6기][IL] C# 기초 문법 톺아보기 (0) | 2024.08.31 |
|---|---|
| [내배캠][Unity_6기][IL] C# 추가 학습 (0) | 2024.08.31 |
| [내배캠][Unity_6기][IL] C# 함수 (0) | 2024.08.30 |
| [내배캠][Unity_6기][IL] C# 배열 (0) | 2024.08.30 |
| [내배캠][Unity_6기][IL] C# 제어문 (0) | 2024.08.30 |