본문 바로가기

OOP/<객체지향과 스프링의 이해>, by me7

[객체지향과 스프링의 이해] 7. 마치며 이 글은 2023 GDSC Sookmyung Core Member Session을 텍스트로 정리한 것입니다. (사실 대본 작성하는 김에 쓴거예요-!!) 영상으로 보고 싶으신 분들은 이 링크를 참고해주세요. 대부분의 내용은 조영호 님의 , , 이일민 님의 을 참고했습니다. 지금까지 객체지향의 목적과 가치, 스프링으로 객체지향적인 비즈니스 로직을 작성하는 방법까지 알아보았습니다. 이번 포스팅은 세션을 마무리하며, 이번 발표에서 다루지 못한 내용을 키워드 위주로 다룹니다. 객체지향적인 사고는 오브젝트가 자신의 행동에 충실하도록 응집도를 높여서 독립적으로 만드는 작업에서 출발합니다. 이 작업을 오브젝트보다 넓은 영역에서 적용할 수 있는데, 모듈화라고 부릅니다. 모듈화의 단위는 오브젝트보다 작아도 되고, 더 커도.. 2023. 5. 30.
[객체지향과 스프링의 이해] 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.