객체 지향 원리 적용새로운 할인 정책 개발새로운 할인 정책을 확장해보자새로운 할인 정책 적용과 문제점테스트가 끝난 새로운 할인 정책을 적용해보자.AppConfigAppConfig 리펙터링SpringAppConfig에 Spring 적용하기객체 지향 원리 적용 새로운 할인 정책 개발 새로운 할인 정책을 확장해보자 참고: 애자일 소프트웨어 개발 선언 https://agilemanifesto.org/iso/ko/manifesto.html기획자의 요구사항 변동으로 인해 FixDiscountPolicy를 RateDiscountPolicy로 변경할것이다.RateDiscountPolicy 추가 회원의 등급을 조회하고 VIP일때 할인 금액이였던 1000원을 return했던 FixdiscountPolicy와 다르게 pri..
분류 전체보기
클래스 클래스의 구성요소 객체 객체란 물리적으로 존재하나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별이 가능한 것을 말한다. 예를들어 물리적으로 존재하는 자동차, 자전거, 책, 사람과 추상적인 학과, 강의, 주문 등이 모두 객체가 될 수 있다. 객체는 속성과 동작으로 구성되어 있다. 자동차는 색깔, 모델명 등의 속성과 달린다, 멈춘다 등의 동작이 있다. 자바는 이 속성과 동작을 각각 필드와 메소드라고 부른다. 필드 (멤버 변수) 클래스 내부에 선언되는 데이터의 저장 공간으로, 객체의 상태를 나타내는 속성을 의미합니다. 필드는 클래스의 특성이나 속성을 나타내는 변수들로, 객체마다 고유한 값을 가질 수 있다. 필드는 클래스 내에서 선언되고, 객체가 생성될 때마다 해당 객체에 대한..
앞으로의 마음가짐 “정말로 좋아했던 일을 했던 경험이 있으십니까?” 방 탈출 카페 창업을 시작하게 된 계기는 사람들에게 내가 만든 이야기를 통해 즐거움을 주고 싶다는 아주 간단한 생각에서 시작되었다. 정말 힘들고 어려운 작업이었지만 좋아하고 원하는 일을 하며 느끼는 보람과 성취감이 더 컸고, 그 고양감은 내 발목을 잡은 피로감을 뿌리치기엔 충분했다. 이젠 그 고양감을 코딩에서 찾아내었고 다시 한번 내 인생을 받쳐주는 축을 하나 세워보고자 한다. 남들보다 한참 뒤떨어진 비전공자이지만 이 간극을 메꾸기 위해 밤낮을 가리지 않을 것이며 절대로 현재에 안주하지 않을 것이다. 내가 할 수 있는 최선을 보여 후회를 남기고 싶지 않다. 좋았던 점 사실 부트캠프 과정을 시작하기 전 많은 걱정이 있었다. 혼자서만 공부하..
SOLID SRP OCP ★ LSP ISP DIP 스프링 SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP 단일 책임 원칙 (single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수도 있고, 작을 수도 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것 ex) UI의 변경, 객체의 생성과 사용을 분리 OCP ★ 개방 - 폐쇠 원칙 (Open/closed principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 확장을 하려면 당연히 기존 코드를 변경해야 하지만 이는 다형성으로 극..
예제 만들기 비즈니스 요구사항과 설계 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 요구 사항을 보면 회원 데이터와 할인정책같이 수정될 수 있는 부분은 객체 지향 설계 방법으로 대비할 수 있다. 우선 스프..
Java 어플리케이션 실행과 Servlet, AppletApplication → java라는 명령어로 컴파일된 byte 코드를 실행되는 프로그램Servlet → 자바의 서버에서 실행되고 직접 사용하는 경우는 드뭄 하지만 아키텍쳐의 이해를 위해선 학습 필요●Servlet에 대한 추가 설명서블릿(Servlet)은 Java 언어를 기반으로 웹 애플리케이션을 개발하기 위한 기술 중 하나로, 클라이언트와 서버 사이에서 동작하는 웹 컴포넌트입니다. 서블릿은 주로 웹 서버에서 동작하며, HTTP 요청과 응답을 처리하여 동적인 웹 페이지나 웹 애플리케이션을 생성하고 관리하는 데 사용됩니다.서블릿은 자바 클래스로 구현되며, 주로 javax.servlet 패키지와 javax.servlet.http 패키지에 포함된 인터페이..
자바 기초 개념 소스코드 → 사람이 작성한 코드 컴파일 → 각 기기의 JDK가 JVM(실행환경)에서 해당 소스코드를 해석할 수 있게 기계어로 변환해주는 과정 JDK → 자바로 프로그램을 개발할 수 있는 실행 환경(JVM) 과 개발도구 (컴파일러) 등을 제공 API Application Programming Interface → API의 약자 자바에서는 라이브러리의 개념과 유사하게 생각하면 된다. 자바의 각종 데이터 타입 기본 타입 bool, ★char, byte, short, int, long, float, double 참조 타입 String(참조형이지만 기본형처럼 사용), 배열(array[]), 열거(enum), 클래스(class), 인터페이스(interface) 자세한 설명 자바에서의 참조형 데이터 ..
AppConfig라는 클래스를 구상영역으로 설정해주어 사용영역과 분리해줌으로써 DIP를 완성해주었다. package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.order.Order; import hello.core.order.OrderService; public class OrderApp { public static void main(String[] args) { MemberService memberService; OrderService orderService; AppConfig appConfig = new ..