포스트

2021-01-15-TIL

객체지향 설계

메시지와 결합도, 응집도

객체를 호출하는것은 메시지를 보내는 것이다.

Low coupling, high cohesion

유지보수하기 쉬운 코드의 기준으로 자주 언급되는 원칙이다. 결합도는 모듈끼리 얼마나 서로에게 의존하는지를 말한다. 한 모듈이 다른 모듈의 내부 동작을 너무 많이 알면 그 모듈의 내부가 바뀔 때 함께 깨지므로, 모듈은 가능한 한 서로 독립적이어야 한다. 응집도는 한 모듈 안의 요소들이 얼마나 함께 속해 있는지를 말한다. 관련된 코드가 한곳에 모여 있으면 그 모듈이 맡은 기능을 찾고 고치기 쉽다. 참고한 글은 문제를 고칠 때 몇 개의 모듈을 건드려야 하는지 스스로 물어보라는 『실용주의 프로그래머』의 기준을 함께 인용한다.

다형성으로 바꿀 부분

좌표 입력 예시:

1
(10,10)-(22,10)-(22,18)-(10,18)

TODO: 다형성을 적용하여 변경, 입력에 따라서 각 클래스의 메소드가 호출되도록

점 네 개는 사각형(quadrilateral)을 이룬다. 사각형은 네 변을 가진 닫힌 평면 도형이고, 변과 각이 모두 같은 정사각형만이 정다각형이다. 입력된 점의 개수와 모양에 따라 서로 다른 도형 클래스의 메서드가 호출되도록 바꾸는 것이 TODO의 내용이다.


Git

Hello World

GitHub Guides의 Hello World는 저장소를 만들고, 브랜치를 만들어 커밋하고, Pull Request를 열어 병합하는 기본 흐름을 따라가는 튜토리얼이다.


완성보다 과정

실제 프로젝트에서 프로그램의 완성 은 중요하다. 하지만 그 완성이 일회성은 아니므로 길게 보아야한다. 예를 들어, 과제의 수행을 위해서 이미 완성된 누군가의 코드를 블로그에서 ctrl+c, ctrl+v해서 완성은 할 수 있다. 하지만 이렇게 완성했을 때 다음번에 비슷하지만 다른 과제에서 오롯이 내 역량으로만 도움없이 해낼 수 있을까? 그때에도 붙여넣기할 코드가 어딘가에 있을거라고 믿는 것은 어리석은 일이다. 결국 그 블로그의 글 또한 누군가가 끊임없는 삽질과 시간을 투자한 결과물이다. 그 과정에서 ‘역량’의 향상이 이루어지는 것이지, 완성에서 그것이 키워지진 않는다.

노력의 결과는 사용자에게 직접적인 영향을 끼치지만, 그 노력의 과정은 개발자에게 직접적으로 영향을 끼친다. 즉, 더 나은 개발자로의 성장의 밑거름은 바로 그 노력, 삽질인 것이다.


도구와 자료

맥 UML 도구

맥에서 쓸 수 있는 UML 도구 목록을 찾아봤다. IntelliJ에서는 별도 도구 없이 Diagrams 메뉴의 Show Diagrams로 클래스 다이어그램을 볼 수 있다.

육각형 그려놓고 역량 표시해보기

수업내용정리 by Woody

수업 내용을 정리한 Notion 페이지를 받아 두었다.


자바 이름 짓기와 형 변환

자바 메소드명

Java는 표준 패턴을 따르는 것이 좋은 관례가 되는 언어라서 메서드 이름에도 관례가 있다. Java Tutorials의 Date-Time API 장은 접두어별 의미를 표로 정리해 둔다. of는 입력을 검증해 인스턴스를 만드는 정적 팩토리, from은 입력을 대상 클래스로 변환하는 정적 팩토리(정보가 손실될 수 있다), parse는 문자열을 파싱하는 정적 팩토리, format은 포매터로 문자열을 만드는 인스턴스 메서드다. Date-Time API의 클래스는 대부분 불변이라 set 메서드가 없다.

Integer to Char in Java

int 값을 char로 바꾸는 방법을 찾았다.

Double to Integer in Java

double을 int로 바꾸는 방법은 두 가지다. (int) 3.6987처럼 캐스팅하면 소수점 아래가 버려져 3이 된다. Math.round()는 가장 가까운 long 값으로 반올림하므로 4가 되고, 이를 다시 int로 캐스팅한다.


그 밖의 메모

영화 추천

내 이름은 칸, 루틴

참고한 자료외부 출처 13

외부 출처

이 글은 저작권자의 CC BY 4.0 라이선스를 따릅니다.

댓글

아직 댓글이 없습니다