객체 지향 프로그래밍(OOP)

JiHun·2023년 5월 11일
0

JavaScript

목록 보기
2/5

💼 객체 지향 프로그래밍이란?

객체 지향 프로그래밍은 일종의 패러다임이다. 지금 개발 환경에서 가장 보편적인 사고 체계다.

지금은 객체 지향 하지만 이전에는 절차 지향적으로 사고하여 프로그래밍 되었다. 그래서 옛날 프로그래밍 언어는 명령 순서를 따르는 절차 지향적으로 모델링 되었다. 기능 중심으로 순서를 처리 했다.

기존의 기능을 순차적으로 실행하려는 절차 지향을 넘어서 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임이 등장하기 시작했다.

🗂️ 객체 지향

사물이나 개념들은 특징이나 성질, 기능 나타내는 속성을 가지고 있다. 이러한 특징을 통해 우리는 실체를 인식할 수 있다. 우리 주변에 있는 사물이나 개념들을 인식하는 철학적 사고를 프로그래밍에 접목했다. 실체들을 프로그래밍에 접목해서 객체로 표현할 수 있는 것처럼 말이다.

객체는 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조다.
객체는 객체의 상태를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작을 하나의 논리적인 단위로 묶어 생각한다.
객체의 상태 데이터와 상태 데이터를 조작할 수 있는 동작을 하나의 논리적인 단위로 묶어 생각한다. 여기서 상태 데이터는 속성(Property), 상태 데이터를 조작할 수 있는 동작을 메서드(Method)라고 부른다.

🗂️ 객체 지향 프로그래밍의 개념이자 특징

개념이자 특징으로는 4가지가 있다.

📑 캡슐화(Encapsulation)

내부 변수나 내부 메서드를 하나의 객체로 패지킹한다는 개념이다.
외부에 변수나 메서드들이 흩어져있는 것이 아니라 하나의 객체 안에 다 담겨있는 것을 뜻한다.
캡슐화에 따라서 부수적인 특징까지 따라온다. 정보은닉의 개념인 은닉화까지 따라온다.

은닉화는 내부 구현이나 내부 데이터를 숨긴다는 개념이다. 정해진 메서드만 노출시켜서 상호작용하도록 유도한다.

📑 추상화(Absration)

내부 구현은 복잡한데 실제 노출되는 부분은 단순하게 만든다는 개념이다.
예를 들어, 메세지를 보낸다고 하자. 사용자 입장에서는 텍스트를 입력하고 전송 버튼만 누르면 끝나지만 메세지 버튼을 누르는 순간 아주 많은 작업들이 일어나며 사용자는 그 작업들을 자세하게는 모른다. 이러한 것을 추상화 개념이라고 한다.

객체 지향 프로그래밍을 해서 클래스를 만들게 되면 객체 안은 복잡할지 몰라도 추상화를 통해 인터페이스는 단순해진다.

📑 상속(Inheritance)

부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 것.
예를 들어, 사람이라는 클래스가 있다고 하자. 이 클래스은 가장 기본적인 인간의 특징을 가질 것이다. 만약, 사람 클래스의 기본적인 구현을 기준으로 비슷한 객체를 만들고 싶다면 일일이 사람 클래스와 다시 써서 사용해야 할까? 이것은 비효율적이다.

이럴 때는 상속을 이용하면 된다. 상속을 이용하여 클래스를 상속 받을 수 있다. 상속 받아서 다른 속성과 메서드를 추가할 수 있다.

📑 다형성(Polymorphism)

어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질.
같은 클래스를 공유하고 있어서 같은 메서드를 사용하지만 다른 결과값이 나오는 것처럼 다양한 형태로 사용될 수 있는 특징이 있다.

profile
안녕하세요. 프론트엔드 개발자 송지훈입니다.

0개의 댓글