실습) 다음을 만족하는 학생 클래스를 정의하시오. *목적: 캡슐화 전체 과정 실습 *국어, 영어, 수학은 열거형으로 정의하시오. *인덱서를 이용하여 성적을 설정 및 가져오기 할 수 있게 하시오.
학생은 생성할 때 학생 이름을 전달받습니다. |
*2019년 공주대에서 |
소스 코드) Subject.cs |
namespace 캡슐화_실습3___학생_총복 { enum Subject { Korea, English, Math, MAX_SUBJECT } } |
Student.cs |
using System; namespace 캡슐화_실습3___학생_총복 { internal class Student { public string Name//학생 이름 { get;//외부에서 접근 가능 private set;//내부에서만 설정 가능 } static int lastnum;//가장 최근에 부여한 학생 번호 readonly int num;//학생 번호 - 읽기 전용 public int Num { get { return num; } } int[] scores = new int[(int)Subject.MAX_SUBJECT]; public Student(string name) { Name = name; //학생 번호를 순차적으로 부여 lastnum++; num = lastnum; SetScores(); } private void SetScores() { for(int i=0;i<(int)Subject.MAX_SUBJECT;i++) { scores[i] = -1; } } public int this[Subject subject] { get { return scores[(int)subject]; } set { if(value>100) { value = -1; } if(value<0) { value = -1; } scores[(int)subject] = value; } } public int Total { get { int sum = 0; for(int i=0;i<(int)Subject.MAX_SUBJECT;i++) { if(scores[i]!=-1) { sum += scores[i]; } } return sum; } } public int Average { get { //입력한 과목에 한하여 평균을 계산할 것인지 문의할 것 //*현재는 전체 과목 수로 나누어 평균 계산* return Total / (int)Subject.MAX_SUBJECT; } } public override string ToString() { return string.Format("{0},{1}", Num, Name); } } } |
Program.cs |
using System;
namespace 캡슐화_실습3___학생_총복 { class Program { static void Main(string[] args) { Student stu1 = new Student("홍길동"); Console.WriteLine(stu1);//출력 내용: 홍길동, 1 Student stu2 = new Student("강감찬"); Console.WriteLine(stu2);//출력 내용: 강감찬, 2 stu2[Subject.Korea] = 90; Console.WriteLine(stu2[Subject.Korea]);//출력 내용: 90 stu2[Subject.Math] = 120; Console.WriteLine(stu2[Subject.Math]);//출력 내용: -1 stu2[Subject.English] = -10; Console.WriteLine(stu2[Subject.English]);//출력 내용: -1 Console.WriteLine(stu2.Total);//출력 내용:90 Console.WriteLine(stu2.Average);//출력 내용:30 } } }
|
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[C#] 상속과 다형성, 인터페이스 실습 - 도형 (0) | 2019.08.10 |
---|---|
[C#] 컬렉션 실습 - IList 인터페이스 구현 약속한 컬렉션 (0) | 2019.08.09 |
[C#] 상속과 다형성 실습 - 학생, 학사학생, 마법학생, 운동학생 (0) | 2019.08.09 |
[C#] 상속과 다형성 - 상품, 할인상품 (0) | 2019.08.08 |
[C#] 상속과 다형성 실습 - 밴드(음악가, 피아니스트, 드러머) (0) | 2019.08.08 |
[C#] 캡슐화 실습 - 학생 클래스 (0) | 2019.08.08 |
[C#] 캡슐화 실습 - 복소수 정의(멤버 필드와 멤버 속성) (0) | 2019.08.08 |
[C#] 제어문 - 퀴즈 abc + cca = 1ab2 (0) | 2019.08.08 |
[C#] 제어문 - 정사각형 출력 (0) | 2019.08.07 |
[C#] 제어문 - 삼각형 출력 (0) | 2019.08.07 |