일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 플러터 개발환경 설정
- php 프로그래밍 입문 문제풀이
- C
- C언어
- 파이썬
- php 프로그래밍 입문 연습문제
- 페이코 추천인
- 최단 경로
- php
- php 프로그래밍 입문 솔루션
- SWEA
- JAVA SPRING
- 스프링
- 백준
- 자바
- Java
- 페이코 친구코드
- 플러터
- 한정 분기
- php 프로그래밍
- 페이코 추천인코드
- php 프로그래밍 입문
- programmers
- php 프로그래밍 입문 3판
- spring
- php 프로그래밍 입문 예제
- Flutter
- 페이코 초대코드
- 자바 스프링
- 배열
- Today
- Total
목록Java (81)
ImJay

[Java Spring] 2-13. 주문과 할인 도메인 개발 1. main > java > hello.core 에 discount 패키지 생성 2. DiscountPolicy 인터페이스 생성 3. 코드 작성 package hello.core.discount; import hello.core.member.Member; public interface DiscountPolicy { /** * @return 할인 대상 금액 */ int discount(Member member, int price); } 4. FixDiscountPolicy 클래스 생성 5. 코드 작성 package hello.core.discount; import hello.core.member.Grade; import hello.core.me..

[Java Spring] 2-12. 주문과 할인 도메인 설계 1. 주문과 할인 정책 회원은 상품을 주문할 수 있다. - 회원 등급에 따라 할인 정책을 적용할 수 있다. - 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) - 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다. (미확정) 2. 주문 도메인 협력, 역할, 책임 2-1. 주문 생성: 클라이언트는 주문 서비스에 주문 생성을 요청한다. 2-2. 회원 조회: 할인을 위해서는 회원 등급이 필요하다. 그래서 주문 서비스는 회원 저장소에서 회원을 조회한다. 2-3. 할인 적용: 주문 ..

[Java Spring] 2-11. 회원 도메인 실행과 테스트 1. 앞서 클래스 다이어그램은 정적이고, 객체 다이어그램은 동적이라고 설명한 바 있다. 2. 이전 시간 클래스 다이어그램을 바탕으로 프로그램을 작성하였다. 이번에는 실행과 테스트로 객체 다이어그램에 대한 프로그램을 제작해보자. 3. hello.core 패키지 내에 MemberApp 클래스 생성 4. 코드 작성 package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; public class MemberA..

[Java Spring] 2-10. 회원 도메인 개발 1. java/hello/core 에 member 패키지 생성 2. member 패키지에 Grade enum 생성 3. 코드 작성 package hello.core.member; public enum Grade { BASIC, VIP } - 회원 등급은 일반 회원, VIP 회원으로 나뉜다고 조건에서 정했다. 4. member 패키지에 Member class 생성 5. 코드 작성 package hello.core.member; public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade..

[Java Spring] 2-9. 회원 도메인 설계 1. 회원 도메인 요구사항 - 회원을 가입하고 조회할 수 있다. - 회원은 일반과 VIP 두 가지 등급이 있다. - 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 2. 회원 도메인 협력 관계 - 도메인 협력 관계는 기획자들도 볼 수 있는 그림이다. 3. 회원 클래스 다이어그램 - 클래스 다이어그램은 도메인 협력 관계를 바탕으로 개발자들이 구체화한 그림이다. - 클래스 다이어그램은 실제 서버를 실행하지 않고, 클래스들만 분석해서 볼 수 있는 그림이다. 4. 회원 객체 다이어그램 - 클래스 다이어그램에서 MemoryMemberRepository 가 들어갈지, DbMemberRepository 가 들어갈지 동적으로 결..

[Java Spring] 2-8. 비즈니스 요구사항과 설계 1. 회원 - 회원을 가입하고 조회할 수 있다. - 회원은 일반과 VIP 두 가지 등급이 있다. - 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 2. 주문과 할인 - 정책 회원은 상품을 주문할 수 있다. - 회원 등급에 따라 할인 정책을 적용할 수 있다. - 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) - 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 3. 요구사항을 보면 회원 데이터, 할인 정책 같은 부분은 지..

[Java Spring] 2-7. 프로젝트 생성 1. 사전 준비물 - Java 17 설치 - IDE: IntelliJ 또는 Eclipse 설치 2. 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 - Spring Boot 버전과 Java 버전은 자신에게 맞는 걸로 선택 - 3.0.2 버전은 자바 17부터 호환 가능 세팅 완료 후 GENERATE 버튼 클릭 3. 본인의 작업공간에 압축해제 4. IntelliJ 실행 후 해당 프로젝트 열기 5. 실행하여 정상적으로 생성되었는지 확인 6. IntelliJ 설정에서 Gradle 검색 후 빌드, 테스트를 IntelliJ 로 설정해준다. (프로젝트 생성시 항상 해줄 것)

[Java Spring] 2-6. 객체 지향 설계와 스프링 1. 스프링 이야기에 왜 객체 지향 이야기가 나오는가? - 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 - DI(Dependency Injection): 의존관계, 의존성 주입 - DI 컨테이너 제공 - 클라이언트 코드의 변경 없이 기능 확장 - 쉽게 부품을 교체하듯이 개발 2. 스프링이 없던 시절로 - 옛날 어떤 개발자가 좋은 객체 지향 개발을 하려고 OCP, DIP 원칙을 지키면서 개발을 해 보니, 너무 할일이 많았다. 배보다 배꼽이 크다. 그래서 프레임워크로 만들어버림. - 순수하게 자바로 OCP, DIP 원칙들을 지키면서 개발을 해보면, 결국 스프링 프레임워크를 만들게 된다. (더 정확히는 DI 컨테이너) - DI 개념..

[Java Spring] 2-5. 좋은 객체 지향 설계의 5가지 원칙(SOLID) 1. SOLID : 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 - SRP: 단일 책임 원칙(single responsibility principle) - OCP: 개방-폐쇄 원칙 (Open/closed principle) - LSP: 리스코프 치환 원칙 (Liskov substitution principle) - ISP: 인터페이스 분리 원칙 (Interface segregation principle) - DIP: 의존관계 역전 원칙 (Dependency inversion principle) 2. SRP: 단일 책임 원칙(single responsibility principle) - 한 클래..

[Java Spring] 2-4. 좋은 객체 지향 프로그래밍이란? 1. 객체 지향 프로그래밍 - 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (협력) - 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 2. 유연하고, 변경이 용이? - 컴퓨터 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 3. 다형성(Polymorphism)의 실세계 비유 - 역할과 구현으로 세상을 구분 - 자동차가 바뀌어도 운전자는 운전을 할 수 있다. 내가 차를 K3에서..