项目3 类与对象

实验目的:掌握Java类的结构、类的定义、方法和属性的定义以及对象的实现;掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传递和返回值的用法;掌握类变量与实例变量,以及类方法与实例方法的区别。
实验性质:验证性实验+设计性实验
实验内容:
(1)分析调试教材的第3章中的实例
(2)编写程序,实现如下描述。
定义一个长方形类MyBox,成员变量有length(长)、width(宽),方法分别有计算面积、周长、修改长、修改宽等。
在另一个类中使用此类的对象,验证其正确性。

package 实验三;
/*** 定义一个长方形类MyBox,成员变量有length(长)、width(宽),方法分别有计算面积、周长、修改长、修改宽等。* 在另一个类中使用此类的对象,验证其正确性。*/
public class Box {public static void main(String[] args) {MyBox m=new MyBox(9,1);System.out.println("初始长方形长为9、宽为1");m.setLength(4);System.out.println("修改长方形长为4");m.setWidth(3);System.out.println("修改长方形宽为3");m.area();m.Circumference();}
}
class MyBox//长方形类
{double length;//长double width;//宽public void setLength(double length)//设置长{this.length = length;}public void setWidth(double width)//设置宽{this.width = width;}MyBox(int a,int b){length=a;width=b;}void area()//面积{System.out.println("面积"+length*width);}void Circumference()//周长{System.out.println("周长"+(length+width)*2);}
}

(3)定义满足以下要求的复数类Complex
属性: realPart(int型,代表复数的实数部分)
imagePart(int型,代表复数的虚数部分)
方法:
 构造方法:Complex():将实部和虚部设置为0;
