1. 확인 문제
- 1. 클래스 설계해보기
* RPG 게임
프로그램 | 객체 | 속성 |
---|
| 유저 정보 | 유저의 계정 ID, 비밀번호, etc. |
RPG | 플레이어 정보 | 레벨, 상태, 플레이어의 직업, 소지금 |
게임 | 직업 데이터 | 성장 능력치, 배울 수 있는 기술들 |
| 몬스터 정보 | 몬스터 이름, 레벨, 드랍 아이템 |
* 사원 정보 관리 시스템
프로그램 | 객체 | 속성 |
---|
| 사원 정보 | 사번, 사원명, 소속 부서, 입사일 |
사원 정보 | 사원 그룹 | 그룹명, 인원수, 팀장 |
관리 시스템 | 권한 책임 정보 | 권한명, 수행 가능 명령 |
| 근태 정보 | 출근 기록, 퇴근 기록, 야근 기록 |
* POS (Point Of Sales) System
프로그램 | 객체 | 속성 |
---|
| 품목 정보 | 이름, 가격, 소지량 |
POS | 매장 정보 | 매장명, 소지 품목 |
시스템 | 매출, 매입 정보 | 매입량, 판매량 |
| 직원 정보 | 직원명, 출퇴근 시간 |
- 2. 객체 별 속성 비교
게임 별 플레이어 객체 비교
* FPS 게임
- 유저명
- 체력 정보
- 소지한 무기 정보 (주무기, 보조무기)
- 소지한 방어구 정보 (방탄모, 방탄복, 배낭)
- 소지한 아이템 정보 (탄약, 투척물, 치료제)
- 킬 정보, 데스 정보
* RPG 게임
- 유저명
- 직업
- 상태 정보 (HP, MP, EXP, 버프 및 상태이상)
- 보유 기술
- 보유 장비
- 소지금
* 바둑
- 3. 객체에 따른 행위
1. 클래스 설계하기
항목에서 찾은 객체 중 두 가지를 택하여 그 행위를 다섯 가지 정하기
* RPG 게임
- 로그인하기 (유저 정보)
- 스킬 사용 (플레이어 정보)
- 전직 (플레이어 정보, 직업 정보)
- 아이템 구매 (플레이어 정보)
- 몬스터 처치 (몬스터 정보)
* 사원 정보 관리 시스템
- 채용 (권한 책임 정보)
- 부서 배정 (사원 정보, 사원 그룹)
- 인사 발령 (사원 정보, 사원 그룹, 권한 책임 정보)
- 징계 (사원 정보, 권한 책임 정보)
- 야근 수당 지급 (사원 정보, 근태 정보)
2. 클래스의 추가적인 구문
- 1. 연산자 오버로딩
class Student:
def __init__(self, name, korean, math, english, science):
self.name = name
self.korean = korean
self.math = math
self.english = english
self.science = science
def get_sum(self):
return self.korean + self.math + \
self.english + self.science
def get_average(self):
return self.get_sum() / 4
def __eq__(self, value):
return self.get_average() == value
def __ne__(self, value):
return self.get_average() != value
def __gt__(self, value):
return self.get_average() > value
def __ge__(self, value):
return self.get_average() >= value
def __lt__(self, value):
return self.get_average() < value
def __le__(self, value):
return self.get_average() <= value
test = Student("A", 90, 90, 90, 90)
print("test == 90", test == 90)
print("test != 90", test != 90)
print("test > 90", test > 90)
print("test >= 90", test >= 90)
print("test < 90", test < 90)
print("test <= 90", test <= 90)
3. 도전 문제
- 1. StudentList
클래스 구현하기
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
class StudentList:
def __init__(self):
self.students = []
def append(self, student):
self.students.append(student)
def get_average(self):
if (len(self.students) <= 0):
return -1
total = 0
for student in self.students:
total += student.score
return total / len(self.students)
def get_first_by_score(self):
if (len(self.students) <= 0):
return None
highest = self.students[0]
for student in self.students[1:]:
if (student.score > highest.score):
highest= student
return highest
def get_last_by_score(self):
if (len(self.students) <= 0):
return None
lowest = self.students[0]
for student in self.students[1:]:
if (student.score < lowest.score):
lowest = student
return lowest
students = StudentList()
students.append(Student("구름", 100))
students.append(Student("별", 49))
students.append(Student("초코", 81))
students.append(Student("아지", 90))
print(f"학급의 평균 점수는 {students.get_average()}입니다.")
print(f"가장 성적이 높은 학생은 {students.get_first_by_score().name}입니다.")
print(f"가장 성적이 높은 학생은 {students.get_last_by_score().name}입니다.")
- 2. 스택 구현하기
class Stack:
def __init__(self):
self.list = []
def push(self, item):
self.list.append(item)
def pop(self):
if (len(self.list) == 0):
return None
return self.list.pop()
stack = Stack()
stack.push(10)
stack.push(20)
stack.push(30)
print(stack.pop())
print(stack.pop())
print(stack.pop())
- 3. 큐 구현하기
class Queue:
def __init__(self):
self.list = []
def enqueue(self, item):
self.list.append(item)
def dequeue(self):
if (len(self.list) == 0):
return None
return self.list.pop(0)
queue = Queue()
queue.enqueue(10)
queue.enqueue(20)
queue.enqueue(30)
print(queue.dequeue())
print(queue.dequeue())
print(queue.dequeue())