文章目录

  • (一)学生的类
  • (二)设计类来描述真实客观世界中的事物
  • (三)账户类Account
  • (四)风扇类Fan

(一)学生的类

现在要求设计一个表示学生的类,里面有学生的姓名、学号、年龄,还要有三项成绩:计算机成绩、数学成绩、英语成绩,要求可以求总分、平均分、最高、最低分,并且可以输出一个学生的完整信息,请设计此类。
提示:程序开发步骤
根据需求定义出所要的类;
根据题目中的要求规划出类的属性;
所有的属性必须封装:private;
所有的属性必须通过getter和setter访问;
如果需要增加构造方法,为属性赋初值,适当采用构造方法重载;
所有的信息不要类中直接输出,而是交给调用处输出,即在该类中尽量不出现System.out.println()语句。例如在调用类中输出如下结果:

总分:267.70000000000005
平均分:89.23333333333335
最高分:91.4
最低分:87.3
学生信息:
|-学号:100
|-姓名:John
|-年龄:20
|-英语:89.0
|-计算机:87.3
|-数学:91.4

程序代码:

import java.lang.Math;public class School {public static void main(String[] args) {// 主函数Student a = new Student( "John" , "100" ,20) ;a.setMath(91.4);a.setEnglish(89.0);a.setCputer(87.3);System. out .println( " 总分:" + a.sum());System. out .println( " 平均分:" + a.ave());System. out .println( " 最高分:" + a.max1());System. out .println( " 最低分:" + a.min1());System. out .println( " 学生信息:" );System. out .println( " |- 学号:" + a.getId());System. out .println( " |- 姓名:" + a.getName());System. out .println( " |- 年龄:" + a.getAge());System. out .println( " |- 英语:" + a.getEnglish());System. out .println( " |- 计算机:" + a.getCputer());System. out .println( " |- 数学:" + a.getMath());}
}class Student {private String name ;private String id ;private int age ;private double match = 0;private double english = 0;private double cputer = 0;public Student(){}public Student(String newname,String newid, int newage ){name = newname;id = newid;age = newage;}public String getName(){return name ;}public String getId(){return id ;}public int getAge(){return age ;}public void setMath( double match){this . match = match;}public double getMath(){return match ;}public void setEnglish( double english){this . english = english;}public double getEnglish(){return english ;}public void setCputer( double cputer){this . cputer = cputer;}public double getCputer(){return cputer ;}public double sum(){return match + english + cputer ;}public double ave(){return ( match + english + cputer )/3;}public double max1(){double a ;a = Math.max( match , english );a = Math.max( cputer ,a);return a;}public double min1(){double a ;a = Math.min( match , english );a = Math.min( cputer ,a);return a;}
}

运行结果贴图:

(二)设计类来描述真实客观世界中的事物

1、设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改
程序功能:设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
程序源代码如下,补全横线上的程序代码。
public class Car {
private String ownerName; //车主姓名
private float curSpeed; //当前车速
private float curDirInDegree; //当前方向盘转向角度
public Car (String ownerName){
_______ = ________;
}
public Car (String ownerName, float speed, float dirInDegree){
_______;//调用上面那个构造函数为ownerName赋值
________ = _______ ;
________ = _______ _;
}
public String getOwnerName() { //提供对车主姓名的访问
_______;
}
public float getCurDirInDegree() { //提供对当前方向盘转向角度的访问
_______;
}
public float getCurSpeed() { //提供对当前车速的访问
_______;
}
public void changeSpeed(float curSpeed) { //提供改变当前的车速
_______ = ________;
}
public void stop(){ //提供停车
_________ = ________;
}
}
编写一个主方法,编译并测试源程序。

public class Car{private String ownerName; // 车主姓名private float curSpeed; // 当前车速private float curDirInDegree; // 当前方向盘转向角度public Car (String ownerName){this.ownerName = ownerName;}public Car (String ownerName, float speed, float dirInDegree){this(ownerName);// 调用上面那个构造函数为ownerName赋值curSpeed = speed;curDirInDegree = dirInDegree;}public String getOwnerName() { // 提供对车主姓名的访问return ownerName ;}public float getCurDirInDegree() { // 提供对当前方向盘转向角度的访问return curDirInDegree ;}public float getCurSpeed() { // 提供对当前车速的访问return curSpeed ;}public void changeSpeed(float curSpeed) { // 提供改变当前的车速this . curSpeed = curSpeed;}public void stop(){ // 提供停车curSpeed = 0;}
}

2、创建类的对象,使用对象的方法(类的非静态方法)来访问或修改对象的变量(类的非静态变量)
创建类Car的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。
程序代码如下(需要添加代码,要求运行结果如下图所示。
public class Car {
public static void main(String[] args){
EXP3_1 car=new Car (“成龙”,200f,25f);
//在下面填写代码
}
}
编译并运行,结果如图所示。

public class Cur{public static void main(String[] args){Car car=new Car ("成龙",200f,25f);//在下面填写代码System. out .println( " 车主姓名:" + car.getOwnerName());System. out .println( " 当前车速:" + car.getCurSpeed());System. out .println( " 当前转向角度:" + car.getCurDirInDegree());car.changeSpeed(80);System. out .println( " 改变车速变为:" +car.getCurSpeed());car.stop();System. out .println( " 停车, 车速变为:" + car.getCurSpeed());}
}

(三)账户类Account

设计一个名为Account的类,它包括:
● 一个名为id的int类型私有账户数据域(默认值为0)。
● 一个名为balance的double类型私有账户数据域(默认值为0)。
● 一个名为annualInterestRate的double类型私有数据域存储当前利率(默认值为0)。假设所有的账户都有相同的利率。
● 一个名为dateCreated的Date类型私有数据域存储账户的开户日期。
● 一个能创建默认账户的无参构造方法。
● 一个能创建带特定id和初始余额的账户的构造方法。
● id、balance和annualInterestRate的访问器和修改器。
● dateCreated的访问器。
● 一个名为getMonthlyInterestRate()的方法返回月利率。
● 一个名为withDraw的方法从账户提取特定数额。
● 一个名为deposit的方法向账户存储特定数额。
实现这个类。编写一个测试程序,创建一个账户ID为1122、余额为20000美元、年利率为4.5%的Account对象。使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余额、月利息以及这个账户的开户日期。

程序代码:

// 账户类
import java.util.Date;public class Account {private int id;private double balance;private double annualInterestRate;private Date dateCreated;// 创建默认账户的无参构造方法public Account(){}// 创建带特定id和初始余额的账户的构造方法  public Account( int id, double balance){this.id = id;this.balance = balance;dateCreated = new Date(); //初始化余额账户}// 访问器public void setId(int id){this.id = id;}public void setBalance(double balance){this.balance = balance;}public void setAnnualInterestRate(double annualInterestRate){this.annualInterestRate = annualInterestRate;}// 修改器public int getId(){return id;}public double getBalance(){return balance;}public double getAnnualInterestRate(){return annualInterestRate;}// dateCreated的访问器public Date getDateCreated(){return dateCreated ;}// 返回月利率public double getMonthlyInterestRate(){return annualInterestRate ;}// 从账户提取特定数额public void withDraw( double draw){this.balance = this.balance - draw;}// 向账户存储特定数额public void deposit( double dposit){this.balance = this.balance + dposit;}
}// 测试程序
public class Test {public static void main(String[] args) {// 主函数Account account = new Account(1122,20000);account.setAnnualInterestRate(0.045);account.withDraw(2500);account.deposit(3000);System.out.println( " 余额:" + account.getBalance());System.out.println( " 月利息:" + account.getMonthlyInterestRate());System.out.println( " 账户的开户日期:" + account.getDateCreated());}
}

运行结果贴图:

(四)风扇类Fan

设计一个名为Fan的类来表示一个风扇。这个类包括:
 三个名为SLOW、MEDIUM、FAST而值是1、2和3的常量表示风扇的速度。
 一个名为speed的int类型私有数据域表示风扇的速度(默认值为SLOW)。
 一个名为on的boolean类型的私有数据域表示风扇是否打开(默认值为false)。
 一个名为radius的double类型的私有数据域表示风扇的半径(默认值为5)。
 一个名为color的String类型的数据域表示风扇的颜色(默认值为blue)。
 这四个数据域的访问器和修改器。
 一个创建默认风扇的无参构造方法。
 一个名为toString()的方法返回描述风扇的字符串。如果风扇是打开的,那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。如果风扇没有打开,该方法就返回一个由“fan is off”和风扇颜色及半径组合成的字符串。
实现这个类。编写一个测试程序,创建两个fan对象。将第一个对象设置为最大速度、半径为10、颜色为yellow、状态为打开。将第二个对象设置为中等速度、半径为5、颜色为blue、状态为关闭。通过调用它们的toString方法显示这些对象。

程序代码:

运行结果贴图:

(四)(几何方面:正n边形)在一个正n边形中,所有边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。设计一个名为RegularPolygon的类,该类包括:
 一个名为n的int型私有数据域定义多边形的边数,默认值为3。
 一个名为side的double型私有数据域存储边的长度,默认值为1。
 一个名为x的double型私有数据域,它定义多边形中点的x坐标,默认值为0。
 一个名为y的double型私有数据域,它定义多边形中点的y坐标,默认值为0。
 一个创建带默认值的正多边形的无参构造方法。
 一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。
 一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。
 所有数据域的访问器和修改器。
 一个返回多边形周长的方法getPerimeter()。
 一个返回多边形面积的方法getArea()。计算正多边形面积的公式是:
面积=
实现这个类。编写一个测试程序,分别使用无参构造方法、RegularPolygon(6,4)和RegularPolygon(10,4,5.6,7.8)创建三个RegularPolygon对象。显示每个对象的周长和面积。

程序代码:

运行结果贴图:

(五)(代数方面:二次方程)为二次方程式 设计一个名为QuadraticEquation的类。
这个类包括:
 代表参数为a、b和c。
 一个参数为a、b和c的构造方法。
 A、b、c的三个get方法。
 一个名为getDiscriminant()的方法返回判别式, 。
 一个名为getRoot1()和getRoot2()的返回等式的两个根:
and
这些方法只有在判别式为非负数时才有用。如果判别式为负,这些方法返回0。
实现这个类。编写一个测试程序,提供用户输入a、b和c的值,然后显示判别式的结果。如果判别式为正数,显示两个根;如果判别式为0,显示一个根;否则显示“The equation has no roots.”(这个方程无根)。
程序代码:

运行结果贴图:

(五)设计一个名为StopWatch的类,该类包含:
具有访问器方法的私有数据域startTime和endTime。
一个无参的构造方法,使用当前时间来初始化stratTime。
一个名为start()的方法,将startTime重设为当前时间。
一个名为stop()的方法,将endTime设置为当前时间。
一个名为getElapsedTime()方法,以毫秒为单位返回秒表记录的流逝shi间。
程序代码:

运行结果贴图:

Java实验4 面向对象基础相关推荐

  1. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  2. java中的面向对象基础

    java中的面向对象基础 1.对象 #一切客观存在的事物都是对象,万物皆对象. #任何对象,一定具有自己的特征和行为. 2.类 (1)类的定义 (2)对象的创建 (3) 类与对象的关系 类:定义了对象 ...

  3. JAVA实验二 面向对象程序设计

    一.实验目的 通过编程和上机实验,掌握类和构造方法的定义及创建对象的方法,掌握类的封装及继承原则,正确使用重载和覆盖等多态概念设计可复用方法,熟悉包.接口的使用方法,掌握面向对象的程序设计方法. 二. ...

  4. Java实验03 面向对象(下)

    实验三 面向对象(下) 实验3-1 类的继承 一.实验描述 1. 考核知识点 名称:类的继承 2. 练习目标  了解类继承的意义和作用  掌握如何实现类的继承 3. 需求分析 在程序中,继承描述的 ...

  5. Java实验三 面向对象:编写一个类,实现银行账户,并完成程序的测试。

    实验要求: (1)设置的属性有"账号". "储户姓名"."地址"以及"存款余额": (2)设置的方法有"存款& ...

  6. 基于Java语言的面向对象基础算法的练习

    话不多说,直接上题目: 一.编写 Car 类,属性有品牌(brand)和颜色(color),show 方法打印 所有属性. 代码如下: public static void main(String[] ...

  7. 实例化Java对象_Java面向对象基础之对象实例化

    1.实例化对象的过程可以分为两部分,例如下面代码: Person per = new Person(); 该代码分为两部分: 第一,声明对象:Person per,这部分是在栈内存中声明的,与数组一样 ...

  8. java实验Java面向对象编程_Java实验项目 面向对象编程.doc

    Java实验项目 面向对象编程 Java实验项目二 面向对象编程 第1部分 类与对象 [实验目的] 熟悉Java面向对象程序设计的基本思想. 掌握类与对象的定义及使用方法. 掌握package语句与i ...

  9. 武汉理工大学-Java面向对象与多线程综合实验-(7)多线程基础

    实验目标 本实验为此系列的最后一次实验,目标在实验 (6) 的基础上增加多线程功能,使得档案系统能允许多个用户同时进行登录操作,同时实现线程之间必要的同步互斥功能. 模块解析 此次实验模块与实验 (6 ...

最新文章

  1. mysql sum计算效率很慢_MySQL--RDS下的分区表实践(文末附MySQL视频教程与面试题)...
  2. python开发桌面软件-python适合windows的桌面应用程序开发吗?
  3. leetcode算法题--有序数组中的单一元素
  4. ls--查看文件或者目录的信息
  5. 通过异常捕获判断字符串是不是数字格式
  6. 会计用计算机很快是,40个超实用电脑快捷键,老会计都在用!
  7. 测试技术培训:如何测试磁盘写的速度
  8. 使用git第一次成功,记录
  9. 2021百度之星报名开启 特设“小星星”奖项鼓励少年AI人才
  10. shell 脚本案例
  11. 入门:安装Python
  12. 单元测试总结反思_考试后的总结与反思600字
  13. 罗永浩写给俞敏洪的信
  14. 报考软件资格考试过程详解--附学习分享
  15. 幼儿园观察记录的目的和目标_幼儿园观察目的是什么?
  16. linux mtd0信息,linux mtd
  17. 计应121--实训三【李智飞(27号)--李阳持(26号)--胡俊琛(13号)--曹吉(2号)】
  18. Zepto中文API
  19. AMiner权威发布区块链大数据报告(附下载)
  20. 贪吃蛇项目(C语言)

热门文章

  1. time_t转换为DateTime
  2. OLTP与OLAP介绍
  3. asp.net mvc项目中遇到的古怪的问题,(项目中有frame框架)
  4. http://renmin.cnblogs.com/archive/2006/03/03/341669.aspx
  5. 2017计算机基础教学大纲,2017级大学计算机基础教学大纲
  6. 写出杨辉三角_认识杨辉三角
  7. 简历javaweb项目描述怎么写_简历要怎么写
  8. 接口类的多继承以及抽象类的单继承
  9. js 文件引用传递参数
  10. C#中判断服务器图片是否存在