본문 바로가기

개발15

캡슐화란 무엇인가? 어떤 이점이 있는가? 객체지향을 공부하면 처음부터 귀에 못이 박히도록 듣는 단어가 있다. 바로 캡슐화다. 캡슐화가 도대체 뭐고, 이게 왜 중요한 요소일까? 일단 위키를 보도록 하자 캡슐화(영어: encapsulation)는 객체 지향 프로그래밍에서 다음 2가지 측면이 있다: 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다. 그래, 캡슐화는 객체의. 속성과 행위를 하나로 묶고 구현 내용을 외부에 감춘다는 것, 알겠다. 그래서 뭐 어쩌라는건가? 이게 왜 중요한가?? 이에 대한 답을 한번 찾아가 보도록 하자. 위키의 정의에 따르면, 캡슐화는 클래스 안에다가 데이터와 데이터를 처리하는 행위를 묶어 놓는 것 이라고 말할 수 있다. 사실 객체지향을 처음 .. 2021. 2. 18.
디미터의 법칙(Law of Demeter)이란 뭘까? 그리고 왜 지켜야 할까? 클린코드를 읽으면서 디미터의 법칙이라는 것을 처음 접했었다. 당시에는 그냥 읽으면서, 기차충돌(Message Chains) 코드를 피하면 좋다는 건가? 라는 식으로 이해하고 넘어갔다. 왜 지켜야 하는지에 대한 진지한 고민을 못해본 것 이다. 최근 최범균님의 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴 을 읽고 디미터의 법칙에 대한 인사이트를 얻었다. 일단, 디미터의 법칙이 뭔지부터 알아보자. 위키피디아에 의하면 아래와 같이 디미터의 법칙을 설명하고 있다. ... In its general form, the LoD is a specific case of loose coupling. ... Each unit should have only limited knowledge about other units.. 2021. 2. 18.
알고리즘 문제는 Stream을 사용해서 풀면 안되는 걸까? 알고리즘에 대한 감을 잃지 않기 위해 문제를 꾸준히 풀어가는 중이다. 기존에는 레거시 자바문법을 이용해서 풀어냈다면, 요즘은 모던 자바의 기능들을 활용해서 문제를 풀어나가고 있다. 그 중 가장 많이 사용하는 기법은 Stream을 이용하는 것인데, 이게 참 문제가 많은 것 같다... 백준의 2580 스도쿠 문제를 보자 www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 스도쿠 해답을 찾는 간단한 문제이다. 이전에 풀어본 경험이 있는데 소스가 많이 더러워서 깔끔하게.. 2021. 2. 17.
PDF 번역을 쉽게 하자! Make Sentence for Translator 석사생활을 하면 참 여러 논문을 읽어야 한다. 가능하면 원문을 읽으려고 노력하지만, 계속 논문을 읽다보면 논문의 내용을 이해하는것 보다 영어를 많이 읽음으로 인해 쌓이는 스트레스가 많은 것 또한 사실이다. 그러다보면 어쩔 수 없이 번역기에 의존하게 되는데, pdf를 번역은 상당히 성가시다. 실제로 논문 일부를 복사한 뒤 붙여넣기 해 보았다. 그러면 내용이 개판으로 번역된다. 이러한 이유는 간단하다. pdf 문서에 줄바꿈이 있을 경우, 하나의 문장이 둘로 쪼개지는 현상이 있기 때문이다. 위 사진에서만 봐도 처음 문장의 that절 아래가 줄바꿈되면서 다른 문장으로 인식되어 번역이 이상해 졌다. 이를 해결하기 위해서는 잘린 저 문장들을 하나로 이어줘야 하지만 이는 정말 고통스럽고 화나는 작업이다. 그래서 이런.. 2021. 1. 21.