当前位置: 首页 > news >正文

《Java程序设计》实验报告

实验内容:面向对象程序设计

1、定一个名为Person的类,其中含有一个String类型的成员变量name和一个int类型的成员变量age, 分别为这两个变量定义访问方法和修改方法,另外再为该类定义一个名为speak的方法, 在其中输出name和age的值。编写一应用程序,使用上面定义的Person类,实现数据的访问、修改。

package com.itheima.demo;public class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void speak(){System.out.println("Name:"+getName());System.out.println("Age:"+getAge());}}class Persontest1{public static void main(String[] args) {Person P=new Person();P.setName("李四");P.setAge(21);P.speak();}}
 

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

2、定义一个名为Rectangle的类表示矩形,其中含有length、width两个double型的成员变量表示矩形的长和宽。 要求为每个变量定义访问方法和修改方法,定义求矩形周长的方法perimeter()和求面积的方法area()。 编写一个类测试这个矩形类。3、为上题(第2题)的Rectangle类编写一个带参数的构造方法,通过用户给出的长、宽创建矩形对象, 再编写一个默认构造方法(无参构造方法),使用默认构造方法创建矩形对象,然后通过setter方法为对象属性赋值。编写一个类测试这个矩形类。

package com.itheima.demo;public class Rectangle {private double length;private double width;public double getLength() {return length;}public void setLength(double length) {this.length = length;}public double getWidth() {return width;}public void setWidth(double width) {this.width = width;}public double perimeter(){return (getLength()+getWidth())*2;}public double area(){return getLength()*getWidth();}public Rectangle(double length,double width){this.length=length;this.width=width;}public Rectangle(){}}

public class Rectangletest {public static void main(String[] args) {Rectangle R=new Rectangle();R.setWidth(2.0);R.setLength(3.0);System.out.println("周长:"+R.perimeter());Rectangle M=new Rectangle(4,2);System.out.println("面积:"+M.area());}}
正在上传…重新上传取消

4、定义一个Triangle类表示三角形,其中包括3个double型变量a、b、c,用于表示3条边长。为该类定义两个构造方法 :默认构造方法(无参构造方法)设置三角形的3条边长都为0.0;带3个参数的构造方法通过传递3个参数创建三角形 对象。定义求三角形面积的方法area(),面积计算公式为:area=Math.sqrt(s*(s-a)(s-b)(s-c)),其中s=(a+b+c) /2。编写程序测试该类。

package com.itheima.demo;public class Triangle {private double a;private double b;private double c;public Triangle(double a, double b, double c) {this.a = a;this.b = b;this.c = c;}public Triangle() {}public double area(){double s=(a+b+c)/2;return Math.sqrt(s*(s-a)*(s-b)*(s-c));}}
package com.itheima.demo;public class Triengletest {public static void main(String[] args) {Triangle T=new Triangle();System.out.println(T.area());Triangle T1=new Triangle(10,10,10);System.out.println(T1.area());}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

5、定义一个表示二维平面上的点Point类,并在该类中定义一个计算两点之间距离的方法,其格式如下:

• public double getDistance(Point p)

编写一个类测试这个Point类。

package com.itheima.demo;public class Point {private double x;private double y;public Point(double x,double y){this.x=x;this.y=y;}public double getDistance(Point p){return Math.sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));}}

public class Pointtest {public static void main(String[] args) {Point P=new Point(2,3);Point P1=new Point(5,7);double part=P1.getDistance(P);System.out.println("两点相距:"+part);}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

  1. 定义一个名为Student的类,它继承Person类(Person类中包含String类型的name和int类型的age),其中定义sno(表示学号)和major(表示专业)两个成员变量和封装这两个变量的方法。编写主程序,检查新建类中的所有变量和方法。

package com.itheima.demo;public class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Person(String name,int age){this.name=name;this.age=age;}public void speak(){System.out.println("Name:"+getName());System.out.println("Age:"+getAge());}}
 
class Student extends Person{private String sno;private String major;public Student(String name,int age,String sno,String major){super(name,age);this.sno=sno;this.major=major;}public void speak(){System.out.println("name="+getName()+"age="+getAge()+"sno="+sno+"major="+major);}}

