zoukankan      html  css  js  c++  java
  • 3.1-OO设计-有理数的设计

    仿照BigDecimal类以面向对象的方式设计有理数类。

    1. 给出你的完整的有理数类的代码。

    package pta;
    
    public class RationalNumber {
    	private  double rationNumber;
    	double tempRationNumber = 0;
    	
    	public double getRationNumber() {
    		return rationNumber;
    	}
    
    	public void setRationNumber(double rationNumber) {
    		this.rationNumber = rationNumber;
    	}
    
    	public void add(Double addNum) {
    		tempRationNumber = rationNumber + addNum;
    		System.out.println(toStr());
    	}//加运算
    	
    	public void sub(Double subNum) {
    		tempRationNumber = rationNumber - subNum;
    		System.out.println(toStr());
    	}//减运算
    	
    	public void mul(Double mulNum) {
    		tempRationNumber = rationNumber * mulNum;
    		System.out.println(toStr());
    	}//乘运算
    	
    	public void div(Double divNum) {
    		tempRationNumber = rationNumber / divNum;
    		System.out.println(toStr());
    	}//除运算
    	
    	public void rem(Double remNum) {
    		tempRationNumber = rationNumber % remNum;
    		System.out.println(toStr());
    	}//求余运算
    	
    	public void sqrt() {
    		System.out.println(Math.sqrt(rationNumber));
    	}//有理数的开方
    	
    	
    	public void com(Double comNum) {
    		if(rationNumber > comNum) 
    			System.out.println(rationNumber+" > "+comNum);
    		else if(rationNumber < comNum)
    			System.out.println(rationNumber+" < "+comNum);
    		else 
    			System.out.println(rationNumber+" = "+comNum);
    	}//作比较
    	
    	private String toStr() {
    		String str = ""+tempRationNumber;
    		return str;
    	}//Double转String类型
        
    }
    

    2. 给出你的测试代码。要在与有理数类不同包的其他类中调用有理数类。

    package pta;
    
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		double number = sc.nextDouble();
    		double nextNum = sc.nextDouble();
    		
    		RationalNumber firstNumber = new RationalNumber();
    		
    		firstNumber.setRationNumber(number);
            
    		System.out.println("输入的第一个数是:"+firstNumber.getRationNumber());//测试输入的值是否正确
    		firstNumber.add(nextNum);			//加运算
    		firstNumber.sub(nextNum);			//减运算
    		firstNumber.mul(nextNum);			//乘运算
    		firstNumber.div(nextNum);			//除运算
    		firstNumber.rem(nextNum);			//求余运算,number%nextNum
    		firstNumber.sqrt();						//根号number
    		firstNumber.com(nextNum);			//将number与nextNum作比较
    		
    		sc.close();	
    	}
    }
    

    3. 尝试回答与c语言的有理数代码相比较,为什么你设计的类更加面向对象?

    java具有封装、继承等这些核心特征,这些都是面向对象的经典特征,且可重用性高,可扩展性强。这些都是在学习C语言的时候不具有的

    4. 别人如何复用你的代码?

    他人可以在新类中创建RationalNumber类的对象,通过该对象来调用已有类中的非private的属性和方法。

    5. 别人的代码是否依赖你的有理数类的内部属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?

    依赖,并且当我的有理数属性需要修改时,会影响到他人调用我的有理数代码

    6. 有理数类的public方法是否设置合适?为什么有的方法设置为private?

    合适,private可以对类中的属性或方法起到保护作用,对于别的类来说,private是隐藏起来的

    7. 你的类里面有static属性或方法吗?如果有,为什么要设置为static的?

    没有

  • 相关阅读:
    问题 A: 【递归入门】全排列
    第一个struct2程序(2)
    第一个struct2程序
    Java学习 第二节
    重学Java
    Servlet过滤器
    struct2
    Java web struct入门基础知识
    one by one 项目 part 6
    软件工程导论 桩模块和驱动模块
  • 原文地址:https://www.cnblogs.com/ywk2002/p/15345233.html
Copyright © 2011-2022 走看看