* 클래스 추상화(class abstraction)
- 클래스 추상화는 클래스의 사용으로부터 클래스의 구현을 분리하는 개념이다. 클래스의 구현에 대한 상세는 사용자에게 보이지 않는다. 이를 클래스 캡슐화라 한다.
* 클래스 캡슐화(class encapsulation)
- 캡슐화는 데이터와 메소드를 하나의 객체로 묶고 사용자로부터 데이터 필드와 메소드 구현을 감추는 것이다.
* Loan.py
class Loan:
def __init__(self, annulInterestRate=2.5, numberOfYears=1, loanAmount=1000, borrower="") :
self.__annulInterestRate = annulInterestRate
self.__numberOfYears = numberOfYears
self.__loanAmount = loanAmount
self.__borrower = borrower
def getAnnulInterestRate(self):
return self.__annulInterestRate
def getNumberOfYears(self):
return self.__numberOfYears
def getLoanAmount(self):
return self.__loanAmount
def getBorrower(self):
return self.__borrower
def setAnnulInterestRate(self, annulInterestRate):
self.__annulInterestRate = annulInterestRate
def setNumberOfYears(self, numberOfYears):
self.__numberOfYears = numberOfYears
def setLoanAmount(self, loanAmount):
self.__loanAmount = loanAmount
def setBorrower(self, borrower):
self.__borrower = borrower
def getMonthlyPayment(self):
monthlyInterestRate = self.__annulInterestRate / 1200
monthlyPayment = self.__loanAmount * monthlyInterestRate / (1 - (1/(1+monthlyInterestRate)**(self.__numberOfYears * 12)))
return monthlyPayment
def getTotalPayment(self):
totalPayment = self.getMonthlyPayment() * self.__numberOfYears * 12
return totalPayment
* TestLoan.py
from Loan import Loan
def main():
annualInterestRate = eval(input("연이율을 입력하세요(예, 7.25): "))
numberOfYears = eval(input("대출년수를 입력하세요: "))
loanAmount = eval(input("대출금을 입력하세요(예, 130000000): "))
borrower = input("대출자의 이름을 입력하세요: ")
# 대출 객체를 생성한다.
loan = Loan(annualInterestRate, numberOfYears, loanAmount, borrower)
# 정보 출력
print("대출자 : ", loan.getBorrower())
print("월상환금 : ",format(loan.getMonthlyPayment(), ".2f"), "원" )
print("총상환금 : ", format(loan.getTotalPayment(), ".2f"), "원")
main()
# 연이율을 입력하세요(예, 7.25): 2.5
# 대출년수를 입력하세요: 5
# 대출금을 입력하세요(예, 130000000): 1000000
# 대출자의 이름을 입력하세요: 홍길동
# 대출자 : 홍길동
# 월상환금 : 17747.36 원
# 총상환금 : 1064841.70 원