📌 객체 지향 프로그래밍
- 객체를 기반으로 하는 프로그래밍 (OOP, Object Oriented Programming)
- 프로그램을 여러 개의 독립된 객체 단위로 분할해 각각의 객체들이 메시지를 주고받고, 데이터를 처리할 수 있다
- 프로그램 개발을 유연하게 할 수 있어 게임과 같이 유지/보수가 많고, 대규모의 소프트웨어 개발에 많이 사용된다.
- 객체란?
- 세상의 모든 것을 지칭 (사람, 자동차 등)
- 추상적인 개념 (객채의 특징만 뽑아서 사용 - 속성과 기능으로 구분)
- 자동차
- 속성 : 바퀴(개수, 크기, 재징 등), 핸들(반지름, 색상,...), 기어, 브레이크, 가속페달 등
- 기능 : 전진, 후진, 방향, 전환, 감속 등
✏️ 클래스 (Class)
- 클래스란?
- 객체를 표현하는 속성(변수)과 기능(메소드)을 하나의 집합으로 묶는 단위\
- 타코야끼를 만들 때
- 타코야끼 틀에 반죽 물과 문어를 넣고 타지 않게 돌리며 굽는다.
- 타코야끼 틀 = 클래스
- 만들어진 타코야끼 = 객체
- 클래스의 정의
public class 클래스이름
{
}
- 클래스의 예
- 아래 정보를 기반으로 하는 플레이어 캐릭터 클래스 작성
- 속성 (변수, 데이터) : 플레이어 아이디, 체력
- 기능 (메소드) : 데미지를 입어 체력 감소
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
private string ID = "김철수";
private int currentHP = 1000;
public void TakeDamage(int damage)
{
if ( currentHP > damage)
{
currentHP -= damage;
}
}
}
✏️ 멤버 변수, 멤버 함수
- 멤버 변수 (필드, Field)
- 클래스에 소속된 변수로 클래스의 속성을 저장, 사용하기 위한 용도
- 같은 클래스에 소속되어 있는 메소드는 이 변수를 조건 없이 사용 가능
- 클래스 중괄호 {} 내부, 메소드 정의 외부에 선언한다
Tip. 메소드 내부에 선언된 변수는 멤버 변수가 아닌 지역 변수이므로 메소드가 종료되면 삭제된다
- 멤버 함수 (메소드, Method)
- 클래스에 소속된 메소드로 클래스의 기능을 정의하고, 사용하기 위한 용도
- 같은 클래스에 소속되어 있는 메소드끼리는 조건 없이 호출 가능
- 클래스 중괄호 {} 내부, 메소드 정의 외부에 선언하며 다른 메소드 정의 내부에 메소드를 정의하지 않도록 주의
✏️ 접근 지정자
- 해당 멤버의 접근성을 설정하는 키워드
- 멤버 변수, 멤버 함수의 앞에 작성 ( 지역 변수는 사용 불가능)
- private, public, protected
- public : 외부에서 클래스를 통해 접근할 수 있다.
- private : 외부에서 접근할 수 없으며, 하위 클래스에서도 접근할 수 없다.
- protected : 외부에서 접근할 수 없으며, 하위 클래스에서는 접근할 수 있다.
- private는 default 지정자로 접근 지정자를 표기하지 않으면 private로 자동 설정
Tip. 멤버 변수의 경우 특별한 경우에만 public을 사용하고, 그렇지 않을 경우는 private, protected를 지향
- 접근 지정자의 사용 이유
- 객체 지향 프로그래밍을 할 때, 클래스에서 최소한의 기능만을 외부로 노출하고, 나머지는 감추는 것을 지향한다. (이를 클래스의 은닉성 이라고 함)
- 현재 클래스 내부에서만 사용하는 기능의 경우 외부로 노출할 필요가 없다.
- 예를 들어, TV를 사용할 때,
- 리모컨을 조작해 TV 채널을 돌리고 즐겁게 TV를 시청하는 것이 사용자의 일이고,
- 실제로 화면에 어떻게 색이 표현되고, 소리가 어떤 원리로 나는지 몰라도 된다.
- 그래서 클래스 내에 있는 각 멤버(변수, 메소드)를 필요에 따라 외부에서 사용 가능하도록 하거나 사용할 수 없도록 설정하는 것이 "접근 지정자" 이다
✏️ 클래스의 생상과 사용
-
null
- 사전적 의미는 존재하지 않는다는 뜻
- 초기화 하지 않은 클래스의 default 값
- 가장 빈번하게 Exception을 일으키는 원인
- Exception : 실행 중에 발생하는 오류