언어
-
- JavaNextStep - 숫자야구게임(1) - 단위테스트언어/JAVA 2023. 7. 10. 17:10
- 학습테스트 > 내가 만든 api를 테스트하는게 아니라, 다른 사람이 구현해 놓은 라이브러리가 어떻게 동작하는지 단위테스트를 통해 알아보는 것 학습테스트이다. > 새로운 라이브러리를 테스트 기반으로 할 수 있다. (빠르게 학습 가능해진다) > 학습 테스트를 통해 - 단위 테스트 방법 학습 - 단위 테스트 도구 사용법 익힐 수 있다. - 사용하는 API에 대한 학습 효과가 있다. 1. String 클래스에 대한 학습 테스트 1.1 요구사항 1에 대해 @DisplayName("split Test") @Test void splitTest(){ String[] input = "1,2".split(","); assertThat(input).contains("1","2"); } @Test void splitTes..
-
-JavaNextStep (1) - Junit언어/JAVA 2023. 7. 10. 15:10
1. 객체지향 생활 체조 원칙 한 메서드에 오직 한 단계의 들여쓰기만 한다. else 예약어를 쓰지 않는다. 모든 원시 값과 문자열을 포장한다. 한 줄에 점을 하나만 찍는다. 줄여 쓰지 않는다(축약 금지). 모든 엔티티를 작게 유지한다. 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 일급 컬렉션을 쓴다. getter/setter/프로퍼티를 쓰지 않는다. 2. 단위테스트란? - 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. - 여기서 모듈은 애플리케이션에서 작동하는 하나의 기능 또는 메소드이다. 2.1 main method의 용도 > 프로그램 시작 > 구현 프로그램 테스트 > main method는 프로덕션코드 프로그램 구현을 담당하는 부분으로, 실제 사용하는 소스코드..
-
컬렉션 예시들언어/JAVA 2023. 7. 9. 22:49
1. Thread - Vector, HashTable, HashMap Vector package Collection; import java.util.List; import java.util.Vector; public class Vector1 { public static void main (String[] args){ List list = new Vector(); Thread th1 = new Thread(new BoardTask(list)); Thread th2 = new Thread(new BoardTask2(list)); th1.start(); th2.start(); try{ th1.join(); th2.join(); }catch (Exception e){} int size = list.size();..
-
컬렉션언어/JAVA 2023. 7. 9. 18:05
1. 컬렉션 프레임워크 - 자바는 널리 알려 있는 자료구조를 바탕으로 객체들을 효율적으로 다룰 수 있는 인터페이스와 클래스를 미리 util패키지에 포함시켜둠 (이런 것들을 컬렉션 프레임워크라함) - 컬렉션 프레임워크는 몇 가지 인터페이스를 통해 다양한 컬렉션 클래스를 사용할 수 있도록 설계됨 - 주요 인터페이스는 List,Set,Map이 있다. - 각 인터페이스로 사용가능한 클래스 종류는 아래와 같다. - List와 Set는 추가,삭제,검색 방법에 공통점이 있어서 Collection인터페이스를 따로 정의해 두고 상속받는다. - Map은 키와 값을 쌍으로 묶어서 관리하는 구조이므로, List와 Set가 다름 2. List 컬렉션 (순서유지, 중복저장) - List는 객체를 인덱스로 관리,인덱스를 통해 검색..
-
어노테이션언어/JAVA 2023. 7. 8. 23:13
1. 어노테이션 - 코드에서 @으로 작성되는 요소를 어노테이션이라고 한다. - 어노테이션은 클래스 또는 인터페이스를 컴파일하거나 실행할 때 어떻게 처리해야 할 것인지를 알려주는 설정 정보이다. - 어노테이션의 컴파일 시 사용하는 정보 전달, 빌드 툴이 코드를 자동으로 생성할 때 사용하는 정보 전달, 실행 시 특정 기능을 처리할 때 사용하는 정보 전달. 2. 표준 애너테이션 자바에서 제공하는 기본 어노테이션이다. 3. 메타 어노테이션 어노테이션을 정의하기 위한 어노테이션이다. 3.1 @Target : 어노테이션이 적용가능한 대상을 지정하는데 사용된다. - 적용범위는 기본속성 value로 ElementType 열거 상수 배열을 값으로 가짐 3.2 Retention : 어노테이션 유지되는 기간을 지정하는데 사..
-
중첩 선언과 익명 객체언어/JAVA 2023. 7. 7. 13:53
1. 중첩클래스 - 객체 지향 프로그램에서 클래스간 긴밀한 관계 맺고 상호작용 - 클래스가 여러 클래스와 관계를 맺는 경우 독립 선언 - 특정 클래스와 관계를 맺는 경우에는 중첩 클래스로 선언 -> 유지보수에 도움, 코드 복잡성 줄이기, 클래스 멤버 쉽게 접근 - 크게 멤버클래스(인스턴스,static)와 로컬 클래스로 나눌 수 있다. 1.1 중첩클래스 저장 -outter$inner.class -A $1 inner.class로 저장됨 2. 멤버클래스 (인스턴스,static) > 공통점: 접근제한자 public,default,private을 가질 수 있다. 외부클래스 멤버 쉽게 접근 가능, 외부클래스는 내부클래스 멤버에 접근하려면 내부 클래스를 생성해야함 > 차이점 인스턴스 inner : outter클래스의..
-
상속,동적생성언어/JAVA 2023. 7. 6. 16:40
1. 상속 부모 클래스의 필드와 메서드를 자식 클래스에게 물려주는 것 2. 클래스 상속 *정적멤버와 생성자, 초기화 블럭등은 상속안됨 *인스턴스 멤버,메서드 중 public이나 protected만 super를 통해 가져올 수 있다. 3 부모생성자 호출 super() - 부모에 필요, 다른 생성자 있으면, 자식이 따로 호출해줘야함 자식 객체가 생성되면 부모가 먼저 생성된 후에 자식이 생성됨 4. 메소드 재정의 - 오버라이딩 ->다형성의 초석 - 부모의 메서드의 반환타입,메서드명,매개변수 일치하고 구현내용만 달라야한다. - 공변반환타입으로 리턴타입을 자식 클래스로 둘 수 도 있단다. - 접근제한자 좁게 불가, 새로운 예외( 더 많은 예외) 던질 수 없음 *메서드 재정의시 부모메서드 호출하고, 필요부분만 수정..
-
클래스,인스턴스 메서드 메모리 저장,싱글톤,접근제한자언어/JAVA 2023. 7. 6. 15:57
1. 객체지향 프로그래밍 -소프트 웨어를 개발할 때도 부픔에 해당하는 객체들을 먼저 만들고, 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법 > 객체란?: 물리적으로 존재하거나 개념적인 것 중 다른 것과 식별 가능한 것 - 객체는 속성과 동작으로 구분된다. - 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 한다. - 현실 세계 객체의 대표 속성과 동작을 소프트웨어 객체의 필드와 메서드로 정의할 수 있다. > 객체간 상호작용은 메서드를 통해 이루어진다. ( 객체가 다른 객체의 기능을 이용할 때 메소드 호출함) > 객체 간 관계는 집합,사용,상속 관계로 분류할 수 있다. 집합 : 완성품과 부품관계 사용: 다른 객체의 필드를 읽고 변경하거나 메서드를 호출하는 관계( 사람(객체) ..