본문 바로가기

Programming/Java83

[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.