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

    仿照BigDecimal类以面向对象的方式设计有理数类。
    1.给出你的有理数类的代码。

    package p1;
    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 this.numerator;
          }
    
          public int getDenominator()//获取分母
          {
              return this.denominator;
          }
     private static int gcd(int n,int d)//求最大公约数
        {
            int a = Math.abs(n);
            int b = Math.abs(d);
            int gcd = 1;
            for (int k=2;k<=a && k<=b;k++)
            {
                if(a%k==0&&b%k==0) {
                    gcd=k;
                }
            }
            return gcd;
        }
          public Rational add(Rational first,Rational second)//加法
          {
              int n = first.numerator * second.denominator + second.numerator * first.denominator;
              int d = first.denominator * second.denominator;
              return new Rational(n,d);
          }
    
          public Rational subtract(Rational first,Rational second)//减法
          {
              int n = first.numerator * second.denominator - second.numerator * first.denominator;
              int d = first.denominator * second.denominator;
              return new Rational(n,d);
          }
    
          public Rational multiply(Rational first,Rational second)//乘法
          {
              int n = first.numerator * second.numerator;
              int d = first.denominator * second.denominator;
              return new Rational(n,d);
          }
    
          public Rational divide(Rational first,Rational second)//除法
          {
              int n = first.numerator * second.denominator;
              int d = first.denominator * second.numerator;
              return new Rational(n,d);
          }
    
          public boolean equal(Rational first,Rational 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 long longValue()   //转换为long型
          {
              return (long)doubleValue();
          public double doubleValue()//转换为double型
          {
              return this.numerator*1.0 / this.denominator;
          }
          public float floatValue()  //转换为float型
          {
              return (float)doubleValue();
          }
          public String toString()   //转换为string型
          {
              return this.numerator + "/" + this.denominator;
          }
          }
     
    给出你的测试代码。要在与有理数类不同包的其他类中调用有理数类。
    类名、变量名命名需符合Java规范
    public class Main {
        public static void main(String[] args){
            Rational x=new Rational(1,6);
            Rational y=new Rational(3,5);
            System.out.println("x="+x.toString());
            System.out.println("y="+y.toString());
            System.out.println("x+y="+x.add(y));
            System.out.println("x-y="+x.subtract(y));
            System.out.println("x*y="+x.multiply(y));
            System.out.println("x/y="+x.divide(y));
            System.out.println(x.intValue());
            System.out.println(x.longValue());
            System.out.println(x.doubleValue());
            System.out.println(x.floatValue());
            System.out.println(x.toString());
        }
    }


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

    设计的类有属性和方法,java倾向于面向对象,封装了很多类和接口,以功能来解决问题;而c语言倾向于面向过程,即程序要实现的功能步骤
    尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。
    别人如何复用你的代码?         导入我的有理数类属性
    别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?      依赖;会影响
    有理数类的public方法是否设置合适?为什么有的方法设置为private?      合适; 因为设置成private时,只有类的内部才能访问到,外部没法访问,可以保护数据;设置成public,可以被任意类访问,被调用时方便

  • 相关阅读:
    Python面向对象详解
    使用树莓派搭建LoRaWAN网关并接入腾讯云物联网开发平台
    dajngo
    dajngo 项目目录结构调整
    Django
    nacos的简单使用
    MySQL数据库开发规范
    mabatis的sql标签
    直接插入100w数据报错
    大数据量插入到数据库
  • 原文地址:https://www.cnblogs.com/f-x-v-a-l-k/p/13766447.html
Copyright © 2011-2022 走看看