实验三 面向对象程序设计
实验 3 面向对象程序设计

实验 3 面向对象程序设计一、实验目的理解Java 语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP方式进行程序设计的方法,了解类的继承性和多态性的作用。
二、实验要求1.编写一个体现面向对象思想的程序。
2.编写一个创建对象和使用对象的方法的程序。
3.编写一个显示当前日期和时间的程序。
4.编写不同成员变量修饰方法的程序。
5.编写不同成员方法修饰方法的程序。
6.编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。
7.编写体现类的多态性(成员方法重载、构造方法重载)的程序。
三、实验内容(一)创建Applet 应用小程序1.创建一个Applet 应用程序P3_1.java 文件。
(1)程序功能:建立一个Applet 小程序,使其可以进行简单的加法运算。
该程序要包含类、接口、属性、方法、事件等面向对象的基本元素。
(2)程序源代码如下。
import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class P3_1 extends Applet implements ActionListener {Label label1=new Label("+");Label label2=new Label("=");TextField field1=new TextField(6);TextField field2=new TextField(6);TextField field3=new TextField(6);Button button1=new Button("相加");public void init() { // 初始化add(field1);add(label1);add(field2);add(label2);add(field3);add(button1);button1.addActionListener(this);}public void actionPerformed(ActionEvent e) { // 处理按钮事件int x=Integer.parseInt(field1.getText())+Integer.parseInt(field2.getText());field3.setText(Integer.toString(x)); // 数值转换为字符串}}2.编写一个浏览Applet 应用程序的页面文件P3_1.HTML,源代码如。
实验三 面向对象程序设计的基本操作

《面向对象程序设计》课内实验报告学生姓名:张学阳学号:1009300132学院: 理学院班级: 数学101课程名称:面向对象程序设计实验题目:面向对象程序设计的基本操作指导教师姓名及职称:胡建平副教授尚宝欣讲师方向实验师2012年10月11日目录一、实验目的 (1)二、实验内容 (1)三、实验要点及说明 (2)四、实现方法 (2)五、实验结果 (2)六、源程序清单 (3)七、思考及总结 (8)一、实验目的1.掌握Java 类的定义、对象的创建和使用方法。
2.掌握Java类中域、方法修饰符的运用。
3.理解Java类的访问控制原理。
二、实验内容定义一个表示学生的Student类,类中包括姓名、学号、年龄、班级4个private数据域,通过构造函数对所有数据域进行初始化,定义方法“获得姓名”、“获得学号”、“获得年龄”,“获得班级”、“修改学号”、“修改班级”,并完成下面操作:1.编写Java Application程序,在程序中创建至少2个不同的Student对象,并将创建的Student对象的所有信息输出。
2.编写Java Applet程序,通过文本框输入学生的姓名、学号、年龄、班级信息创建Student对象,并将Student对象的所有信息在界面上显示输出。
3.在操作2的基础上通过建立新的文本框输入学生的班级和学号,对原来对象的班级和学号信息进行修改,并将修改后对象的所有信息在界面上重新显示输出。
三、实验要点及说明注意一些类和域的定义和使用方法。
四、实现方法1.通过创建2个不同的Student对象,并将创建的Student对象的所有信息输出。
2.通过文本框输入学生的姓名、学号、年龄、班级信息创建Stu dent对象,并将Student对象的所有信息在界面上显示输出。
3.在问题二的基础上,对班级和学号信息进行修改。
五、实验结果1.2.3.六、源程序清单1.public class JavaApplication{public static void main(String args[]){Student num1=new Student("张学阳",32,21,"数学101");Student num2=new Student("袁清晨",31,20,"数学101");System.out.println(num1.toString());System.out.println("学号修改为:"+num1.changeage1());System.out.println("班级修改为:"+num1.changeage2());System.out.println(num2.toString());System.out.println("学号修改为:"+num2.changeage1());System.out.println("班级修改为:"+num2.changeage2());}}class Student{private String name;private int num;private int age;private String cla;Student(String a,int b,int c,String d){name=a;num=b;age=c;cla=d;}public String toString(){String s="姓名:"+name+"\n学号:"+num+"\n年龄:"+age+"\n班级:"+cla;return(s+"\n数据正常!");}public int changeage1(){num=22;return num;}public String changeage2(){cla="信计:101";return cla;}}2.import java.applet.*;import java.awt.*;import java.awt.event.*;public class Java1Applet extends Applet implements ActionListener{Label result;TextField n1,n2,n3,n4;Button btn;private String name;private int num;private int age;private String cla;public void init(){result=new Label("请输入学生基本信息");n1=new TextField(5);n2=new TextField(5);n3=new TextField(5);n4=new TextField(5);btn=new Button("显示");add(n1);add(n2);add(n3);add(n4);add(btn);add(result);btn.addActionListener(this);}public void actionPerformed(ActionEvent e){name=(String)n1.getText();num=Integer.parseInt(n2.getText());age=Integer.parseInt(n3.getText());cla=(String)n4.getText();Student num1=new Student(name,num,age,cla);result.setText(num1.toString()+"---学号修改为:"+num1.changeage1()+"---班级修改为:"+num1.changeage2());}}class Student{private String name;private int num;private int age;private String cla;Student(String a,int b,int c,String d){name=a;num=b;age=c;cla=d;}public String toString(){String s="姓名:"+name+"---学号:"+num+"---年龄:"+age+"---班级:"+cla;return(s+"---数据正常!");}public int changeage1(){num=22;return num;}public String changeage2(){cla="信计:101";return cla;}}3.import java.applet.*;import java.awt.*;import java.awt.event.*;public class Java1Applet extends Applet implements ActionListener {Label result;TextField n1,n2,n3,n4,n5,n6;Button btn;private String name;private int num;private int age;private String cla;public void init(){result=new Label("请输入学生基本信息");n1=new TextField(5);n2=new TextField(5);n3=new TextField(5);n4=new TextField(5);n5=new TextField(5);n6=new TextField(5);btn=new Button("显示");add(n1);add(n2);add(n3);add(n4);add(n5);add(n6);add(btn);add(result);btn.addActionListener(this);}public void actionPerformed(ActionEvent e){//if(e.getActionCommand()=="显示");name=(String)n1.getText();num=Integer.parseInt(n2.getText());age=Integer.parseInt(n3.getText());cla=(String)n4.getText();Student num1=new Student(name,num,age,cla);result.setText(num1.toString());//if(e.getActionCommand()=="修改");name=(String)n1.getText();num=Integer.parseInt(n6.getText());age=Integer.parseInt(n3.getText());cla=(String)n5.getText();Student num2=new Student(name,num,age,cla);result.setText(num1.toString()+"数据修改为:"+num2.toString());}}class Student{private String name;private int num;private int age;private String cla;Student(String a,int b,int c,String d){name=a;num=b;age=c;cla=d;}public String toString(){String s="姓名:"+name+"---学号:"+num+"---年龄:"+age+"---班级:"+cla;return(s+"---数据正常!");}}.七、思考及总结通过这次课内试验学会了Java 类的定义、对象的创建和使用方法、掌握Java类中域、方法修饰符的运用、理解Java类的访问控制原理,感觉收获很大。
20155313实验三《Java面向对象程序设计》实验报告

20155313实验三《Java⾯向对象程序设计》实验报告⼀、实验内容XP基础XP核⼼实践相关⼯具⼆、实验要求1.没有Linux基础的同学建议先学习《Linux基础⼊门(新版)》《Vim编辑器》课程2.完成实验、撰写实验报告,实验报告以博客⽅式发表在博客园,注意实验报告重点是运⾏结果,遇到的问题(⼯具查找,安装,使⽤,程序的编辑,调试,运⾏等)、解决办法(空洞的⽅法如“查⽹络”、“问同学”、“看书”等⼀律得0分)以及分析(从中可以得到什么启⽰,有什么收获,教训等)。
报告可以参考范飞龙⽼师的指导3.严禁抄袭,有该⾏为者实验成绩归零,并附加其他惩罚措施。
三、实验步骤1. 在IDEA中使⽤⼯具(Code->Reformate Code)把下⾯代码重新格式化,再研究⼀下Code菜单,找出⼀项让⾃⼰感觉最好⽤的功能。
提交截图,加上⾃⼰学号⽔印。
public class CodeStandard {public static void main(String [] args){StringBuffer buffer = new StringBuffer();buffer.append('S');buffer.append("tringBuffer");System.out.println(buffer.charAt(1));System.out.println(buffer.capacity());System.out.println(buffer.indexOf("tring"));System.out.println("buffer = " + buffer.toString());if(buffer.capacity()<20)buffer.append("1234567");for(int i=0; i<buffer.length();i++)System.out.println(buffer.charAt(i));}}2. 在码云上把⾃⼰的学习搭档加⼊⾃⼰的项⽬中,确认搭档的项⽬加⼊⾃⼰后,下载搭档实验⼆的Complex代码,加⼊不少于三个JUnit单元测试⽤例,测试成功后git add .; git commit -m "⾃⼰学号添加内容";git push;提交搭档项⽬git log的截图,包含上⾯git commit的信息,并加上⾃⼰的学号⽔印信息。
实验 3 面向对象程序设计

MyV.setvalue(10);
System.out.println(MyV.getValue());
}
}
2.编写Java代码实现一个计数器类Computer,其中包括:
用CountValue来保存计数器的当前值。
方法Computer(int a)是构造方法并给CountValue赋初值。
public abstract double mb_getPerimeter();
}
public class J_Circle implements J_Shape {
public double m_radius;
public J_Circle(double r)
{
m_radius=r;
}
public double mb_getArea()
}
User(String n, String ps){
name = n; password = ps; nmuber++
}
public String getPassword(){ //密码全部以明文操作,没有使用加密算法
return password;
}
public setPassword(String ps){
{
return(Math.PI*m_radius*m_radius);
}
public double mb_getPerimeter()
{
return(Math.PI*2*m_radius);
}
public static void main(String args[])
{
J_Shape a=new J_Circle(5);
面向对象语言程序设计实验三

《面向对象程序设计》实验报告
学号姓名班级
实验编号实验三指导教师王鹤实验时间2015.10.26 一、实验名称
构造函数的重载
二、实验目的及要求
1.掌握类和对象的区别
2.掌握构造函数的使用
3.掌握构造函数的重载
三、实验内容(格式要求:编码一律使用小五号字体,分两栏)
1.创建一个类,为该类定义三个构造函数,分别执行下列操作:1)传递两个整数值并找出其中较大的一个值
2)传递三个double值并求出其乘积
3)传递两个字符串值并检查其是否相同
4)在main方法中测试构造函数的调用
2.编写Addition类,该类中应包含一组实现两数相加运算的重载方法。
实现加法运算的方法,应接受两个参数(即加数和被加数),方法将两个参数进行加法运算后,返回相加结果。
考虑可能针对不同的数据类型进行计算,重载一组方法,包括整型、长整型、浮点型、双精度浮点型、还有字符串。
在main方法中创建Addition类的实例,分别调用重载方法测试其效果。
3.使用初始化参数的方式输入用户名和密码,在程序运行之前必须先判断输入的参数个数是否合法,如果不合法,必须提示用户的程序执行错误,并退出程序,如果用户已经正确地输入了参数,则可以进行用户名及密码的验证。
如果信息正确则显示“欢迎***光临!”,否则显示“错误的用户名及密码”。
四、实验心得(请总结你在本次实验中获得的经验,字数100字左右,五号字宋体,如有雷同实验结果以零分计)。
实验3面向对象程序设计编程

