▶오늘의 주제
절차지향 프로그래밍, 객체지향 프로그래밍, 관점지향 프로그래밍은 각각 어떻게 다른가요?
▶절차지향 프로그래밍 (Procedural Programming)
- 컴퓨터가 해야 할 일을 시간의 흐름에 따라 순차적으로 프로그래밍하는 방식
- 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하지만, 유지보수 및 디버깅이 어려움
- 메모를 할 때, 하나의 메모장에 생각나는대로 순차적으로 작성. 대표적인 예로는 C언어.
▶객체지향 프로그래밍 (Object-Oriented Programming)
- 역할별로 클래스를 나누어 프로그래밍 하는 방식
- 하나의 사물 (객체) 에 하나의 의미를 부여하는 것처럼 프로그래밍
- 핵심 기능을 모듈화하여 하드웨어가 같은 기능을 중복으로 연산하지 않도록 하고, 모듈을 재활용 하기 때 문에 하드웨어의 처리양을 획기적으로 줄여줌.
- 처리속도가 절차지향보다 느리고 설계에 많은 시간소요
- 뭔가 자를 것이 필요하면 '✂️' 를 떠올림 (class Sciccors)
- 종이에 적을 게 필요하면 '✏️' 을 떠올림 (class Pen)
- 클래스 -> TV, 객체 -> 프로그램
▶관점지향 프로그래밍 (Aspect-Oriented Programming)
- 객체지향을 더욱 발전 시키기 위한 개념의 하나. 하나의 소프트웨어가 하나의 거대한 OOP로써 설계, 프로 그래밍 되었다면 이것을 각 기능별로 모듈화 해서 분리 시키는 개념.
- 관점지향의 핵심은 공통 모듈을 분리시켜 해당 소스 코드가 외부의 다른 클래스에서 존재하는 것.
- CORE CONCERN(핵심관심): 각 서비스의 핵심 비즈니스 로직예: 계좌이체, 입출금, 이자계산
- Crosscut Concern(횡단관심): 공통 모듈예: 보안, 예외처리, 로깅 등
'Spring' 카테고리의 다른 글
Spring - Entity와 Repository차이 (1) | 2022.12.07 |
---|---|
Spring - 엔터티(Entity) (0) | 2022.12.07 |
Spring - ORM, JPA, Spring Data JPA 차이점 (0) | 2022.12.07 |
Spring - 영속성 컨텍스트란? (0) | 2022.12.07 |
Spring - DI, IoC, Bean (0) | 2022.12.04 |