深圳大学-Java程序设计实验-包及继承应用

实验目的

熟悉面向对象编程中抽象类、接口及异常检测。

实验内容

1

2023年杭州亚运会共设多种球类比赛项目,包括足球、篮球、排球、乒乓球(9)、羽毛球(9)、网球(7)、橄榄球等,这些都可以称之为“球”。请通过分析,抽象它们所共有的性质,定义一个抽象类Ball。在报告中附上程序截图、运行结果截图(要求以中国队获得奖牌数量最多的三个球类运动项目为例)和详细的文字说明

程序截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行结果截图:
在这里插入图片描述
文字说明:
程序定义了一个抽象类Ball,具有成员变量name,equipment(名字和装备),含有一个构造方法,print方法,和抽象方法play,然后分别创建了三个类PingPong,Badminton,Tennis,都继承自Ball类,并实现了抽象方法play;此外,还创建了一个Test类进行测试。

2

编写一个抽象类Animal,它具有三个抽象方法moving, eating和yelling。分别实现这个抽象类的三个子类Tiger、Parrot和Dolphin。实现一个测试类,在测试类的main方法中分别使用这三个子类创建对象实体,然后通过它们的上转型对象变量调用moving()方法、eating()方法和yelling()方法。在报告中附上程序截图、运行结果截图和详细的文字说明。

程序截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行结果截图:
在这里插入图片描述
文字说明:
代码编写了一个抽象类Animal,它具有三个抽象方法moving, eating和yelling。分别实现这个抽象类的三个子类Tiger、Parrot和Dolphin。然后实现了一个Test类,在测试类的main方法中分别使用这三个子类创建对象实体,然后通过它们的上转型对象变量调用moving()方法、eating()方法和yelling()方法,并打印出结果。

3

一个五维向量由五个分量组成。五维向量的相加、相减和点乘等价于对应五个分量的相加、相减和相乘。比如两个五维向量(5,2,1,8,10)和(3,-1,0,-4,1),它们的和为(8,1,1,4,11),它们的差为(2,3,1,12,9),它们的点乘为(15,-2,0,-32,10)。编写一个接口Computable,它具有三个抽象方法add、minus和elementwiseProduct。编写一个Vector类,通过Computable接口实现五维向量的相加、相减和点乘。在报告中附上程序截图、运行结果截图和详细的文字说明。

程序截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述运行结果截图:
在这里插入图片描述
文字说明:
代码编写了一个接口Computable,它具有三个抽象方法add、minus和elementwiseProduct。然后编写了一个vector类,通过Computable接口实现五维向量的相加、相减和点乘,并在main里头测试,并打印输出了结果。

4

Comparable接口定义了compareTo方法,用于比较两个对象,自行查找资料了解Comparable接口。设计一个GeometricObject类,实现Comparable接口,同时声明抽象方法getArea计算几何图形的面积。设计两个子类Circle和Rectangular,分别继承自GeometricObject。分别创建一个Circle对象和一个Rectangular对象,利用GeometricObject的compareTo方法比较两个对象的大小。

程序截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行结果截图:
在这里插入图片描述
文字说明:
代码设计了GeometricObject类,实现了Comparable接口,同时声明抽象方法getArea计算几何图形的面积。设计了两个子类Circle和Rectangular,分别继承自GeometricObject。然后在测试类Test里头的main函数里面分别创建一个Circle对象和一个Rectangular对象进行测试,并利用了GeometricObject的compareTo方法比较两个对象的大小,然后输出测试结果。

5

编写bin2Dec(String binaryString)方法,将一个二进制字符串转换为十进制数。(1)实现bin2Dec方法,在字符串不是一个二进制字符串时抛出NunberFormatException异常。编写测试程序,提示用户以字符串形式输入一个二进制数字并显示其对等的十进制数字。如果方法抛出异常,则显示“不是二进制数字”。(2)定义一个名为BinaryFormatException的自定义异常,实现bin2Dec方法,在字符串不是一个二进制字符串时抛出BinaryFormatException异常,重复步骤(1)的测试。

(1)
程序截图:

import java.util.Scanner;

public class BinaryConvert {
    public static int bin2Dec(String binaryString) throws NumberFormatException{
        for (char c : binaryString.toCharArray()) {
            if (c != '0' && c != '1') {
                throw new NumberFormatException("不是二进制数字");
            }
        }

        int ans = 0,cnt=0;
        for (int i = binaryString.length() - 1; i >= 0; i--) {
            if (binaryString.charAt(i) == '1') {
                ans += Math.pow(2, cnt);
            }
            cnt++;
        }
        return ans;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请以字符串形式输入一个二进制数字:");
        String bin_num= scanner.nextLine();

        try {
            int ans= bin2Dec(bin_num);
            System.out.println("对应的十进制数字为: " + ans);
        } catch (NumberFormatException e) {
            System.out.println("不是二进制数字");
        }
    }
}

