实验四 201771010101 白玛次仁
实验四 类与对象的定义及
第一部分:理论部分
Java类库中的LocalDate类位于Java。Time包中
1.用户自定义类;
2.静态域与静态方法;
3.方法参数
4.对象构造
5.包
6.类路径
7.文档注释
8.类设计技巧
一,本章主要介绍内容
面向对象程序设计
如何创建标准Java类库中的类对象
如何编写自己的类
二,面向对象程序设计概论
面向对象的程序是由对象组成的,每个对下对象包含对用户公开的特定功能部分和隐藏的实现部分程序中很多对象来自标准库,还有 一些是自定义的。
(1)类
类:类(class)是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作,在面向对象的程序设计中,类是程序的基本单元。
类是构造对象的模板和蓝图
(2)对象
对象的三个主要特性
对象的行为:可以对对象施加哪些操作,或可以对对象施加哪些方法?
对象的状态:当施加那些方法时,对象如何响应?
对象的标识:如何辨别具有相同行为与状态的不同
(3)类与对象的关系
a.类是对象,事物的描述和抽象,是具有相同属性和行为的对象集合。对象则是该类事物的实例。
b.类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。
(4)对象与对象的变量关系
a.Java中想使用对象就必须先构造对象,并指定其初始状态。
三.通过实验掌握了预定义类的基本使用方法,熟悉Math类、String类、math类、Scanner类、LocalDate类的常用API。
四.掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求
a.实例域:可将实例域定义为final,构建对象时必须初始化这样的域。
b.静态域:绝大多数面向对象程序设计语言中,静态域被称为类域。如果将域定义为static,每个类中只有一个这样的域。而每个对象对于所有的实例域却都有自己的一份拷贝。
c.静态方法:静态方法是一种不能向对象实时操作的方法。可以使用对象调用静态方法。
d.构造器方法:构造器与类同名。构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。
e.更改器方法:调用更改器方法后对象的状态会改变。
f.访问器方法:只访问对象而不修改对象的方法。
g.main方法:main方法不对任何对象进行操作。静态的main方法将执行并创建程序所需要的对象。
五.重载
多个方法有相同的名字、不同的参数、便产生了重载。Java允许重载任何方法,而不只是构造器方法。
1、实验目的与要求
(1) 理解用户自定义类的定义;
(2) 掌握对象的声明;
(3) 学会使用构造函数初始化对象;
(4) 使用类属性与方法的使用掌握使用;
(5) 掌握package和import语句的用途。
2、实验内容和步骤
实验1 测试以下程序,掌握文件输入输出程序设计技术(文件输入输出,教材61-62).
import java.io.*; import java.util.*; public class FileWriteReadTest { public static void main(String[] args) throws IOException{ //写入文件演示 PrintWriter out = new PrintWriter("myfile.txt"); out.println("姓名 高数 Java 数据结构 平均成绩 总成绩"); out.println("张三 20 30 40 0 0"); out.println("李四 50 60 70 0 0"); out.close();//输出完毕,需要close //读入文件演示 Scanner in = new Scanner(new File("myfile.txt"));//为myfile.txt这个File创建一个扫描器in int number = 1;//行号 System.out.println(in.nextLine()); while(in.hasNextLine()){//判断扫描器是否还有下一行未读取,该循环把文件的每一行都读出 String line = in.nextLine();//读出myfile.txt的下一行 System.out.print("第"+(++number)+"行的内容: "); Scanner linescanner = new Scanner(line);//行内容建立扫描器 linescanner.useDelimiter(" ");//使用空格作为分隔符 String name = linescanner.next(); String math = linescanner.next(); String java = linescanner.next(); String ds = linescanner.next(); String avg = linescanner.next(); String total = linescanner.next(); System.out.println("name="+name+" math="+math+" java="+java+" ds="+ds+" avg"+avg+" total="+total); } in.close();//读入完毕,最后需要对其进行close。 } } |
实验2 导入第4章示例程序并测试。
测试程序1:
l 编辑、编译、调试运行程序4-2(教材104页);
l 结合程序运行结果,掌握类的定义与类对象的用法,并在程序代码中添加类与对象知识应用的注释;
l 尝试在项目中编辑两个类文件(Employee.java、 EmployeeTest.java ),编译并运行程序。
l 参考教材104页EmployeeTest.java,设计StudentTest.java,定义Student类,包含name(姓名)、sex(性别)、javascore(java成绩)三个字段,编写程序,从键盘输入学生人数,输入学生信息,并按以下表头输出学生信息表:
姓名 性别 java成绩
测试程序2:
l 编辑、编译、调试运行程序4-3(教材116);
l 结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;
l 理解Java单元(类)测试的技巧。
测试程序3:
l 编辑、编译、调试运行程序4-4(教材121);
l 结合程序运行结果,理解程序代码,掌握掌握Java方法参数的用法,在相关代码后添加注释;
测试程序4:
l 编辑、编译、调试运行程序4-5(教材129);
l 结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。
测试程序5:
l 编辑、编译、调试运行程序4-6、4-7(教材135);
l 结合程序运行结果,理解程序代码,掌握Java包的定义及用法,在相关代码后添加注释;
import java.time.*;
/**
* This program tests the Employee class.
* @version 1.12 2015-05-08
* @author Cay Horstmann
*/
public class AHSI
{
public static void main(String[] args)
{
// fill the staff array with three Employee objects
Employee[] staff = new Employee[3];
staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
// raise everyone's salary by 5%
for (Employee e : staff)
e.raiseSalary(5);
// print out information about all Employee objects
for (Employee e : staff)
System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay="
+ e.getHireDay());
}
}
class Employee
{
private String name;
private double salary;
private LocalDate hireDay;
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
hireDay = LocalDate.of(year, month, day);
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public LocalDate getHireDay()
{
return hireDay;
}
public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}
}
import java.time.LocalDate;
import java.util.Scanner;
public class GVJ
{
public static void main(String[] args)
{
Employee[] staff = new Employee[4];
System.out.println("请输入学生:");
Scanner in = new Scanner(System.in);
for(int i=0;i<staff.length;i++) {
staff[i]=new Employee(in.next(),in.next(),in.nextInt());
}
System.out.println("name"+" "+"sex"+" "+" "+"javascore");
for (Employee e : staff)
e.raiseSalary(5);
// print out information about all Employee objects
for (Employee e : staff)
System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavascore());
}
}
class Employee
{
private String name;
private String sex;
private int javascore;
public Employee(String a, String b, int c)
{
name = a;
sex = b;
javascore = c;
}
public void raiseSalary(int i) {
// TODO Auto-generated method stub
}
public String getName()
{
return name;
}
public String getSex()
{
return sex;
}
public int getJavascore()
{
return javascore;
}
}
实验3 编写长方形类Rectangle与圆形类Circle,其中Rectangle类设置私有属性:width,length;Circle类设置私有属性radius。编写Rectangle类的带参构造函数Rectangle(int width,int length), Circle类的带参构造函数Circle(int radius),编写两个类的toString方法(Eclipse可自动生成)。上述2个类均定义以下方法:
求周长的方法public int getPerimeter()
求面积的方法public int getArea()
在main方法中完成以下任务:
(1) 输入1行长与宽,创建一个Rectangle对象;
(2) 输入1行半径,创建一个Circle对象;
(3) 将两个对象的周长加总输出,将两个对象的面积加总输出。
public class Rectangle
{
private double width;
private double length;
public double getWidth()
{
return width;
}
public void setWidth(double width)
{
this.width = width;
}
public double getLength()
{
return length;
}
public void setLength(double length)
{
this.length = length;
}
public double mianji()
{
return width*length;
}
public double zhouchang()
{
return (width+length)*2;
}
}
public class Circle
{
private double r;
public double getR()
{
return r;
}
public void setR(double r)
{
this.r = r;
}
public double zhouchang()
{
return 2*Math.PI*r;
}
public double mianji()
{
return Math.PI*r*r;
}
}
1:23:53
我的手机 2018/9/26 1:23:53
public class rectangle {
public int chang;
private int kuan;
rectangle(){
}
public rectangle(int x,int y){
chang=x;
kuan=y;
}
public void getchang(int x){
chang=x;
}
public void getkuan(int y){
kuan=y;
}
public int zhouchang(){
return 2*(chang+kuan);
}
public int mianji(){
return kuan*chang;
}
public static void main(String args[]){
rectangle s1=new rectangle();
rectangle s2=new rectangle(5,6);
s1.getchang(5);
s1.getkuan(5);
System.out.println("s1矩形周长为"+s1.zhouchang());
System.out.println("s1矩形面积为"+s1.mianji());
System.out.println("s2矩形周长为"+s2.zhouchang());
System.out.println("s2矩形面积为"+s2.mianji());
}
System.out.println("s1矩形面积为"+s1.mianji());
System.out.println("s2矩形周长为"+s2.zhouchang());
System.out.println("s2矩形面积为"+s2.mianji());
}
}
实验总结:
在这一周中我学习了第四单元的知识,对Java中的类(如LocalDate类,Employee类Math类、String类、math类等)有了初步的了解,并初步掌握了用户自定义的语法规则如包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求。
通过身边人的帮助下完成这次实验,每次写程序中更能明白自己的知识不够的,通过老师推荐的很多平台上学习中。
转载于:https://www.cnblogs.com/baimaciren/p/9704503.html
实验四 201771010101 白玛次仁相关推荐
- 实验六201771010101 白玛次仁
第五章 继承 总结 实验六 继承定义与使用实验时间 2018-9-28 1.类,超类与子类 继承Employee类来定义Manager类格式,关键字extends表示继承. Class新类名(子类(s ...
- 201771010101 白玛次仁 《2018面向对象程序设计(Java)课程学习进度条》
周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 第一周 20~40 1/0 1 九九乘法表 第二周 40~50 2/0 2 实验一, ...
- 201771010101白玛次仁《面向对象程序设计(java)》第十二周实验总结
实验十二 图形程序设计 实验时间 2018-11-14 学习总结: 1.Java的抽象口工具箱( Abstract WindowToolkit, AWT)包含在java.awt包中,它提供了许多用来 ...
- 201771010101 白玛次仁 《2018面向对象程序设计(Java)》第七周学习总结
实验七 继承附加实验 实验时间 2018-10-11 1. 继承的概念: 继承在本职上是特殊--一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性 ...
- 201771010101 白玛次仁 《2018面向对象程序设计(Java)》第十七周学习总结
实验十七 线程同步控制 实验时间 2018-12-10 1. 知识总结: 多线程并发运行不确定性问题解决方案:引入线程同步机制,使得另一线程要使用该方法,就只能等待. 在Java中解决多线程同步问题 ...
- 201771010101 白玛次仁 《2018面向对象程序设计(Java)》第十六周学习总结
实验十六 线程技术 实验时间 2017-12-8 1.学习总结: 1.程序 是一段静态的代码,它应用程序执行蓝 是一段静态的代码,它应用程序执行蓝 本. 2.进程 是程序的一次动态执行,它对应了从代 ...
- 201771010101 白玛次仁 《2018面向对象程序设计(Java)》第十三周学习总结
实验十三 图形界面事件处理技术 实验时间 2018-11-22 学习总结: Compoment类提供的功能: –基本的绘画支持. –外形控制. –大小和位置控制. –图像处理. –组件状态控制 每个 ...
- 201771010101 白玛次仁《面向对象程序设计(Java)》第十一周学习总结
实验十一 集合 实验时间 2018-11-8 1.实验目的与要求 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: (2) 了解java集合框架体系组成: (3) ...
- 201771010101 白玛次仁
本人学号<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com 程序设计评测:ht ...
最新文章
- 10年开发经验大佬分享一个数据库系统知识图谱
- 通过IP地址和子网掩码计算相关地址
- 计算机知识新闻稿,文科计算机大赛新闻稿
- eclipse项目迁移到Android Studio
- 计算机二级web题目(7.2)--基本操作题1
- php pdo fetchassoc,pdo执行fetch查询语句,出现500错误,请问应该怎么写
- 升级浏览器_升级Unity 8,优化系统组件,添加键盘手势,升级浏览器,UbuntuTouch最大的一次更新
- Glib2之无法添加符号: DSO missing from command line(十九)
- 写好Java代码的30条经验总结
- linux 环境变量和shell变量
- hdu4521 线段树+dp
- rgba通道转rgb_JS实现颜色的10进制转化成rgba格式的方法
- 购买别人的域名回收别人废弃的域名
- 基于java二次元信息分享平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- easy_nbt——Bugku
- 你好,C++(22) 排排坐,吃果果——4.3.3 for循环:某个范围内…每个都…
- Sqlite3中对于毫秒数和本地时间之间的转换以及时间相关操作
- python第四周迭代器生成器序列化面向过程递归
- 【论文解读--力控电机+四足机器人载体设计】(Cheetah mini)A Low Cost Modular Actuator for Dynamic Robots
- 1部手机批量管理上百个Tiktok,Tinder,Facebook,Line等账号
热门文章
- Scrcpy-Android 设备投屏+控制工具--简略快捷键方便记忆
- Python基础之什么是字典?
- Unity3d 中创建实时视频聊天
- 电脑重装系统数据恢复方法教程
- matlab生成高速轨道不平顺谱,国内外高速铁路轨道不平顺谱对比与思考.pdf
- 首个AI数字人唱作歌曲刷屏背后:百度APP数字人度晓晓用AI陪伴亿万用户
- 不止“宏彦获水”还有它们!
- [论文解读]微信看一看实时Look-alike推荐算法
- 什么是计算机图形学?(转自中国科学技术大学-刘利刚)
- 计算机房灭火器单具基准,厂房、车间灭火器配置计算范例