본문 바로가기

OOP44

[객체지향과 스프링의 이해] 6. 카페 코드를 스프링 웹 애플리케이션으로 만들기 이 글은 2023 GDSC Sookmyung Core Member Session을 텍스트로 정리한 것입니다. (사실 대본 작성하는 김에 쓴거예요-!!) 영상으로 보고 싶으신 분들은 이 링크를 참고해주세요. 대부분의 내용은 조영호 님의 , , 이일민 님의 을 참고했습니다. 이전 게시글에서 3 계층 애플리케이션과 도메인 중심 설계를 살펴보았습니다. 이번에는 카페 예제를 스프링의 웹 애플리케이션으로 확장해보겠습니다. 우선 스프링에 어떤 빈이 등록될 수 있을지 고민해봅니다. 싱글톤으로 관리되면 좋을 객체는 전역 객체로 사용되어도 괜찮은 Cafe와 Menu입니다. 나머지 객체는 상태를 가지기 때문에 싱글톤으로 등록하면 안됩니다. 싱글톤이어도 되는 객체 Menu Cafe : 기존에 있던 바리스타 의존성은 매개변수로.. 2023. 5. 30.
[객체지향과 스프링의 이해] 5. 스프링과 객체지향의 관계 이 글은 2023 GDSC Sookmyung Core Member Session을 텍스트로 정리한 것입니다. (사실 대본 작성하는 김에 쓴거예요-!!) 영상으로 보고 싶으신 분들은 이 링크를 참고해주세요. 대부분의 내용은 조영호 님의 , , 이일민 님의 을 참고했습니다. 이번 포스팅에서는 스프링이 객체지향이라는 가치를 어떻게 실천하고, 개발자가 어떻게 비즈니스 로직에만 집중할 수 있도록 도와주는지 살펴보겠습니다. 스프링은 자바 엔터프라이즈 애플리케이션 프레임워크입니다. 애플리케이션 프레임워크는 애플리케이션의 전 과정, 데이터 액세스나 http 요청 응답 매핑, 비즈니스 로직 등을 빠르고 편리하며 효율적으로 진행하는데 목적을 둡니다. 자바 엔터프라이즈 개발은 대규모의 애플리케이션, 데이터 처리 및 데이터베.. 2023. 5. 30.
[객체지향과 스프링의 이해] 4. 카페 코드에 다형적인 결제 협력 추가하기 이 글은 2023 GDSC Sookmyung Core Member Session을 텍스트로 정리한 것입니다. (사실 대본 작성하는 김에 쓴거예요-!!) 영상으로 보고 싶으신 분들은 이 링크를 참고해주세요. 대부분의 내용은 조영호 님의 , , 이일민 님의 을 참고했습니다. 저번 포스팅에서 역할을 이용해 책임들을 추상화하여 다형적인 협력을 만들 수 있다고 하였습니다. 이번 포스팅에선 결제 역할을 도입해서 현금 결제, 카드 결제 등의 다형적인 협력을 만들어보겠습니다. 역할은 인터페이스와 추상 클래스로 구현할 수 있는데, 결제 역할에서는 아직 어떤 코드를 공유해야할지 알 수 없으므로 인터페이스를 사용합니다. Payable 인터페이스가 결제 메시지를 이해할 수 있도록 pay 메소드를 추가했습니다. 그리고 결제 방.. 2023. 5. 30.
[객체지향과 스프링의 이해] 3. 객체지향 이해하기 이 글은 2023 GDSC Sookmyung Core Member Session을 텍스트로 정리한 것입니다. (사실 대본 작성하는 김에 쓴거예요-!!) 영상으로 보고 싶으신 분들은 이 링크를 참고해주세요. 대부분의 내용은 조영호 님의 , , 이일민 님의 을 참고했습니다. 저번 포스팅에서 절차지향적이었던 커피 주문 코드를 객체 내부로 로직을 이동시켜 객체지향적으로 개선해보았습니다. 그 결과 결제 수단이 변경되더라도 손님에게 메시지를 보내는 외부는 전혀 영향을 받지 않았습니다. 좀더 변경에 유연한 구조가 되었습니다. 이번에는 개선 과정에서 살펴본 객체지향의 가치와 평가 기준, 핵심 요소와 자바 언어의 구현에 대해 알아보겠습니다. 무슨 말이냐면 좀더 이론적인 부분을 다룹니다. 개선 전의 코드와 개선 후의 코드.. 2023. 5. 30.
[객체지향과 스프링의 이해] 2. 카페 코드를 객체지향적으로 개선하기 이 글은 2023 GDSC Sookmyung Core Member Session을 텍스트로 정리한 것입니다. (사실 대본 작성하는 김에 쓴거예요-!!) 영상으로 보고 싶으신 분들은 이 링크를 참고해주세요. 대부분의 내용은 조영호 님의 , , 이일민 님의 을 참고했습니다. 앞에서 구현한 카페 코드가 이해하기 어렵고 변경에도 취약하다는 단점이 있었습니다. 우리가 클래스를 만들 때 어떤 데이터가 필요했는지부터 생각했기 때문에, 변경되기 쉬운 데이터가 외부에서 접근 가능하게 되었고 강한 결합이 생겼습니다. 사실 이러한 접근은 전형적인 절차지향적 방법으로, 데이터를 담고 있는 자료구조 클래스와 데이터를 조작하는 프로시저 클래스의 구조를 띄고 있습니다. 프로시저 클래스는 자료구조 안의 데이터를 직접 꺼내서 사용하기.. 2023. 5. 30.
[객체지향과 스프링의 이해] 1. 절차지향적인 카페 코드 이 글은 2023 GDSC Sookmyung Core Member Session을 텍스트로 정리한 것입니다. (사실 대본 작성하는 김에 쓴거예요-!!) 영상으로 보고 싶으신 분들은 이 링크를 참고해주세요. 대부분의 내용은 조영호 님의 , , 이일민 님의 을 참고했습니다. 일단 코드를 보자! 객체지향이 어떤 것인지 논하기 전에, 우선 코드부터 짜봅시다. 이번 세션에서 사용할 예시 요구사항은 카페에서의 커피 주문입니다. (객체지향의 사실과 오해 마지막 부분에 나오는 그 예제를 살짝 변형했습니다) 카페라는 세상 안에서 커피 주문을 하는 시나리오를 코드로 작성해봅시다. 요구사항은 다음과 같습니다. 우선 의식의 흐름대로, 손이 가는대로 코드를 작성해보겠습니다. 어떤 클래스가 필요할지 생각해보겠습니다. Cafe, .. 2023. 5. 30.