ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

有理数类的设计

2020-10-04 02:01:24  阅读:235  来源: 互联网

标签:有理数 r2 denominator numerator long Rational 设计 public


一、代码

1、有理数类的代码

package rational;

public class Rational {
	private long numerator;//分子
	private long denominator;//分母
	public Rational (long numerator,long denominator)//构造函数
	{
		this.numerator = numerator;
		this.denominator = denominator;
	}
	public long getNumerator() {//获得分子
		return numerator;
	}
	public long getDenominator() {//获得分母
		return denominator;
	}
	public Rational add(Rational r2){//加法
		long n=this.numerator*r2.denominator+this.denominator*r2.numerator;
		long d=this.denominator*r2.denominator;
		return new Rational(n,d);
	}
	public Rational subtract(Rational r2){//减法
		long n=this.numerator*r2.denominator-this.denominator*r2.numerator;
		long d=this.denominator*r2.denominator;
		return new Rational(n,d);
	}
	public Rational multiply(Rational r2){//乘法
		long n=this.numerator*r2.numerator;
		long d=this.denominator*r2.denominator;
		return new Rational(n,d);
	}
	public Rational divide(Rational r2){//除法
		long n=this.numerator*r2.denominator;
		long d=this.denominator*r2.numerator;
		return new Rational(n,d);
	}
	public int compare(Rational r2) {//比较大小
		long n=this.numerator*r2.denominator-this.denominator*r2.numerator;
		if(n>0)System.out.println("r1>r2");
		else if(n<0)System.out.println("r1<r2");
		else System.out.println("r1==r2");
		return 0;
	}
}

2、测试代码

package pta;

import rational.Rational;

public class test3 {
	public static void main(String[] args) {
		Rational r1=new Rational(3,4);
		Rational r2=new Rational(1,5);
		System.out.println(r1.add(r2).getNumerator()+"/"+r1.add(r2).getDenominator());
		System.out.println(r1.subtract(r2).getNumerator()+"/"+r1.subtract(r2).getDenominator());
		System.out.println(r1.multiply(r2).getNumerator()+"/"+r1.multiply(r2).getDenominator());
		System.out.println(r1.divide(r2).getNumerator()+"/"+r1.divide(r2).getDenominator());
		r1.compare(r2);
	}
}

测试结果截图:

二、讨论

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

因为C语言是面向过程编程,重点在于用函数,而我设计的类根据本身特性设计功能

2、尝试从代码复用的角度来描述你设计的有理数类

a、别人如何复用你的代码?

可以通过导入我的有理数类的包

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

别人的代码依赖于我的有理数类的属性;
当我的有理数类的属性修改时,不会影响他人调用你有理数类的代码,因为我的有理数类的属性是private型

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

合适;设置为private可以保护类的数据,有些方法只是起辅助作用,不需要在其他类中使用

标签:有理数,r2,denominator,numerator,long,Rational,设计,public
来源: https://www.cnblogs.com/22225942w/p/13765250.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有