zoukankan      html  css  js  c++  java
  • 有理数类设计

    一.

    有理数类代码

    package java;
    
    public class RationalNumber {
    	private int numerator;//分子
        private int denominator;//分母
    	public RationalNumber(int numerator,int denominator) {   //构造函数
    		this.numerator=numerator;
    		this.denominator=denominator;
    	}
    	public int getNumerator(){     //获取分子
    		return this.numerator;
    	}
    	public int getDenominator(){   //获取分母
    		return this.denominator;
    	}
    	public RationalNumber add(RationalNumber first,RationalNumber second) {               //加
    		int num=first.numerator*second.denominator+second.numerator*first.denominator;
    		int den=first.denominator*second.denominator;
    		return new RationalNumber(num,den);
    	
    	}
    	public RationalNumber sub(RationalNumber first,RationalNumber second) {               //减
    		int num=first.numerator*second.denominator-second.numerator*first.denominator;
    		int den=first.denominator*second.denominator;
    		return new RationalNumber(num,den);
    	
    	}
    	public RationalNumber mul(RationalNumber first,RationalNumber second) {               //乘
    		int num=first.numerator*second.numerator;
    		int den=first.denominator*second.denominator;
    		return new RationalNumber(num,den);
    	
    	}
    	public RationalNumber div(RationalNumber first,RationalNumber second) {               //除
    		int num=first.numerator*second.denominator;
    		int den=first.denominator*second.numerator;
    		return new RationalNumber(num,den);
    	
    	}
    	public boolean equal(RationalNumber first,RationalNumber second) {                    //判断是否相等
    		if((first.numerator==second.numerator)&&(first.denominator==second.denominator)) {
    			return true;
    			}
    		else {
    			return false;
    		}
    		}
    	public int intValue() {                //转换为int型
    		return this.numerator/this.denominator;
    	}
    	public double doubleValue() {         //转换为double型
    		return 1.0*this.numerator/this.denominator;
    	}
    	public float floatValue() {           //转换为float型
    		return (float)doubleValue();
    	}
    	public long longValue() {             //转换为long型
    		return (long)doubleValue();
    	}
    	public String toString() {
    		if(this.denominator==1) {
    			return this.numerator+" ";
    		}
    		else {
    			return this.numerator+"/"+this.denominator;   //转换为字符串类型
    		}
    	}
    }
    
    

    二.

    测试代码

    import java.RationalNumber;
    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		while(sc.hasNext()) {
    			int a=sc.nextInt(),b=sc.nextInt(),c=sc.nextInt(),d=sc.nextInt();
    			RationalNumber S1=new RationalNumber(a,b);
    			RationalNumber S2=new RationalNumber(c,d);
    			RationalNumber S;
    			S=S1.add(S1, S2);
    			System.out.println("加法得到的有理数值为:"+S);
    			S=S1.sub(S1, S2);
    			System.out.println("减法得到的有理数值为:"+S);
    			S=S1.mul(S1, S2);
    			System.out.println("乘法得到的有理数值为:"+S);
    			S=S1.div(S1, S2);
    			System.out.println("除法得到的有理数值为:"+S);
    		}
    	}
    	}
    

    三.

    讨论

    1.描述怎么与c语言的有理数代码相比较,为什么你设计的类更加面向对象?

    c语言是面向过程的,还可以有独立于类的函数和全局变量存在,而面向对象有三大特征:封装性、继承性、多态性。面向对象的所有代码的基本单位都是类,所有函数和变量都必须存在于类中。

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

    导入自己编写的有理数类

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

    会依赖,不影响。

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

    合适,private仅限于自己访问,经过它定义的变量只能在此对象内部调用,外部程序就无法调用,也就是说只能供其自身调用,保证了数据的安全性。

  • 相关阅读:
    Docker-(三).Dockerfile
    Docker-(二).使用操作
    Docker-(一).安装
    Mac-brew install mysql
    Mac-brew
    Selenium HTMLTestRunner 执行测试成功但无法生成报告
    12.Python爬虫利器三之Xpath语法与lxml库的用法
    11.Python-第三方库requests详解(三)
    10.Python-第三方库requests详解(二)
    9.Python爬虫利器一之Requests库的用法(一)
  • 原文地址:https://www.cnblogs.com/123123-/p/13766484.html
Copyright © 2011-2022 走看看