Java

    [TIL] Java ArrayList, HashSet, HashMap, Generic

    ✍ Today I Learned [컬렉션 프레임워크 Collection Framework] 자바에서 컬렉션 프레임워크(collection framework)란? 많은 데이터를 효과적으로 처리하기 위해 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. 인터페이스를 사용하여 구현된다. 주요 인터페이스로는 List, Set, Map이 있다. List와 Set 인터페이스는 Collection 인터페이스를 상속받지만, 구조상의 차이로 Map 인터페이스는 별도로 정의된다. , 는 모든 클래스가 제네릭으로 표현되어 있음을 알려준다. [Generic] 제네릭이란? 데이터 타입(data type)을 일반화(general..

    [TIL] Java 피카츄 게임, 웹 서비스 프로그램

    ✍ Today I Learned [피카츄 키우기 게임] 기존에 계속해서 새로운 객체를 생성하던 구조에서 각 캐릭터의 경험치를 저장하는 구조로 변경하려면? 캐릭터의 경험치를 담을 공간이 필요하다. 배열을 이용하거나 또 다른 객체를 사용할 수 있다. [배열을 이용한 방법] Character 타입의 배열을 캐릭터 개수만큼 생성하고 각 인덱스에 new 연산자로 새로운 캐릭터 객체를 할당한다. (하지만 이렇게 하면 배열에 할당하면서 생성자 함수를 호출하기 때문에 각 캐릭터의 상태 값이 프린트돼버림) 캐릭터 선택 값은 switch문 대신 배열의 인덱스를 이용한다. 캐릭터 선택도 반복되어야 하기 때문에 이중 반복문으로 설정한다. 내가 헷갈렸던 부분은 캐릭터 객체와 플레이 객체의 생성 시점이었는데, 나는 플레이 객체도..

    [TIL] Java 인터페이스, 내부클래스, 예외처리

    ✍ Today I Learned [클래스 다시 짚고 넘어가기] 클래스는 개념을 코드로 작성한 것이다. 개념은 정적인 것과 동적인 것으로 구분된다. 정적인 것은 특정 시점의 상태 값이다. 동적인 것은 상태 값을 변경하는 기능이다. 생성자는 클래스를 사용하기 위한 출입구이다. 생성자를 통해서 클래스가 보유한 모든 리소스에 접근한다. 클래스의 변수와 메서드는 특정 목적을 위해 설계된 리소스이다. 클래스는 new 연산자와 생성자를 통해 물리적으로 인스턴스가 된다. 인스턴스란 메모리상에 주소 값을 갖는 데이터이다. 모든 리소스의 접근은 인스턴스의 주소 값으로부터 시작한다. 데이터의 인풋(파라미터)과 아웃풋(리턴)의 이해를 해보자! 클래스를 생성할 땐 어떤 값이 필요하고, 무엇을 위해 변경할 건지 생각하자! [추상..

    [TIL] Java 빌트인 패키지, 접근제어자, 상속, 오버라이딩, 다형성, 추상 클래스

    ✍ Today I Learned [java.time] 1.8 이전에는 new Date()로 구현했으나, 1.8 이후에는 calendar 혹은 LocalDate, LocalDateTime을 사용을 권장한다. immutable이기 때문에 한 번 생성되면 연산에도 변하지 않고 now는 끝까지 처음 시간을 유지한다. java.time 패키지의 클래스들은 여러 직관적인 이름의 메서드를 제공해준다. LocalDate - 날짜(ex. 발송일로부터 며칠) LocalTime - 시간 LocalDateTime - 날짜&시간(ex. 게시글 업로드 시간) DateTimeFormatter - 원하는 형식으로 지정 가능 LocalDate today = LocalDate.now(); System.out.println(today);..

    [TIL] Java 뱅킹, 호텔, 메모리구조, 캡슐화

    ✍ Today I Learned [뱅킹 시스템] 유효성 검사 로직을 추가했다. 고객번호를 받는 경우에는 최대 고객 수보다 많지 않아야 하고, 미개설 계좌(null)가 아니어야 한다. 이 부분이 아주 헷갈렸는데, 고객번호 대신 고객 이름을 받는 경우에는 findUser() 메서드 내에서 null 값 처리를 해주어야 연산이 가능하다!! 계속 NullPointerException 에러가 나서 한참을 머리 쥐어뜯었다.. 찾는 고객 이름이 없는 경우 에러 메시지를 출력한다. main 메서드를 최소한으로 줄이고 컨트롤러 클래스를 생성하여 각 메뉴의 작업을 메서드로 분리한다. 중요한 포인트! 개별적 클래스를 객체화 클래스 내부 데이터에 접근 접근할 때의 데이터 전달 static을 붙이면 메서드 영역에 할당된다. [호..

    [TIL] Java 뱅킹 시스템, 호텔 객실 관리 프로그램

    ✍ Today I Learned [뱅킹 시스템 고객 특정하기] 지금까지 만든 뱅킹 시스템은 한 명의 고객만을 취급했다. 여러 고객을 입력받아 다음과 같이 고객을 특정해보자. Bank 클래스의 멤버 변수로 User객체의 배열인 users를 추가한다. 시스템의 시작 부분에서 최대 고객 수를 입력받고, 생성자 메서드를 이용하여 최대 고객 수만큼의 길이를 가진 users 배열을 생성한다. 계좌 개설 메뉴에서 고객의 정보를 입력받고, User객체를 생성함과 동시에 users배열에 할당한다. (현재 고객 수의 인덱스로 접근) 계좌 개설이 완료되면 현재 고객 수 변수를 증가시켜준다. Bank 클래스에서 고객이 입력한 이름을 파라미터로 전달받아 일치하는 이름의 User 객체를 리턴하는 findUser() 메서드를 생성..

    [TIL] Java 뱅킹 시스템, 은닉화

    ✍ Today I Learned Making with tools for web! 최대한 많이 만들어보면서 체득하자! [클래스를 분리하여 뱅킹 시스템 만들기 2] 소속 관계를 보면 고객이 계좌를 가지고 있다. 객체 관계성 설정에 대해 고민하자. 착각했던 부분은 고객이 가진 현금 보유액을 계좌 객체를 생성하면서 내 맘대로 입금시켜버린 것. 고객에게 입금의 자유를.. 객체의 getter와 setter를 로직에 맞게 수정하였는데 추후 단일 값이 필요한 상황이 생길 수 있기 때문에 차라리 새로운 메서드를 생성하는 것이 나을 듯. Banker의 지속성을 위해 메뉴 부분을 while문으로 설정한다. 클래스의 정보 값을 알려주는 toString() 메서드 이클립스 단축키 alt+shift+s > s 주로 필드를 생성하..

    [TIL] Java 퀴즈파티, 생성자, 뱅킹 시스템

    ✍ Today I Learned 오늘은 여러 퀴즈 문제를 풀었다. 확실히 자바스크립트로 한 번 풀어봤던 문제들이라 자바로도 어렵지 않게 풀 수 있었다. 가장 어려웠던 부분은 각 클래스를 연결하여 하나의 큰 개념을 만들어내는 것이었는데 클래스를 분석하는 작업이 선행되어야 한다는 걸 깨달았다. 클래스를 분석하는 작업은 추상화를 의미한다. 생성하려는 객체가 무엇이고, 어떤 것들이 포함되어야 할지 항상 생각하자. System.out.printf("%.2f"); - DecimalFormat 외에 소수점을 조정할 수 있는 방법. (추천 방식은 아님) 하나의 패키지 안에 같은 이름의 클래스를 둘 이상 정의할 수 없다. (패키지가 다르면 같은 이름 가능) [생성자 Constructor] 생성자란? 객체의 생성과 동시에..