2019-1-16
阿新 • • 發佈:2019-01-16
amp ase nis 防止 獨立性 else if == 金額 mon
一、封裝
什麽是封裝
將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問
封裝的步驟
1、私有化屬性 修改屬性的可見性
2、創建屬性方法---setter/getter方法 創建公有的setter/getter方法
3、在set/get方法中設置賦值或取值條件 在setter/getter方法中加入屬性控制語句
封裝的意義:
1、便於使用者正確使用系統,防止錯誤修改屬性
2、有助於系統之間的松耦合,提高系統獨立性
3、提高軟件的可重用性
4、降低了構建大型系統的風險
二、課後習題
1、模擬一個簡單的購房商貸月供計算器,按照以下公式計算總利息和每月還款金額
總利息=貸款金額*利率;
每月還款金額=(貸款金額+總利息)、貸款年限
貸款年限不同利率也不同,如下示例:
package com.java_1_16_fangdai; /** * 計算總計息及月供 * @author Administrator *2019-1-16 */ public class Rate { private double money;//本金 private double sum;//總利息 private int year;//年限 private double monMoney; public double getMonMoney() { return monMoney; } public void setMonMoney(double monMoney) { this.monMoney = monMoney; } public int getYear() { return year; } //根據選擇確定貸款年限 public void setYear(int num) { if(num==1) { this.year = 3; }else if(num==2){ this.year = 5; }else if(num==3) { this.year = 20; }else { System.out.println("報歉!目前無此貸款年限,默認5年!"); this.year = 5; } } public double getSum() { return sum; } public void setSum(double sum) { this.sum = sum; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } //根據年限算出總利息 public double rateMoney() { switch(year) { case 3: this.sum = this.money*0.0603; break; case 5: this.sum = this.money*0.0612; break; case 20: this.sum = this.money*0.0639; default: break; } return this.sum; } //計算月供並輸出 public void monthly() { this.monMoney = (this.money + this.sum)/(this.year*12); System.out.println("每個月的月供是:"+this.monMoney); } }
package com.java_1_16_fangdai; import java.util.Scanner; public class RateTest { public static void main(String[] args) { Scanner cxj = new Scanner(System.in); Rate r = new Rate(); System.out.print("請輸入貸款金額:"); r.setMoney(cxj.nextDouble()); System.out.print("請選擇貸款年限(1、3年(36個月) 2、5年(60個月) 3、20年(240個月)):"); r.setYear(cxj.nextInt()); System.out.println("總利息是:"+r.rateMoney()); r.monthly(); } }
結果示例:
2、根據三角形的三條邊長,判斷是直角三角形、鈍角三角形或者銳角三角形
package com.java_1_16_trigon; /** * 判斷三角形種類 * @author Administrator *2019-1-16 */ public class Trigon { private int a; private int b; private int c; public int getA() { return a; } public void setA(int a) { this.a = a; } public int getB() { return b; } public void setB(int b) { this.b = b; } public int getC() { return c; } public void setC(int c) { this.c = c; } public void trTest() { //先判斷是否可以構成三角形 if(((a+b)>c)&&((a+c)>b)&&((b+c)>a)){ //如果可以構成三角形,再判斷是否為直角三角形 if(((a*a+b*b)==c*c)||((a*a+c*c)==b*b)||((b*b+c*c)==a*a)) { System.out.println("這是一個直角三角形。"); //如果不直角,再判斷是鈍角三角形還是銳角三角形 }else if(((a*a+b*b)<c*c)||((a*a+c*c)<b*b)||((b*b+c*c)<a*a)) { System.out.println("這是一個鈍角三角形。"); }else { System.out.println("這是一個銳角三角形。"); } //不足構成三角形 }else { System.out.println("這不是一個三角形。"); } } }
package com.java_1_16_trigon; import java.util.Scanner; public class TrTest { public static void main(String[] args) { Scanner cxj = new Scanner(System.in); Trigon t = new Trigon(); boolean select = true; do { System.out.print("請輸入第一條邊的大小:"); t.setA(cxj.nextInt()); System.out.print("請輸入第二條邊的大小:"); t.setB(cxj.nextInt()); System.out.print("請輸入第三條邊的大小:"); t.setC(cxj.nextInt()); t.trTest(); System.out.print("請問是否繼續(y/n):"); String se = cxj.next(); if(se.equals("n")) { select = false; }else { select = true; } }while(select); System.out.println("感謝您的使用!"); } }
結果示例:
2019-1-16