Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Beautiful Development ブレイクスルー体験記

11,356 views

Published on

Published in: Technology

Beautiful Development ブレイクスルー体験記

  1. 1. PARTⅢ http://www.flickr.com/photos/penguinbush/2768719983/
  2. 2. (kentaro714)JavaEE ClojureIT
  3. 3. Agenda• PartⅢ••• DDD
  4. 4. PartⅢ
  5. 5. Part1PartⅡ ParⅢ
  6. 6. 1000
  7. 7. 20% … 100030% 50%
  8. 8. 500×0.2=100500 000 500 500 500×0.3=150 500×0.5=250
  9. 9. 800300 300 500 200
  10. 10. *+ $%&() *+#!"# ,-.(/#) 01.(/#) 2+ *+782+34 /*+#2+56
  11. 11. 200 :%&()* :+, !"# = 1000$ +,# = 200$12A0,:0, -+,./0,12 = A120,34 = 20% +,# = 40$12B0,:0, -+,./0,12 = B120,34 = 30% +,# = 60$12C0,:0, -+,./0,12 = C120,34 = 50% +,# = 100$
  12. 12. …500 500×0.2-50=50 50 200 700 500×0.3 500×0.5+50 =150 =300
  13. 13. ,-./01 23!"# 23#$%&($%(, $%), *+) 45&(6#) 78&(6#) 93 23<= 93:; /23# 93*+ 23$% 23#
  14. 14. :%&()* :+, !"# = 1000$ +,# = 700$12A0,:0, -+,./0,12 = A120,34 = 20% +,# = 90$12B0,:0, -+,560,12 = B120,34 = 30% +,# = 150$12C0,:0, -+,./0,12 = C120,34 = 50% +,# = 400$
  15. 15. Application Servicepublic 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); }
  16. 16.
  17. 17. 500×90/700=64.28..500 500 300 800 500×210/700 500×400/700 =150 =285.714...
  18. 18.
  19. 19. Application Servicepublic 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); }
  20. 20. 2 …
  21. 21.
  22. 22. ,-./01 23!"# 23#$%&($%(, $%), *+) 45&(6#) 78&(6#) 93 23<= 93:; /23# 93*+ 23$% 23#
  23. 23. :1000 100 20% ¥20 50%100 ¥30 ¥50 30%
  24. 24. ¥70 ¥50¥20 ¥50 ¥150 ¥180¥30 ¥300 ¥350100 500 600
  25. 25. +,-./ +,- * !"#$(%&) 0121 (#$((), (*, %&) +,-3 7+,-./45+,-./ 6#(7+,-./) 89:7+,-./;
  26. 26. 78 ,-./01 78+)*+!"#$(!"%, !"&, () 23#(4+) 56#(4+) (.9:;< =.9:;< * * .9: .9: >?@? >?@? .9:A .9:A
  27. 27. Application Servicepublic 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); }
  28. 28.
  29. 29. #&() !"#$% 12 3#&() *+#,-. /0 *+#,-. :;<=> BCDE 40 *+#,-. 2789 ?@A<=> 5612 AP
  30. 30. Application Servicepublic 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);}
  31. 31. 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); }}
  32. 32.
  33. 33. #&() !"#$% * 12 3#&() *+#,-. /0 *+#,-. :;<=> BCDE 40
  34. 34. http://www.flickr.com/photos/94379417@N00/4808475862/in/photostream/
  35. 35. http://www.flickr.com/photos/dmclear/5418495331/
  36. 36. http://www.flickr.com/photos/spcbrass/5451894896/
  37. 37. DDD

×