언어
-
- 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. 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. 5. 17:07
1. 람다식이란? - 메서드를 하나의 식으로 표현 - 함수를 간략,명확한 식으로 표현 할 수 있게 해준다. - 람다식으로 메서드를 표현하면, 이름과 반환값이 사라지므로, 익명함수라고도 한다. int method() { return (int)(Math.random()*5) +1;} () -> {(int)(Math.random()*5)+1}; *모든 메서드는 기본적으로 클래스에 포함되어 있어야하므로, 필요한 메서드를 만드는 작업이 복잡하다. *람다식은 이를 간결하게 처리할 수 있도록 해준다. *람다식을 통해 매개변수를 전달하여 값을 return받을 수 도 있지만, 람다식 자체를 매개변수로 사용할 수 있다. 1.2 람다식 작성 - 메서드의 이름과 반환타입을 제거하고 선언부와 몸통부 사이에 ->를 추가한다. -..
-
객체지향 - 캡슐화언어/JAVA 2023. 6. 12. 21:14
캡슐화: 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것 캡슐화의 기능 데이터 보호 - 외부로부터 클래스에 정의된 속성과 기능들을 보호 데이터 은닉 - 내부의 동작을 감추고 외부에는 필요한 부분만 노출 1. 캡슐화는 왜 하는걸까? 구조체,함수들을 이용한 구조적인 프로그래밍을하면, 기존의 절차지향적인 프로그래밍보다 좀 더 구조화된 프로그램을 만들 수 있었다. 하지만, 구조적 프로그래밍은 함수의 개체수가 많아지게 되고 이때 함수를 어떤 기준으로 수납할 것인가?하는 문제가 발생하게 된다. 함수는 크게 1. 기능 2. 데이터 두개의 기준으로 나눌 수 있을 것이다. 이때 데이터에 따라 함수를 분리하면 구조화된 데이터를 사용하는 함수 모듈의 독립성을 침해하는 문제..
-
자바 - 입출력(I/O) (1) 바이트기반 스트림/ 문자기반 스트림언어/JAVA 2023. 5. 14. 23:15
1. 입출력과 스트림 입출력이란? 컴퓨터 내부 또는 외부의 장치와 프로그램 간 데이터를 주고 받는 것을 말한다. 키보드로 데이터를 입력받는 것 혹은 System.out.println()로 화면에 출력하는 것 등을 의미 스트림이란? 데이터를 운반하는데 사용되는 연결통로이다. 스트림은 단방향 통신만 가능하다 따라서 하나의 스트림은 입력과 출력을 동시에 처리할 수 없다. 입출력을 위해선 입력/출력 스트림이 필요하다. 스트림은 queue와 같은 FIFO구조이다. 1.2 바이트 기반 스트림/ 문자 기반 스트림 바이트 기반 스트림: 데이터를 바이트 단위로 처리하며, 있는 그대로 송수신 사진, 동영상,음악파일등의 송수신에 적합하다.(문자 데이터 송수신도 가능) InputStream/OutputStream 모든 바이트..
-
자바 - 열거형(enums)언어/JAVA 2023. 3. 26. 16:51
1. 열거형이란? - 열거형은 서로 관련된 상수를 묶어놓은 것이다. java의 열거형은 타입도 관리하여 타입에 안전한 열거형이다. - 마치 인스턴스가 미리 정의된 클래스로 생각해 볼 수 있다. 1.2 열거형의 정의와 사용 - enum 열거체명 {상수명1,상수명2..} 등으로 정의할 수 있다. - 선언 위치는 클래스와 동일하다. 클래스 내부, 외부, 혹은 하나의 클래스파일에 정의할 수 있다. - 사용법은 열거체 참조변수에 열거체.상수명 혹은 열거형체.valueOf(상수명) - 모든 열거형의 조상 Enum에 Enum에 기본적으로 사용가능한 메서드들이 정의되어 있다. enum Direction {EAST,SOUTH,WEST,NORTH} Direction dir = Direction.EAST; Direction..