본문 바로가기

전체 글200

[F-Lab 챌린지 30일차 TIL] 스프링 시큐리티 테스트, 토비 스프링 공부 알고리즘 재귀 정의하기 점화식에 대한 정의, 즉 상태 정의 필요함. 중간에 다른 작업으로 변경할 수 없으므로 인자의 값을 바꾸는 것만으로 문제를 풀 수 있는 함수를 만들어야 한다. 종료 조건을 제대로 작성해야 한다. 종료 조건이란 원하는 순간에 재귀 호출을 멈추고 값을 반환하도록 만드는 것 작업의 시작과 끝을 정의했으면 점화식을 세운다 문제 프로젝트 Integration Testing Context Management : 테스트 환경에서 어플리케이션 컨텍스트를 관리하는 것 @ContextConfiguration: 테스트 클래스에 대한 어플리케이션 컨텍스트 구성 정보를 지정한다. Component 클래스로 구성 정보 설정하기component class 에 해당하는 것 @Configuation 선언된 클래스.. 2023. 7. 27.
[F-lab 모각코 챌린지 2일차] TIL : 중첩 클래스 학습 목표 - 중첩 클래스 학습 결과 요약 - local inner class 는 외부 참조 때문에 성능 저하가 발생할 여지가 있다. 학습 내용 Java 의 중첩 클래스란 클래스 내부에 또 다른 클래스를 선언하는 것 public class OuterClass{ // nested class class InnerClass { } } Java 의 중첩 클래스 종류 사용하는 이유 한 클래스에서만 사용되는 클래스를 논리적으로 묶어서 처리할 때 사용한다. 캡슐화가 필요할 때. A 클래스의 private 필드에 접근할 수 있는 클래스가 있고 이 클래스를 외부에 노출하고 싶지 않을 때. Java 의 중첩 클래스 종류 Nested Class Static Nested Class Inner Class Local inner .. 2023. 6. 26.
[F-lab 모각코 챌린지 1일차] TIL : enum 학습 목표 💡 Constant Pool에서 문자열을 찾아오는 방식 💡Enum은 생성자가 있을까 💡Enum 생성시점 💡Enum의 equals 💡Enum의 생성자와 Clone을 왜 호출하지 못하게 했을까 학습 결과 요약 enum 은 서로 연관된 상수의 집합을 모아둔 특수한 클래스 타입이다. 자바는 enum 의 싱글톤을 보장하기 위해 enum 의 부모 타입인 Enum 클래스에 cloneable 구현 안함, equals() 는 == 연산만 하도록 재정의, readObject() 에서는 deserialize 시 에러를 발생시킨다. 학습 내용 constant 란? constant 란 변수의 값을 초기화 후 재할당할 수 없는 변수다. constant 는 static 과 final 키워드를 사용해 선언할 수 있다. s.. 2023. 6. 25.
[F-lab 모각코 챌린지 17일차] TIL 추상클래스와 인터페이스의 각각 특징을 살펴본 뒤에 왜 다중 구현시 인터페이스를 우선시 할 것을 추천하는지 살펴보겠다. Abstract Class 추상 클래스 클래스 선언부에 abstract 이라고 선언한 클래스 구현이 덜 된 일반 클래스 다중 상속 불가능 abstract class GraphicObject { // 생략 } abstract 메서드 이외에도 필드와 구현 메서드를 가질 수 있다. abstract class GraphicObject { //필드 int x, y; // 구현 메서드 void moveTo(int newX, int newY) { } // 추상 메서드 abstract void draw(); abstract void resize(); } static final 필드는 선언 불가능하다. .. 2023. 6. 19.
[F-Lab 모각코 챌린지 16일차] Java : 블랙잭 게임 구현 도메인 모델링 블랙잭 룰을 보며 게임을 구성하는 요소들을 추출해봤다. 1) 블랙잭 게임에 참여하는 참가자 2) 카드, 3) 카드덱, 4) 배팅 머니 4가지 도메인을 추출했다. 블랙잭 게임에 참여하는 참가자 블랙잭 게임은 딜러와 게임을 하는 게이머가 필요하다. 이 둘의 본질은 "게임에 참여"하는 주체라 생각했다. 게임 참자가들은 블랙잭 게임 참가자는 돈과 카드가 필요하다. 그리고 돈과 카드로 게임에 참여하는 행위를 한다. 그래서 게이머와 딜러의 공통 속성을 User 라는 상위 도메인으로 옮겼다. 블랙잭 참자가여도 게이머와 딜러의 롤은 또 분리되기 때문에 User 를 상속하는 Dealer와 Gamer 로 분리했다. 카드 카드도 User 도메인과 마찬가지로 Card 라는 Base class 를 확장하는 Alp.. 2023. 6. 18.
[F-Lab 모각코 챌린지 15일차] Java : 예외 처리 학습 목표 자바의 예외 처리 학습 결과 요약 프로그램에서 오류는 발생 시점에 따라서 컴파일 에러 런타임 에러로 구분할 수 있다. 런타임 에러는 Error, Exception 으로 나누는데 exception 은 코드로 예외 처리가 가능한 오류를 뜻한다. 자바에서 예외 처리 방법은 크게 예외 직접 처리, 예외 떠넘기기, 연결된 예외 3가지가 있다. 직접 처리는 try-catch 구문으로 예외 떠넘기기는 메서드 선언부에 throws 키워드를 사용하고 이 메서드를 호출한 쪽에서 예외처리를 하도록 한다. 연결된 예외는 예외 안에 예외를 포함시키는 방법이다. 학습 내용 프로그램에서 오류의 종류 발행 시점에 따라서 컴파일 에러 런타임 에러 Error : 프로그램 밖에서 발생하는 문제로 코드로 처리 불가능함 Excep.. 2023. 6. 17.
[F-Lab 모각코 챌린지 14일차] Java : 불변객체 불변 가능성을 최소화하는 방법 불변클래스 불변 클래스가 아닐 경우 불변 클래스 정의 그 인스턴스의 내부 값을 수정할 수 없는 클래스 불변 인스턴스에 간직된 정보는 객체가 파괴되는 순간까지 절대 달라지지 않는다 // 불변클래스 예시. 필드에 접근할 수 있는 어떠한 방법도 없다. public class ImmutableClass { private String fieldA; private String fieldB; public ImmutableClass(String fieldA, String fieldB) { this.fieldA = fieldA; this.fieldB = fieldB; } } 불변 클래스로 만드는 5가지 규칙 1. 객체의 상태를 변경하는 메서드(변경자)를 제공하지 않는다 2. 클래스를 확장할.. 2023. 6. 16.
[F-Lab 모각코 챌린지 13일차] Java : 인터페이스와 추상클래스 학습 목표 인터페이스나 abstract 클래스를 사용해야 하는 이유 자바의 클래스는 다중 상속이 불가능한 이유와 인터페이스는 다중 구현이 가능한 이유 학습 결과 요약 인터페이스나 abstract 을 사용하면 설계 단계에서 미리 클래스를 정의할 수 있다. 그리고 외부에 노출되는 것을 미리 정의 가능하다. 인터페이스는 구현된 메서드를 갖을 수 없고 abstract 는 가능하다. 인터페이스에 default methoed 를 선언할 수는 있지만 추상클래스와는 목적이 다르다고 한다. 학습 내용 인터페이스를 사용하는 이유 설계 설계 단계에서 기능이나 메서드, 변수 명을 미리 정의한다. 개발할 때 기능 구현에만 집중 가능 메서드 이름과 매개 변수 선언을 어느 정도 통일화 가능 선언과 구현을 구분할 수 있음 외부에 노.. 2023. 6. 15.
[F-Lab 모각코 챌린지 12일차] TIL : 패키지 by 레이어, 도메인 레이어별 패키지 레이어드 아키텍처는 레이어별로 관련 역할을 하는 클래스들을 묶는다. 각 계층의 패키지에 서로 밀접한 관련이 없는 클래스들을 묶기 때문에 패키지 내 응집력이 낮다. UI OrderController.java CartController.java Businesslogic OrderService.java CartService.java Repository OrderRepository.java CartRepository.java Model Order.java Cart.java 이 구조를 살펴보면 패키지 간의 결합은 높지만 패키지 내 응집력은 낮다. 리포지토리 클래스는 서비스 클래스에서, 서비스 클래스는 컨트롤러 클래스에서 사용되기 때문에 패키지 간에 높은 결합이 발생하고 있다. 응집력 패키지 내 클.. 2023. 6. 14.