4. 5 RankedUrl 클래스 구현

검색 요청이 오면 랭커는 검색 결과에 점수를 부여하여 점수 순으로 정렬한 결과 컬렉션을 제공합니다. 이 때 검색 결과를 RankedUrl 형식으로 표현합시다.

Search 시퀀스 다이어그램에서 RankedUrl 형식이 있는데 멤버로 수집한 웹 페이지와 점수를 갖고 있어야 합니다.

RankedUrl에는 PostedUrl 개체 정보를 멤버 필드로 갖고 멤버 속성으로 이를 참조할 수 있게 제공합시다.

PostedUrl postedurl;
public PostedUrl PUrl
{
    get
    {
        return postedurl;
    }
}

그리고 웹 사이트 주소를 참조할 수 있는 속성을 제공합시다. 웹 사이트 주소는 따로 기억할 필요는 없습니다. 멤버 개체인 postedurl의 Url 속성을 반환합니다. 물론 개체가 없을 때는 string.Empty를 반환합시다.

public string Url
{
    get
    {
        if (postedurl != null)
        {
            return postedurl.Url;
        }
        return string.Empty;
    }
}

평가 점수를 가져오기와 설정하기가 가능한 속성을 추가하세요. 그리고 기본 생성자와 정보를 입력 인자로 받는 생성자도 추가합시다. 마지막으로 ToString 메서드를 재정의합니다. ToString 메서드에서는 postedurl 개체의 제목을 반환합시다.

▷RankedUrl.cs

using System;
 
namespace WSE_Core
{
    /// <summary>
    /// 순위화한 페이지
    /// </summary>
    [Serializable]
    public class RankedUrl
    {
        PostedUrl postedurl;
        /// <summary>
        /// 수집한 페이지
        /// 가져오기
        /// </summary>
        public PostedUrl PUrl
        {
            get
            {
                return postedurl;
            }
        }

        /// <summary>
        /// 사이트 주소
        /// 가져오기
        /// </summary>
        public string Url
        {
            get
            {
                if (postedurl != null)
                {
                    return postedurl.Url;
                }
                return string.Empty;
            }
        }

        /// <summary>
        /// 평가 점수
        /// 가져오기 및 설정하기
        /// </summary>
        public double Score
        {
            get;
            set;
        }

        /// <summary>
        /// 기본 생성자
        /// </summary>
        public RankedUrl()
        {
            postedurl = null;
            Score = 0;
        }

        /// <summary>
        /// 생성자
        /// </summary>
        /// <param name="purl">수집한 페이지</param>
        /// <param name="score">평가 점수</param>
        public RankedUrl(PostedUrl purl,double score)
        {
            postedurl = purl;
            Score = score;
        }

        /// <summary>
        /// ToString 재정의
        /// </summary>
        /// <returns>페이지 제목</returns>
        public override string ToString()
        {
            if (postedurl == null)
            {
                return string.Empty;
            }
            return postedurl.Title;
        }
    }
}