实验三 类的构成和对象的使用

更新时间:2023-09-13 03:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验三 类的构成和对象的使用

【开发语言及实现平台或实验环境】

Windows2000 或XP,JDK1.6与Jcreator4.0 【实验目的】

1.理解Java语言是如何体现面向对象编程基本思想, 2.了解类的封装方法,以及如何创建类和对象, 3.了解成员变量和成员方法的特性。 4.了解类的继承性和多态性的作用。 【实验要求】

1.编写一个体现面向对象思想的程序。

2.编写一个创建对象和使用对象的方法程序。 3.编写不同成员变量修饰方法的程序。 4.编写不同成员方法修饰的程序。

5.编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序。 6.编写体现类多态性(成员方法重载,构造方法重载)的程序。 【实验内容】 一、包的应用

在Elearning下载ygw.rar文件,进行解压。得到Circle.class、Rect.class和MyWindow.classs三个字节码文件,这三个文件都在ygw包中,编写一个程序,用import 导入这三个类,求半径为3的圆和长、宽分别为10、5的矩形的面积,定义MyWindow的一个对象,观察结果,理解封装的好处。

二、三角形和圆柱体的类封装及构造方法的使用(每个类存为不同的.java源文件)

(1)创建一个三角形类Triangle,放入以你的姓名为包名的包中。三角形类Triangle包含的属性有三条边的长sideA,sideB,sideC, ,这些属性设为private类型;包含的方法有构造方法(两个:一个没有参数,默认三边均为1.0;一个给定三条边的长度,并进行判定给定的三条边是否能组成三角形,如果不能构成三角形则报错),求面积方法getArea(),求周长方法getLength();

提示:设三角形的三边长为a,b,c,则它的面积为S(S?a)(S?b)(S?c),其中

S=(a+b+c)/2,开平方的方法为Math.sqrt()。

(2)创建一个圆柱体类YZT,放入以你的姓名为包名的包中。圆柱体类YZT包含的属性有底面半径radius和圆柱体的高height,这些属性设为private类型;包含的方法有构造方法(两个:一个没有参数,默认底面半径和高均为1.0;一个给定半径radius和圆柱体的高height,并且要求均大于0.0,符合实际圆柱体要求,否则报错),包含的方法有设置底面半径setRadius(),获取底面半径getRadius(),设置高setHeight(), 获取高getHeight(),求体积calTJ(),求表面积calBMJ();

(3)用import导入三角形类Triangle,用Triangle类定义以下三个对象: ? 定义默认的三角形,求它的面积和周长;

? 定义边长分别为1.0,2.0,5.0的三角形,查看输出错误; ? 定义边长分别为25,20,37.5的三角形,求它的面积和周长; (4)用import导入圆柱体类YZT,用YZT类定义以下三个对象: ? 定义默认的圆柱体,求它的体积和表面积;

? 定义半径radius和高heigth分别为2.0,-10.5的圆柱体,查看输出错

误;

? 定义半径radius和高heigth分别为12.5,11.0的圆柱体,求它的体

积和表面积。

三、静态成员的使用

(1)使用Math类下的静态方法计算sin30°+ tan50°+ sqrt(10)的值。 (2)声明一个点类Point,有两个private类型变量保存点坐标,一个类变量(静态变量)保存已有点的个数。生成10个点的Point数组,第i个点的坐标为(i, i2),依次生成每一个点,输出每一个点的坐标和当前已有点的个数。

四、继承的使用(每个类存为不同的.java源文件)

(1)声明一个人类Person,放入以你的姓名为包名的包中,姓名为private类型属性,性别为protected类型变量,年龄为默认访问类型变量;该类有两个构造方法Person()和Person(姓名,性别,年龄),构造方法Person()中设

置姓名,性别为空字符串,年龄为0,构造方法Person(姓名,性别,年龄)中设置姓名,性别只能为“男”或“女”,年龄大于0、小于130,如果不满足就报错重新;定义三个属性的set和get方法;重新定义toString()方法,能打印该人的基本信息;

(2)学生类Student继承Person,增加了学号信息,有两个构造方法Student()和Student(姓名,性别,年龄,学号),调用父类Person的构造方法对父类部分进行构造,在Student()中,默认学号为空字符串,在Student(姓名,性别,年龄,学号)中,对各个变量进行赋值;定义新增属性的set和get方法;重新定义toString()方法,能打印该学生的基本信息,该方法中试对private类型属性姓名、protected类型变量性别、默认访问类型变量年龄直接访问,理解子类对父类不同类型的属性的访问权限;

(3)大学生类Undergraduate继承学生类Student,又增加了专业属性,有两个构造方法Undergraduate()和Undergraduate(姓名,性别,年龄,学号,专业),调用父类Student的构造方法对父类部分进行构造,在Undergraduate()中,默认专业为空字符串,在Undergraduate(姓名,性别,年龄,学号,班级,专业)中,对各个变量进行赋值;定义新增属性的set和get方法;重新定义toString()方法,能打印该大学生的基本信息

(4)创建姓名、性别、年龄分别为(”郭靖”,”男”,20)的Person对象,输出他的信息;创建姓名,性别,年龄,学号,班级分别为(”黄蓉”,”女”,17,”1263001”)的Student对象,输出她的信息;创建姓名,性别,年龄,学号,专业分别为(”黄飞鸿”,”男”,23,”1892001”,”中国武术学”)的Undergraduate对象,输出它的信息;创建姓名,性别,年龄,学号,专业分别为(”韦小宝”,”男”,300,”1892001”,”中国武术学”)的Undergraduate对象,查看输出的年龄错误信息。

创建一个研究生类Graduate的对象,理解继承的用法,输出该研究生的信息。

五、字符串操作

任意给定一个由英文字母和数字组成的字符串,英文字母不区分大小写,例如:

String s=”AbC123sdfg7fFCM987D0ddFFPAZvvvFFFggg43”;

(1)输出字符串中第5个到第10个字符(约定顺序从0开始); (2)统计每种字符出现的次数;

(3)在出现的字符中,输出出现最多和最少的字符是哪个,个数是多少; (4)出现最多的字符用#号替换,输出替换后的字符串; (5)把替换后的字符串逆序输出。

尽可能采用String类或StringBuffer类的方法实现,怎样使用请查看Java帮助文件、ppt或自己百度。

注意事项:在定义类的时候,尽量要做到类的通用性,使的今后可以做到代码重用,例如:

第二题三角形和圆柱体的类封装中,部分人在写求体积calTJ(),求表面积calBMJ()代码时,在这些函数中直接用print输出计算值,如果以后要继承这些类或把计算集成到图形用户界面中,怎么办?

好的方式是,所有方法中都不进行输出,只返回计算得到的值,方便各种不同的应用需求。

本文来源:https://www.bwwdw.com/article/fdih.html

Top