[디딤돌 C++] 21. 캡슐화 실습2 – 학생

학생) 클래스 다이어그램에서 정적 멤버는 밑줄이 그어집니다.

이번 실습은 학생 클래스를 캡슐화하는 실습입니다. 이번에는 시나리오를 보고 클래스 다이어그램을 작성한 후에 이를 구현해 보기로 해요.

 

  1. 시나리오

학생은 생성할 때 학생 이름을 전달받습니다. 그리고 학생 번호는 순차적으로 부여합니다. 이 외에 학생의 국어, 영어, 수학 성적을 -1로 설정합니다.

 

학생을 생성한 후에는 학생의 국어, 영어, 수학 성적을 입력할 수 있습니다. 만약 학생 성적이 0에서 100을 벗어나면 -1로 설정합니다.

 

학생 이름과 번호, 각 과목의 성적과 총점 및 평균을 확인할 수 있습니다. 그리고 전체 학생 수를 확인할 수 있습니다. 그리고 학생 정보를 출력하는 기능을 제공합니다.

 

  1. 클래스 다이어그램으로 나타내기

먼저 클래스 이름을 결정해야겠죠.

클래스 이름 결정 Student

멤버 필드에는 번호와 이름이 있어야 합니다. 번호는 값을 변경하지 못하게 상수화 멤버 필드로 정하면 신뢰성을 높일 수 있겠죠. 이 외에 학생 개체에는 국, 영, 수 성적을 보관하는 멤버가  필요합니다. 성적을 보관하는 멤버는 배열로 선언하기로 해요.

 

그런데 학생 번호를 순차적으로 부여하려면 최근에 부여한 학생 번호가 필요하겠죠. 이 멤버는 개체마다 갖을 필요가 없으며 형식에 유일하게 부여할 멤버이므로 정적 멤버로 정하세요.

멤버 필드 결정

클래스 다이어그램에서 정적 멤버는 밑줄이 그어집니다.

 

멤버 메서드에는 먼저 이름을 입력 인자로 받는 생성자가 필요하겠죠. 그리고 성적을 설정하는 메서드가 필요해요. 또한 성적은 배열로 관리하므로 성적을 설정하는 메서드는 과목을 나타내는 인덱스와 성적을 입력 인자로 받게 정하기로 합시다. 이 메서드에 전달받은 성적이 유효하면 전달받은 값으로 벗어났을 때 -1으로 성적을 설정하는 메서드도 제공합시다. 대신 이 메서드는 접근 지정을 private으로 설정하여 형식 외부에서 잘못된 값으로 설정하지 못하게 하세요.

 

과목을 나타내는 인덱스와 성적은 유효 범위가 있으므로 범위를 벗어나는지 확인하는 메서드를 각각 제공하기로 해요.

 

그리고 이름과 번호를 확인할 수 있는 메서드를 제공하세요. 성적을 확인하는 메서드는 과목을 나타내는 인덱스를 전달받아 성적을 반환하기로 해요.

 

그리고 평균과 총점을 확인하는 메서드와 현재 학생 수를 확인하는 메서드를 제공합시다. 현재 학생 수를 확인하는 메서드는 정적 메서드로 정의하는 것이 바람직하겠죠.

 

마지막으로 자신의 정보를 출력하는 메서드를 제공하세요.

멤버 메서드 결정

  1. 구현

이제 구현해 보세요. 여러분께서 먼저 구현한 후에 비교해 보세요.

 

 

 

 

▷ 실행 결과

현재 학생 수:3

번호:1 이름:홍길동

국어: 입력 안 함

영어: 입력 안 함

수학: 입력 안 함

총점:0 평균:0

++++++++++++++++++++++++

번호:2 이름:강감찬

국어: 입력 안 함

영어: 입력 안 함

수학: 입력 안 함

총점:0 평균:0

++++++++++++++++++++++++

번호:3 이름:이순신

국어: 입력 안 함

영어: 입력 안 함

수학: 입력 안 함

총점:0 평균:0

++++++++++++++++++++++++

현재 학생 수:3

번호:1 이름:홍길동

국어:90

영어:80

수학: 입력 안 함

총점:170 평균:56.6667

++++++++++++++++++++++++

번호:2 이름:강감찬

국어:100

영어: 입력 안 함

수학:80

총점:180 평균:60

++++++++++++++++++++++++

번호:3 이름:이순신

국어:80

영어:90

수학:90

총점:260 평균:86.6667

++++++++++++++++++++++++


[C++ 무료 동영상 강의] 21. 캡슐화 실습2 – 학생