언어 자료구조 알고리즘/Escort C#

[C#] 7.3 설계한 내용 프로젝트에 옮기기 - 클래스 추가

언제나휴일 2016. 5. 3. 11:13
반응형

7.3 설계한 내용 프로젝트에 옮기기

 

클래스 추가

 이제는 앞에서 설계한 내용을 기반으로 프로젝트에 필요한 클래스를 추가하고 필요한 멤버를 추가해 보기로 합시다. 먼저, 설계 단계의 클래스 다이어그램에 해당하는 클래스를 프로젝트에 추가하시고 일반화 관계에 있으면 상속에 대해 표현하시기 바랍니다.


클래스 다이어그램

 캠퍼스 생활(CampusLife)은 단일체로 정의하기로 하였으니 이에 대해 표현을 합시다. 단일체를 표현하는 방법은 캡슐화의 생성자 항목에서 설명했으므로 별도의 설명은 하지 않겠습니다.

 

CampusLife.cs

namespace EX_CampusLife

{

    class CampusLife

    {

        static CampusLife singleton = new CampusLife(); //단일체 생성

        internal static CampusLife Singleton //단일체에 대한 정적 속성

        {

            get{     return singleton;    }

        }

        private CampusLife() //단일체로 구현하기 위해 private으로 접근 지정

        {

        }

    }

}

 프로젝트에 필요한 클래스를 추가하고 관계에 맞게 상속 및 단일체를 표현하였으면 이제 시퀀스 다이어그램을 보며 필요한 멤버를 추가하기로 합시다. 시퀀스 다이어그램에서 호출로 도식된 것은 호출 개체에서 피 호출 개체에 있는 멤버를 사용하는 것이기 때문에 피 호출 개체에 멤버를 추가하고 접근 지정을 internal로 지정하면 되겠죠. 이 프로그램 실습에서 시퀀스 다이어그램에서는 서로 다른 개체 사이에 호출만 표현하였기 때문에 앞으로 시퀀스 다이어그램에 약속한 호출에 해당하는 멤버는 모두 접근 지정을 internal로 하면 됩니다.

 

 먼저, 초기화 단계에서 캠퍼스와 장소들을 생성하는 시퀀스 다이어그램을 보시면 기본 생성자를 통해 개체를 생성하고 있으니 이들을 추가하기로 합시다. 다음은 Campus 클래스에 기본 생성자를 추가한 예제 코드입니다. 시퀀스 다이어그램에는 장소들을 생성하는 부분도 있으니 각 장소에도 같은 원리로 기본 생성자를 추가해야겠지요.

 

Class Campus

{

    internal Campus() //기본 생성자

    {

        throw new NotImplementedException();

    }

}

 

 초기화 단계에서 학생 생성하는 시퀀스 다이어그램을 보시면 학생 개체를 생성할 때 입력 인자로 학번과 이름을 입력 인자로 전달하고 있습니다. 이에 Student 클래스와 이를 기반으로 파생하는 클래스에 두 개의 입력 매개 변수를 갖는 생성자를 추가합시다. 그리고 생성한 개체를 캠퍼스 개체에 보내는 InStudent 호출은 Campus 클래스에 멤버 메서드로 추가하면 되겠죠.

 

class Student

{

    internal Student(int snum, string name) //생성자

    {

        throw new NotImplementedException();

    }

}

 

 다음은 CStudent 클래스에 생성자를 추가한 예제 코드입니다. CStudent Student를 기반으로 파생한 형식이고 기반 형식에 기본 생성자가 없으므로 base 키워드를 이용하여 생성자를 초기화해 주어야 할 것입니다. MStudent PStudent 클래스도 같은 방법으로 생성자를 추가해야겠지요.

 

class CStudent:Student

{

    internal CStudent(int snum, string name)

        : base(snum, name) //기반 형식 생성자 초기화

    {

        throw new NotImplementedException();

    }

}

 

 Campus 클래스에는 InStudent 멤버 메서드를 추가해야겠지요. 이제 Campus 클래스에는 기본 생성자와 InStudent 멤버 메서드를 캡슐화했어요.

 

class Campus

{

    internal Campus()

    {

        throw new NotImplementedException();

    }

    internal void InStudent(Student student)

    {

        throw new NotImplementedException();

    }

}


너와 나의 연결고리 "공감"

반응형