클래스와 인스턴스에 대해 배우고 이를 포함한 큰 개념인 객체 지향 프로그래밍에 대해 배웠다. 예전 처음 코딩을 접했을 때 c언어를 배웠었는데 그 후 자바를 배웠을 때 확실히 사용하기 편했던 것이 기억이 난다. 그 기억을 떠올려가며 오늘 공부한 객체 지향 프로그래밍에 대해 작성해보겠다 !
절차적 언어 vs 객체지향 언어
절차적 언어는 별개의 변수와 함수로 순차적으로 작동한다 하지만 객체지향 언어는 데이터의 접근과 , 데이터의 처리과정에 대한 모형을 만들어 데이터와 기능이 별개로 취급되지 않고 한 번에 묶어 처리할 수 있다.
OOP ?
Object Oriented Programming 의 약자로 프로그램 설계 철학을 의미한다. 모든 것을 객체로 그룹화 하고 4가지 주요 개념을 통해 재사용성을 얻을 수 있다. 여기서 4가지 주요 개념은 아래와 같다. 좋은 설계를 하기 위해서는 기본적으로 객체지향을 이해하고 아래의 4가지 개념을 적용하는 것이 좋다.
Encapsultaion (캡슐화) | 데이터와 기능을 하나의 단위로 묶는 것 구현은 숨기고 , 동작은 노출시키는 것 ( 은닉 ) 느슨한 결합에 유리 ( 언제든 구현을 수정할 수 있음 ) |
Inheritance(상속) | 부모 클래스의 특징을 자식 클래스가 물려받는 것 |
Abstraction(추상화) | 내부 구현은 복잡하지만 노출되는 부분(인터페이스)은 단순하게 만든다는 뜻 클래스 정의 시 메서드와 속성만 정의한 것 |
Polymorphism(다형성) | 다양한 형태 즉 객체내의 같은 메서드라도 다른 방식으로 구현될 수 있음 |
느슨한 결합 : 코드의 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것 . 코드만 보고 인스턴스 객체의 기능을 상상할 수 있게 작성하는 것
은닉화 : 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것 . 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 필요한 동작(메서드)만 노출시킴 .
OOP 주요 개념에 대한 장점
Encapsultaion (캡슐화) | 코드가 복잡하지 않게 만들고 , 재사용성을 높힘 |
Inheritance(상속) | 불필요한 코드를 줄여 재사용성을 높힘 |
Abstraction(추상화) | 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화 |
Polymorphism(다형성) | 동일한 메서드에 대해 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해짐 |
OOP 주요 개념에 맞게 설계를 하게 된다면 코드의 재사용성이 증가합니다 .
실제 개념으로만 익힌 것이 아닌 직접 절차적 언어와 객체지향언어를 사용해본 입장으로써 객체지향언어를 사용하는 것이 훨씬 깔끔했던 거 같다. 상속과 다형성 특징을 통해 비슷한 기능을 가진 코드를 다시 쓰지 않고 재사용할 수 있어서 정말 편했었다. 오늘은 이렇게 객체지향프로그래밍에 대해 배워보았다. 자바스크립트는 객체지향언어는 아니지만 객체 지향 언어 처럼 사용할 수 있다. 자바스크립트에 빠지게 된 이유 중 하나도 이 때문인 것 같다. ㅎㅎ
오늘돌 열공!
'코드스테이츠44기 프론트엔드' 카테고리의 다른 글
[코드스테이츠 44기 프론트엔드 블로깅] 프로토타입 체인에 대해 (0) | 2023.03.16 |
---|---|
[코드스테이츠 44기 프론트엔드 블로깅] 프로토타입과 클래스에 대해 (1) | 2023.03.15 |
[코드스테이츠 44기 프론트엔드 블로깅] 클래스와 인스턴스에 대해 (0) | 2023.03.15 |
[코드스테이츠 44기 프론트엔드 회고록] Section 1 을 마치며 (0) | 2023.03.13 |
[코드스테이츠 44기 프론트엔드 솔로 프로젝트] 나만의 아고리 스테이츠 만들기 (0) | 2023.03.11 |