3.1-互评-OO设计-有理数类的设计

1.我的有理数代码:

public class RationalNum {
	private  int RNum;	//有理数
	
	public int getRNum() {
		return RNum;
	}

	public void setRNum(int rNum) {
		RNum = rNum;
	}

	public int add(int addNum) {//相加
		int num = RNum + addNum;
		return num;
	}
	
	public int sub(int subNum) {//相减
		int num = RNum - subNum;
		return num;
	}
	
	public int mul(int mulNum) {//相乘
		int num = RNum * mulNum;
		return num;
	}
	
	public double div(double divNum) {//相除
		double num = RNum / divNum;
		return num;
	}
	
	public int rem(int remNum) {//求余
		int num = RNum%remNum;
		return num;
	}
	
	public double sqrt() {//开方
		double num=Math.sqrt(RNum);
		return num;
	}
		
}

2.测试代码

import java.util.Scanner;
import test.RationalNum;

public class test2 {
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		int numb1 = scanner.nextInt();
		int num2 = scanner.nextInt();
		
		RationalNum firstNum = new RationalNum();
		
		firstNum.setRNum(numb1);
        
		System.out.println("相加得:" + firstNum.add(num2));
		System.out.println("相减得:" + firstNum.sub(num2));
		System.out.println("相乘得:" + firstNum.mul(num2));
		System.out.println("相除得:" + firstNum.div((double)num2));
		System.out.println("除余得:" + firstNum.rem(num2));
		System.out.println("开方得:" + firstNum.sqrt());
		scanner.close();						
	}
}

3.测试结果

在这里插入图片描述

4.问题

1.尝试回答与c语言的有理数代码相比较,为什么你设计的类更加面向对象?
  • 例如在C语言中我定义一个string类型得字符串,我现在想要知道它得长度,那么我可以用strlen(str);来得到他得长度。由于C不是面向对象的语言,也就没有this的概念,因此当使用一个与某个“东西”相关的函数时,就需要不厌其烦的将代表这个“东西”的变量作为参数传递进去。而Java中有一个字符串类String, 通过调用 String.length()就可以直接知道字符串的长度。所以感觉我设计得更加面向对象。
2.尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。
1.别人如何复用你的代码?
  • 复制我的代码并命名如RationalNum的类,然后就可以调用了
2.别人的代码是否依赖你的有理数类的内部属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
  • 既然是调用我的代码,那肯定是依赖我的有理数类的内部属性了,当我修改我的有理数类的属性修改时,会影响他人调用你有理数类的代码。
3.有理数类的public方法是否设置合适?为什么有的方法设置为private?
  • 合适,因为有一些我不希望别人访问的属性,这些就需要设置成private。
4.你的类里面有static属性或方法吗?如果有,为什么要设置为static的?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值