분류 전체보기 썸네일형 리스트형 우아한테크코스 6기 프리코스 4주차 1. 3주차 공통 피드백 ✅ 함수(메서드) 라인에 대한 기준 함수 15라인으로 제한 main() 함수에도 해당 공백 라인도 한 라인에 해당 15라인이 넘어간다면 함수 분리를 위한 고민 ✅ 발생할 수 있는 예외 상황에 대해 고민한다 예) 로또 미션 로또 구입 금액에 1000 이하의 숫자를 입력 ✅ 당첨 번호에 중복된 숫자를 입력 ✅ 당첨 번호에 1~45 범위를 벗어나는 숫자를 입력 ✅ 당첨 번호와 중복된 보너스 번호를 입력 ✅ 왼쪽에서 오른쪽으로 저번 미션에서 구현한 메서드이다. 이번 미션에서 발생할 수 있는 예외에 대해 README.md 파일 기능 목록에 적어두었다. 보통 어떠한 기능을 수행하다가 예외 사항이 발생하는 것이기에 굳이 기능 목록과 예외를 분리하지 않았다. 발생할 수 있는 예외는 다음과 같다.. 더보기 Chpt 12. 지네릭스, 열거형, 애너테이션 - 주제 4. 애너테이션 1. 애너테이션 애너테이션은 다른 프로그램에게 유용한 정보를 전달하는 역할을 한다. 애너테이션 그리고 소스코드의 주석은 다음과 같은 비슷한 특징을 갖는다. 기능 도움을 제공하는 프로그램 @ 소스 코드 + 설정 파일 (XML) 컴파일러, JUnit 테스트 프로그램, 그 외 /** ~ */ 소스 코드 + 소스 코드 설명 문서 (HTML) javadoc.exe 1) 표준 애너테이션 : 기본적으로 제공하는 애너테이션 애너테이션 알려주는 대상 특징 @Override 컴파일러 오버라이딩 하는 메서드에 붙인다. @Deprecated 앞으로 사용하지 않을 것을 권장하는 메서드에 붙인다. @FunctionalInterface 컴파일러 함수형 인터페이스에 붙인다. @SuppressWarnings 컴파일러 경고 메시지를 나.. 더보기 Chpt 12. 지네릭스, 열거형, 애너테이션 - 주제 3. 열거형 1. 열거형의 도입 열거형은 다음과 같은 이유에 의해 생겨났다. (1) 서로 관련된 다수의 상수를 묶기 위함. (2) 값과 타입 둘 다 체크하기 위함. class Card { static final int CLOVER = 0; ... static final int TWO = 0; ... final int kind; final int num; } (2): Card.CLOVER == Card.TWO // True이지만 의미상 같으면 안된다. 열거형 Kind와 Value를 각각 만들게 된다면 false가 나온다. 2. 열거형 정의와 사용 1) 정의 열거형은 생성자가 private인 클래스라고 생각하면 된다. enum Direction { EAST(1, ">"), WEST(2, " 더보기 Chpt 12. 지네릭스, 열거형, 애너테이션 - 주제 2. 지네릭스의 타입 1. 지네릭 타입과 다형성 앞서 참조 변수의 타입과 인스턴스의 타입은 다형성(조상이 자손 참조)이 가능하지만 지네릭 타입은 서로 일치해야 한다. (1) ArrayList list = new ArrayList(); // O (2) ArrayList list = new ArrayList(); // X (3) List list = new ArrayList(); // O (4) List list = new ArrayList(); // X 원시 타입 지네릭 타입 다형성 가능 여부 O X ArrayList product = new ArrayList(); 를 사용해 product의 ArrayList에 Product 타입의 자손 객체를 담을 수 있다. 이때 형변환을 해야함을 잊지 말자. 2. 지네릭 타입의 제한 대입되.. 더보기 Chpt 12. 지네릭스, 열거형, 애너테이션 - 주제 1. 지네릭스 1. 지네릭스의 장점 지네릭스는 컴파일 시 타입 체크를 해주는 기능이다. 지네릭스는 다음과 같은 장점에 의해 도입되었다. (1) 타입 안정성을 제공한다. (2) 타입체크, 형변환 생략으로 코드가 간결해진다. (1)은 타입 체크를 강화해 형변환 에러를 방지해준다. 모든 타입의 객체를 담을 수 있는 ArrayList를 예로 들어보겠다. ArrayList list = new ArrayList(); list.add(10); // list.add(new Integer(10)); list.add(20); list.add("30"); // String 타입 Integer i = (Integer) list.get(2); 위 코드를 실행하면 컴파일은 되지만 형변환 실행 에러가 발생한다. 실행 도중 에러가 발생하게 되면 .. 더보기 우아한테크코스 6기 프리코스 3주차 1. 2주차 공통 피드백 ✅ README.md를 상세히 작성한다 2주차와 달리 어떠한 프로젝트인지 간단하게 기술하였다. 여태 README.md를 작성할 때는 우아한테크코스에서 미션으로 제공하는 README.md를 참고해서 만들었다. 해당 링크를 훑어보며 마크 다운에 대해 다시 정리했다. 마크 다운 중 체크 박스 기능을 사용해 구현한 기능을 한눈에 볼 수 있도록 확인했다. (참고) ✅ 기능 목록을 재검토한다 기존 기능 목록에서는 클래스 설계, 그리고 각각의 메서드를 어떻게 구현했는지 너무 상세하게 적은 것 같았다. 1주차 숫자 야구 피드백 강의와 비슷한 형태로 구현할 기능을 간단한 문장 형태로 적고 발생할 수 있는 예외 상황도 함께 기술했다. ✅ 값을 하드 코딩하지 않는다 자바에서의 상수는 한번 초기화하면.. 더보기 Chpt 11. 컬렉션 프레임워크 - 주제 7. Comparator vs. Comparable Comparator와 Comparable은 컬렉션 클래스를 정렬하는데 필요한 메서드들을 담고 있는 인터페이스이다. 둘의 차이점을 다음을 통해 살펴보자. 인터페이스 핵심 추상 메서드 용도 구현한 클래스 Comparable int compareTo(Object o); 기본 정렬 기준 구현 (오름차순, 내림 차순) 래퍼, String, Date, File 클래스 Comparator int compare(Object o1, Object o2); 그 외 정렬 기준 구현 - 정렬은 (1) 두 대상을 비교, (2) 자리 바꿈의 반복이다. 이 과정은 불변이지만 기준을 제공함으로써 변화를 주는 것이다. [참고] Comparable을 구현한 클래스들도 직접 Comparator를 구현해 다른 기준을 제공해줄 수 있다. [예.. 더보기 Chpt 11. 컬렉션 프레임워크 - 주제 5. Map 인터페이스와 구현 클래스들 1. Map 인터페이스의 메서드 1) Collection 인터페이스 메서드 참고 2) Map 인터페이스 메서드 참고 메서드 반환 이유 결과 타입 keySet() Key Set 중복 X values() Value Collection 중복 O entrySet() Key- Value 쌍 Set (Map.Entry 타입 인스턴스 포함) 중복 X 2. 구현 클래스 핵심 구현 클래스는 노란색으로 강조돼 있다. 1) HashMap (1) 특징 Key와 Value - 이 둘을 묶어 하나의 entry 클래스로 저장한다. - Key 중복 X, Value 중복 O - 둘 다 Object 타입이지만 Key 값으로 주로 대문자 또는 소문자 String을 사용 해싱 - 배열 + LinkedList의 데이터 구조 - 많은 양의 데.. 더보기 이전 1 2 3 4 ··· 6 다음