코드스테이츠44기 프론트엔드

[코드스테이츠 44기 프론트엔드 블로깅] 객체 지향 프로그래밍이란?

배트리버 2023. 3. 15. 13:43
클래스와 인스턴스에 대해 배우고 이를 포함한 큰 개념인 객체 지향 프로그래밍에 대해 배웠다. 예전 처음 코딩을 접했을 때 c언어를 배웠었는데 그 후 자바를 배웠을 때 확실히 사용하기 편했던 것이 기억이 난다. 그 기억을 떠올려가며 오늘 공부한 객체 지향 프로그래밍에 대해 작성해보겠다 ! 

절차적 언어 vs 객체지향 언어 

절차적 언어는 별개의 변수와 함수로 순차적으로 작동한다 하지만 객체지향 언어는 데이터의 접근과 , 데이터의 처리과정에 대한 모형을 만들어 데이터와 기능이 별개로 취급되지 않고 한 번에 묶어 처리할 수 있다. 

 

OOP ? 

Object Oriented Programming 의 약자로 프로그램 설계 철학을 의미한다. 모든 것을 객체로 그룹화 하고 4가지 주요 개념을 통해 재사용성을 얻을 수 있다. 여기서 4가지 주요 개념은 아래와 같다. 좋은 설계를 하기 위해서는 기본적으로 객체지향을 이해하고 아래의 4가지 개념을 적용하는 것이 좋다. 

Encapsultaion (캡슐화) 데이터와 기능을 하나의 단위로 묶는 것 
구현은 숨기고 , 동작은 노출시키는 것 ( 은닉 )
느슨한 결합에 유리 ( 언제든 구현을 수정할 수 있음 )

Inheritance(상속) 부모 클래스의 특징을 자식 클래스가 물려받는 것 

Abstraction(추상화) 내부 구현은 복잡하지만 노출되는 부분(인터페이스)은 단순하게 만든다는 뜻 
클래스 정의 시 메서드와 속성만 정의한 것 

Polymorphism(다형성) 다양한 형태 즉 객체내의 같은 메서드라도 다른 방식으로 구현될 수 있음 

느슨한 결합 : 코드의 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것 . 코드만 보고 인스턴스 객체의 기능을 상상할 수 있게 작성하는 것 

은닉화 : 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것 . 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 필요한 동작(메서드)만 노출시킴 .

 

OOP 주요 개념에 대한 장점 

Encapsultaion (캡슐화) 코드가 복잡하지 않게 만들고 , 재사용성을 높힘 
Inheritance(상속) 불필요한 코드를 줄여 재사용성을 높힘 
Abstraction(추상화) 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화 
Polymorphism(다형성) 동일한 메서드에 대해 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해짐 

 

OOP 주요 개념에 맞게 설계를 하게 된다면 코드의 재사용성이 증가합니다 .

 

실제 개념으로만 익힌 것이 아닌 직접 절차적 언어와 객체지향언어를 사용해본 입장으로써 객체지향언어를 사용하는 것이 훨씬 깔끔했던 거 같다.  상속과 다형성 특징을 통해 비슷한 기능을 가진 코드를 다시 쓰지 않고 재사용할 수 있어서 정말 편했었다. 오늘은 이렇게 객체지향프로그래밍에 대해 배워보았다. 자바스크립트는 객체지향언어는 아니지만 객체 지향 언어 처럼 사용할 수 있다. 자바스크립트에 빠지게 된 이유 중 하나도 이 때문인 것 같다. ㅎㅎ 

 

오늘돌 열공!