이전 포스팅 [ JAVA ] Arrays.sort()의 내부 동작(2) 이전 포스팅 https://javanitto.tistory.com/6 [ JAVA ] Arrays.sort()의 내부 동작(1) 개요 알고리즘 공부를 하다 Arrays.sort()와 Collections.sort()의 내부는 어떤 정렬을 사용하는지 궁금해졌다. 공부한 결과.. javanitto.tistory.com 개요 지금까지 알아본 바에 의하면 Java에서는 배열에 대한 정렬 메서드인 Arrays.sort 제공하는데, 인자로 넘기는 배열의 타입에 따라 내부적으로 알고리즘을 달리했다. 원시타입 배열을 인자로 넘겼을 때는 DualPivotQuickSort.sort를 사용했고 Object타입 배열을 넘겼을 때는 TimSort를 사용했다..
이전 포스팅 [ JAVA ] Arrays.sort()의 내부 동작(1) 개요 알고리즘 공부를 하다 Arrays.sort()와 Collections.sort()의 내부는 어떤 정렬을 사용하는지 궁금해졌다. 공부한 결과부터 말하자면 Arrays.sort는 인자의 타입이 원시타입(PrimitiveType) 인 경우에는 Dual javanitto.tistory.com 개요 저번 포스팅에서는 원시타입(Primitive type)배열을 정렬할 때 사용되는 자바의 기본정렬인 DualPivotQuicksort.sort()에 대해 알아보았다. 이번엔 Object타입의 배열을 정렬할 때 사용되는 TimSort.sort()를 알아보자. java.util.Arrays.sort(:Object[]) String 배열을 인자로 A..
개요 지금까지 자연스럽게 사용한 단어들이 있다. 책임, 위임 그리고 협력이 오늘 배울 주제이다. 객체지향적으로 생각하고 설계를 하기 위해서는 꼭 배워야할 중요한 개념이다. 책임 객체지향 설계원칙중에는 단일책임원칙(SRP)이 있다. 모든 클래스는 하나의 책임만 가져야한다. 또는 클래스를 변경하려는 이유는 하나여야 한다고도 한다. 필자가 학교에서 배울 때 이 책임이라는 말이 와닿지가 않았었다. 책임이 무엇이길래 하나만 가져야하고 클래스를 변경하려는 이유라는 말은 또 무엇인가? 책임은 클래스가 책임져야 할 능력이다. 카페의 바리스타를 예로 들어보자. 바리스타가 가져야 할 능력은 우선 커피를 만들 수 있어야 한다는 것이다. 또 커피에 대한 설명을 할 수 있어야 하고, 크기가 작은 카페라 서빙까지 해야한다고 해보..
메시지 전송(메시징) JAVA에서 메시징은 C에서의 함수호출과 비슷하다. 메시징의 의미는 객체가 또 다른 객체의 인터페이스를 통해 어떠한 행위를 하라고 명령하는 것으로 필요하다면 데이터를 담아서 보낼 수도 있다. 여기서 말하는 인터페이스는 JAVA의 interface키워드를 말하는 것이 아니라 객체 간의 소통을 가능하게 해주는 public method를 뜻한다. 왜 메시징을 보내야 할까? 한 클래스 안에서 다 해결하면 안 되는 것인가? 물론 다들 답을 알고 있을 것이다. SOLID의 SRP원칙에 의해 하나의 클래스는 하나의 책임만 갖도록 설계해야 한다. 그렇기 때문에 자신이 못하는 것을 누군가 대신 해주 길 원할 때, 그것을 해줄 수 있는 객체에게 메시징을 하는 것이다. 덧붙이자면 이것을 행위의 책임을 ..