实验三:面向对象程序设计编程(8学时)1. 实验特点:方法、重载、继承、多态编程。
类型:验证类别:专业基础计划学时:6学时每组人数:1人2. 实验目的与要求:理解类、对象、构造函数、析构函数;掌握方法法定义、重载、继承、的概念及应用;掌握全局变量、局部变、静态变量的概念和使用方法;理解封装和数据隐藏。
3. 主要仪器设备:计算机4. 实验内容提要:阅读教材面向对象程序设计实例并上机调试分析程序结果。
上机题目:(1)调试构造函数Pen()例题(2)调试构造函数重载Pen()例题(3)使用重载方法求5和5.65的平方。
要求:在主程序中调用重载方法,求一个整数(5)的平方值,返回整数;再调用重载方法,求一个双精度数(5.65)的平方值,返回双精度数。
(4)编写一个控制台程序,完成下列功能并输出结果:①创建一个类Test1,用无参数的构造函数输出该类的类名;②增加一个重载的构造函数,带有一个string类型的参数,在此构造函数中将传递的字符串打印出来;③在Main方法中创建属于Test1类的一个对象,不传递参数;④在Main方法中创建属于Test1类的另一个对象,传递一个字符串“This is a string”;(5)编写一个控制台程序,完成下列功能并输出结果:①创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果;②再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果;③在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法;(6)利用委托实现:当用户输入一个字符’1’时,调用两个整数相加的方法,计算两整数之和;当用户输入一个字符’2’时,调用两个整数相减的方法,计算两整数之差。
5. 实验操作要点:事先阅读程序,上机时调试、修改程序,对输出的运行结果进行分析。
6.注意事项: 掌握构造函数、继承和方法重载、多态性、委托的定义和使用方法。
实验3 面向对象程序设计基本操作(下)