Complex(int r,int i):将实部和虚部分别设置为r和i;
 Complex addComplex(Complex a)(计算当前复数对象与参数对象a的相加之和,结果存储于当前对象,运算规则:(x1,y1)+(x2,y2)=>(x1+x2,y1+y2)
 int dotProduct(Complex a)(计算当前复数对象与参数对象a的相乘,运算规则:(x1,y1)(x2,y2)=>x1x2+y1+y2 )
 void printComplex()(以3+2i的格式显示当前复数信息)
 static Complex addComplex(Complex a,Complex b)(计算参数对象a与b的相加之和,运算规则:(x1,y1)+(x2,y2)=>(x1+x2,y1+y2))
在另一个类中使用此类的对象,验证其正确性。

package 实验三;
/*** 复数加法和乘法实现*/
public class Thrid {public static void main(String[] args) {Complex a=new Complex(1,2);Complex b=new Complex(3,4);System.out.print("复数a:");a.printComplex();System.out.print("复数b:");b.printComplex();System.out.print("复数a+b:");a.ComplexaddComplex(b);a.printComplex();a.setRealPart(1);a.setImagePart(2);//复原复数aSystem.out.print("复数a*b:");a.dotProduct(b);a.printComplex();a.setRealPart(1);a.setImagePart(2);//复原复数aComplex.ComplexaddComplex(a, b);}
}
class Complex//复数类
{int realPart;//int型,代表复数的实数部分int imagePart;//int型,代表复数的虚数部分public void setRealPart(int realPart) {this.realPart = realPart;}public void setImagePart(int imagePart) {this.imagePart = imagePart;}Complex(){realPart=0;imagePart=0;}Complex(int r,int i){this.realPart=r;this.imagePart=i;}void ComplexaddComplex(Complex a)//计算当前复数对象与参数对象a的相加之和,结果存储于当前对象{this.realPart=this.realPart+a.realPart;this.imagePart=this.imagePart+a.imagePart;}int dotProduct(Complex a)//计算当前复数对象与参数对象a的相乘z1 × z2=(ac-bd,bc+ad){int r=this.realPart*a.realPart-this.imagePart*a.imagePart;int i=this.imagePart*a.realPart+this.realPart*a.imagePart;this.realPart=r;this.imagePart=i;return 0;}public void printComplex()//以3+2i的格式显示当前复数信息{System.out.println(this.realPart+"+"+this.imagePart+"i");}static void ComplexaddComplex(Complex a,Complex b)//计算参数对象a与b的相加之和{int r=a.realPart+b.realPart;int i=a.imagePart+b.imagePart;System.out.println("复数相加和:"+r+"+"+i+"i");}
}

(4)编写一个完整的Application程序,包含类Student、TestStudent具体要求如下:
①Student类:
属性: number:String, 学号; name:String, 姓名;
sex:char,性别; specialty:String,专业;
address:String,家庭地址;
方法:
 构造函数:无参格式(各数据设置为默认值);
有参格式(利用参数对学号、姓名、专业进行设置);
 访问器/修改器:对各属性数据进行读取和设置;
 public String toString():返回学生的各项信息
 public boolean equals(Student s):基于学号判断当前对象与参数对象是否为同一个学生;
②TestStudent作为主类完成测试功能。

package 实验三;
import java.util.Scanner;
/*** 学生信息程序* 功能: 1、录入学生信息*       2、设置学生信息*       3、浏览学生信息*       4、通过学号核对学生信息*/
public class TestStudent {static Student s=new Student();public static void main(String[] args) {int button;//按钮Scanner sc=new Scanner(System.in);System.out.println("------------------------------");System.out.println("-----------欢迎使用-------------");while(true){System.out.println("------------------------------");System.out.println("1、录入学生信息");System.out.println("2、设置学生信息");System.out.println("3、浏览学生信息");System.out.println("4、通过学号核对学生信息");System.out.println("5、退出");System.out.println("------------------------------");System.out.print("请输入:");button=sc.nextInt();switch(button){case 1:luru();break;case 2:set();break;case 3:liulan();break;case 4:hedui();break;case 5:break;default:System.out.println("请重新输入");break;}if(button==5)break;}}public static void luru()//1、录入学生信息{Scanner sc=new Scanner(System.in);System.out.print("请输入学号:");s.number=sc.nextLine();System.out.print("请输入姓名:");s.name=sc.nextLine();while(true) {System.out.print("请输入性别(0-男、1-女):");int sex=sc.nextInt();if(sex==0){s.sex='男';break;}else if(sex==1){s.sex='女';break;}elseSystem.out.print("请重新输入:");}System.out.print("请输入专业:");sc=new Scanner(System.in);s.specialty=sc.nextLine();System.out.print("请输入家庭地址:");s.address=sc.nextLine();}public static void set()//2、设置学生信息{Scanner sc=new Scanner(System.in);while(true){System.out.println("------------------------------");System.out.println("1、设置学号");System.out.println("2、设置姓名");System.out.println("3、设置性别");System.out.println("4、设置专业");System.out.println("5、设置家庭住址");System.out.println("6、退出");System.out.println("------------------------------");System.out.print("请输入:");int button=sc.nextInt();sc=new Scanner(System.in);switch(button){case 1:{System.out.print("请输入学号:");s.number=sc.nextLine();}break;case 2:{System.out.print("请输入姓名:");s.name=sc.nextLine();}break;case 3:{while(true) {System.out.print("请输入性别(0-男、1-女):");int sex=sc.nextInt();if(sex==0){s.sex='男';break;}else if(sex==1){s.sex='女';break;}elseSystem.out.print("请重新输入:");}}break;case 4:{System.out.print("请输入专业:");sc=new Scanner(System.in);s.specialty=sc.nextLine();}break;case 5:{System.out.print("请输入家庭地址:");s.address=sc.nextLine();}break;case 6:break;default:System.out.println("请重新输入");break;}if(button==6)break;}}public static void liulan()//3、浏览学生信息{System.out.println(s.toSring());}public static void hedui()//4、通过学号核对学生信息{Scanner sc=new Scanner(System.in);Student b=new Student();System.out.print("请输入学号:");b.number=sc.nextLine();if(s.equals(b))System.out.println("同一个学生");elseSystem.out.println("不是同一个学生");;}
}
class Student
{String number;//学号String name;//名字char sex;//性别String specialty;//专业String address;//家庭地址public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getName() {return name;}public void setName(String name) {this.name = name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public String getSpecialty() {return specialty;}public void setSpecialty(String specialty) {this.specialty = specialty;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}Student(){number=null;//学号name=null;//名字sex='空';//性别specialty=null;//专业address=null;//家庭地址}Student(String number,String name,String specialty){this.number=number;this.name=name;this.specialty=specialty;}public String toSring()//返回学生的各项信息{String s=new String("学号:"+number+"、姓名:"+name+"、性别:"+sex+"、专业:"+specialty+"、家庭地址:"+address);return s;}public boolean equals(Student s){//基于学号判断当前对象与参数对象是否为同一个学生if(this.number.equalsIgnoreCase(s.number))return true;else return false;}
}

(5)定义一个描述时间信息的类MyDateTime:
属性:year,month,day,hour,minute,second
方法:
 构造方法:3个
 分别将6个属性设置为0;
 根据6个整型形参设置属性;
 根据另一个MyDateTime对象的属性进行设置;
 MyDateTime passTime(int length,int type)(在当前时间的基础上加上length时间段,时间段单位由type决定:1-6分别代表年/月/日/时/分/秒)
 (选做)int diffDateTime(MyDateTime dayx ,int measure )(计算当前时间与参数对象dayx之间相差的时间段,时间段单位由measure决定:1-3分别代表天/时/秒)
 int dayInYear()(计算当前时间是一年中的第几天)
其他函数自行完善。
在另一个类中使用此类的对象,验证其正确性。

package 实验三;
import java.util.*;
import java.text.SimpleDateFormat;
public class MyDate {public static void main(String[] args){//当前系统时间Date day=new Date();SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("当前系统时间:"+df.format(day));Calendar c = Calendar.getInstance();//可以对每个时间域单独修改//获取当前系统时间int yyyy = c.get(Calendar.YEAR); int MM= c.get(Calendar.MONTH)+1; int dd = c.get(Calendar.DATE); int HH = c.get(Calendar.HOUR_OF_DAY); int mm= c.get(Calendar.MINUTE); int ss= c.get(Calendar.SECOND);MyDateTime m=new MyDateTime(yyyy,MM,dd,HH,mm,ss);MyDateTime dayx=new MyDateTime(m);System.out.println("当前对象dayx时间:"+dayx.getYear()+"-"+dayx.getMonth()+"-"+dayx.getDay()+"\t"+dayx.getHour()+":"+dayx.getHour()+":"+dayx.getMinute()+":"+dayx.getSecond());dayx.passTime(1, 3);//加一天System.out.println("加一天后:"+dayx.getYear()+"-"+dayx.getMonth()+"-"+dayx.getDay()+"\t"+dayx.getHour()+":"+dayx.getHour()+":"+dayx.getMinute()+":"+dayx.getSecond());System.out.println("当前系统时间与dayx差:"+m.diffDateTime(dayx,1)+"天");System.out.println("当前是一年中的第:"+m.dayinYear()+"天");}
}
class MyDateTime
{private int year;private int month;private int day;private int hour;private int minute;private int second;public int getYear() {return year;}public int getMonth() {return month;}public int getDay() {return day;}public int getHour() {return hour;}public int getMinute() {return minute;}public int getSecond() {return second;}MyDateTime()//分别将6个属性设置为0{this.year=0;this.month=0;this.day=0;this.hour=0;this.minute=0;this.second=0;}MyDateTime(int year,int month,int day,int hour,int minute,int second)//根据6个参数设置属性{this.year=year;this.month=month;this.day=day;this.hour=hour;this.minute=minute;this.second=second;}MyDateTime(MyDateTime m)//根据另一个MyDateTime对象进行属性设置{this.year=m.year;this.month=m.month;this.day=m.day;this.hour=m.hour;this.minute=m.minute;this.second=m.second;}MyDateTime passTime(int length,int type)//在当前时间的基础上加length{switch(type){case 1:this.year+=length;break;case 2:this.month+=length;break;case 3:this.day+=length;break;case 4:this.hour+=length;break;case 5:this.minute+=length;break;case 6:this.second+=length;break;}return this;}int diffDateTime(MyDateTime dayx,int measure)//计算当前时间与参数对象dayx之间相差的时间段{switch(measure){case 1:return dayx.day-this.day;case 2:return dayx.hour-this.hour;case 3:return dayx.minute-this.minute;}return 0;}int dayinYear()//计算当前时间是一年中的第几天{int sum=this.day;for(int i=1;i<this.month;i++){switch(i){case 1:case 3:case 5:case 7:case 8:case 10:case 12:sum+=31;break;case 4:case 6:case 9:case 11:sum+=30;break;case 2:{if(this.year%4==0)sum+=28;elsesum+=29;}break;}}return sum;}
}

(6)自行设计程序,练习包的使用。

package World;
import Hello.Hello;;
public class World {public static void main(String[] args) {Hello h=new Hello();System.out.println(h.getS()+" world!");}
}

Java-学校项目3---类与对象相关推荐

  1. 《Java程序设计》实验指导——项目3 类与对象

    项目3 类与对象 实验目的 实验性质 实验内容 实验目的 掌握Java类的结构.类的定义.方法和属性的定义以及对象的实现:掌握类及其成员修饰符的使用:掌握构造函数的使用:方法的参数传递和返回值的用法: ...

  2. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  3. 八、Java面向对象编程(类、对象、方法、重载、可变参数、作用域、构造器、this本质)

    文章目录 Java面向对象编程(类.对象.方法.重载.可变参数.作用域.构造器.this本质) 一.类与对象 1. 类与对象的引出 2. 使用现有技术解决 3. 现有技术解决的缺点分析 4. 类与对象 ...

  4. Java毕设项目餐饮类网站(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目餐饮类网站(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Websto ...

  5. Java第五课:类和对象

    Java第五课:类和对象 Java第五课:类和对象 1.1 上周回顾 1.2 作业讲解 1.3 类和对象: 1.4 面向对象: 1.4.1 类的概念: 1.4.2 类的基本结构: 1.4.3 对象的概 ...

  6. java新建一个女朋友_详解java创建一个女朋友类(对象啥的new一个就是)==建造者项目,傻瓜式一键重写...

    创建一个女朋友,她有很多的属性,比如:性别,年龄,身高,体重,类型等等,虽然每个女朋友都有这些属性,但是每个人找女朋友的要求都是不一样的,有的人喜欢男的,有的人喜欢女的,有的喜欢胖的,不同的人可以根据 ...

  7. Java读书笔记05 类与对象

    本文为java中对象与类等的基本知识,包括方法.构造.析构.静态域.初始化.包.路径等. 对象与对象变量 在Java中,任何对象变量的值都是对存储在另外一处的一个对象的引用.new操作符的返回值也是一 ...

  8. 【Java】5.1 类和对象

    目      录 总诀:定义类,创建对象,调用方法 成员变量(field):[修饰符]类型 变量名 [=初始值] 方法定义:[修饰符] 返回值类型 方法名 (0~N个形参声明) 构造器定义:初始化对象 ...

  9. Java实用教程笔记 类与对象(续)

    类与对象(续) 实例变量(动态变量) 类变量(静态变量)(数据共享)static(尽量写成public(private和protected毫无意义)) 实例方法(既可访问静态数据,又可访问动态数据)A ...

  10. Java实用教程笔记 类与对象

    类与对象 Abstract Body instanceof 文件后缀名 .py .c .cpp .java 成员函数/成员方法/行为 interface接口 可类比C++中抽象类 IDEA快捷键操作 ...

最新文章

  1. opencv中伪彩色applyColorMap函数(C++ / Python)
  2. 程序员也要多读些专业之外的书
  3. MSM8974 fastboot烧写软件
  4. 将Python字符串生成PDF
  5. C# 基础知识 (一).概念与思想篇
  6. Python|队列Queue
  7. Opencv——批量处理同一文件夹下的图片(解决savedfilename = dest + filenames[i].substr(len)问题)
  8. 从交换机分析网络风暴
  9. 苹果iOS 15正式发布!一大波新功能上线,这几个被刷爆了
  10. MATLAB信号处理之信号的积分和微分
  11. 【jQuery实例】Ajax登录页面
  12. Julia 语言可重用性高竟源于缺陷和不完美?
  13. 快播(QvodPlayer)最新版 v5.20.234 官方版
  14. 虚拟机磁盘映射报错,无法向虚拟机导入文件
  15. 简单分析Mysql不同方式联表查询的效率问题
  16. 阿里巴巴国际站详情页怎么装修热点链接一张图片多个链接代码询盘链接和客服代码制作教程装修代码
  17. 相控阵天线(三):直线阵列天线低副瓣综合(切比雪夫、泰勒分布、SinZ-Z和Villeneuve分布、含python代码)
  18. mongoDB操作-持续更新中...
  19. Flutter for ble 之set_notification_error, could not locate CCCD descriptor for characteristic分析(原生角度)
  20. 在Elasticsearch中回测隨機(Stochastic)指標交叉交易策略

热门文章

  1. 如何伪装成一个服务端开发(五)
  2. LeCo-206反转链表
  3. python可以引流吗_你都用 Python 来做什么?
  4. [msm8953][Android9.0] Sending non-protected broadcast ....
  5. TCP/IP 第1章 概 述
  6. linux静态路由表无故消失,探究几种静态路由的行为及自动删除行为
  7. PROBOT_G603双臂GAZEBO+MoveIt!仿真中配置手眼相机和夹爪
  8. x64dbg入门学习
  9. 泰坦尼克号幸存者预测(分类)
  10. CSS反爬获取伪元素的值