일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- java 파티
- 전략 패턴이란
- Spring ipfs
- rabbitmq 싱글톤
- 백준 연결요소 자바
- java 1238
- javav 1676
- 익명 객체 @transactional
- java 팩토리얼 개수
- kotiln const val
- java 백준 1509
- nodejs rabbitmq
- mongodb lookup
- 자바 1676
- kotiln functional interface
- spring mongodb switch
- spring mongoTemplate
- ipfs bean
- kotiln const
- 백준 1504 java
- 자바 백준 팩토리얼 개수
- Java Call By Refernce
- 백준 특정한 최단 경로
- ipfs singletone
- 백준 2252 줄세우기
- spring mongoTemplate switch
- java 1509
- go
- 안정해시
- spring mongodb
Archives
- Today
- Total
공부 흔적남기기
객체와 캡슐화에 대해서(객체지향적 코드를 짜는 이유) 본문
728x90
반응형
우리는 왜 그렇게 객체지향 코드를 짜기 위해 노력하는가?
회사A가 있다고 가정해보자 회사 A는 이제 막 시작한 스타트 업으로 코드에 변경과 수정에 대한 부담이 없고 빠른 결과를 원한다. 따라서 절차 지향적으로 빠르게 코드를 짜기 시작했고 좋은 성과를 얻게되었다. 좋은 성과에 따라 새로운 여러 비즈니스 요구사항들이 들어오기 시작했다. 시간이 갈수록 절차지향적으로 짠 코드를 변경/수정하는데 많은 비용이 들기 시작한다. 많은 비용을 줄이기 위해선 변경과 수정에 들어가는 비용을 줄여야한다. 그럼 변경과 수정을 줄이기 위해선 어떻게 해야하는가? 당연희 여러 방법이 있겠지만 대표적으로 객체지향적으로 코드를 짜면된다.!
간단히 말해 소프트웨어의 중심은 변화이다. 이 변화를 좀 더 쉽게 다가가기 위해선 객체지향적 코드가 필요하다 볼 수 있다.
객체란 무엇일까?
평소 내가 간단하게 생각 하던 객체는 Class스 안에 값들이 있고 getter와 setter정도만 있어도 객체라고 생각하였다.
하지만 이는 그냥 하나의 데이터 구조? 구조체? 일 뿐 전혀 객체가 아니였다.
객체란 내가 정의한 클래스에 여러 데이터들과 그 데이터들을 이용하여 만든 기능들이 존재해야한다.
즉 데이터와 그와 관련된 기능을 묶음으로서 객체가 기능을 어떻게 구현했는지 외부에 감추는 것이다.
캡슐화를 통해 Class에서 데이터와 관련된 기능을 구현함으로서 객체지향적 코드가 되는 것이다.
즉 코드를 짤떄 Imformation expert pattern, Tell Don't Ask, 데미테르의 법칙 등 에 입각하여 코드를 짜게되면 캡슐화만으로도 외부 코드를 변경하는데 비용을 낮출 수 있게된다.
728x90
반응형
'web study > Spring' 카테고리의 다른 글
스프링 json 직렬화의 함정 (is가 prefix일 경우 사라짐) (0) | 2023.03.16 |
---|---|
JPA를 사용하는 이유와 특징 (0) | 2022.04.15 |
단일책임원칙 위배 트러블 슈팅 ApplicationEventPublisher와 EventListner (0) | 2022.04.05 |
JPA N+1문제 트러블슈팅 (0) | 2022.04.05 |
SpringBoot Redis를 활용한 Socket 통신(WebSocket, Stomp) (0) | 2022.03.09 |