애플리케이션을 설계하면서 검색을 하다보면, A는 B에 의존한다 라는 표현을 자주 보았다.물론 옛날부터 봐왔었지만, 요즘들어 확실하게 이해되는 느낌이 들어 정리를 해보려고한다. 🟩 A가 B에 의존한다 의미A가 B를 알아야 하고, B 없이는 동작할 수 있으면 → A는 B에 의존한다. 이해를 돕기 위해서 레이어드 아키텍처의 서비스와 도메인 계층을 예시들어보겠다. 서비스는 애플리케이션의 흐름을 조절하는 역할을 한다. 도메인은 애플리케이션의 규칙을 처리하는 역할을 한다. 이때,서비스는 도메인에 의존하고, 도메인은 서비스에 의존해서는 안된다. 아래는 현재 내가 만들고 있는 체스게임의 서비스계층 클래스이다. ( 도메인 계층까지 다 만들고, 서비스는 만드는 중이다. ) public class GameServic..
( 이 블로그에서는 자바의 I/O에 대해서 깊게 다루지 않는다. 나중에 스프링부트를 공부할 때 이해할 수 있는 정도만 공부하는 것이 현재 목표이기에, 바이트 스트림, 출력 스트림의 클래스들의 메서드 등과 같은 내용은 다루지 않는다.) 데이터는 키보드, 파일, 프로그램을 통해서 입력될 수 있고, 또 다른 파일, 프로그램으로 출력되거나 전송될 수 있다. 이것을 총칭해서 데이터 입출력이라고 한다. 🟩 스트림이란? 자바는 입력 스트림과 출력 스트림을 통해 데이터를 입출력한다. 이때 스트림이란, 단방향으로 데이터가 흐르는 것을 말한다. 프로그램 기준으로 데이터가 들어오면 입력 스트림, 데이터가 나가면 출력 스트림이 된다. 이때, 어떤 데이터를 입출력하느냐에 따라 스트림은 다음 두 종류로 구분할 수 있다...
( 이전에 커스텀 예외에 대한 글을 정리한 적이 있어서, 해당 블로그의 내용을 좀 가져오겠다. )https://kodong8774.tistory.com/126 자바 - 커스텀 예외 만들기(오늘도 어김없이 백엔드 공부 중....) 이번 포스팅에서는 자바의 커스텀 예외에 대해서 글을 써보겠다.백엔드를 만들때, 자바 내부에 있는 예외를 그대로 사용한다면 정확히 어떤 부분에서 에러kodong8774.tistory.com 🟩 커스텀 예외프로그램을 만들면서 여러가지 상황에서 예외가 발생할 것인데, 이 모든 예외들을 자바의 표준 라이브러리 예외로 적절하게 표현하기는 적절하지 않다. 이에 우리는 커스텀 예외를 만들어 사용할 수 있다. 아래는 커스텀 예외의 기본 규칙이다.1. 일반 예외로 선언 경우 → Excepti..
자바는 예외가 발생하면 예외 클래스로부터 객체를 생성한다. 자바의 모든 에러와 예외 클래스는 Throwable을 상속받아 만들어지고, 예외 클래스는 java.lang.Exception 클래스를 상속받는다. 큰 그림부터 잡아보자.🔵 Throwable - Error - Exception 여기서, Error는 컴퓨터 하드웨어의 고장으로 인해 응용프로그램 실행 오류가 발생하는 것(즉, 프로그램이 잘못된 것이 나닌, 환경 자체가 망가진 상황)으로, 프로그램을 아무리 견고하게 만들어도 개발자는 이런 에러에 대처할 방법이 전혀없다. 즉, 우리가 처리하고자하는 건 Exception(예외)이다.그럼 이제 이 Exception에 대해서 또 자세히 알아보자. 위에서 Exception은 아래와 같이 또 나뉘어..
( 중첩 클래스에 대한 추가적인 내용, 중첩 인터페이스, 익명 객체에 대한 내용은 추후에 추가하도록 하자. ) ------------------------------------------------------------------------------------------------- 이번 포스팅에서는 중첩 선언과 익명 객체에 대해서 알아보자. 🟩 중첩 클래스 (인스턴스 멤버 클래스, 정적 멤버 클래스, 로컬 클래스)클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이 유지보수에 도움이 되는 경우가 많다. 중첩 클래스란, 클래스 내부에 선언한 클래스를 말하는데,중첩 클래스를 사용하면 클래스의 멤버를 쉽게 사용..
작년에 자바의 인터페이스에 대해서 정리한 적이 있다. ( 아래 포스팅들에서 정리했다. )https://kodong8774.tistory.com/34https://kodong8774.tistory.com/56https://kodong8774.tistory.com/85 하지만, 글들을 보면 뭔가 제대로 이해하기 못한 상태로 적은 느낌이다. ( 실제로도 이해를 제대로 못했었다. )그래서 이번 포스팅에서 확실하게 마무리를 하겠다.물론 단순히 인터페이스는 어떻게 선언하는지 등과 같이 이미 알고 있는 내용은 생략하겠다.----------------------------------------------------------------------------------------------------------- 🟩 ..
이번 포스팅은 상속에 대한 글이다. 이 상속 개념을 똑바로 잡지 않은 상태에서 작년 9월에서 10월 사이쯤에 체스게임을 만들었었는데, 지금 보니까 코드가 매우 엉망이다.. 일단 이 상속이라는 개념은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여 개발 시간을 단축시켜준다. 그러니 잘 알면 알수록 이득이다. 🟩 클래스 상속⭐️⭐️ 다른 언어와 달리, 자바에서 클래스는 다중 상속을 허용하지 않는다. ⭐️⭐️public class ChildClass extends ParentClass1, ParentClass2 {}// --> XXX 아래와 같이 Parent를 상속하는 Child 클래스가 있다고 하자.public class Child extends Parent {}..
싱글톤 패턴은 애플리케이션 젙체에서 단 한 개의 객체만 생성해서 사용하고 싶을 때 사용할 수 있다. 이 패턴의 핵심은 생성자를 private 접근 제한해 외부에서 new 연산자로 생성자를 호출할 수 없도록 막는 것이다. 즉, 생성자를 외부에서 호출할 수 없으니, 외부에서 마음대로 객체를 생성하는 것이 불가능해진다. 대신 싱글톤 패턴이 제공하는 정적 메소드를 통해 간접적으로 객체를 얻을 수 있다.public class 클래스 { // private 접근 권한을 갖는 정적 필드 선언과 초기화 private static 클래스 singleton = new 클래스(); // 1 // private 접근 권한을 갖는 생성자 선언 private 클래스 {}; // public 접근 권..