본문 바로가기
Daily/Today I Learned

객체 지향 프로그래밍(Object-Oriented Programming)

by hustle-ing 2023. 3. 15.

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

 사람이 세계를 보고 이해하는 방법을 흉내 낸 프로그래밍 방법론이다. 실세계에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)을 통해 모델링하려는 프로그래밍 설계 철학을 뜻한다. 

 객체 지향 프로그래밍의 주요 개념으로는 크게 4가지가 있다.

 

 

캡슐화(Encapsulation)

데이터와 기능을 하나의 단위로 묶고, 외부에 공개될 필요가 없는 정보(내부 데이터 혹은 내부 구현 등등)는 숨기는 것을 말한다. 다른 말로 정보 은닉(information hiding)이라고도 한다. 데이터에 외부에서 직접 접근을 하면 안되고 오로지 함수를 통해서만 접근해야하는데 이를 가능하게 해주는 것이 바로 캡슐화이다.(은닉화)
 데이터(속성)과 기능(메서드)를 따로 정의하는 것이 아닌, 하나의 객체에 묶었기 때문에 느슨하게 결합된다. 여기서 느슨한 결합이란, 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다. 

 

 

추상화(Abstraction)

 공통의 속성이나 기능을 묶어 이름을 붙이는 것을 뜻한다. 내부 구현은 아주 복잡하지만, 공통된 속성이나 기능으로 묶어 실제로 노출되는 부분은 단순하게 만드는 개념이다. 이러한 추상화를 통해 인터페이스가 단순해지게 된다. 캡슐화와 헷갈릴 수 있는 개념 중 하나이다. 캡슐화는 코드나 데이터의 은닉에 포커스가 맞춰져 있지만, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.

 

 

상속성(Inheritance)

상위 개념의 특징을 하위 개념이 물려받는 특징을 말한다. 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는 것을 뜻한다. 여기서 기본 클래스와 파생 클래스는 부모 클래스 / 자식 클래스라고도 한다.

 

 

다형성(Polymorphism)

부모클래스에서 물려받은 가상 함수를 자식 클래스 내에서 오버라이딩 되어 사용하는 것을 말한다.

 

 

 

레퍼런스

https://poiemaweb.com/js-object-oriented-programming

https://88240.tistory.com/228

댓글