반응형
드디어 본격적인 시작을 알리는 2주차가 시작되었습니다 ! 2주차는 1주차에서 배운 점들을 최대한 적용하여 과제를 진행하기 위해 다음과 같이 2주차 목표를 세웠습니다. 저는 제 나름대로 이 목표들을 다 달성해서 제출했다고 생각하지만 과연 이 목표대로 이번 과제를 잘 했는지 결과가 궁금하네요 🙄🙄 이번 2주차 숫자 야구 게임 역시 배우고 느낀 점들이 참 많았는데요. 그 내용들에 대해 하나씩 정리해보자 합니다. 새롭게 배운 것과 느낀 점들 인텔리제이 사용 1주차는 이때까지 자바의 정석을 독학하면서 이클립스를 사용해 익숙한 이클립스를 사용했었습니다. 그리고 이클립스와 인텔리제이의 차이점을 검색했을 때 이클립스는 무료인 반면 인텔리제이는 유료라는 말이 있었기 때문에 이클립스를 사용하고 있기도 했었습니다. 하지만 ..
MVC란 ? MVC 패턴의 등장 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게됩니다. 그렇게 되면 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 하기 때문에 유지보수가 어려워집니다. HTML 코드 하나 수정하거나 비즈니스 로직하나를 수정하는데, 수백 수천줄의 HTML코드나 자바 코드가 함께 있다면 정말 지옥일 겁니다 🤯 그래서 이러한 문제를 해결하고자 MVC 패턴이 등장하게 되었습니다. MVC 는 Model - View - Controller의 약자로, 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 3가지로 구분한 패턴입니다. Mod..
접근 제어자는 멤버 또는 클래스에 사용하여 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 합니다. 만약 멤버 또는 클래스 앞에 접근 제어자가 지정되어 있지 않다면, 접근 제어자가 default임을 뜻합니다. 주의할 점으로 하나의 소스파일(*.java)에는 public 클래스가 단 하나만 존재할 수 있으며, 소스파일의 이름은 반드시 public 클래스의 이름과 같아야 합니다. 접근 제어자를 사용하는 이유는 다음과 같습니다. 외부로부터 데이터를 보호하기 위해 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해 접근 제어자가 사용될 수 있는 곳 클래스 멤버변수 메서드 생성자 접근 제한자의 사용 범위 public : 접근 제한이 전혀 없다. protected : 같은 패키지 ..
JUnit5 이란 ? Java 개발자가 가장 많이 사용하는 테스팅 프레임워크로, JAVA 8 버전부터 사용 가능하며 테스트 주도 개발(TDD, Test Driven Development)을 위해 사용됩니다. 요구사항을 검증하는 테스트 케이스 작성 테스트 통과를 위한 코드 작성 이후 작성된 테스트 케이스 실행 테스트 케이스 오류가 나는 부분을 찾아 리팩토링하여 실제 개발 코드에 적용 JUnit 모듈 구성 JUnit 5는 크게 3개의 요소로 구성되어 있습니다. JUnit Platform 테스트를 발견하고 계획을 생성하고 결과를 보고하는 TestEngine 인터페이스를 정의합니다. 테스팅 프레임워크를 구동하기 위한 런처와 테스트 엔진을 위한 API를 제공 JUnit Jupiter Junit5 TestEngin..
Stream ➡ 기본형 Stream From To 변환 메서드 Stream IntStream LongStream DoubleStream mapToInt(ToIntFunction mapper) MapToLong(ToLongFunction mapper) MapToDouble(ToDoubleFunction mapper) 기본형 Stream ➡ Stream From To 변환 메서드 IntStream LongStream DoubleStream Stream Stream Stream boxed() Stream mapToObj(DoubleFunction mapper) 기본형 Stream ➡ 기본형 Stream From To 변환 메서드 IntStream LongStream DoubleStream LongStream ..
자바에서는 많은 양의 데이터를 저장하기 위해서 배열이나 컬렉션을 이용합니다. 이렇게 저장된 데이터에 접근하기 위해서는 반복문이나 반복자(iterator)를 사용하여 매번 새로운 코드를 작성해왔습니다. 하지만 이러한 방식으로 작성된 코드는 너무 길고 가독성도 떨어지며 코드의 재사용도 떨어집니다. 또 다른 문제는 데이터 소스마다 다른 방식으로 다뤄야한다는 점입니다. Collection이나 Iterator와 같은 인터페이스의 각 컬렉션 클래스에는 같은 기능의 메서드들이 중복해서 정의되어 있습니다. 예를 들면, List를 정렬할 때는 Collections.sort()를 사용하고, 배열을 정렬할 때는 Arrays.sort()를 사용한다는 점입니다. 이러한 문제를 극복하기 위해 나온 것이 바로 Stream입니다. ..