More Related Content
Similar to Beautiful Development ブレイクスルー体験記
Similar to Beautiful Development ブレイクスルー体験記 (20)
Beautiful Development ブレイクスルー体験記
- 1. PARTⅢ
http://www.flickr.com/photos/penguinbush/2768719983/
- 13. *+
$%&'()
*+#
!"# ,-.(/#)
01.(/#)
2+
*+78
2+34
/*+#
2+56
- 14. 200
:%&'()* :+,
!"# = 1000$ +,# = 200$
12A0,:0,
-+,./
0,12 = A12
0,34 = 20% +,# = 40$
12B0,:0,
-+,./
0,12 = B12
0,34 = 30% +,# = 60$
12C0,:0,
-+,./
0,12 = C12
0,34 = 50% +,# = 100$
- 17. …
500 500×0.2-50=50
50
200
700
500×0.3 500×0.5+50
=150 =300
- 19. ,-./01 23
!"# 23#
$%&'($%(, $%), *+) 45&(6#)
78&(6#)
93
23<=
93:;
/23#
93*+
23$%
23#
- 20. :%&'()* :+,
!"# = 1000$ +,# = 700$
12A0,:0,
-+,./
0,12 = A12
0,34 = 20% +,# = 90$
12B0,:0,
-+,56
0,12 = B12
0,34 = 30% +,# = 150$
12C0,:0,
-+,./
0,12 = C12
0,34 = 50% +,# = 400$
- 21. Application Service
public class SyndicateService {
private FacilityRepository facilityRepository;
private LoanRepository loanRepository;
public void drawDownWithAdjustment(long facilityId, BigDecimal amount,
Map<String, BigDecimal> adjustment) {
Facility facility = facilityRepository.get(facilityId);
Loan loan = facility.getLoan();
for (Investment investment : facility.getInvestments()) {
if (adjustment.containsKey(investment.getInvestor().getName())) {
BigDecimal share = BigDecimal.valueOf(investment.getPercentage());
BigDecimal variance = adjustment.get(investment.getInvestor()
.getName());
LoanAdjustment loanAdjustment = new LoanAdjustment(
Money.yen(amount.multiply(share).add(variance)));
loan.addLoanInvestment(loanAdjustment);
}
}
loanRepository.save(loan);
}
- 26. Application Service
public class SyndicateService {
private FacilityRepository facilityRepository;
private LoanRepository loanRepository;
public void processPrincipalPayment(long facilityId, BigDecimal amount) {
Facility facility = facilityRepository.get(facilityId);
Loan loan = facility.getLoan();
for (LoanInvestment investment : loan.getLoanInvestments()) {
BigDecimal share = investment.getAmount().divide(loan.getAmount());
Money newAmount = Money.yen(amount.multiply(share));
LoanAdjustment loanAdjustment = new LoanAdjustment(investment
.getAmount().minus(newAmount));
loan.addLoanInvestment(loanAdjustment);
}
loanRepository.save(loan);
}
- 29. ,-./01 23
!"# 23#
$%&'($%(, $%), *+) 45&(6#)
78&(6#)
93
23<=
93:;
/23#
93*+
23$%
23#
- 34. :1000 100
20%
¥20
50%
100 ¥30
¥50
30%
- 35. ¥70
¥50
¥20
¥50 ¥150 ¥180
¥30 ¥300 ¥350
100 500 600
- 37. +,-./ +,-
*
!"#$(%&) 0121
'(#$('(), '(*, %&) +,-3
7+,-./
45+,-./
6#(7+,-./)
89:7+,-./;
- 38. 78
,-./01
78+
)*+
!"#$(!"%, !"&, '() 23#(4+)
56#(4+)
'(.9:;< =.9:;<
* *
.9: .9:
>?@? >?@?
.9:A .9:A
- 39. Application Service
public class SyndicateService {
private FacilityRepository facilityRepository;
private LoanRepository loanRepository;
public void drawDownWithAdjustment(long facilityId, BigDecimal amount,
Map<String, BigDecimal> adjustment) {
Facility facility = facilityRepository.get(facilityId);
Loan loan = facility.getLoan();
AmountPie drawDownSharePie = facility.getPie().prorate(amount);
AmountPie adjustSharePie = AmountPie.createFrom(adjustment);
loan.setPie(drawDownSharePie.plus(adjustSharePie));
loanRepository.save(loan);
}
public void processPrincipalPayment(long facilityId, BigDecimal amount) {
Facility facility = facilityRepository.get(facilityId);
Loan loan = facility.getLoan();
SharePie principalSharePie = loan.getPie().prorate(amount);
loan.setPie(loan.getPie().minus(principalSharePie));
loanRepository.save(loan);
}
- 43. #&'() !"#$% 12 3#&'()
*+#,-. /0
*+#,-.
:;<=> BCDE
40
*+#,-.
2789 ?@A<=>
5612
AP
- 44. Application Service
public void drawDownWithAdjustment(long facilityId, BigDecimal amount,
Map<String, BigDecimal> adjustment) {
Facility facility = facilityRepository.findById(facilityId);
Loan loan = facility.getLoan();
SharePie drawDownSharePie = facility.getSharePie().prorate(amount);
SharePie adjustSharePie = AmountPie.createFrom(adjustment);
Transaction drawDown = new DrawDown(loan,
drawDownSharePie.plus(adjustSharePie));
loan.apply(drawDown);
loanRepository.save(loan);
}
public void processPrincipalPayment(long facilityId, BigDecimal amount) {
Facility facility = facilityRepository.get(facilityId);
Loan loan = facility.getLoan();
SharePie principalSharePie = loan.getPie().prorate(amount);
Transaction principalPayment = new PrincipalPayment(loan,
principalSharePie);
loan.apply(principalPayment);
loanRepository.save(loan);
}
- 45. public class DrawDown extends Transaction {
public DrawDown(Position position, SharePie sharePie) {
super(position, sharePie);
}
@Override
public void execute() {
SharePie newSharePie = position.getPie().plus(this.sharePie);
position.setPie(newSharePie);
}
}
- 47. #&'() !"#$%
* 12 3#&'()
*+#,-. /0
*+#,-.
:;<=> BCDE
40
Editor's Notes
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n