实验三面向对象程序设计基本操作(下)――继承﹑接口与多态问题1:定义父类和子类, 测试继承关系。
知识点解析: 通过示例加深和巩固对继承原则的认识和使用.示例:示例1 课本例3.4示例2 补充例3.1 动物继承示例3 Cat.java TestExtends.java问题2:上转型对象\隐藏与覆盖。
知识点解析: 通过示例理解并掌握父类与子类继承关系中隐藏和覆盖的用法,掌握上转型对象调用父类与子类同名变量和同名方法的原则.示例:示例1 课本例3.5示例2课本例3.6问题3:super引用。
知识点解析: 通过示例掌握super的两种调用方式.示例:示例1 补充例 3.2 super引用示例2 TestExtends2.java TestSuper.java问题4:对象初始化顺序。
知识点解析: 通过示例掌握对象的初始化顺序.示例:示例1 补充例3.3 对象初始化顺序问题5:abstract修饰的类与方法。
知识点解析: 通过示例掌握abstract类和abstract方法.示例:TestAbstract.java问题6:final修饰。
知识点解析: 通过示例掌握final类﹑final方法和final 变量.示例:TestFinal.java问题7:接口与实现类。
知识点解析: 通过示例掌握接口的用法和多重继承关系.示例:补充例3.5 接口练习题(前三题至少选择一个完成)1.声明三角形类Triangle,实现了图形接口Shape。
该Shape接口声明了抽象方法double area()和double perimeter(),编写测试类计算三角形的周长和面积。
(考核点:接口)2.已知:一个父类Telephone代表电话类,Telephone类中包含有电话品牌、电话号码、通话时间、费率(即收费标准)等属性,以及计算话费和显示信息等方法。
要求:写一个子类Mobilephone代表移动电话,要求类Mobilephone具有如下性质:1)是电话类Telephone的子类;2)除了具有Telephone类的属性外,它还有自己的属性:网络类型network,String类型;被叫时间receivedTime,double类型。
实验3_面向对象的程序设计(二)