public class PersonStudentStest {public static void main(String[] args) {Student S=new Student("张三",21,"6021203152","计算机");S.speak();}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

2、设计一个汽车类Auto,其中包含一个表示速度的double型的成员变量speed和表示启动的start()方法、表示加速的speedUp()方法以及表示停止的stop()方法。再设计一个Auto类的子类Bus表示公共汽车,在Bus类中定义一个int型的、表示乘客数量的成员变量passenger,另外定义两个方法gotOn()和gotOff()表示乘客上车和下车。编写一个应用程序,测试Bus类的使用。

package com.itheima.demo;public class Auto {private double speed;public void start(){System.out.println("启动");}public void speedUp(){System.out.println("加速");}public void stop(){System.out.println("停止");}}

public class Bus extends Auto{private int passenger;public void gotOn(){System.out.println("乘客上车");}public void gotOff(){System.out.println("乘客下车");}}

public class AutoBustest {public static void main(String[] args) {Bus B=new Bus();B.gotOff();B.gotOn();B.speedUp();B.start();B.stop();}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

3、定义一个名为Cuboid的长方体类,使其继承Rectangle类(Rectangle类中包含double类型的length和width),其中包含一个表示高度的double型成员变量height,定义一个构造方法Cuboid(double length,double width,double height)和一个求长方体体积的volume()方法。编写一个应用程序,在其中求一个长、宽、高分别为10、5、2的长方体的体积。

package com.itheima.demo;public class Rectangle {private double length;private double width;public double getLength() {return length;}public void setLength(double length) {this.length = length;}public double getWidth() {return width;}public void setWidth(double width) {this.width = width;}public double perimeter(){return (getLength()+getWidth())*2;}public double area(){return getLength()*getWidth();}public Rectangle(double length,double width){this.length=length;this.width=width;}public Rectangle(){}}

public class Cuboid extends Rectangle{private double height;public Cuboid(double length,double width,double height){super(length,width);this.height=height;}public double volume(){return getLength()*getWidth()*height;}}

public class CuboidRectangleTest {public static void main(String[] args) {Cuboid C=new Cuboid(10,5,2);System.out.println(C.volume());}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

4、定义一个表示圆的Circle类,其中有表示半径的double型的属性radius,计算圆周长的perimeter方法和计算面积的area方法。在Circle类的基础上,定义圆柱体Cylinder类和球体Sphere类,它们分别具备计算表面积的area方法和体积的volume方法,编写测试类进行测试。

package com.itheima.demo;public class Circle {private double radius;public double getRadius() {return radius;}public double Perimeter(){return 2*(Math.PI)*radius;}public double area(){return Math.PI*radius*radius;}public Circle(double radius){this.radius=radius;}}

public class Cylinder extends Circle{private double height;public Cylinder(double radius,double height){super(radius);this.height=height;}public double area() {return (Math.PI*getRadius()*getRadius()*2)+(Math.PI*2*getRadius()*height);}public double volume(){return Math.PI*getRadius()*getRadius()*height;}}

public class Sphere extends Circle{public double area(){return Math.PI*4*getRadius()*getRadius();}public double volume(){return (4/3.0)*Math.PI*getRadius()*getRadius()*getRadius();}public Sphere(double radius) {super(radius);}}

public class CircleTest {public static void main(String[] args) {Circle C=new Circle(2);System.out.println("");System.out.println("面积:"+C.area());System.out.println("周长:"+C.Perimeter());Cylinder cylinder = new Cylinder(2,3);System.out.println("圆柱体");System.out.println("面积:"+cylinder.area());System.out.println("体积:"+cylinder.volume());Sphere sphere=new Sphere(3);System.out.println("球体");System.out.println("面积:"+sphere.area());System.out.println("体积:"+sphere.volume());}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

5、编写一个银行账户类,类的构成包括:

(1)数据成员:用户的账号名称、用户的账户余额;

(2)方法包括:开户(设置账户名称及余额),利用构造方法完成;

(3)查询余额。

package com.itheima.demo;public class Bank {private String name;private int account;public Bank(String name,int account){this.name=name;this.account=account;}public void search(){System.out.println("姓名:"+name);System.out.println("账户余额:"+account);}}

public class Banktest {public static void main(String[] args) {Bank bank=new Bank("李四",3000);bank.search();}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

6、接口应用:接口继承与接口实现

具体要求:

(1)Biology生物接口中定义了breathe()抽象方法;

(2)Animal动物接口继承了Biology接口,增加eat()和sleep()两个抽象方法;

(3)Human人类接口继承了Animal接口,增加think()和learn()两个抽象方法;

(4)定义一个普通人类Person实现Human接口,并进行测试。

package com.itheima.demo;public interface Biology {public void breathe();}

public interface Animal extends Biology{public abstract void eat();public abstract void sleep();}

public interface Human extends Animal {public abstract void think();public abstract void learn();}

public class Person1 implements Human{@Overridepublic void breathe() {System.out.println("呼吸");}@Overridepublic void eat() {System.out.println("");}@Overridepublic void sleep() {System.out.println("睡觉");}@Overridepublic void think() {System.out.println("认为");}@Overridepublic void learn() {System.out.println("学习");}}

public class PersonTest {public static void main(String[] args) {Person1 person1=new Person1();person1.breathe();person1.eat();person1.learn();person1.sleep();person1.think();}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

7、动态多态应用:企业员工工资管理

具体要求:某公司的雇员分为以下若干类:

(1)Employee员工类,包含受保护的属性name(姓名)、birthDate(出生日期),public double getSalary(Employee e)方法(该方法根据传入不同类别的员工,工资计算方法则返回其本月的工资);

(2)SalariedEmployee类继承Employee类,代表领取固定工资的员工,包含私有属性salary(固定工资);

(3)HourlyEmployee类继承Employee类,代表按小时拿工资的员工,包含私有属性hourSalary(每小时的工资)、hours(每月工作的小时数)。工资计算方法:月工资=hourSalary * hours,每月工作超出160小时的部分,按照1.5倍小时工资发放。

(4)SalesEmployee类继承Employee类,代表销售人员,包含受保护的属性sale(月销售额),commissionRate(提成率)。工资计算方法:月工资=sale * commissionRate。

(5)BasePlusSalesEmployee类继承SalesEmployee类,代表有固定底薪的销售人员,工资由底薪加上销售提成部分组成。其私有属性basicSalary(底薪)。工资计算方法:月工资=basicSalary + sale * commissionRate。

(6)根据要求创建SalariedEmployee、HourlyEmployee、SalesEmployee、BasePlusSalesEmployee类的对象各一个,并计算某个月这4个对象的工资。

package com.itheima.demo;public class Employee {protected String name;protected String birthDate;public double getSalary(Employee e){return 0;}public Employee(String name, String birthDate) {this.name = name;this.birthDate = birthDate;}}

public class SalariedEmployee extends Employee {private double salary;public double getSalary(){return salary;}public SalariedEmployee(String name, String birthDate, double salary) {super(name, birthDate);this.salary = salary;}}

public class HourlyEmployee extends Employee {private double hourSalary;private double hours;public double getSalary(){if(hours>160){return hourSalary*160+hourSalary*(hours-160)*1.5;}else {return hourSalary * hours;}}public HourlyEmployee(String name, String birthDate, double hourSalary, double hours) {super(name, birthDate);this.hourSalary = hourSalary;this.hours = hours;}}

public class SalesEmployee extends Employee {protected double sale;protected double commissionRate;public double getSalary(){return sale*commissionRate;}public SalesEmployee(String name, String birthDate, double sale, double commissionRate) {super(name, birthDate);this.sale = sale;this.commissionRate = commissionRate;}}

public class BasePulsSalesEmployee extends SalesEmployee {private double basicSalary;public double getSalary() {return basicSalary+sale*commissionRate;}public BasePulsSalesEmployee(String name, String birthDate, double sale, double commissionRate, double basicSalary) {super(name, birthDate, sale, commissionRate);this.basicSalary = basicSalary;}}

public class EmployeeTest {public static void main(String[] args) {SalariedEmployee E=new SalariedEmployee("张三","2021",20000);System.out.println("固定工资员工:"+E.name+" "+E.birthDate+" "+E.getSalary());HourlyEmployee H=new HourlyEmployee("李四","2001-12-31",20,300);System.out.println("小时工资员工:"+H.name+" "+H.birthDate+" "+H.getSalary());SalesEmployee S=new SalesEmployee("王五","2003-03-01",1000,2.5);System.out.println("销售员工:"+S.name+" "+S.birthDate+" "+S.getSalary());BasePulsSalesEmployee B=new BasePulsSalesEmployee("杨六","2003-08-23",62,1.9,2000);System.out.println("固定底薪销售员工:"+B.name+" "+B.birthDate+" "+B.getSalary());}}

uploading.4e448015.gif

正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消

相关文章:

《Java程序设计》实验报告

实验内容:面向对象程序设计 1、定一个名为Person的类,其中含有一个String类型的成员变量name和一个int类型的成员变量age, 分别为这两个变量定义访问方法和修改方法,另外再为该类定义一个名为speak的方法, 在其中输出n…...

数据可视化、BI和数字孪生软件:用途和特点对比

在现代企业和科技领域,数据起着至关重要的作用。为了更好地管理和理解数据,不同类型的软件工具应运而生,其中包括数据可视化软件、BI(Business Intelligence)软件和数字孪生软件。虽然它们都涉及数据,但在功…...

Ros noetic 机器人坐标记录运动路径和发布 实战教程(C)

前言: 承接上一篇博文本文将编写并记录上文中详细的工程项目,用于保存小车的运动路径,生成对应的csv,和加载所保存的路径到实际的Rviz中,本文将开源完整的工程项目,工程结构如下: 工程原码位于文章末尾: 路径存储: waypoint_saver 用于存储 waypoint 的节点 waypo…...

Linux入门之多线程|线程的同步|生产消费模型

文章目录 一、多线程的同步 1.概念 2.条件变量 2.1条件变量概念 2.2条件变量接口 1.条件变量初始化 2.等待条件满足 3.唤醒等待 3.销毁条件变量 2.3条件变量demo 二、生产消费模型 1.生产消费模型 2.基于BlockQueue的生产者消费者模型 3.基于C用条件变量和互斥锁实…...

MATLAB解析和保存ini文件

1. 将ini文件转换成struct结构体 function data ini2struct(filename)fid fopen(filename, r);if fid -1error(Unable to open file %s., filename);enddata struct();section ;while ~feof(fid)line fgetl(fid);line strtrim(line);% 如果是注释行或者空行&#xff0c…...

模型压缩-对模型结构进行优化

模型压缩-对模型结构进行优化 概述 模型压缩通常都是对推断过程而言,训练过程的计算代价通常不考虑,因为GPU可以快速完成任意复杂度模型的训练对于推断过程来说,模型应用才是对于速度敏感的场景多数情况下 希望使用尽可能少的能耗完成京可能…...

软件工程课件

软件工程 考点概述软件工程概述能力成度模型能力成熟度模型集成软件过程模型逆向工程![ ](https://img-blog.csdnimg.cn/425cea8190fb4c5ab2bf7be5e2ad990e.png) 考点概述 重点章节 软件工程概述 之前老版教程的,之前考过 能力成度模型 记忆 能力等级 和 特点 能力…...

基于ADS的marx雪崩电路设计-设计实践(射频脉冲源)

基于ADS的marx雪崩电路设计-设计实践(射频脉冲源) 设计一个ns级别的脉冲源,属于是半路转行的,虽然不了解具体原理但是也可以进行设计。具体的设计理论以及优化方法将在之后进行讨论. 参考文献:基于Marx电路的亚纳秒级…...

X86_64函数调用汇编程序分析

X86_64函数调用汇编程序分析 1 X86_64寄存器使用标准2 对应代码的分析2.1 main函数及其对应的汇编程序2.1.1 main的C代码实现2.1.2 main函数对应汇编及其分析2.1.3 执行完成之后栈的存放情况 2.2 test_fun_a函数及其对应的汇编程序2.2.1 test_fun_a函数的C实现2.2.2 test_fun_a…...

Vue3【Provide/Inject】

前言 自从使用了Provide/Inject代码的组织方式更加灵活了,但是这个灵活性的增加伴随着代码容错性的降低。我相信只要是真的在项目中引入Provide/Inject的同学,一定一定有过或者正在经历下面的状况: 注入名(Injection key&#x…...

Go-Python-Java-C-LeetCode高分解法-第四周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C Go-Python-Java-C-LeetCode高分解法-第一周合集 Go-Python-Java-C-LeetCode高分解法-第二周合集 Go-Python-Java-C-LeetCode高分解法-第三周合集 本…...

vue路由

一、声明式导航-导航链接 1.需求 实现导航高亮效果 如果使用a标签进行跳转的话,需要给当前跳转的导航加样式,同时要移除上一个a标签的样式,太麻烦!!! 2.解决方案 vue-router 提供了一个全局组件 router…...

最强的AI视频去码图片修复模型:CodeFormer

目录 1 CodeFormer介绍 1.1 CodeFormer解决的问题 1.2 人脸复原的挑战 1.3 方法动机 1.4 模型实现 1.5 实验结果 2 CodeFormer部署与运行 2.1 conda环境安装 2.2 运行环境构建 2.3 模型下载 2.4 运行 2.4.1 人脸复原 ​编辑​编辑 2.4.2 全图片增强 2.4.3 人脸颜色…...

jenkins自动化部署安装

一、准备工作 1、安装jdk # 1、下载准备jdk包(也可以用docker安装) wget ... # 2、直接解压到,无需安装 unzip ...2、安装maven # 1、下载准备maven压缩包 wget ... # 2、直接解压,无需安装 unzip ... # 3、修改setting.xml,修改localRepository和MIRROR镜像地址…...

如何调用Zabbix API获取主机信息

自Zabbix 1.8版本被引进以后,Zabbix API开始扮演着越来越重要的角色,它可以为批量操作、第三方软件集成以及其他应用提供可编程接口。 在运维实践中,Zabbix API还有更多巧妙的应用。 面对规模庞大的监控设备,可能会出现某台机器发…...

批量执行redis命令总结

目录 批量执行redis命令方式1: redis-cli直接执行方式2:通过redis-cli和xargs等命令 批量执行redis命令 方式1: redis-cli直接执行 redis-cli command param redis-cli本身支持单个命令执行省略了连接参数操作的key等相关数据,可以通过线下获取或通过keys scan等命…...

命令行git联网失败,但是实际可以联网

最近下载代码的时候发现总是告诉我连不上github的网页,但是我自己通过浏览器又可以上网,找了半天发现这个方法可以。 记录下这个代理 打开git bash 执行以下命令: git config --global http.proxy http://127.0.0.1:7890 git config --glob…...

网络编程套接字,Linux下实现echo服务器和客户端

目录 1、一些网络中的名词 1.1 IP地址 1.2 端口号port 1.3 "端口号" 和 "进程ID" 1.4 初始TCP协议 1.5 UDP协议 2、socket编程接口 2.1 socket 常见API 2.2 sockaddr结构 3、简单的网络程序 3.1 udp实现echo服务器和客户端 3.1.1 echo服务器实…...

java+ssh+mysql智能化办公管理系统

项目介绍: 本系统为基于jspsshmysql的OA智能办公管理系统,包含管理员、领导、员工角色,功能如下: 管理员:公告信息;工作计划;公司资料;部门管理;员工管理;员…...

网络层抓包tcpdump

sudo tcpdump -i eth0 -s 0 -nn host iphost -w xxx.pcap 这段代码使用了命令行工具 tcpdump,用于在Linux系统上捕获网络数据包。让我详细介绍一下这段代码的含义和 tcpdump 的用法: 代码含义: sudo: 使用超级用户权限执行 tcpdump 命令&am…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

Selenium常用函数介绍

目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...

DiscuzX3.5发帖json api

参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...