객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체라는 개별적인 단위로 분해하고, 이 객체들 간의 상호작용을 통해 프로그램을 구현하는 프로그래밍 패러다임입니다.
쉽게 예를 들자면, 슈퍼마켓에서 물건을 살 때, 물건의 이름, 가격, 수량 등의 정보를 담고 있는 제품 카트를 생각해볼 수 있습니다. 이 카트는 제품의 정보를 캡슐화하고 있으며, 제품 카트는 구매자가 물건을 추가하거나 제거하거나 결제할 수 있는 메서드를 가지고 있습니다.
객체 지향 프로그래밍에서는 이러한 객체를 모델링하고, 객체 간의 관계를 나타내는 클래스를 정의합니다. 이렇게 객체를 모델링하면, 코드의 가독성, 재사용성, 유지보수성이 향상되며, 프로그램의 확장성도 좋아집니다.
예를 들어, 슈퍼마켓에서는 제품 카트를 다양한 방식으로 사용합니다. 제품 카트는 구매자가 구매한 물건의 수량과 가격을 계산하는 기능 뿐만 아니라, 상품 할인, 쿠폰 등의 기능도 추가될 수 있습니다. 이렇게 객체 지향 프로그래밍을 사용하면, 새로운 기능을 추가하거나 기존 기능을 변경하는 것이 쉬워집니다.
- Java: 대표적인 객체 지향 프로그래밍 언어로, 다양한 운영체제에서 사용할 수 있습니다. 대규모 프로젝트에서도 안정적으로 동작합니다.
- C++: 하드웨어를 제어하는데 많이 사용되는 언어로, 성능이 중요한 애플리케이션 개발에 많이 사용됩니다.
- C#: 마이크로소프트에서 개발한 언어로, Windows 운영체제에서 가장 많이 사용됩니다. Unity 게임 엔진에서도 사용됩니다.
- Python: 다양한 분야에서 사용되는 프로그래밍 언어로, 가독성이 좋아 빠르게 개발할 수 있습니다.
- Ruby: 웹 개발에서 많이 사용되는 언어로, 간결하고 쉬운 문법을 가지고 있습니다.
- Swift: 애플에서 개발한 iOS, macOS 애플리케이션 개발을 위한 언어입니다.
- Kotlin: 구글에서 개발한 안드로이드 애플리케이션 개발을 위한 언어로, 자바와 호환성이 좋습니다.
이외에도 객체 지향 프로그래밍 언어로는 PHP, JavaScript, TypeScript, Scala 등이 있습니다.
현재 대부분의 프로그래밍 언어가 객체 지향 프로그래밍을 지원합니다. 그러나 객체 지향 프로그래밍이 아닌 다른 프로그래밍 패러다임을 따르는 언어도 여전히 사용되고 있습니다.
객체 지향 프로그래밍 이외의 프로그래밍 패러다임에는 절차 지향 프로그래밍, 함수형 프로그래밍, 논리형 프로그래밍 등이 있습니다.
절차 지향 프로그래밍은 C언어와 같은 언어들이 그 예입니다. C언어는 구조체와 함수를 이용하여 모듈화하고 기능을 구현하는 것이 특징입니다.
함수형 프로그래밍은 Haskell과 Lisp와 같은 언어들이 그 예입니다. 함수를 일급 객체로 취급하고, 불변성을 지향하며 부작용(side-effect)을 최소화하는 것이 특징입니다.
논리형 프로그래밍은 Prolog와 같은 언어들이 그 예입니다. 사실상 프로그래밍을 하기 위한 문장들을 정의하고, 시스템이 참인 문장을 찾아내는 것이 특징입니다.
하지만 이들 프로그래밍 패러다임은 상호 배타적인 것이 아니며, 대부분의 언어들은 이들 패러다임을 함께 지원합니다. 예를 들어, Python, JavaScript, C#, Java 등의 언어는 객체 지향, 함수형, 절차 지향 등의 패러다임을 지원합니다.
'유니티(Unity)' 카테고리의 다른 글
웹소켓,TCP,패킷 (0) | 2023.03.07 |
---|---|
클래스, 객체, 인스턴스 (0) | 2023.03.03 |
단일 책임원칙(Single-responsibility principle) (0) | 2023.03.03 |
어트리뷰트(Attribute) (0) | 2023.03.03 |
Unity 디자인 패턴 (0) | 2023.02.05 |