연습문제 (3)

단국대학교 멀티미디어공학전공 HCI프로그래밍 II (2009년 가을학기) 연습

□ 단원 : C# 기초

□ 목표 : C# 객체지향 프로그래밍

□ 주요 연습 내용 : class, 속성, 상속, 다형성, ArrayList 연습

□ 준비자료 : Person.cs Student.cs PersonList.cs

연습문제 Ex3 (Due by 10/8 목 24시까지)

-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC# file, 보고서를 학번_이름_Ex3.zip으로 묶어서 낼 것. 보고서 (30%)

[연습문제]

1. Person 클래스를 정의하라 (그리고, Person.cs 파일로 저장한다). (10%)

Person 클래스는 이름, 아이디, 전화번호, 주소를 데이터 멤버로 포함한다.

- protected string name;

- protected int id;

- protected string phone;

- protected string address;

각 멤버 필드에 대한 속성(Property)를 지정하여 외부에서 사용할 수 있도록 한다.

- public string Name { get; set;}	// get과 set에 대한 내부정의 필요

- public int ID { get; set;}

- public string Phone { get; set;}

- public string Address { get; set;}

그리고 메소드는 다음을 포함한다.

- Person()	// 기본 생성자

- Person(string, int, string, string)	// 형변환 생성자

- Person(const Person)	// 복사 생성자

- void Print() // Person의 이름, 아이디, 전화번호, 주소를 출력

2. Person 클래스에서 상속받은  Student 클래스를 정의하라 (그리고, Student.cs 파일로 저장한다). Student 클래스에서는 국어, 영어, 수학 점수와 학점이라는 멤버 필드를 추가로 가지고 있다. (10%)

- private int kor;

- private int eng;

- private int math;

- private Grade grade;

각 멤버 필드에 대한 속성(Property)를 지정하여 외부에서 사용할 수 있도록 한다.

- public int Kor { get; set;}	// get과 set에 대한 내부정의 필요 (value가 0~100인경우만 set이 가능하도록 함)

- public int Eng { get; set;}

- public int Math { get; set;}

그리고 멤버 함수는 다음과 같은 기능을 한다.

- public Student();	// 기본 생성자

- public Student(string int, string, string, int, int, int); // 형변환 생성자

- public Student(const Student);	// 복사 생성자

- public override void Print();	// Student의 이름, 아이디, 전화번호, 주소, 학점

- public int GetTotal();	// Student의 국어,영어,수학점수의 합을 돌려줌

- public int GetAverage();	// Student의 국어,영어,수학점수의 평균을 돌려줌

- public Grade GetGrade();	// Student의 평균을 이용하여 학점을 돌려줌 (Ex1과 동일)

3. Person 클래스에서 상속받은  Faculty 클래스를 정의하라 (그리고, Faculty.cs 파일로 저장한다). Faculty 클래스에서는 국어, 영어, 수학 점수와 학점이라는 멤버 필드를 추가로 가지고 있다. (10%)

- private string department;

각 멤버 필드에 대한 속성(Property)를 지정하여 사용할 수 있도록 한다.

- public string Department { get; set;}	// get과 set에 대한 내부정의 필요 (value가 0~100인경우만 set이 가능하도록 함)

그리고 멤버 함수는 다음과 같은 기능을 한다.

- public Faculty();	// 기본 생성자

- public Faculty(string int, string, string, string); // 형변환 생성자

- public Faculty(const Faculty);	// 복사 생성자

- public override void Print();	// Faculty의 이름, 아이디, 전화번호, 주소, 소속

- public string GetDepartment();	// Faculty의 소속을 돌려줌

4. PersonList 클래스의 Main 함수에서는 Person, Student, Faculty 객체를 각각 5개 이상을 ArrayList pArray에 Add하고 난 후 Insert, Remove, RemoveAt을 사용하여 자료를 추가하거나 뺀 후, pArray에 있는 모든 정보에 대해서 Print 출력한다. (20%) http://msdn.microsoft.com/en-us/library/system.collections.arraylist(VS.71).aspx

- for 문을 사용하여 5명 이상 Person 를 입력받음

- for 문을 사용하여 5명 이상 Student 를 입력받음

- for 문을 사용하여 5명 이상 Faculty 를 입력받음

- foreach 문을 사용하여 입력받은 모든 pArray에 있는 Person, Student, Faculty를 Print 메소드를 사용하여 출력

- 각각 한 두 명의 Person, Student, Faculty 를 리스트에서 추가하거나 지우고 난 후, 리스트에 있는 모든 내용을 출력

- 리스트에서 각각 Person, Student, Faculty 만을 새로운 ArrayList들에 저장하고 난 후, 각 리스트별로 모든 내용을 출력 (그 중, Student는 전체 학생에 대한 국어,영어,수학에 대한 총점 및 평균을 계산하여 출력)

5. Person, Student, Faculty 클래스 또는 Main 함수에서 본인이 더 테스트해보고 싶은 Method를 추가하라. (20%)