Til Home

2020-05-21-TIL

Fact

  • 오늘 프로그래머스에 있는 ”단어 변환” 문제를 다른 사람들의 풀이 방법을 참고해서 풀어 봤다. 다른 사람들의 풀이 방법에서 bfs를 써서 풀어서 나도 bfs를 써서 풀어봤다. bfs를 쓰니 5개 중 4개가 통과가 됐다. 하나는 에지 케이스인 것 같은데 아니나 다를까 질문하기에 그 케이스에 대한 질문들이 많았다. 질문들을 흝으면서 통과 되게 했던 테스트 케이스를 써서 내 코드에 적용했다. 적용한 것을 다 통과했는데도 안돼서 그냥 다른 사람들의 풀이를 보고 마무리 지었다.
  • 알고리즘을 푼 후에 ”가장 빨리 만나는 코어 자바 9” 2장인 객체 지향 프로그래밍을 읽었다. 이것을 읽고 어제 Java로 만들었던 프로젝트를 객체 지향적으로 만들어 봤다. 일단 todo list의 모든 기능들을 한 class에 넣은 것을 분리했다. command class 안에 있는 명령어 script, Choice class 안에 있는 System input에 따른 결과들, 그리고 todo Class 안에 todolist와 그 역할들, 그리고 마지막으로 todoAppClass라는 main 파일로 나눴다.

Feeling

  • 에지 케이스 찾느라 내 머리털 다 뽑힐 것 같다. 프로그래머스에서 문제 풀 때 하나 빼고 다 통과될 때 진심 화가 난다. 부들부들.
  • 객체 지향적으로 살려고 노력을 하였으나 제대로 짠지 모르겠다.
  • 2장 내용이 뭔 말인지 모르겠다. 뭔 소리인지 하나도 못 알아듣겠다. 예를 들어 정적 메서드 pow는 왜 정적 메서드로 선언하는지의 이유를 ”pow 메서드를 호출하려고 Math 객체를 생성해야 했을 것이다”라고 하는데 Math.pow 하는 순간 pow가 Math 안에 있다는 말이고 그럼 Math 가 이미 생성됐다는 말이 아닌가????? 그 외에도 이해 안 가는 게 많다.

Findings

  • 객체마다 자신만의 상태가 있다.
  • 캡슐화는 객체의 메서드를 호출할 때는 내부에서 무슨 일이 일어나는지 몰아도 되는 원칙이다.
  • 자바에서 같은 동작을 하는 객체를 생성하고 사용하는 메커니즘인 클래스를 만들어 공유 및 제공한다.
  • 호출되는 객체를 변경하는 메서드를 변경하라고 한다.
  • 변수에는 오직 객체 참조만 담을 수 있다.
  • 객체가 참조가 없ㅂ으면 나중에 가비지 컬렉터가 메모리를 정리해서 그 메모리를 재사용 할 수 있게 한다.
  • 자바에서 인스턴스 변수로 객체의 상태를 나타낸다.
  • 클래스의 인스턴스에 작동하는 메서드를 인스턴스 메서드라고 한다.
  • final로 줘서 최종 인스턴스 변수로 설정해서 한 번만 설정되게끔 만들 수 있다.
  • 초기화 작업이 필요할 때 정적 초기화 적업을 하는 정적 초기화 블록 안에 넣을 수 있다.
  • 팩토리 메서드는 새 인스턴스를 반환하는 정적 메서드를 의미한다. 클래스의 메서드를 변수에 저장해서 쓰는 말인 것 같다.
  • 자바에서 패키지를 선언할 수 있는데 이것을 하는 이유는 class가 동일한 이름을 가지고 있을 수 있으니 구분하기 위해서 패키징을 해서 같은 이름의 class를 바꿀 수 있다.

Future action

  • 에지 케이스 찾는 것도 좋지만 딱히 중요하지 않다고 보이면 그냥 빨리 넘기고 다른 것을 풀던가 다른 사람 풀이를 봐서 시간 낭비를 줄이도록 하자.
  • 책을 읽고 이해를 못 했다면 다시 한번 읽어보는 것도 괜찮을 것 같다. 아니면 오래 걸리더라도 하나씩 인터넷으로 찾아가면서 이해될 때까지 정보를 수집해보도록 하자.

Feedback