※ 모든 문제의 저작권은 SW Expert 아카데미에 있습니다. 학습 기록용으로 문제시 삭제하겠습니다.
6203. [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 1
다음의 결과와 같이 국어, 영어, 수학 점수를 입력받아 합계를 구하는 객체지향 코드를 작성하십시오.
이 때 학생 클래스의 객체는 객체 생성 시 국어, 영어, 수학 점수를 저장하며, 총점을 구하는 메서드를 제공합니다.
입력_
89, 90, 100
출력_
국어, 영어, 수학의 총점: 279
[문제 풀이]
# 점수들 클래스 생성
class scores:
# 초기화 init생성하며 변수앞에 언더바를 두개 사용해 프라이빗으로 설정
def __init__(self, kor, eng, mat):
self.__kor = kor
self.__eng = eng
self.__mat = mat
# 각 점수별 데코레이터 생성
@property
def get_kor(self):
return self.__kor
@property
def get_eng(self):
return self.__eng
@property
def get_mat(self):
return self.__mat
# 총점을 출력해주는 함수 생성
def total(self):
total_score = self.__kor + self.__eng + self.__mat
print(f'국어, 영어, 수학의 총점: {total_score}')
# ','로 끊어 정수로 입력받아 저장
score = list(map(int, input().split(', ')))
# 입력받은 점수리스트를 클래스로 전달
lst = scores(score[0], score[1], score[2])
# 총점 출력
lst.total()
6208. [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 2
국적을 출력하는 printNationality 정적 메서드를 갖는 Korean 클래스를 정의하고
메서드를 호출하는 코드를 작성해봅시다.
출력_
대한민국
대한민국
[문제 풀이]
# 정적 메소드로 인스턴스가 필요x
class Korean:
def printNationality():
print('대한민국')
Korean.printNationality()
Korean.printNationality()
6217. [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 3
name 프로퍼티를 가진 Student를 부모 클래스로 major 프로퍼티를 가진
GraduateStudent 자식 클래스를 정의하고 이 클래스의 객체를
다음과 같이 문자열로 출력하는 코드를 작성하십시오.
출력_
이름: 홍길동
이름: 이순신, 전공: 컴퓨터
[문제 풀이]
# 부모클래스 정의
class Student:
# init함수 생성
def __init__(self, name):
self.__name = name
# 이름을 리턴해주는 함수 생성
@property
def get_name(self):
return self.__name
# 형식에 맞게 리턴
def output(self):
return f'이름: {self.get_name}'
# 자식 클래스 생성
class GraduateStudent(Student):
# 이름은 상속을 받아 사용하며 과목만 추가한 init함수 생성
def __init__(self, name, major):
super().__init__(name)
self.__major = major
# 과목을 리턴해주는 함수 생성
@property
def major(self):
return self.__major
# 부모에서 이름을 받아 사용하며 나머진 형식에 맞게 리턴
def output(self):
return super().output() + f', 전공: {self.major}'
# 형식에 맞게 입력 후 출력
Student1 = Student('홍길동')
Student2 = GraduateStudent('이순신', '컴퓨터')
print(Student1.output())
print(Student2.output())
6223. [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 4
반지름 정보를 갖고, 원의 면적을 계산하는 메서드를 갖는 Circle 클래스를 정의하고,
생성한 객체의 원의 면적을 출력하는 프로그램을 작성하십시오.
출력_
원의 면적: 12.56
[문제 풀이]
# 라이브러리에서 불러와서 하면 12.57이 나와 3.14로 고정
PI = 3.14
# 클래스 생성
class Circle:
# 반지름을 갖는 init생성
def __init__(self, radi):
self.__radi = radi
# 반지름을 리턴하는 프로퍼티 생성
@property
def get_radi(self):
return self.__radi
# 형식에 맞게 면적을 구하고 출력해주는 함수 생성
def get_area(self):
area = PI * self.get_radi**2
print(f'원의 면적: {area:.2f}')
# 형식에 맞게 인스턴스 전달하고 출력함수 불러옴
circle = Circle(2)
circle.get_area()
6225. [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 5
가로, 세로 정보을 갖고, 사각형의 면적을 계산하는 메서드를 갖는 Rectangle 클래스를 정의하고,
생성한 객체의 사각형의 면적을 출력하는 프로그램을 작성하십시오.
출력_
사각형의 면적: 20
[문제 풀이]
class Rectangle:
def __init__(self, width, height):
self.__width = width
self.__height = height
@property
def get_width(self):
return self.__width
@property
def get_height(self):
return self.__height
def print_area(self):
area = self.get_width * self.get_height
print(f'사각형의 면적: {area}')
rectangle = Rectangle(4, 5)
rectangle.print_area()
6228. [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 6
Shape를 부모 클래스로 Square 자식 클래스를 정의하는 코드를 작성하십시오.
Square 클래스는 length 필드를 가지며, 0을 반환하는 Shape 클래스의 area 메서드를
length * length 값을 반환하는 메서드로 오버라이딩합니다.
출력_
정사각형의 면적: 9
[문제 풀이]
class Shape:
def area(self):
return 0
class Square(Shape):
def __init__(self, length):
self.__length = length
@property
def get_length(self):
return self.__length
def area(self):
sqarea = self.get_length * self.get_length
return f'정사각형의 면적: {sqarea}'
square = Square(3)
print(square.area())
6229. [파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 5. 객체지향 7
Person를 부모 클래스로 Male, Female 자식 클래스를 정의하는 코드를 작성하십시오.
"Unknown"을 반환하는 Person 클래스의 getGender 메서드를 Male 클래스와 Female 클래스는
"Male", "Female" 값을 반환하는 메서드로 오버라이딩합니다.
출력_
Male
Female
[문제 풀이]
class Person:
def getGender(self):
return 'Unknown'
class Male(Person):
def getGender(self):
return 'Male'
class Female (Person):
def getGender(self):
return 'Female'
man = Male()
wman = Female()
print(man.getGender())
print(wman.getGender())