본문 바로가기

전체 글199

02. 객체지향 프로그래밍 02 객체지향 프로그래밍태그비어 있음영화 예매 시스템특정한 조건을 만족하는 예매자는 요금을 할인 받을 수 있다.객체지향 프로그래밍을 향해객체지향 프로그램을 작성할 때 어떤 클래스가 필요한지를 고민하는 것은 객체지향의 본질과 거리가 있다. 클래스가 아닌 객체에 초점을 맞추어 어떤 객체가 필요할지 고민해야 한다. 그리고 객체를 독립적인 존재가 아니라 기능을 구현하기 위한 협력적인 존재로 보아야 한다. 자율적인 객체클래스를 구현할 때 가장 중요한 것은 클래스의 경계를 구분 짓는 일이다. 캡슐화와 접근 제어는 객체를 퍼블릭 인터페이스(외부에서 접근 가능)와 구현(내부에서만 접근 가능)으로 나눈다. 인터페이스와 구현의 분리 원칙은 훌륭한 객체지향 프로그램을 만들기 위해 따라야 하는 핵심 원칙이다.프로그래머의 자.. 2025. 3. 17.
01. 객체, 설계 01. 객체, 설계태그비어 있음✅ 티켓 판매 어플리케이션 구현하기✅ 무엇이 문제인가예상을 빗나가는 코드 변경에 취약한 코드 ✅ 설계 개선하기자율성을 높이자TicketSeller 캡슐화 : Theater 코드를 TicketSeller로 이동Audience 캡슐화 : TicketSeller의 코드를 Audience로 이동무엇이 개선됐는가?어떻게 한 것인가?캡슐화와 응집도절차지향과 객체지향책임의 이동더 개선할 수 있다.✅ 객체지향 설계객체지향 설계프로그래밍 패러다임이란 특정 시대의 어느 성숙한 개발자 공동체에 의해 수용된 프로그래밍 방법과 문제 해결 방법, 프로그래밍 스타일이다. 우리가 어떤 프로그래밍 패러다임을 사용하느냐에 따라 우리가 해결할 문제를 바라보는 방식과 프로그램을 작성하는 방법이 달라진다.프로그.. 2025. 3. 17.
Chapter 10. 이벤트 Chapter 10. 이벤트생성일2024년 3월 7일 오후 12:03태그비어 있음✅ 시스템 간 강결합 문제✅ 이벤트 개요이벤트 관련 구성 요소이벤트의 구성이벤트는 언제 사용할까?이벤트의 장점✅이벤트, 핸들러, 디스패처 구현이벤트 클래스Events이벤트 발생이벤트 핸들러동기 이벤트 처리 문제✅비동기 이벤트 처리로컬 핸들러 비동기 실행메시징 시스템을 이용한 비동기 구현이벤트 저장소와 이벤트 포워더 사용하기이벤트 저장소와 이벤트 제공 API 사용하기구현 ✅이벤트 적용 시 추가 고려 사항✅ 시스템 간 강결합 문제쇼핑몰에서 구매를 취소하면 환불을 처리해야 한다. 주문(Order) 도메인 엔티티에서 환불 기능을 실행한다면?보통 결제 시스템이 외부에 있으므로 두 가지 문제가 발생할 수 있다.외부 서비스가 정상이 아닐.. 2025. 3. 17.
Chapter 8. 애그리거트와 트랜잭션 Chapter 8. 애그리거트와 트랜잭션생성일2024년 2월 27일 오전 11:03태그비어 있음💬 애그리거트의 트랜잭션💬 애그리거트 잠금기법선점 잠금선점 잠금과 교착상태비선점 잠금오프라인 선점 잠금💬 관련 CS 지식 & 면접 질문💬 애그리거트의 트랜잭션주문 사이트 정책배송 전 상태에서 유저는 배송주소를 변경 할 수 있음배송 중 상태에서 유저는 배송주소를 변경 할 수 없음운영자와 고객이 동시에 수정할 때, 같은 주문 애그리거트를 나타내는 다른 객체를 구하게 된다.각각 사용하고 있는 스레드에서 각자 수정을 하고 트랜잭션을 커밋할 때 DB에 반영하게 되는데 이 시점에서 배송 중 상태로 바뀌고 배송지 정보도 바뀐다는 문제가 생긴다. 2가지 해결책운영자가 배송지 정보를 조회하고 상태를 변경하는 동안, 애그.. 2025. 3. 17.