运行结果截图:
在这里插入图片描述
在这里插入图片描述
文字说明:
在这个代码中,我们定义了bin2Dec方法,该方法接受一个字符串参数,并尝试将其转换为十进制数。在方法内部,我们首先检查字符串是否是一个有效的二进制字符串,如果不是,则抛出NumberFormatException异常。如果字符串是一个有效的二进制字符串,我们使用将其转换为十进制数,然后返回结果。在main方法中,我们使用Scanner类来接收用户输入的二进制字符串。然后,我们调用bin2Dec方法并捕获可能抛出的NumberFormatException异常。如果没有异常发生,我们将打印出转换后的十进制数。如果抛出了异常,我们将打印出"不是二进制数字"的消息。

(2)
程序截图:

import java.util.Scanner;

public class BinaryFormatException extends Exception{
    String message;
    BinaryFormatException(){
        message="输入的数字不是一个二进制数字";
    }
    public String getMessage(){
        return message;
    }
    public static int bin2Dec(String s) throws BinaryFormatException{
       for(char c:s.toCharArray()){
           if(c!='0'&&c!='1'){
               BinaryFormatException ex=new BinaryFormatException();
               throw(ex);
           }
       }
       int res=0,cnt=0;
       for(int i=s.length()-1;i>=0;i--){
           if(s.charAt(i)=='1'){
               res+=Math.pow(2,cnt);
           }
           ++cnt;
       }
       return res;
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请以字符串形式输入一个二进制数字:");
        String bin_num=scanner.nextLine();

        try{
            int ans=bin2Dec(bin_num);
            System.out.println("结果为"+ans);
        }
        catch(BinaryFormatException e){
            System.out.println((e.getMessage()));
        }
    }
}

运行结果截图:
在这里插入图片描述
在这里插入图片描述
文字说明:
这段代码实现了一个名为 BinaryFormatException 的自定义异常类,并定义了 bin2Dec 方法用于将二进制字符串转换为十进制数。该类包含一个字符串类型的 message 成员变量,用于存储异常信息。提供了一个无参构造函数和一个 getMessage 方法,用于获取异常信息。在 bin2Dec 方法中,首先通过遍历输入的字符串,检查是否存在非二进制数字,如果存在非二进制数字,则创建一个 BinaryFormatException 异常对象,并抛出该异常。如果输入的字符串是一个有效的二进制数字,则将二进制字符串转换为十进制数,并返回结果。在 main 方法中,我们使用 Scanner 类接收用户输入的二进制字符串,并调用 bin2Dec 方法进行转换。如果转换过程中抛出了 BinaryFormatException 异常,我们捕获异常并打印出异常信息。否则,打印出转换后的十进制数。

6

关于面向对象编程中的三个特性(封装、继承和多态),谈谈你的理解,并对封装或继承,通过类比、关联或演绎的方式,举一个在日常的学习生活中可以应用的例子(要求积极向上且能自圆其说)。

例子:在学习生活中,我们可以将不同类型的课程抽象为一个Course类,然后通过继承创建不同具体课程的子类,如MathCourse、EnglishCourse等。这些子类可以继承父类的共同属性和方法,如课程名称、授课教师等,同时可以根据具体课程的特点添加额外的属性和方法,如数学课程可以有求解计算题方法,英语课程可以有背诵单词的方法。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深圳大学Java程序设计课程中涉及到了网络编程应用。网络编程是指通过网络进行数据交互的程序设计方式。 在网络编程中,我们需要使用Java提供的一些类库和API来实现网络通信。Java中提供了一套完善的网络编程工具,包括Socket编程、ServerSocket编程、URL编程等。 Socket编程是实现网络通信的基本方式之一,它是一种面向连接的通信方式。通过创建一个Socket对象,程序可以与远程服务器进行连接,并进行数据的发送和接收。使用Socket编程,我们可以实现客户端和服务器之间的通信,实现从客户端向服务器发送请求,服务器处理请求并返回结果的功能。 ServerSocket编程是一种服务器端的网络编程方式,它可以接收客户端的连接请求并与之建立连接。通过创建一个ServerSocket对象,并调用其accept()方法,服务器可以等待客户端的连接请求,并将连接请求转交给一个新的Socket对象进行处理。使用ServerSocket编程,我们可以实现服务器的功能,接收来自多个客户端的请求,并处理这些请求。 URL编程是一种用于访问远程资源的网络编程方式。通过创建一个URL对象,并调用其openConnection()方法,我们可以建立与远程服务器的连接,并获取服务器返回的数据。使用URL编程,我们可以实现通过HTTP协议获取网页内容、下载文件等功能。 在深圳大学Java程序设计课程中,我们将学习如何使用这些网络编程的工具和技术,并实践一些网络应用开发。通过这门课程的学习,我们可以掌握网络编程的基本原理和常用技术,提升自己的Java程序设计能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值