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

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

    package test1;
    
    public class Rational {
        
        private int Numerator;//分子
        private int Denominator;//分母
        
        public Rational(int Numerator, int Denominator) {    //构造函数
            this.Numerator=Numerator;
            this.Denominator=Denominator;
        }
    
        public int getNumerator() {    //获取分子
            return Numerator;
        }
    
        public void setNumerator(int numerator) {
            Numerator = numerator;
        }
    
        public int getDenominator() {    //获取分母
            return Denominator;
        }
    
        public void setDenominator(int denominator) {
            Denominator = denominator;
        }
        
        public    Rational addition(Rational X) {    //加法
            int a=this.Numerator*X.Denominator+X.Numerator*this.Denominator;
            int b=this.Denominator*X.Denominator;
            return new Rational(a,b);
        }
        
        public    Rational subtraction(Rational X) {    //减法
            int a=this.Numerator*X.Denominator-X.Numerator*this.Denominator;
            int b=this.Denominator*X.Denominator;
            return new Rational(a,b);
        }
        
        public    Rational multiplication(Rational X) {    //乘法
            int a=this.Numerator*X.Numerator;
            int b=this.Denominator*X.Denominator;
            return new Rational(a,b);
        }
        
        public    Rational division(Rational X) {    //除法
            int a=this.Numerator*X.Denominator;
            int b=this.Denominator*X.Numerator;
            return new Rational(a,b);
        }
        
        public int compareTo(Rational X) {    //比较大小
            if(this.subtraction(X).getNumerator()>0)
                return 1;//大于
            else if(this.subtraction( X).getNumerator()==0)
                return 0;//等于
            else
                return -1;//小于
        }
        
        public String toString() {    //转换成String型,输出Rational类默认转换为该型
            if(this.Denominator==1)
                return this.Numerator+" ";
            else
                return this.Numerator+"/"+this.Denominator;
        }
        
        public double doubleValue() {    //转换成double型
            return 1.0*this.Numerator/this.Denominator;
        }
        
        public int intValue() {    //转换成int型
            return (int)doubleValue();
        }
        
        public long longValue() {    //转换成long型
            return (long)doubleValue();
        }
        
    }
    

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

    package test1;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    import java.util.Arrays;
    import java.util.List;
    import java.math.BigDecimal;
    import test1.Rational;
    
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("输入两个数字构成有理数分数");
            Rational a = new Rational(in.nextInt(), in.nextInt());
            System.out.println("输入两个数字构成有理数分数");
            Rational b = new Rational(in.nextInt(), in.nextInt());
            System.out.println("两个有理数相加结果");
            System.out.println(a.addition(b));
            System.out.println("两个有理数相减结果");
            System.out.println(a.subtraction(b));
            System.out.println("两个有理数相乘结果");
            System.out.println(a.multiplication(b));
            System.out.println("两个有理数相除结果");
            System.out.println(a.division(b));
            System.out.println("比较两个有理数大小结果:大于输出1,等于输出0,小于输出-1");
            System.out.println(a.compareTo(b));
            System.out.println("将第一个有理数转换成字符串型");
            System.out.println(a.toString());
            System.out.println("将第一个有理数转换成double型");
            System.out.println(a.doubleValue());
            System.out.println("将第一个有理数转换成int型");
            System.out.println(a.intValue());
            System.out.println("将第一个有理数转换成long型");
            System.out.println(a.longValue());
        }
    
    }
    

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

    c语言代码是依据于函数的,主要是通过过程来实现,类将功能以方法形式写出,而在使用时将类导入即可,更加方便

    4.尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。

    4.1别人如何复用你的代码 ?

    导入test1包

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

    是的,有理数属性更改在一定程度上会影响调用我有理数的除了public类的代码。

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

    有些属性不想被他人访问可以设置为private类

  • 相关阅读:
    [模板]洛谷T3369 普通平衡树 链表&普通Treap
    C++语法知识点整理
    [模板]洛谷T3373 线段树 模板2
    [模板]洛谷T3372 线段树 模板1
    [模板]洛谷T3368 树状数组 模板2
    JSON
    code first迁移和部署
    序列化 (C#)
    Linq小记
    文件和注册表
  • 原文地址:https://www.cnblogs.com/13859862647z/p/15344614.html
Copyright © 2011-2022 走看看