본문 바로가기
- CS/OOP

[OOP] OOP Object-Oriented Programming 개요

by david_동근 2025. 6. 7.

객체지향프로그래밍의 몇가지 주요 개념들을 정리해보았습니다.

 


 

OOP; Object-Oriented Programming

전공 서적에 나오는 말을 빌리자면,

"현실 세계를 객체로 모델링하여 interactive 하게 구성한 프로그래밍의 paradigm" 이 되겠습니다.

현실 세계와 OOP 개념 아이디어를 매칭시키면 아래와 같습니다.

설계도 클래스(Class)
실제 사물 객체(Object)
행동 메서드(Method)
속성 필드(Field)
동작 방식 다양화 다형성
공통된 특성 물려받기 (like 종 분류계) 상속

 

Object (객체) 는 데이터 기반의 어떠한 기능을 가진 독립적 단위를 뜻하며,

객체 간 메세지 전달 (or 메서드 호출 등...) 로 프로그램이 동작하는 것을 포함합니다.

 

 

OOP의 각 개념들은 유기적으로 연결돼있으며, 아래 같은 아이디어들의 기초가 됩니다.

https://bulletprooves.tistory.com/67

 

[OOP] SOLID 설계 원칙

Solid 해서 생각난 이야기에용SOLID that's so slippery?얼음이 미끄럽단 건 삼척동자도 압니다. 하지만, 왜?they say, in the case of ice, that when you stand on it.momentarily the pressure melts the ice a little bit (미끄덩)so yo

bulletprooves.tistory.com

https://bulletprooves.tistory.com/46

 

[OOP] Design Patterns ( GoF )

Object Oriented 프로그래밍에서 협업을 위해 설계를 할때,내가 작성한 코드, 다른 분께서 작성한 코드를 전달해줄 때 생기는 어려움을 극복하기 위해디자인 패턴이라는 일종의 의사소통 방법을 사

bulletprooves.tistory.com

 

OOP 의 몇가지 핵심

객체 지향을 실현하기 위해서 필요한 몇가지의 핵심 개념이 있습니다.

 

Abstraction (추상화)

복잡한 내부 요소들은 숨기며, 필요한 것들만 드러냅니다.

즉, 원리까지 알 필요는 없는 불필요한 정보는 감추면서, 어떤 (결과를 내뱉는)동작을 하는지 핵심 개념을 보여주는 것입니다.

Unity 를 예를 들면, Rigidbody 나 Animator 는 내부 구조없이 인터페이스만 사용합니다.

abstract class Human {
    public abstract void Learn(); // 배움에는 끝이 없소이다...
}

 

Encapsulation (캡슐화)

외부에 내부 구현 노출을 제한하며, 데이터와 메서드 등을 하나로 묶는 작업입니다.

접근제어자 (public, private, protected) 로 구현 가능합니다.

class Player {
    private int hp;

    public void TakeDamage(int dmg) {
        hp -= dmg;
    }
}

 

Unity 에서는 노출을 제한하 되, 인스펙터에서 확인이 가능토록, [SerializeField] private 을 사용합니다,

 

Inheritance (상속)

기존에 있는 클래스를 기반으로 새로운 클래스를 만드는 것입니다.

코드 재사용과 구조화에 용이하며, 부모-자식 관계 형성과 'is-a' 관계 (Dog is-an Animal) 처럼이 가능합니다.

class Animal {
    public void Breathe() { }
}

class Dog : Animal {
    public void Bark() { }
}

 

Unity 에서는 MonoBehaviour 를 상속 하므로, Asset 내 모든 C# 스크립트가 엔진의 기능을 물려받습니다.

 

Polymorphism (다형성)

같은 메서드가 객체에 따라 다르게 동작하는 것을 말합니다.

Overriding 처럼 상속된 메서드를 재정의하거나, 인터페이스 구현으로 메서드의 다양한 방식을 구현합니다.

Animal animal = new Dog();  // Animal 타입이지만 Dog로 동작
animal.Bark(); // Dog 의 Bark 메서드 실행

 

예를 들어, IDamageable 인터페이스를 정의했다고 하고,

이를 구현한 옵젝트들이 동일한 메서드 (ex. TakeDamage(); ) 을 호출하는 형상을 떠올릴 수 있습니다.

 

Modularity (모듈화)

구현할 프로그램을 작은 단위로 분리화 하는 것을 말합니다.

모듈마다 독립적이면, 자기 완결성이 있다고 합니다.

// PlayerInput.cs, PlayerMovement.cs, PlayerAttack.cs 등을 모듈로 나눠서 관리

 


 

OOP 를 사용하게 되면, 유지보수(수정시 영향 범위를 최소화 해용), 코드 재사용성,

확장에 용이하다는 점과 Test, Debugging 이 객체 단위로 수월해지며,

무엇보다도 우리가 사는 현실 세계로부터 모델링 된다는 점에서 사람들에게 친숙한 구조가 됩니다.

그럼 오늘도 좋은 하루 되세용~ ૮₍ ˶˃ ⤙ ˂˶ ₎ა

'- CS > OOP' 카테고리의 다른 글

[CS] DI Dependency Injection  (2) 2025.06.23
[OOP] SOLID 설계 원칙  (2) 2025.06.07
[OOP] Design Patterns ( GoF )  (0) 2025.05.26