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

      结果示例:

  • 相关阅读:
    python操作MongoDB
    MongoDB操作——备忘录
    python中运行js代码—js2py
    糗事百科爬虫_基于线程池
    糗事百科_基于队列和多线程
    Django ModelForm组件
    Django补充(mark_safe,url反向解析)
    Django MiddleWare中间件
    Python常用模块 -- sys模块的常用用法
    Python常用模块 -- os模块常用用法
  • 原文地址:https://www.cnblogs.com/chenxj/p/10279013.html
Copyright © 2011-2022 走看看