OOP (항해일지 6일차)

김형준·2022년 5월 14일
0

TIL&WIL

목록 보기
6/45
post-thumbnail

1) 학습일지

오전에는 자바 알고리즘 13번까지 풀었다.
문제 중 특정 날짜 간의 기간을 구하는 코드가 필요해서 ChronoUnit을 사용했다. Period와 달리, 기간 전체의 between days를 리턴해준다.
Docs:https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html

오후에는 OOP 관련 기술 문서를 읽어보며, 깊이있는 접근을 시도했다.
가장 본질적인 정보는 아래와 같다. (앨런케이는 OOP의 선구자라고 한다😉)

앨런 케이는 세포와 컴퓨터 네트워크에서 영감을 받아 객체 지향의 아이디어를 생각해냈다.
자기 데이터를 숨긴 독립된 객체들이, 메시지 소통을 통해서 소프트웨어를 구성하는 방식이었다.

앨런 케이는 객체 지향 프로그래밍의 본질이 메시징, 캡슐화, 동적 바인딩이라고 생각했다.

OOP의 선구자인 엘런 케이의 초창기 아이디어에는 OOP의 핵심이라고 할 수 있는 캡슐화, 메시징, 동적 바인딩의 개념이 담겨있었다.

아래는 개인적인 생각으로 틀릴 수 있습니다. 틀릴 시 댓글로 지적해주시면 감사히 받겠습니다 😅

내가 이해한 바로는,

  • 메시징은 객체와 객체 간 서로 주고 받는 것으로, 메서드 호출에 해당한다. 다만 이러한 메시지는 다른 객체의 정보에 접근할 수도 없을 뿐더러, 그저 특정 기능을 요청할 뿐, 어떻게 하라는 구체적인 방법까지 보내지는 않는다.
  • 이러한 원리는 캡슐화로 이어진다.
    • 쉽게 예를 들자면 매점의 주인과 손님을 생각해봤을 때,
    • 매점 주인은 손님에게 판매 물품의 돈을 요구하지만,(메시징) 손님이 그 돈을 지갑에서 현금을 꺼내든, 카드를 꺼내든, 옆에있는 친구에게 빌리든 어떠한 관여도 하지 않는다. 그저 특정 기능(메서드, 여기에서는 돈을 지불하세요~) 라는 메시징을 할 뿐이다.
    • 즉 객체는 상호 간의 속성 정보나, 메서드 정보에 대해 알지 못하고 (private 접근 제어자를 붙인 멤버 변수), 이를 캡슐화라고 한다.(Encapsulation)
  • 또한 메시지를 받는 객체는 그때 마다 달라질 수 있다는 점에서 동적 바인딩이라고 할 수 있다.

이어서 알고리즘 주차 시작일에 제공되었던 알고리즘 강의를 들었다.
그동안은 어떻게든 구현되는 코드 작성에 초점을 두었으나, 강의를 들으며 점근 표기법 ( 그 중 최악의 상황에서의 성능을 나타내는 빅오표기법)을 배우며 성능적 측면에서의 접근도 한번 더 고려하게 되었다.

GitHub 알고리즘 풀이 업로드 링크
파이썬 알고리즘: https://github.com/Kim-HJ1986/algorithm_Python
자바 알고리즘: https://github.com/Kim-HJ1986/algorithm_Java

2) 소소한 이슈

오늘의 소소한 이슈는 알고리즘을 풀며 그때 그때 주석처리하여 작성했다.
소소하게 많이 작성하여 깃허브 링크로 대체...

3) 코멘트

알고리즘 주차 답게 풀어야 할 알고리즘 문제들이 넘쳐난다.
이번 주의 초점은 OOP 개념의 깊이있는 이해와 알고리즘 개념 및 풀이에 익숙해지는 것이다. 즉, 향 후 프로그래밍에 있어 기본기를 다지는 주차라고 생각한다. 항해 선원에게 주말은 없기에... 내일도 화이팅!!!!!

profile
BackEnd Developer

0개의 댓글