JAVA/Basic

[스터디할래? Java 04] 제어문

[스터디할래? Java] 목차

 

이글은 백기선님 스터디 할래? 스터디를 뒤늦게 따라간 기록입니다.

스터디할래 링크 >> https://github.com/whiteship/live-study

이필기를 시작으로 공부했습니다 >> kils-log-of-develop.tistory.com/349

여기 없는내용은 스터디 할래 강의 내용 혹은 제가 java Doc보고작성하거나 예제를 만들어 추가했습니다.

그외는 같이 출처가 써있습니다. 

 

내가한 과제주소

>> blog.1028web.com/entry/JUnit

>>http://study/src/test/java/com/web1028/study/whiteship/javaBasic/ : 테스트

>>study/src/main/java/com/web1028/study/whiteship/javaBasic/ : 소스 위치

 

수업중 코멘트 

JUnit5 테스트는 public 생략가능.. Junit4 에서는 써야했음.  

일관성 : consistency : 일관적으로 예외를 던기거나 or null

더보기
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();
        // 예외를 던지는것 or null
        // 일관적 선택을 하 것.
        // 추가는 예외 , 뺄 때는 null??? 비추.

        queue.offer(1);
        queue.add(1);

        queue.poll();
        queue.remove();

        queue.peek();
        queue.element();

    }

데이터 사이언스에서 일관성은

데이터의 Replication (복제) 동일한 데이터셋.

레플리케이션(Replication)- 마스터/슬레이브 관계를 갖는 원본과 복사본 사이를 다룬다. 마스터는 변경 사항을 기록하고 그 결과는 슬레이브에게 전달된다-

@DisplayName("이름 바꾸기 \uD83D\uDE31")

목업테스트 >> 모키토. 

자바 if switch 안쓰는걸 권장.  if 문없이 효과 낼수 있음.  >> 상속(다형성) 이용.  

refactoring.guru/replace-conditional-with-polymorphism

 

@TestInstance(TestInstance.Lifecycle.PER_METHOD

   >>  이게 기본값, 인스턴스를 매서드기준생성 내부 알고리즘 순서로 랜덤으로 실행됨. 

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)  >> @Order(1)  .. 순서대로 실행 

 

TDD 테스트 주도 개발(Test-driven development)

보통.. 테스트코드를 짜고. 개발 진행..을말함. 

 

스팍 spock  groovy 테스트 코드..  주관적으로 JUnit4(이름 뛰어쓰기 불가,한글가능) < spock < JUnit5 .. 가 나았다. 

>> 참고링크 blog.naver.com/varkiry05/221377431778woowabros.github.io/study/2018/03/01/spock-test.html

d2.naver.com/helloworld/568425

groovy  > A domain-specific language (DSL) 

 

차주수업 소개, 재귀. 작성시. 종료조건 유의.

팩토리얼 구현. 

시간복잡도,  O(N)

공간복잡도.  O(N).. 꼬리재귀 ??.>>최적화. 스칼라로는. O(1). 더 낮음. >> 스택까지 고려해야함. 

스택. 메서드 호출시 스택이 생김. 

재귀호출 호출할때마다 스택이 추가됨. 그만큼 메모리 사용. 

꼬리재귀.. 자기자신 스택을 재사용함. ... 지원하는 언어가 

java 기본적으로. 콜스텍 갯수 카운트에 의존하는 코드가 있어. 꼬리 재귀 기능을 추가하지 못함. 

O(N)까지는 고려할만하나... O(N^2) 은 수용가능한 범위인지 고려해봐야함. 

꾸준히 실행하세요!!

 

 

 

수업소감. 

테스트 코드를.... 진짜.. 처음 써봄.. 스터디로.. 이전까지.. 공부하면서 써먹지를 못해서.. 답답한애였는데. 

큐를 쓰면서... 제네릭을 생각보다 모르는것같다. 더 공부합시다~

모키토까지.. 공부해야하나봄.. 목업테스트에는 그걸하라고. 

이런생각을 하고 싶었는데.. 행복하네요.. 봅시다. 너무늦은건없다는거.

 

과제 0. JUnit 5 학습하세요.

  • 인텔리J, 이클립스, VS Code에서 JUnit 5로 테스트 코드 작성하는 방법에 익숙해 질 것.
  • 이미 JUnit 알고 계신분들은 다른 것 아무거나!
  • 더 자바, 테스트 강의도 있으니 참고하세요~

과제 1. live-study 대시 보드를 만드는 코드를 작성하세요.

  • 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것.
  • 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것.
  • Github 자바 라이브러리를 사용하면 편리합니다.
  • 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다.
  •  
더보기

불러내기까지만 테스트

과제 2. LinkedList를 구현하세요.

  • LinkedList에 대해 공부하세요.
  • 정수를 저장하는 ListNode 클래스를 구현하세요.
  • ListNode add(ListNode head, ListNode nodeToAdd, int position)를 구현하세요.
  • ListNode remove(ListNode head, int positionToRemove)를 구현하세요.
  • boolean contains(ListNode head, ListNode nodeTocheck)를 구현하세요.

과제 3. Stack을 구현하세요.

  • int 배열을 사용해서 정수를 저장하는 Stack을 구현하세요.
  • void push(int data)를 구현하세요.
  • int pop()을 구현하세요.

과제 4. 앞서 만든 ListNode를 사용해서 Stack을 구현하세요.

  • ListNode head를 가지고 있는 ListNodeStack 클래스를 구현하세요.
  • void push(int data)를 구현하세요.
  • int pop()을 구현하세요.

과제 5. Queue를 구현하세요.

  • 배열을 사용해서 한번
  • ListNode를 사용해서 한번.