8월, 2021의 게시물 표시
{{ label!='' ? 'Label : ' : (q!='' ? '검색 : ' : '전체 게시글') }} {{ label }} {{ q }} {{ ('('+(pubs|date:'yyyy-MM')+')') }}

[Java] 자바로 프로그래밍 입문하기: 3.3. 자료형 설계하기 (4)

이미지
응용프로그램: 데이터 마이닝(data mining)   이번 절에서 논의된 몇몇 개념들을 응용프로그램의 문맥에서 좀 더 설명하기 위해, 우리는  데이터 마이닝 의 어려운 과제를 해결하기에 중요한 소프트웨어 기술에 대해 알아볼 것입니다.  데이터 마이닝 은 웹에서 모든 사용자가 접근할 수 있는 아주 많은 정보들을 검색하는 절차를 기술할 때 널리 쓰이는 용어입니다.    이 기술은 웹 검색 결과의 질적 향상을 극적으로 꾀할 수 있게 만듭니다. 멀티미디어 정보 검색, 바이오메디컬 데이터베이스, 표절 검사, 게놈 연구, 상업 응용프로그램에서의 혁신, 범죄자의 프로파일링 등 다양한 목적으로 사용될 수 있죠. 따라서 아주 주목 받는 분야 중 하나이며, 데이터 마이닝에 대한 연구도 활발히 이루어지고 있습니다.   여러분은 여러분의 컴퓨터에 있는 수천 개의 파일에 직접 접근할 수 있습니다. 또한 웹에 있는 수십억 개의 파일에 우회적으로 접근할 수 있죠. 이 파일들은 아주 다양합니다: 상업 웹 페이지도 있고, 음악과 영상, 이메일, 프로그램 코드 등 다양한 정보를 담고 있죠. 간단하게 생각해보기 위해, 우리는 텍스트 문서에만 집중하도록 합시다.(물론 우리가 고려할 방법은 사진, 음악 등의 파일에도 잘 적용해볼 수 있습니다)    텍스트 문서에만 집중함에도, 여전히 수많은 종류의 문서들이 존재할 것입니다. 우리의 관심은 문서를 특성화하기 위해  콘텐츠 를 사용하여 파일을 검색하는 효율적인 방법을 찾는 것입니다. 이 문제에 대한 생산적인 접근법 중 하나는, 콘텐츠의 기능인  프로필 (profile)이라고 하는 벡터와 각 문서를 연관시키는 것입니다. 이는 곧, 프로필은 문서를 특성화해야 하며, 따라서 문서는 서로 다른 프로필을 가지고, 비슷한 문서는 비슷한 프로필을 가져야 한다는 것입니다.  텍스트 문서들   여러분은 아마 이 접근법이 소설과 자바 프로그램, 게놈 사이를 구별할 수 있게 만들어준다는 사실이 별로 놀랍진 않겠지만, 콘텐츠 검색이 소설들의 작가가 서로 다르다는 사실을

[Java] 자바로 프로그래밍 입문하기: 3.3. 자료형 설계하기 (3)

이미지
 상속(Inheritance)   자바에서는 객체 간의 관계를 정의할 수 있습니다. 바로 상속 입니다. 소프트웨어 개발은 이 메커니즘을 널리 사용하며, 여러분이 소프트웨어 공학에 관심이 있다면 자세히 알아야 하는 부분 중 하나입니다. 이러한 메커니즘을 효과적으로 활용하는 방법에 대한 것은 이 강의의 범위를 벗어나지만, 어차피 여러분들이 곧 직면하게 될 요소이므로 간단하게 설명하려고 합니다. 인터페이스(Interfaces)   인터페이스는 관련되지 않은 클래스들 간의 관계를 명세하는 메커니즘입니다. 구현 클래스(implementing class)는 반드시 포함해야 하는 메소드들이 존재하죠. 우리는 이를 인터페이스 상속이라고 말합니다. 구현 클래스는 API에 없는 메소드를 인터페이스로부터 상속 받기 때문입니다. 이러한 방식은 우리에게 다양한 자료형의 객체를 다룰 수 있는 클라이언트 프로그램을 작성할 수 있게 합니다. 인터페이스의 메소드를 호출하기만 하면 되죠. 새로운 프로그래밍의 개념들을 접하면 처음엔 혼란스럽긴 하겠습니다만, 계속 예제를 보다보면 감이 올 것입니다. Comparable   여러분이 접하기 쉬운 인터페이스 중 하나는 자바의 Comparable 입니다. 다음에 기술될 API인 compareTo() 메소드를 통해서 자료형의 자연 순서(natural order)를 연관 짓는 인터페이스입니다. 자바의 Comparable 인터페이스 API   <Key> 부분은 4.3절에서 다뤄볼 표현법이며, 비교가 될 두 객체가 같은 자료형임을 보장하는 것입니다. a와 b가 같은 객체라는 전제 하에, a.compareTo(b)는 반드시 다음을 반환합니다: b보다 작으면 음수 b보다 크면 양수 b와 같으면 0   추가적으로, compareTo() 메소드는 일관성을 지녀야합니다: 예를 들어, a가 b보다 작다면, 반드시 b는 a보다 커야합니다. Comparable 인터페이스를 구현하는 클래스(String, Integer, Double 등)은 compareTo() 메