2019-1-16

一、封装

  什么是封装

    将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

  封装的步骤

    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("感谢您的使用!");
		
	}
}

  结果示例:

 

posted on 2019-01-16 19:43  陈小锦  阅读(442)  评论(0编辑  收藏  举报