콘텐츠로 이동

04. [실습] 클래스와 모듈 종합 연습

"배운 내용을 모두 합쳐봅시다. 클래스, 리스트, 그리고 모듈까지."

이번 시간에는 지금까지 배운 클래스 문법을 활용하여 학생 성적 관리 시스템을 직접 만들어 봅니다. AI의 도움 없이 직접 코드로 작성하며 문법을 체화하는 것이 목표입니다.

1. Student 클래스 만들기

가장 먼저 학생 한 명을 나타내는 Student 클래스를 만듭니다.

  • 속성(변수):
    • name: 학생 이름
    • attendance: 출석 횟수 (기본값 0)
  • 메서드(행동):
    • attend(): 출석 횟수를 1 증가시키고, 메시지를 출력한다.
class Student:
    def __init__(self, name):
        self.name = name
        self.attendance = 0  # 0부터 시작

    def attend(self):
        self.attendance += 1
        return f"{self.name} 출석 완료! (총 {self.attendance}회)"

# 테스트
s = Student("지민")
print(s.attend())
print(s.attend())

2. Classroom 클래스 만들기

이제 학생들을 담을 반(Classroom)을 만듭니다.

  • 속성(변수):
    • students: Student 객체들을 담을 리스트
  • 메서드(행동):
    • add_student(student): 학생 객체를 리스트에 추가
    • roll_call(): 모든 학생의 이름을 부른다 (attend 메서드 호출)
class Classroom:
    def __init__(self):
        self.students = []  # 빈 리스트

    def add_student(self, student):
        self.students.append(student)

    def roll_call(self):
        print("=== 출석부 ===")
        for s in self.students:
            print(s.attend())

3. 종합 실습: 반 만들고 학생 입학시키기

위에서 만든 두 클래스를 조립해서 전체 프로그램을 완성해 봅시다.

# 1. 반 생성
my_class = Classroom()

# 2. 학생 생성 및 입학
s1 = Student("지민")
s2 = Student("태형")
s3 = Student("정국")

my_class.add_student(s1)
my_class.add_student(s2)
my_class.add_student(s3)

# 3. 전체 출석 부르기
my_class.roll_call()

4. 모듈(Module)로 파일 분리하기

코드가 길어지면 관리하기 힘듭니다. 클래스 파일과 실행 파일을 나눠봅시다.

📜 1단계: school.py 저장

StudentClassroom 클래스 소스 코드를 school.py라는 파일에 저장합니다.

# 파일명: school.py
class Student:
    # ... (위의 코드와 동일) ...
    pass

class Classroom:
    # ... (위의 코드와 동일) ...
    pass

🏃 2단계: main.py에서 실행

다른 파일(main.py)에서 school.py를 불러와서 사용합니다.

# 파일명: main.py
# school.py 파일에서 Student와 Classroom을 가져옴
from school import Student, Classroom

# 사용법은 똑같음
my_class = Classroom()
my_class.add_student(Student("지민"))
my_class.roll_call()

성공하셨나요? 여기까지 혼자 힘으로 작성할 수 있다면, 객체지향의 기초는 마스터한 것입니다!