实验三:面向对象的程序设计(二)实验目的:1.掌握类的继承、方法覆盖和变量的隐藏。
2.理解父类与子类的关系及创建方法。
3.掌握子类对象创建过程中与父类构造函数的关系。
4.了解抽象类与抽象方法。
5.掌握多态的实现机理及方法。
6.掌握接口的定义和使用7.了解接口的设计方法8.掌握包的定义和使用实验步骤:一. 继承类的访问修饰符练习1. 定义一个父类,有不同访问级别的成员变量和方法;2. 源代码如下:3. 再定义一个子类,继承上面的父类,访问父类的成员变量和成员方法。
4. 子类源代码如下:5. 分析上面main方法的每一步中,哪些成员变量和方法可以访问,哪些不能访问?填写下面表格中的预测结果,可以访问的填“Y”,不可以访问的填“N”。
表4-1-1 实验结果6. 编写上述代码,编译运行代码,查看程序执行结果,并填写表4-1-1中的验证结果。
二. 成员变量的隐藏和方法覆盖练习1. 以下程序具有继承、成员的覆盖与隐藏的概念。
2. 源代码如下:3. 编写上述代码,编译运行代码,查看程序执行结果。
●子类Son中隐藏了父类Father哪个变量?覆盖了哪个方法?●根据上述程序,分析方法重载与方法覆盖的区别。
三.类的多态性的练习1.下面源代码演示了多态的各种特性。
2. 源代码如下:3. 编写上述代码,编译运行代码,查看程序执行结果。
●分析上述代码中的who.var和who.staticVar、who.method()和who.staticMethod()的输出结果有什么不同?为什么存在这种现象?● 分析以下代码,编译时会有什么问题?为什么?●分析以下代码,如何能让who访问Sub类的成员?●分析以下代码,运行会有什么问题?为什么?四.接口相关练习1. 定义一个rec_Area_Peri接口,里面有两个方法getArea()和getPerimeter(),分别表示“计算面积”和“计算周长”;再定义一个Rectangle类,实现接口rec_Area_Peri。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:《面向对象程序设计》实验报告与习题册2014 / 2015 学年第1学期系别计算机科学与技术系专业计算机软件班级姓名指导教师目录实验三面向对象程序设计一实验目的与要求1、编写java应用程序,完成类、对象的创建及使用;完成成员方法和构造方法的创建及使用。
2、掌握权限访问控制符public和private的用法;实现类的继承;实现变量的隐藏和方法的重写;实现成员方法和构造方法的重载;掌握多态的意义,学会多态在程序设计中的应用。
3、编写java应用程序,完成接口的实现;体会抽象类和接口的区别;体会接口的继承原理;将接口和类分别定义在不同的包中,掌握包的使用。
二实验内容1、定义一个学生类,为其添加成员变量为学号、年龄、姓名、班级和学校,其中学号为最终变量,学校为类变量;为其添加构造方法以完成对学生对象的初始化;为其添加成员方法getInfo(),作用是获取学生的所有信息;在main 中创建一个学生对象,并验证学生类中所有方法。
public class Student{final int sid=1210431087;int age;String name;int grade;public static String school="合肥师范学院";Student(){age = 22;name = "何楚伟";grade = 1;}public void getInfo(){System.out.println("学生学号:"+ sid);System.out.println("学生年龄:"+ age);System.out.println("学生姓名:"+ name);System.out.println("所在班级:"+ grade);System.out.println("所在学校:"+ school);}public static void main(String[] args){Student t = new Student();t.getInfo();}}2、在第一题的基础上,添加三个成员方法以用来改变年龄、姓名、班级的值;添加五个成员方法以用来分别获取学号、年龄、姓名、班级和学校的值;在main中创建一个学生对象,并验证这些方法。
package javasy;public class Student {private static final int ID=1210431087;private int age;private String name;private String grade;private School school;public Student(int age, String name, String grade, School school) { this.age = age; = name;this.grade = grade;this.school = school;}public void setAge(int age) {this.age = age;}public void setName(String name) { = name;}public void setGrade(String grade) {this.grade = grade;}public void setSchool(School school){this.school = school;}public static int getId() {return ID;}public int getAge() {return age;}public String getName() {return name;}public String getGrade() {return grade;}public School getSchool() {return school;}public void getInfo(){System.out.println("该学生的姓名为:"+name);System.out.println("该学生的学号为:"+ID);System.out.println("该学生的年龄为:"+age);System.out.println("该学生的班级为:"+grade);System.out.println("该学生的学校为:"+);}public static void main(String[] args) {School xx = new School(); = "合肥师范学院";Student xs = new Student(22,"何楚伟","12级软件一班",xx) ;xs.getInfo();System.out.println("*******************");xs.setAge(21);xs.setGrade("计算机软件一班");xs.setName("何楚伟");System.out.println("该学生的姓名为:"+xs.getName());System.out.println("该学生的学号为:"+xs.getId());System.out.println("该学生的年龄为:"+xs.getAge());System.out.println("该学生的班级为:"+xs.getGrade());System.out.println("该学生的学校为:"+xs.getSchool().name);}}class School{String name;}3、修改学生类中成员的访问权限,体会public和private两种访问权限的用法。
答:public 使用对象:类、接口、成员介绍:无论它所处在的包定义在哪,该类(接口、成员)都是可以访问的。
Private 使用对象:成员介绍:成员只可以在定义它的类中被访问。
4、定义一个People类,它包含属性有姓名name和性别sex,为People 类派生出一个子类Employee类,为其增加两个属性年龄age和工资等级grade,工资等级分A、B、C三个等级,在子类中增加用于打印出员工的姓名、性别、年龄和工资等级的方法print,编写一个应用程序,测试定义的类。
public class People{private String name;private String sex;public void setName(String name){ = name;}public void setSex(String sex){this.sex=sex;}public String getName(){return name;}public String getSex(){return sex;}public static void main(String[] args) {Employee ee = new Employee();ee.setName("何楚伟");ee.setSex("男");ee.setAge(22);ee.setGrade('B');ee.print();}}class Employee extends People{private int age;private char grade;public void setAge(int age){this.age=age;}public void setGrade(char grade){this.grade=grade;}public char getGrade() {return grade;}public int getAge(){return age;}public void print(){System.out.println("该员工的姓名为:"+getName());System.out.println("该员工的性别为:"+getSex());System.out.println("该员工的年龄为:"+getAge());System.out.println("该员工的工资级别为:"+getGrade());}}5、定义一个People类,它包含属性有姓名name和性别sex和年龄age,一个构造方法,用来初始化这三个属性;定义一个People类的子类Student,添加一个属性学好number,添加两个构造方法,一个有参构造方法,一个无参构造方法,他们都要调用父类的构造方法或本类的构造方法来完成对象的初始化,添加两个成员方法,一个是选课choose(),用来输出“我没有选课”,另一个是选课choose(String),用来选择由参数指定的课程。
public class People{String name;char sex;int age;public People(){="何楚伟";this.age=22;this.sex='男';}public static void main(String[]args){Student ss = new Student();ss.choose("JAVA");}}class Student extends People{int number;public Student(){super();}public Student(int number) {super();this.number = number;}public void choose(){System.out.println("我没有选课");}public void choose(String choose){System.out.println(name+"所选课程为"+choose);}}6、创建一个接口Shape,其中有抽象方法area,类Circle、Rectangle实现area方法计算其面积并返回,又有Star类实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型的方法isStar;在main方法中创建一个数组,根据随机数向其中加入Shape的不同子类对象,然后将数组元素依次取出,判断其是否为Star类,如是返回其个数,否则返回其面积。