zoukankan      html  css  js  c++  java
  • 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("感谢您的使用!");
    		
    	}
    }
    

      结果示例:

  • 相关阅读:
    希望走过的路成为未来的基石
    第三次个人作业--用例图设计
    第二次结对作业
    第一次结对作业
    第二次个人编程作业
    第一次个人编程作业(更新至2020.02.07)
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    spring cloud springboot 框架源码 activiti工作流 前后分离 集成代码生成器
    java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码
  • 原文地址:https://www.cnblogs.com/chenxj/p/10279013.html
Copyright © 2011-2022 走看看