JAVA

    상속(Inheritance)과 위임(Delegation) 방식

    상속 - 두 클래스 사이의 관계가 'IS-A' 관계일 때 사용 위임 - 스프링 부트 프로젝트 개발을 진행해 보았다면 아래와 같은 형태를 많이 사용했을탠대 위와 같은 코드가 위임으로 Skill에 대한 처리는 SkillService에 위임하여 처리한다고 보면 된다. 무엇을 사용해야할까? 상속의 경우 부모 클래스와 자식 클래스 사이에 강한 연관 관계가 생겨 부모 클래스 동작이 변경되면 자식 클래스의 동작도 모두 영향을 받게 된다. 이러한 관계는 'IS-A'의 관계의 경우 자연스러운 편이지만 이 외에는 불필요한 종속성이 생기게 된다. 또한 'IS-A' 관계이더라도 사용성에 따라서 위임을 선택하는 것이 더 좋은 방법인 경우도 있다. 이 때문에 무분별한 상속을 사용하는 것은 올바르지 않으면 굉장히 제한적으로 사용해..

    Java의 직렬화(Serialize)

    직렬화(Serialize) 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술. JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술 역직렬화(Deserialize) byte로 변환된 Data를 원래대로 Object나 Data로 변환하는 기술을 역직렬화(Deserialize)라고 부릅니다. 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태. 직렬화방법에는 여러 Format이 존재합니다. 표형태의 다량의 데이터를 직렬화할때는 CSV형태 Member member = new Member("김배민", "deli..

    자바 Enum 활용

    자바 Enum의 장점 - 안정성 향상: 객체 범위 제한 - 소스 가독성 향상: 상수의 사용 목적 및 해석 용이 - IDE의 적극적인 지원: 자동완성, 오타검증, 텍스트 리팩토링 Enum을 어떻게 활용할 수 있을까요? 1. CODE 관리용 테이블 교체 학생 연구원 당시 아래보다 좀더 칼럼이 많은 형태의 관리용 테이블이 있었습니다. 또한 아래 처럼 코드를 직접 넣어서 동적 쿼리에 적용 시켰습니다. aBox.setIfEmpty("hits", 0); aBox.setIfEmpty("notiSt", "OS01"); aBox.setIfEmpty("noticetarget", "NT01"); aBox.setIfEmpty("notiType","N"); SELECT COUNT(NO.NOTICE_SEQ) AS TOTAL_CO..

    자바 final 키워드

    롬복에서 @RequiredArgsConstructor 어노테이션를 적용하면 private fianl로 선언된 필드를 포함하는 생성자를 자동으로 만들어 준다. 최근 우아한 형제들의 우아한 테크코스 과정을 진행하시는 분들의 코드를 깃허브를 통해서 보게되었는데 필드, 매개변수등 final 키워드를 적용하는 것을 보면서 final 키워드에 대해서 한번 제대로 공부해서 정리해야겠다라는 생각을 하게 되었습니다 .ㅎ final final 키워드는 변수(variable), 메서드(method), 또는 클래스(class)에 사용될 수 있습니다. 이 final 키워드는 어떤 곳에 사용되냐에 따라 다른 의미를 가집니다. 하지만 final 키워드를 붙이면 무언가를 제한한다는 의미를 가지는 것은 공통적이 성격입니다. 변수(va..

    자바 예외 다루기 - 에러 처리 방식

    앞선 글에서 에러와 예외에 대해서 다루었습니다. 이번에는 예외를 어떻게 처리하는지 어떻게 다루는지에 대해서 정리해보고자 합니다. 예외를 다르는 방법으로는 3가지 정도가 있습니다. 우선 처리하기 전에 간단한 샘플 코드를 만들어 보면 1. 호출을 받는 클래스로 예외가 발생합니다. @Service @Slf4j @RequiredArgsConstructor public class TransactionService { ... public void getException() { throw new TestException(); } } 2. 호출하는 클래스 @Service @Slf4j @RequiredArgsConstructor public class TestObjectService { private final Tran..

    Error 와 Exception(Checked, Unchecked)

    네이버 웹툰 인턴 면접 중 받았던 질문인데 개발하면서 익셉션을 던지고 받아서 처리한적이 여러번 있는데 설명하라고 하니 ..... 에러(Error) 에러(Error)란 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는 것 따라서 개발자가 미리 예측하여 처리할 수 없기 때문에, 애플리케이션에서 오류에 대한 처리를 신경 쓰지 않아도 된다. 예외(Exception) 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류. 예외가 발생하면 프로그램이 종료가 된다는 것은 에러와 동일하지만 예외는 예외처리(Exception Handling)를 통해 프로그램을 종료되지 않고 정상적으로 작동되게 만들어줄 수 있습니다. 자바에서 ..

    Queue 구현 해보기 (자바)

    1. 배열로 구현 public class ArrayQueue { int front; int rear; int capacity; T[] queue; @SuppressWarnings("unchecked") ArrayQueue(int capacity){ this.front = -1; this.rear = -1; this.capacity = capacity; queue = (T[]) new Object[this.capacity]; } public boolean isFull() { return (this.rear == this.capacity-1); } public boolean isEmpty() { if(front == rear) { front = -1; rear = -1; } return this.front ..

    Stack 구현 해보기 (자바)

    1. 배열을 통한 구현 import java.util.Arrays; public class ArrayStack { private static final int DEFAULT_CAPACITY = 16; private int top; private T[] stackArr; @SuppressWarnings("unchecked") public ArrayStack() { this.top = -1; this.stackArr = (T[]) new Object[DEFAULT_CAPACITY]; } @SuppressWarnings("unchecked") public ArrayStack(int size) { this.top = -1; this.stackArr = (T[]) new Object[size]; } public ..