반응형

소스 코드 353

6.2.4 RawPostedPage 구현

6.2.4 RawPostedPage 구현 이번에는 수집한 원본 페이지 개체 클래스인 RawPostedPage 클래스를 구현합시다. 수집한 페이지 개체 가져오기 속성을 제공합시다. 설정하기 속성은 클래스 내부에서만 접근할 수 있게 제공합시다. public PostedUrl PostedPage { get; private set; } 편의를 위해 웹 페이지 주소 가져오기 속성을 제공합시다. public string Url { get { return PostedPage.Url; } } 수집한 페이지 내부의 링크 목록 가져오기 속성을 제공합시다. 설정하기 속성은 클래스 내부에서만 접근할 수 있게 제공합니다. public List Links { get; private set; } 생성자 메서드에서는 입력 인자로 받..

6.2.3 RawUrl 구현

6.2.3 RawUrl 구현 이번에는 수집 결과 형식인 RawUrl 클래스를 구현합시다. 수집 대상 개체를 가져오기 속성을 제공합니다. 설정하기는 내부에서만 사용할 수 있게 제공합니다. public Candidate CD { get; private set; } 수집 대상 개체를 수집한 결과 페이지 목록을 가져오기 속성을 제공합니다. 요청한 웹 페이지가 프레임 형태일 때는 수집 결과 페이지가 여러 개가 발생할 수 있어서 목록을 멤버로 설정하는 것입니다. 여기에서도 설정하기 속성은 클래스 내부에서만 접근하게 제공합니다. public List PostedPages { get; private set; } 생성자는 수집 대상 개체를 입력 인자로 받는 것을 앞에서 추가하였습니다. public RawUrl(Candi..

6.2.2 WebPageGetter 구현

6.2.2 WebPageGetter 구현 이번에는 웹 페이지를 수집하는 WebPageGetter 클래스를 구현합시다. class WebPageGetter { } 멤버 이벤트로 웹 페이지 수집 완료 이벤트가 필요합니다. 이 부분은 이미 WebCollect에서 설명하였습니다. internal event WebPostedEventHandler WebPosted = null; 웹 페이지를 수집하는 방법은 여러가지 방법이 있는데 여기에서는 WebBrowser 컨트롤을 사용할게요. 이를 위해 Windows.Windows.Forms.dll을 참조 추가가 필요합니다. 멤버 필드로 웹 페이지 수집에 필요한 WebBrowser 개체를 생성합시다. WebBrowser wb = new WebBrowser(); 수집 결과를 표..

6.2.1 WebCollect 구현

6.2.1 WebCollect 구현 이제 웹 로봇 라이브러리에 필요한 형식을 구현합시다. 먼저 관리자 응용인 WSE Manager로 웹 수집을 가동하거나 멈추게 하거나 수집 주기 등을 설정할 때 사용하는 WebCollect 형식부터 구현합시다. public class WebCollect WebCollect에서는 수집 주기와 상대적 깊이, 주기적인 수집을 위한 타이머가 필요합니다. 수집 주기의 최소값과 상대적 깊이의 최대값을 상수로 정의합니다. 그리고 타이머 개체를 참조할 멤버 필드를 선언하고 상대적 깊이를 설정할 멤버 필드를 선언합니다. 상대적 깊이의 초기값은 상수로 정의한 최대값으로 설정할게요. public const int min_interval = 5000; public const int max_d..

5. 4 DBM ForSearch 구현

5. 4 DBM ForSearch 구현 이제 검색 요청이 왔을 때 필요한 DBM ForSearch 라이브러리를 구현합시다. 이번에는 Windows Forms 응용 프로그램으로 예광탄을 먼저 만들고 난 후에 라이브러리를 만듭시다. 여기에서는 Search 시퀀스 다이어그램을 살펴보시고 이를 토대로 예광탄을 만들기로 합시다. 5.4.1 DBM ForSearch 예광탄 먼저 Windows Form 응용을 생성하세요. 프로젝트 명은 DBM ForSearch 예광탄으로 할게요. DBM ForSearch 예광탄의 메인 폼의 자식 컨트롤을 배치합시다. 형태소 이름을 입력받아 포함하고 있는 웹 페이지 주소와 참조 개수를 얻어오는 것을 테스트하기 위한 컨트롤들을 배치합니다. 특정 웹 페이지 주소에 포함하고 있는 전체 형태..

5.2.2 DBM ForAll 라이브러리 만들기

5.2.2 DBM ForAll 라이브러리 만들기 이제 예광탄에서 만든 EHDbmForAll 클래스로 DBM ForAll 라이브러리를 만듭시다. 만드는 방법은 클라스 라이브러리 템플릿으로 프로젝트 추가합니다. 그리고 제공하는 cs 파일의 이름을 EHDbmForAll로 변경한 후에 앞에서 작성한 EHDbmForAll 소스를 복사해서 붙여 넣습니다. EHDbmForAll에서는 WSE Core 라이브러리를 사용하므로 참조 추가하는 것을 잊지 마세요. 그리고 프로젝트 속성의 빌드 탭에서 XML 문서 파일 체크 박스를 체크하여 세 줄 주석 작성하는 것도 잊지 마시기 바랍니다. DBM ForAll 라이브러리는 예광탄으로 정상적으로 수행하는 것을 확인한 EHDbmForAll클래스로 만드는 것이라 별다른 추가 작업이 필..

[C# 소스] 클래스 간의 관계 - 1. 일반화(Generalization)관계

[C# 소스] 클래스 간의 관계 - 1. 일반화(Generalization)관계 음악가와 피아니스트와 같이 "피아니스트는 음악가이다."라는 논리적 관계를 형성하는 관계를 일반화 혹은 파생 관계(Derivation)라 합니다. 이와 같은 일반화 관계에 있을 때 기반이 되는 클래스에 정의되어 있는 멤버를 파생 클래스에서는 상속을 받게 되며 OOP의 중요한 특징 중의 하나라고 할 수 있습니다. using System; namespace 일반화_관계 { class Musician { public void Play() { Console.WriteLine("음악가 연주하다."); } } class Pianist:Musician { public void Tuning() { Console.WriteLine("조율하다...

[C# 제어문 실습] 다이아몬드 출력

[C# 제어문 실습] 다이아몬드 출력 //9. 입력한 정수의 높이에 맞게 다이아몬드를 출력 using System; namespace 반복문 { class Program { static void Main(string[] args) { int line = 0; line = int.Parse(Console.ReadLine()); int space = 0; int lcnt = 0; int star = 0; for (lcnt = 1; lcnt 0; space--) { Console.Write(" "); } for (star = 1; star =0; lcnt--) { for (space = line - lcnt; space > 0; space--) { Console.Write(" "); } for (star = ..

[C# 제어문 실습] 랜덤 수 맞히기(Low High)

[C# 제어문 실습] 랜덤 수 맞히기(Low High) //7. 컴퓨터는 1에서 100사이의 랜덤한 수를 갖습니다. 사용자는 10회 동안 컴퓨터가 갖고 있는 수를 맞추는 게임입니다. 매 회마다 사용자는 자신이 생각한 수를 입력하고 컴퓨터가 갖고 있는 수가 더 크면 "더 큽니다.", 작으면 "더 작습니다." 같으면 "축하합니다. 맞췄습니다."라고 메시지를 출력합니다. 그리고 틀렸을 때는 맞추거나 10회 동안 반복합니다. 만약 10회를 반복하였는데 못 맞추었을 때는 "실패하였습니다."라고 메시지를 출력합니다. using System; namespace 반복문{ class Program { static void Main(string[] args) { Random random = new Random(); int..

[C# 제어문 실습] 콘솔 응용프로그램에서 메뉴 선택하기

[C# 제어문 실습] 콘솔 응용프로그램에서 메뉴 선택하기 //6. 특정 프로그램의 메뉴로 F1은 회원 자료 추가, F2는 회원 자료 삭제, F3은 회원 자료 검색, F4는 전체 회원 자료 보기이며 ESC는 프로그램 종료입니다. 사용자로부터 메뉴를 입력받은 후에 F1~F4사이의 키를 입력하면 어떠한 메뉴를 선택하였는지 출력하고 ESC이며 프로그램을 종료하고 그 외의 키를 입력하면 "잘못 선택하였습니다." 메시지를 출력합니다. 그리고 ESC를 입력하지 않았을 때는 위 과정을 반복합니다. 이와 같은 프로그램을 작성하시오. using System; namespace 반복문{ class Program { static void Main(string[] args) { ConsoleKey key = ConsoleKey..

반응형