본문 바로가기

Backend/JAVA

(6)
JUnit5의 기본적인 사용법들 🔐 JUnit5란? 세 가지 모듈(JUnit Platform + JUnit Jupiter + JUnit Vintage)로 구성된 테스트 라이브러리로, Java 8 이상부터 제공합니다. JUit Platform JVM에서 테스트를 하기 위한 기반 역할을 한다. 테스트 프레임 워크를 개발하기위한 API를 정의한다. JUnit4 기반 실행 환경을 제공한다. JUnit Jupiter JUnit5에서 새롭게 탄생한 프로그래밍 모델과 확장 모델의 조합이다. Jupiter 기반 테스트를 실해앟기 위한 TestEngine을 제공한다. JUnit Vintage JUnit3, JUnit4 기반 테스트를 실행하기위한 TestEngine을 제공한다. 💛 사용해보기 모든 예제는 공식 문서에 있는 예제들을 기반으로 작성되었습니다..
DIP(Dependency Inversion Principle) DIP에 대해 알아보도록 하겠습니다. DIP는 객체지향설계 5원칙(SOLID)에서 D에 해당하는 원칙이며, 아래와 같은 의미를 가지고 있습니다. 저수준 모듈이 고수준 모듈에 의존하게 되는 것 하지만 이 설명만 봐서는 도저히 무슨 소리인지 감이 잘 잡히지 않습니다. 그래서 DIP가 무엇인지, 왜 사용하는지, 어떻게 사용하는지에 대해 조금 더 자세히 알아보도록 하겠습니다. 혹시 글을 읽으면서 잘못된 내용이 있으면 댓글로 알려주시면 감사하겠습니다! 🌳 계층 구조 아키텍처 보통 계층 구조는 위 사진과 같은 구조로 되어 있습니다. 표현 계층 : 사용자의 요청을 받아 응용 영역에 전달함과 동시에 처리 결과를 사용자에게 표시 응용 영역 : 사용자에게 제공해야 할 기능 구현 도메인 영역 : 도메인의 핵심 로직 & 도메..
Java Arrays.asList() 일반 배열을 ArrayList로 바꿔야 할 때는 Arrays.asList()를 사용해서 간단하게 바꿀 수 있습니다. 그러나 asList를 사용하면서 신기한 현상을 발견했습니다. public static void main(String[] args) { Character[] arr = {'c', 'b', 'e', 'd', 'a'}; List list = Arrays.asList(arr); Comparator byAlpa = new Comparator() { @Override public int compare(Object o1, Object o2) { return (char)o1 - (char)o2; } }; list.sort(byAlpa); } 배열을 list로 바꾼 후에 정렬을 하는 코드인데, 이 상태로 ..
Java DateTimeFormatter을 사용하여 요일, 오전/오후 구하기 (+ 다른 나라 언어로 포맷팅 변경하는 방법) 안녕하세요! 이번 포스팅에는 자바의 LocalDateTime과 DateTimeFormatter을 사용해서 요일과 오전/오후를 구하는 방법을 알아보겠습니다. 종종 한글로 요일이나 오전/오후를 출력해야 할 때가 있는데, 생각처럼 잘되지 않아서 생각보다 엄청난 삽질을 한끝에 얻은 방법을 공유하려고 합니다! 현재 시간 구하기 LocalDateTime now = LocalDateTime.now(); 포맷을 하기 위해 LocalDateTime의 now() 메소드를 사용해서 현재 시간을 구해줍니다. 출력을 해보면 잘 출력되는 것을 확인할 수 있습니다. 요일 구하기 제가 사용한 포맷팅 형식은 ~월 ~일 (요일)입니다. now.format(DateTimeFormatter.ofPattern("MM월 dd일(E)")); 정..
추상화(Abstract) 추상화란? 객체에서 공통된 속성과 행동을 추출하는 것이다. 자바에서 추상화를 이용하는 방법은 추상 클래스 또는 인터페이스가 있다. 추상 클래스(Abstract Class) 추상 메소드를 포함할 수 있는 클래스이다. abstract를 붙여 사용할 수 있다. 부모로서의 사용은 가능하지만 객체로서의 사용은 불가능하다. 추상 메소드(Abstract Method) 본체가 없는 메소드이다. 리턴 타입 앞에 abstract를 붙여 사용할 수 있다. 추상 메소드의 본체는 추상 클래스를 상속받은 후 재정의할 수 있다. abstract class Animal{ // 추상클래스 public abstract void eat(); //추상 메소드 public abstract void sleep(); //추상 메소드 public..
다형성(Polymorphism) 다형성(Polymorphism) 다형성의 의미 자바의 OOP개념 (다형성, 캡슐화, 추상화, 상속) 중 하나 슈퍼클래스의 동일한 메소드라도 구현체에 따라 내부동작을 변하게 하는 것 다형성을 가장 잘 보여주는 개념으로는 오버로딩과 오버라이딩이 있다. Overloading 오버로딩은 하나의 클래스에서 같은 이름의 메소드를 가질 수 있게 한다. (인자는 달라야 함) class test{ public void a(int num){ System.out.println("정수입니다."); } public void a(double num){ System.out.println("실수입니다."); } public void a(String param){ System.out.println("문자입니다."); } } publi..