객체 지향 프로그래밍 소개
01.02 - 변수에서 객체는 값을 저장하고 사용할 수 있는 메모리 조각이라고 정의했다. 이름있는 객체를 변수라고 한다.
전통적으로 프로그래밍은 기본적으로 객체라는 데이터를 정의한 다음 해당 데이터로 작업하는 컴퓨터에 대한 명령 목록이다. 데이터와 그 데이터에 작용하는 함수들은 원하는 결과를 내기 위해 결합하는 분리된 엔티티다. 이러한 분리 때문에 현실에 대한 직관적인 표현을 제공하지 않는다. 속성(변수)을 적절히 관리하고 행동(함수)에 연결하는 것은 프로그래머의 몪이다. 예를 들면 다음과 같다:
driveTo(you, work);
객체 지향 프로그래밍(OOP: Object-oriented programming)은 속성과 동작을 함께 결합하여 재사용 가능한 패키지로 만드는 기능을 제공한다. 다음과 같이 보이는 코드로 이어진다:
you.driveTo(work);
이것은 더 명확하게 읽을 수 있을 뿐만 아니라, 누가 주체이고, 어떤 행동을 할지 분명히 알 수 있다. 함수를 작성하는 데 초점을 맞추기보다는 명확하게 정의된 동작 세트가 있는 객체를 정의하는 데 중점을 둔다. 때문에 이 패러다임을 "객체 지향"이라고 한다.
즉, 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식이다.
객체 지향은 프로그램을 보다 모듈화된 방식으로 작성할 수 있고, 더 쉽게 쓰고 이해할 수 있으며, 더 높은 수준의 코드 재사용성을 제공한다. 또한, 이러한 객체들은 프로그래머가 객체들과 어떻게 상호작용하는지 그리고 그것들이 다른 객체들과 어떻게 상호작용하는지를 정의함으로써 프로그래머의 데이터로 작업하는 더 직관적인 방법을 제공한다.
컴퓨터과학에서 객체 또는 오브젝트(object)는 저장공간에서 할당되어 값을 가지거나식별자, 자료 구조, 함수 또는 메소드가 될 수 있다. 프로그래밍 언어는 변수를 이용해 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다. 그러나 메모리가 할당되기 전까지 객체는 존재하지 않는다.
절차적 프로그래밍에서 하나의 객체는 자료나 명령을 포함할 수 있지만 두 가지를 동시에 포함하지는 않는다. (명령은 프로시저나 함수의 형태를 가진다).
객체 지향 프로그래밍에서 객체는 클래스의 인스턴스이다. 클래스 객체는 자료와 그 자료를 다루는 명령의 조합을 포함하여 객체가 메시지를 받고 자료를 처리하며 메시지를 다른 객체로 보낼 수 있도록 한다. 실세계의 유추로 설명하자면, 만약 어떤 사람이 집에서 살기를 원할 때, 그 집의 청사진(집의 사진)이나 축소 모형 따위는 전혀 필요가 없다. 필요한 것은 설계에 맞는 실제 집이다. 이 유추에서 청사진은 클래스를 나타내고 실제 집은 객체를 나타낸다.
객체라는 용어에 혼란이 올 수 있다. 전통적인 프로그래밍에서 '객체'는 값을 저장하는 메모리 조각이다. 객체 지향 프로그래밍에서 '객체'는 속성과 동작을 결합한 객체라는 것을 의미한다.
번역: 이 포스트의 원문은 https://www.learncpp.com/cpp-tutorial/81-welcome-to-object-oriented-programming/ 입니다.