TIL221228

5w31892p·2022년 12월 28일
0

Dev.TIL

목록 보기
44/66

🙊 Today I Learned

  1. 객체지향프로그래밍 복습 및 퀴즈
  2. 자바 콘솔 입출력
  3. 입출력 퀴즈
  4. MySelectShop 코드 처음부터

:: 문시해알

문제점

  1. 어제 공부했던 객체지향이 제대로 머릿속에 들어오지 않았는지 헷갈렸다.

  2. 자바 입출력 메서드가 Scanner만 있는 줄 알았다.

  3. 곧 팀 프로젝트인데 코드를 처음부터 다시 짜서 할 수 있을까라는 생각이 들었다.

시도한 것

  1. 어제 공부했던 객체지향파트를 다시 보면서 이해해야할 부분들을 다시 정리하고,
    말로 정리한 부분들이 나중에 이해가 힘들 것 같은 부분들은 짧게나마 예제코드와 함께 정리했다.

  2. 그리고 Scanner만이 콘솔 입력을 할 수 있는 것인줄 알았는데,
    책을 보면서 InputStream, BufferedReader 등 여러가지가 있다는 것을 알았고, 예제 코드를 손으로 직접 쳐보면서 어떤 부분들이 다른지 확인했다.

  3. 그리고 금요일부터 팀프로젝트가 시작인데, 그럼 이제까지 했던 코드들을 다시하면서 파트를 나눌 것 같다는 생각이 들었다.
    그러면서 드는 생각이 내가 이걸 다시 팀원들도 이해할 수 있게 그리고 나도 이해하면서 짤 수 있을까라는 생각이 들었고, 그래서 다시 강의자료와 기존 코드를 보면서 쳐보고 어떤 흐름인지 확인했다.

해결

  1. 헷갈렸던 오버로딩 오버라이딩이 정리가 되었다.
    그리고 메서드, 객체, 객체변수, 매개변수, 인자가 무엇인지 보다 확실하게 알게 되었다.

  2. 여러 종류가 있고, 코드로 파일을 만들고 파일 안에 내용을 정리하고 출력도 할 수 있다는 것을 알게 되었다.

  3. 쳐보면서 흐름 확인하면서 하니 시간이 엄청 오래걸렸다.
    그래서 제대로 해결이 되진 않았다.
    그리고 애초에 다 알고 있다는 전제하에 강의를 만든 것 같았다.
    어노테이션이나 속성 설명이 없었다.
    그래서 이것을 해결하기 위해 지금 이 til 다 작성 후 점프 투 스프링부트를 오늘 밤부터 내일까지 해서 다 보고 해결할 것이다.

알게 된 것

  1. 헷갈렸던 오버로딩 오버라이딩이 정리가 되었다.
    오버로딩 은 입력값 타입이 다르거나, 기존 메서드에 추가하는 것이고,
    오버라이딩 은 상속 받은 메서드를 수정해서 사용하는 것이다.
    오버로딩은 추가를 계속하기 때문에 로딩이 길어진다 생각하면 되고,
    오버라이딩은 받은거 살짝 수정해서 고대로 go go 한다고 생각하면 될 듯하다.
    또, 객체변수 는 클래스 안에, 메서드 도 클래스 안에, 객체는 클래스에 의해서 클래스 밖에서 선언 된 것이다.
    그리고 소주병이라고 칭했던 매개변수 (parameter)는 다시 생각해보면 소주병보다는 컵이 좋을 것 같다.
    그리고 인자(arguments)는 정수기에서 나오는 물로 생각하면 더 나을 것 같다는 생각이 들었다.
    그래서 혼자 코드를 쳐보면서도 이게 매개변수고, 이게 메서드고 혼자 읊조리면서 하니 더 와닿았다.

  2. 콘솔 입력에 이렇게 많은 종류가 있고, 또 파일을 만들어 글을 적고, 글을 추가하고, 또 그 파일 내용을 콘솔에 출력까지 할 수 있다는 것을 알았다.
    그리고 무조건 출력은 System.out.~~로만 하는 줄 알았다.
    하지만 에러 메시지를 출력할 경우에는 System.err.~~로 한다고 한다.
    err로 출력하게 되면 콘솔에 빨간 글씨로 해서 출력이 된다.
    그리고 파일 입출력이 조금 헷갈리긴 한데 많이 쓸 일은 없을 것 같다.
    그래도 알아두면 좋으니 눈에만 익혀두면 좋을 것 같다.
    파일 입출력 또한 많은 종류가 있다.
    아래 다시 정리해보자면 아래와 같다.

    InputStream 아스키코드로 출력 / 1바이트만
    InputStreamReader 입력값 그대로 출력, 하지만 길이 선언해야함 / 객체 생성시 InputStream 필요
    BufferedReader 사용자 입력 모두 출력, 객세 생성시 InputStreamReader 필요
    Scanner next : 단어 1개 | nextLine : 한 라인 | nextInt : 정수


    System.out -> 일반적인 출력
    System.err -> 에러메시지 출력 (빨간 글씨로 출력됨)


    FileOutputStream 파일 생성 / 바이트 단위로 처리
    FileWriter 문자열 사용 / 줄바꿈 표시 \r\n 필수
    PrintWriter 줄바꿈을 println 메서드로 대체 / System.out 대신 PrintWriter의 객체명을 적음


    내용추가는 추가모드(새로운 객체 만들기) 열어서 파라미터에 true 추가하면 된다.
    하지만, PrintWriter는 파라미터로 FileWriter 객체 추가한다.


    파일 읽기는 FileInputStream 단독 사용할 수 있다. 하지만 FileInputStream는 바이트 배열을 이용해 파일을 읽는다.
    FileReader + BufferedReader 사용하는 방법은 라인 단위로 파일 읽기가 가능하다.

  1. 역시 혼자서는 무리라는 것을 알게 되었다.
    강의가 이해가 잘 되고 쏙쏙 들어왔다면 혼자서도 잘 할 수 있었을 것 같은데, 강의 자체가 너네 이거 다 알지? 자세한건 한번 너네가 찾아봐~ 하면서 코드 복붙, 복붙만해서 이해도 안됐었다.
    그래서 security라도 이해하자는 심정으로 점프 투 스프링부트의 security 부분을 보았는데, 어노테이션 하나하나 다 설명해주면서 하는 것 같았다.
    그리고 블로그 만드는 프로젝트를 하면서 설명하는 것을 보았으니, 혼자 하면서 시간 끌기보다 오늘 저녁부터 내일 저녁까지 저거 책 완강해서 이해하고 넘어가자.

조급하게 마음 먹지말고, 기초부터 단단하게 쌓아올리자.


📜 OOP 복습 정리

📜 OOP 퀴즈 GitHub

📜 콘솔입출력/Java

📜 콘솔입출력 퀴즈 GitHub

0개의 댓글