오늘이군
객체지향 본문
※ 추천 글 :
https://www.youtube.com/playlist?list=PLYOIIT3pjNFVB5RMf0IFXaw6vNQpVPhRe
http://catchups.tistory.com/68
- 객체와 클래스
객체지향...
객체.. 클래스..
말이.. 너무 어렵습니다.
그 중 괜찮은 글을 한 번 보면
출처 : http://blog.naver.com/rain483/220511679871
아직 좀 어려운 감이 있어.. 풀어보면..
이 글을 쓰고 있는 저는 객체 입니다.
- 세상에 존재하고요
- 고유하고
- 성별이 남자라는 속성 등이 있고
- 프로그래밍을 하는 행위 등이 존재 합니다.
저라는 객체를..
사람, 남자, 개발자 등의 클래스로 분류(classify) 할 수 있는 겁니다.
이러한 클래스를 어떻게 분류하냐에 따라 프로그램의 재사용성/확장성/유지보수성 등이 달라질텐데요..
이런 분류(모델링) 를 한다는 것은..
현실세계(업무) 를 공통화 하고 관계를 맺는 작업을 한다고 볼 수 있습니다.
"객체지향" 부분에서는 이러한 내용을 다루게 됩니다.
- 응집도와 결합도
High Cohesion Loose Coupling : 응집도는 높을수록 좋고 결합도는 낮을수록 좋다
결합도 : 모듈(클래스) 간의 상호 의존 정도
결합도가 낮으면 모듈간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다
응집도 : 하나의 모듈 내부에 존재하는 함수, 데이터 등의 구성 요소들의 기능적 관련성 (밀접한 정도)
응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이하다.
이 고전 원칙을 객체지향의 관점에서 재정립한 것이 객체지향 설계 5원칙 SOLID 이다.
- Soc (Seperation of Concerns) : 관심사의 분리
관심이 같은 것 끼리는 하나의 객체 안으로 또는 친한 객체로 모으고, 관심이 다른 것은 가능한 한 따로 떨어져 서로 영향을 주지 않도록 분리하는 것이다.
하나의 속성/메소드/클래스/모둘/패키지 에는 하나의 관심사만 들어있어야 한다는 것이 SoC 다.
관심사가 다르고 변화의 시기가 다르면 분리해야 한다는 것이다.
SoC를 적용하면 자연스럽게 SRP, ISP, OCP 에 도달하게 된다. 스프링 또한 SoC를 통해 SOLID 를 극한까지 적용하고 있다.
- 설계
막상 시스템을 분석/설계를 하게 되면 뭐 부터 시작해야 할 지 막막할 수 있습니다.
OOP SOLID DDD TDD JPA 도메인주도 엔티티 클래스 객체
여러가지 지식이 한꺼번에 들어간 경우는 더더욱 그렇습니다. (지금 제가 그렇습니다.)
테이블 기반으로 개발을 하지말고...
테스트 코드를 먼저 만들며 도메인 중심으로 개발을 하고
도메인에는 비즈니스 로직을 담고
서비스에서는 도메인 레이어와의 협력을 통해서 처리 할 수 있는 코디네이터 역할을 주며
하나의 파일(클래스) 메서드에 여러 책임을 갖지 않도록 하고
DB 접근은 JPA 에 위임하고, 통계 같은 SQL 을 고려하면 CQRS 를 적용하고...
아 복잡합니다..
공부를 하면서 animal penguin 클래스 만드는 것과
실제로 운영해야 하는 시스템을 만드는 것은 크게 달라 보일 수 있습니다.
시스템을 만들며 실제로 운영하는 시스템을 설계 하는 tip 을 정리해보면...
<<<정리중>>>
1.
2.
3.
<<<정리중>>>
'삶.. > 프로그래밍' 카테고리의 다른 글
아키텍처 (0) | 2017.05.16 |
---|---|
JAVA (0) | 2017.05.16 |
JVM 구조와 GC(Garbage Collection) (0) | 2017.05.16 |
공부하는 방법 (0) | 2017.05.16 |
즐겨찾기 (0) | 2017.05.16 |