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

[C#] 7.3 설계한 내용 프로젝트에 옮기기 - 학생 이동

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

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

 

학생 이동



학생 이동 시퀀스 다이어그램

[그림] 학생 이동 시퀀스 다이어그램


 이제 학생 이동 시퀀스 다이어그램에 약속된 호출들을 추가해 봅시다.

 

 해당 시퀀스 다이어그램을 보면 캠퍼스 클래스에는 학생의 수를 반환하는 GetStuCount GetStuInfo, GetStudent 메서드를 추가하면 되겠죠. 그런데, GetStuCount는 멤버 속성으로 하면 어떨까요? 그리고 GetStudent를 인덱서로 하면 어떨까요? 어떠한 것으로 하더라도 큰 문제가 되지 않지만, C# 언어에서 제공하는 문법적 요소의 특징을 고려한다면 변경하는 것이 나을 것 같습니다.

 이처럼 개발 과정에서 이전 단계들에서 약속한 것을 수정하기를 원한다면 약속한 문서를 반드시 수정하는 것을 잊지 마시기 바랍니다. 실제 개발에서도 각 개발 공정을 완벽하게 마무리하고 다음 단계로 넘어가겠다는 것은 굉장히 위험하고 비용이 막대하게 들 수 있습니다. 될 수 있으면 각 개발 공정에서 해야 할 작업을 명확하고 정확하게 해 나가야겠지만 이후 공정에서 이전 공정에서 약속한 것보다 더 나은 것을 발견하게 되면 이에 관한 토론을 거쳐 수정할 것인지를 판단하는 것이 좋습니다. 그리고 수정하기로 했다면 반드시 문서에 반영하시기 바랍니다. 만약, 수정하기로 개발자 사이에 구두로 약속하고 문서에 반영하지 않고 작업을 진행하면 이후에 누가 약속에 맞게 한 것인지에 대한 논쟁때문에 충돌이 발생할 수 있습니다. 이에 약속이 수정되었다면 문서도 이를 반영하는 것이 바람직합니다


수정한 학생 이동 시퀀스 다이어그램

[그림] 수정한 학생 이동 시퀀스 다이어그램


 수정한 시퀀스 다이어그램을 바탕으로 Campus 클래스에 세 개의 멤버를 추가합시다.

 

class Campus

{

    internal int StuCount //학생 가져오기 속성 제공

    {

       get

       {

           throw new NotImplementedException();

        }

    }

    internal Student this[int snum] //인덱서

    {

        get

        {

            throw new NotImplementedException();

       }

    }

    internal Campus()

    {

        throw new NotImplementedException();

    }

    internal void InStudent(Student student)

    {

       throw new NotImplementedException();

    }

    internal string GetStuInfo(int nth)

    {

        throw new NotImplementedException();

    }

}

  

 그리고 학생 이동 시퀀스 다이어그램을 보면 Place에는 ToString 메서드와 InStudent 메서드를 추가하면 되겠네요. ToString object 클래스에 가상 메서드로 정의된 것이므로 재정의해야겠지요. Place에서 파생된 각 장소에도 ToString 메서드를 재정의하세요.

 

class Place

{

    internal Place()

    {

        throw new NotImplementedException();

    }

    internal void InStudent(Student student)

    {

        throw new NotImplementedException();

    }

    public override string ToString() //재정의

    {

        throw new NotImplementedException();

    }

}

 

 Student에도 ToString 메서드를 재정의하고 Num 속성의 get 블록을 추가합시다.

 

class Student

{

    internal int Num //학생 번호 속성 가져오기 제공

    {

        get

        {

            throw new NotImplementedException();

        }

    }

    internal Student(int snum, string name)

    {

        throw new NotImplementedException();

    }

    public override string ToString() //재정의

    {

        throw new NotImplementedException();

    }

}

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

반응형