spring

[ 모각코 ] 소프트웨어 아키텍쳐

cheesecrust1008 2024. 3. 22. 12:34

프로그래밍 패러다임

구조적
- goto 문을 제거 하여 
객체지향
- 함수 호출 스택 프레임을 힙으로 옮겨서 함수에서 선언된 지역변수를 유지하기 위한 방법을 고안하여 처음 나왔다. ( 클래스를 뜻함 )

함수형
- 할당문이 없고 값의 변경을 권장하지 않으며 람다 계산법을 적극적으로 활용합니다.

---
### 구조적 프로그래밍

- 구조적 프로그래밍은 프로그램을 세부 기능으로 분해하여 이를 증명한다.
- 반증 가능한 단위로 쪼개어 반증이 불가능하 만큼 참이라는 것을 입증하는데에 있어 의미가 있고
- 기능적 분해


---
### 객체 지향 프로그래밍

객체 지향 프로그래밍의 특징, 개념

캡슐화, 상속, 다형성

- 캡슐화 : 캡슐화란 구분선 바깥쪽에서는 은닉되고, 일부 함수만이 노출된다.

과거의 캡슐화에서는 헤더와 구현부를 나누어 구조체의 구조와 함수 구현을 알지는 못했다.
하지만, 지금의 OO는 이 경계가 사라졌으며 헤더와 구조체를 나누지 않아 구현하려는 구조체의 아이템을 알아야 하고, 이에 따라 완벽한 캡슐화가 깨졌다.

- 상속 

이는 원래 class를 확장하는데 쓰인다

- 다형성

이는 플러그인 아키텍쳐를 구현하는데에 있어 필수적이다.

다형성에서 더 나아가게 되면 의존성 역전이 있다. 
이는 구조적 프로그래밍에서 상위 객체가 구현되어있는 하위 객체에 의존하지 않도록 하는것으로 중간에 인터페이스를 두어 하위 객체의 함수를 쓰지만, 호출은 그의 추상화된 인터페이스를 씀으로써 의존성을 하위객체로 강요하지 않는다.

따라서 의존방향을 결정 할 수 있고, 이를 활용하면 각각의 서비스들을 독립적으로 배포 할 수 있다. 

따라서 이 책에서 정의하는 OO 란 다형성을 이용해서 의존에대한 권한을 프로그래머가 가지게 되는것이다. 

따라서 고수준의 모델을 포람하고 있으면 이를 구현한 저수준의 구현에 구애 받지 않고 개발과 배포를 할 수 있다.

인터페이스를 참조하도록 한다.


---

### 함수형 프로그래밍

불변성이 중요한 개념이다. 
경합 조건을 최소화 하기위해 이는 경합조건과 공유를 최소한으로 해야 하기 때문에 불변성은 중요한 개념이다.
하지만 메모리에는 제한이 있기 때문에 줄이는걸 일 순위로 한다. 


---

### SOLID

SRP : 단일 책임 원칙

단일 책임 원칙은 하나의 모듈에 연관된 이해 관계자가 한명이도록 하는 것이다. 


---

### DIP

추상에만 의존하고 구체에는 의존하지 않는다.

따라서 변동성이 낮은 인터페이스에 의존해야한다.

제어 흐름과 의존 방향이 역행한다. 

추상 팩토리

'spring' 카테고리의 다른 글

[모각코] 자바가 확장한 객체 지향  (0) 2024.03.29
[ 모각코 ] spring IOC container  (0) 2024.03.15
[모각코] oop for spring  (1) 2024.03.08