티스토리 뷰
절차지향과 객체지향
프로그래밍 패러다임의 진화 과정에서 애플리케이션이 점점 커지면서 그 코드가 복잡하고 이해하기 힘들며 변경에 불리했던 절차지향 프로그래밍에 단점을 해결하고자 객체지향 프로그래밍이 탄생하였다. 두 패러다임은 다양한 차이가 존재 하지만 이 글은 캡슐화와 정보은닉 내용을 중심으로 살펴본다.
절차지향 프로그래밍 방식의 단점
1. 데이터와 그 프로세스가 흩어져 있어 데이터 구조 변경이 생겼을 때 흩어져 있는 프로세스들을 찾아 수정하기 힘들다.
2. 데이터를 다양한 프로세스들에서 쉽게 참조할 수 있다보니 데이터 구조 변경시 수정 해야할 프로세스가 너무 많았다는 단점있다.
위와 같은 절자치향 패러다임의 단점을 캡슐화와 정보은닉을 통해 해결하였다.
캡슐화
캡슐화는 데이터와 그 로직(method)를 클래스 라고 불리는 틀 안에 응집시키는 것을 의미하는데, 이렇게 데이터와 프로세스를 응집시켜 데이터 구조 변경이 생겼을 때 그 사이드 이펙트가 미치는 최소화한다.
public class Campaign {
String title;
LocalDateTime startDate;
LocalDateTime endDate;
public Campaign(String title, LocalDateTime startDate, LocalDateTime endDate) {
this.title = title;
this.startDate = startDate;
this.endDate = endDate;
}
public int getRemainingDays() {
return Period.between(startDate.toLocalDate(), endDate.toLocalDate()).getDays();
}
}
정보은닉
정보은닉은 객체 내부에 데이터를 외부에서 접근할 수 없게하여 이곳 저곳에서 데이터에 접근할 수 없도록 하는 것을 의미한다. 자바에서는 private 과 같은 접근 제어자를 통해 데이터의 접근을 제어한다.
public class Campaign {
private String title;
private LocalDateTime startDate;
private LocalDateTime endDate;
public Campaign(String title, LocalDateTime startDate, LocalDateTime endDate) {
this.title = title;
this.startDate = startDate;
this.endDate = endDate;
}
public int getRemainingDays() {
return Period.between(startDate.toLocalDate(), endDate.toLocalDate()).getDays();
}
}
캡슐화와 정보은닉
캡슐화와 정보은닉을 통해 데이터와 그 데이터를 제어하는 프로세스를 객체에 묶고 외부에서의 접근을 제한하여 데이터 변경에 대한 책임을 해당 객체에게만 맡겨 변경에 유연한 코드작성을 돕는다.
'BackEnd > Java&Kotilin' 카테고리의 다른 글
FutureTask 를 활용한 Non-Blocking 작업 (0) | 2022.09.17 |
---|---|
ExecutorService 와 Future (0) | 2022.09.17 |
[Spring Cloud] API Gateway에 Filter 추가하기 (1) | 2022.08.27 |
API Gateway 란? with.Spring Cloud Gateway (0) | 2022.08.26 |
서비스 디스커버리(Service Discovery) 는? (0) | 2022.08.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 내부 단편화
- 세션 불일치
- 육각형 아키텍처
- Object Pool
- pool
- multimap
- 외부 단편화
- Memory Fragmentation
- 수직 분할
- pass by reference
- 동적 디스패치
- 컴포짓 패턴
- 객체 풀
- 메모리 단편화
- Clean Architecture
- 장애 해결기
- java
- 정적 타입 언어
- 메모리 파편화
- 클린 아키텍처
- Session
- 수평 분할
- OOP
- pass by value
- RestAssured
- Sticky Session
- 뾰족함
- ATDD
- 동적 타입 언어
- SpringBoot 2.2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함