20XX级java语言实验3指导(面向对象程序设计(继承、封装、多态))
- 格式:docx
- 大小:18.16 KB
- 文档页数:8
《Java语言与面向对象程序设计》实验指导书实验一Java开发环境和简单程序设计一、实验目的1、熟悉JDK开发环境2、了解Java应用程序和Java小程序的程序结构和开发过程3、掌握Java应用程序的简单输入和输出操作二、实验内容1、安装、设置和使用JDK2、掌握使用JDK命令行进行Java程序开发的过程和步骤编译命令:javac 源程序名.java运行Java应用程序的命令:java 主类名运行包含在网页中的Java小应用程序的命令:appletviewer 网页文件名.html3、使用JCreator Pro、NetBeans或其他开发环境来进行Java程序开发的过程和步骤4、编写程序:(1)编写应用程序,对输入的n,输出Fibonacci数列的前n个数:该数列的第1和第2项的值是1,以后各项是其前两项之和。
即1,1,2,3,5,8,13,21,34,55,...(2)编写小程序,输出二十六个英文字母表。
三、实验要求学习使用Java应用程序和小应用程序的输入输出方法控制台输出:PrintStream类的print、println、printf(format)方法等输入:Scanner类的各种类型数据的输入方法等。
实验1-1:import java.util.Scanner;class Fibonacci {public static void main(String args[]){System.out.print("please enter the n: ");Scanner sc=new Scanner(System.in);int n=sc.nextInt();int a=1,b=1,c;for(int i=1;i<=n;i++){System.out.println(a);c=a+b;a=b;b=c;}}}实验1-1运行结果如下图:实验1-2:package experiment;import java.awt.*;public class E1_2 extends java.applet.Applet {public void paint(Graphics g) {int i;for( i=0;i<26;i++){g.drawString(" "+(char)('A'+i),i*20,40);}}}试验心得体会:做完这个实验后,我开始慢慢学着用JCreator Pro、NetBeans编写简单的程序,虽然只有模仿着老师已经给我们写好的程序才会编写简单程序,不过看到程序运行后就会很有成就感。
J a v a面向对象编程实验报告题目:继承、封装、多态专业:计算机科学与技术班级:学号: 2姓名:2014年 5 月 4 日一、实验目的与要求1、掌握面向对象编程中的封装特性3、掌握面向对象编程中的继承特性4、掌握面向对象编程中的多态特性实验内容根据如下类图创建每个类并进行以上内容的相关测试三、实施步骤1):在Eclipse中创建一个抽象的MobilePhone父类,用abstract关键字修饰这个类,并且写入构造方法,类名如:MobilePhone_FatherClass2):再给MobilePhone父类编写入一些抽象的属性和方法,并实现get(),set()方法(获取属性的方法)3)再创建四个子类继承MobilePhone父类,实现Student父类的方法,并且分别写入这些子类的自己的方法:NOKIA1:message();NOKIA2:netpay();MOTOROLA1:message();MOTOROLA2:metpay();4)再创建一个测试类:MobilePhoneTest ,实例化NOKIA1,NOKIA2,MOTOROLA1,MOTOROLA2四个子类,实现多态的输出!四、实验结果整个工程的类结构如下:①:MobilePhone父类:MobilePhone_FatherClass②:四个子类:NOKIA1,NOKIA2,MOTOROLA1,MOTOROLA2:(方法类似,只展示一个):③:测试类:MobilePhoneTest④:实验结果:五、出现的问题及解决的方法问题:抽象类的分析,多态的实现解决方法:关键字abstract,需要继承父类使用extends关键字,不使用abstract修饰的类也是可以作为父类的!通过这次实验,我懂得了封装和继承是实现多态的前提,使自己更深的理解的封装,继承,多态的重要性。
一、摘要本次面向对象技术实训以Java编程语言为基础,通过实例分析和实践操作,让学生深入了解面向对象编程的基本概念、原则和方法。
实训过程中,学生掌握了面向对象编程的基本语法、类和对象的设计与实现、继承与多态等核心概念,并通过实际项目开发提高了编程能力。
本文将从实训内容、方法与收获三个方面进行总结。
二、实训内容1. 面向对象基本概念(1)面向对象编程(OOP)的基本概念:封装、继承、多态。
(2)Java编程语言中的面向对象编程特性:类、对象、构造方法、访问控制符等。
2. 类和对象的设计与实现(1)设计一个简单的Java程序,实现学生信息管理系统。
(2)设计并实现学生类、教师类、课程类等实体类,以及相关的方法。
3. 继承与多态(1)使用继承实现学生类和教师类的继承关系。
(2)通过多态实现不同类对同一方法的重写和重载。
4. 实际项目开发(1)设计并实现一个图书管理系统,包括图书类、读者类、借阅类等。
(2)实现图书的借阅、归还、查询等功能。
三、实训方法1. 理论学习:通过阅读教材、参考书籍,了解面向对象编程的基本概念和原理。
2. 实践操作:根据实训内容,动手编写Java程序,实现面向对象编程。
3. 交流与讨论:在实训过程中,与其他同学进行交流与讨论,共同解决遇到的问题。
4. 查阅资料:针对遇到的具体问题,查阅相关资料,提高编程能力。
四、实训收获1. 理论知识:掌握了面向对象编程的基本概念、原则和方法,为后续课程和实际项目开发奠定了基础。
2. 编程能力:通过实际项目开发,提高了编程能力,学会了如何将理论知识应用到实际项目中。
3. 团队协作:在实训过程中,与其他同学进行交流与讨论,提高了团队协作能力。
4. 问题解决能力:在遇到问题时,能够主动查阅资料、请教他人,提高了问题解决能力。
五、总结本次面向对象技术实训使我受益匪浅,不仅加深了对面向对象编程的理解,还提高了编程能力。
在今后的学习和工作中,我会继续努力,将所学知识运用到实际项目中,为我国信息技术领域的发展贡献自己的力量。
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的信息,并加上⾃⼰的学号⽔印信息。
实验二:对象的抽象、封装、继承、多态一、实验目的1.掌握类的声明。
2.掌握对象的创建。
3.掌握方法的定义和调用。
4.掌握构造函数的使用。
5.掌握类的继承方法。
6.掌握变量的继承和覆盖。
7.掌握方法的继承、重载和覆盖。
8.了解接口的实现方法。
二、实验内容1.编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。
创建一个对象,求给定尺寸的立方体的体积。
2.将上题的方法setDemo改用构造函数实现初始化。
三、思考题1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用?2.为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用?3.编程创建一个Point类,在其中定义两个变量表示一个点的坐标值,再定义构造函数初始化为坐标原点,然后定义一个方法实现点的移动,再定义一个方法打印当前点的坐标。
并创建一个对象验证。
提示:关键代码如下:void move(int newX,int newY){x=newX;y=newY;}void print(){System.out.println(name+":x="+x+" y="+y);}…p.print();p.move(50,50);System.out.println("**after moving**");p.print(); //call method of an object4.定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"和"查询余额"。
定义主类,创建帐户类的对象,并完成相应操作。
实验三继承和多态一、实验目的1.熟练掌握封装性,多态性的概念。
2.熟练掌握抽象类abstract的概念。
3.熟练掌握接口interface的概念。
4.熟练包package的概念以及编译运行的方法。
二、实验内容1.编写一个Java Application程序,该程序有个点Point类,它包含横坐标x和纵坐标y 两个属性,再给Point定义两个构造方法和一个打印点坐标的方法Show。
定义一个圆Circle 类,它继承Point类(它是一个点,圆心(Center)),除此之外,还有属性半径Radius,再给圆定义2个构造方法、一个打印圆的面积的方法PrintArea和一个打印圆中心、半径的方法Show(其中显示圆心可以用super.Show()的方式)。
编写一测试类,对其进行编译、运行。
结果如何?如去掉语句“super.Show();”,再看看运行结果。
理解程序中重载和多态性的运用。
2.完成以下步骤要求:(1)设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x和y值的public方法。
(2)设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r,获取和设置r值的public方法、计算圆面积的public 方法。
(3)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public 方法。
(4)建立若干个Cylinder对象,输出其轴心位置坐标、半径、高及其体积的值。
3.学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的管理和对教师的管理在他们身上都有体现。
(1)设计两个信息管理接口StudentInterface和TeacherInterfaceo其中,StudentInterface接口包括setFee方法和getFee方法,分别用于设置和获取学生的学费;TeacherInterface接口包括setPay方法和getPay方法,分别用于设置和获取教师的工资。
上机实验三:面向对象程序设计(继承、封装、多态) 类是面向对象程序设计的基础,是Java的核心和本质所在,在Java中,所有的语言元素都封装在类中。
编写java程序的过程就是从现实世界中抽象出java可实现的类,并用合适的语句定义它们的过程,本节将学习类的应用,以及如何创建类的实例,通过类的继承更有效的组织程序结构,明确类之间的关系。
掌握本节所讲的内容后,读者就可以使用面向对象技术编写java程序了。
接口是特殊的抽象类,只包含常量和方法的定义,而没有方法的实现,也就是说接口是方法定义和常量值的集合。
包是Java语言中有效管理类的一个机制。
通过关键字package声明包语句,package语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。
使用import语句可以引入包中的类。
一、实验目的1)掌握类的定义和使用2)掌握对象的声明和使用3)了解构造函数的概念和使用4)掌握类的继承关系和派生方法5)掌握多态的概念与使用6)掌握接口的定义和使用7)掌握Java中包的应用二、实验内容1)类的声明2)定义类成员变量以及成员方法3)实例化类、创建类对象以及类方法的调用4)类的继承5)通过实例理解接口的定义6)通过实例熟悉接口的应用7)正确应用Java中包和import语句三、实验步骤1)类和类的实例化一个类的实现包括两部分:类声明和类体。
(1)、类声明[public][abstract][final] class className [extends superclassName][implements interfaceNameList]{……}期中修饰符[public][abstract][final]说明类的属性className为类名superclassName为父类的名字interfaceNameList为类实现的接口列表(2)、类体类体定义如下class className{[public|protected|private] [static] [final] [transient] [volatile]Type variableName; //成员变量[public|protected|private] [static] [final] [abstract] [native] [synchronized] returnType methondName ( [paramList] ) [throws exceptionList]{statements} //成员方法}(3)、成员变量成员变量的声明方式如下[public|protected|private] [static] [final] [transient] [volatile]Type variableName; //成员变量其中:[public|protected|private] →可见性[static] →静态变量(类变量),相当于实例变量[final] →常量[transient]→暂时性变量,用于对象存档[volatile]→变量,用于共发线程的共享(4)、成员方法[public|protected|private] [static] [final] [abstract] [native] [synchronized] returnType methondName ( [paramList] ) [throws exceptionList]//方法体的声明{statements} //方法体其中:[public|protected|private] →可见性[static] →静态方法,也叫类方法,可以通过类名直接调用[final] →方法不能被重写[abstract]→抽象方法,没有方法体(体现多态时常用)[native] →集成其他语言的代码[synchronized]→控制多个并发线程的访问例子3-1请根据注释填写语句,并上机调试成功根据注释添加语句,并调试和修改程序,使其能够执行。
一、实验目的1. 理解面向对象设计的核心概念,如封装、继承、多态等。
2. 掌握面向对象设计的方法和步骤。
3. 通过实际案例分析,提高面向对象设计的实践能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 面向对象设计的基本概念2. 类与对象3. 继承与多态4. 实际案例分析四、实验步骤1. 面向对象设计的基本概念(1)定义:面向对象设计(Object-Oriented Design,OOD)是一种以对象为中心的设计方法,通过将现实世界中的实体抽象为对象,以对象及其相互关系来描述系统的结构和行为。
(2)核心概念:a. 封装:将对象的属性(数据)和行为(方法)封装在一起,对外提供接口。
b. 继承:允许一个类继承另一个类的属性和方法,实现代码复用。
c. 多态:允许不同类的对象对同一消息作出响应,实现行为的变化。
2. 类与对象(1)定义:类是具有相同属性和行为的对象的抽象,对象是类的实例。
(2)步骤:a. 定义类:创建一个新的类,定义属性(成员变量)和方法(成员函数)。
b. 创建对象:使用new关键字创建类的实例。
c. 访问对象属性和方法:使用点号(.)操作符访问对象的属性和方法。
3. 继承与多态(1)继承:定义一个新的类(子类)继承自另一个类(父类),子类继承父类的属性和方法。
(2)多态:允许不同类的对象对同一消息作出响应,实现行为的变化。
(3)步骤:a. 定义父类:创建一个父类,定义属性和方法。
b. 定义子类:创建一个子类,继承自父类,并添加新的属性和方法。
c. 实现多态:使用子类对象调用父类方法,实现不同对象对同一消息的不同响应。
4. 实际案例分析(1)案例分析:设计一个简单的图书管理系统。
(2)设计步骤:a. 分析需求:图书管理系统需要管理图书的增删改查等功能。
b. 设计类:设计图书类(Book)、借阅者类(Borrower)和管理员类(Admin)。
信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号实验时间指导教师成绩主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)Student(String name,String sex,int age,String sno,String classno) {super(name,sex,age);this.sno=sno;this.classno=classno;}public String toString(){ return("姓名:"+name+" 性别:"+sex +" 年龄:"+age+ " 学号:"+sno+" 班号:"+classno+" ");}}public class TestStudentPerson {public static void main(String[] args){int i;Student stu[]=new Student[3];stu[1]=new Student("小明","男",20,"200912135138","2班");stu[2]=new Student("小木","女",23,"200912135136","5班");stu [1].updateAge(25);stu [2].updateAge(26);for(i=1;i<3;i++){System.out.println(stu[i]);}}}2)调试结果:主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)调试结果:2)将Shape类定义为abstact class Shape{……}public class TestVirtualInvoke {static void doStuff(Shape s){s.draw();}public static void main(String[] args) {Circle c=new Circle();Triangle t=new Triangle();Line l=new Line();doStuff(c); //作为实参,调用对象是3个类对象,上溯造型使其隐藏.doStuff(t);doStuff(l);}}abstract class Shape{abstract void draw();}class Circle extends Shape{void draw(){System.out.println("Draw Circle");}} //定义Shape抽象类的派生类Circleclass Triangle extends Shape{void draw(){System.out.println("Draw Three Triangle");}}//定义Shape抽象类的派生类Triangleclass Line extends Shape{void draw(){System.out.println("Draw Line");}}//定义Shape抽象类的派生类Line主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)调试结果:3)将Shape定义为interface Shape{……}public class TestVirtualInvoke {static void doStuff(Shape s){s.draw();}public static void main(String[] args) {Circle c=new Circle();Triangle t=new Triangle();Line l=new Line();doStuff(c); //作为实参,调用对象是3个类对象,上溯造型使其隐藏.doStuff(t);doStuff(l);}}interface Shape{public void draw();} //定义一个Shape接口class Circle implements Shape{public void draw(){System.out.println("Draw Circle");}} //基于Shape接口利用implements实现类Circleclass Triangle implements Shape{public void draw(){System.out.println("Draw Three Triangle");}}class Line implements Shape{public void draw(){System.out.println("Draw Line");}}调试结果:3.思考题:某小型公司,主要有三类人员:经理、兼职技术人员和兼职推销员。
20XX级java语言实验3指导(面向对象程序设计(继承、封装、多态))上机实验三:面向对象程序设计(继承、封装、多态) 类是面向对象程序设计的基础,是Java的核心和本质所在,在Java中,所有的语言元素都封装在类中。
编写java 程序的过程就是从现实世界中抽象出java可实现的类,并用合适的语句定义它们的过程,本节将学习类的应用,以及如何创建类的实例,通过类的继承更有效的组织程序结构,明确类之间的关系。
掌握本节所讲的内容后,读者就可以使用面向对象技术编写java程序了。
接口是特殊的抽象类,只包含常量和方法的定义,而没有方法的实现,也就是说接口是方法定义和常量值的集合。
包是Java语言中有效管理类的一个机制。
通过关键字package声明包语句,package语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。
使用import语句可以引入包中的类。
一、实验目的1) 2) 3) 4) 5) 6) 7)掌握类的定义和使用掌握对象的声明和使用了解构造函数的概念和使用掌握类的继承关系和派生方法掌握多态的概念与使用掌握接口的定义和使用掌握Java中包的应用二、实验内容1) 2) 3) 4) 5) 6) 7)类的声明定义类成员变量以及成员方法实例化类、创建类对象以及类方法的调用类的继承通过实例理解接口的定义通过实例熟悉接口的应用正确应用Java中包和import语句三、实验步骤1) 类和类的实例化一个类的实现包括两部分:类声明和类体。
、类声明[public][abstract][final] class className [extends superclassName] [implements interfaceNameList] {……}期中修饰符[public][abstract][final]说明类的属性className为类名superclassName为父类的名字interfaceNameList为类实现的接口列表、类体类体定义如下 class className {[public|protected|private] [static] [final] [transient] [volatile] Type variableName; //成员变量[public|protected|private] [static] [final] [abstract] [native] [synchronized] returnTypemethondName ( [paramList] ) [throws exceptionList] {statements} //成员方法 }、成员变量成员变量的声明方式如下[public|protected|private] [static] [final] [transient] [volatile] Type variableName; //成员变量其中:[public|protected|private] →可见性[static] →静态变量,相当于实例变量[final] →常量[transient] →暂时性变量,用于对象存档[volatile] →变量,用于共发线程的共享、成员方法[public|protected|private] [static] [final] [abstract] [native] [synchronized] returnTypemethondName ( [paramList] ) [throws exceptionList]//方法体的声明 {statements} //方法体其中:[public|protected|private] →可见性[static] →静态方法,也叫类方法,可以通过类名直接调用 [final] →方法不能被重写[abstract] →抽象方法,没有方法体 [native] →集成其他语言的代码[synchronized] →控制多个并发线程的访问例子3-1请根据注释填写语句,并上机调试成功根据注释添加语句,并调试和修改程序,使其能够执行。
--------------------------------------------------------------------------------------------------------------------- class Retangle {publicRetangle(double l, double w) { length = l; width = w;}public double calcPerimeter //返回周长{ } public double calcArea //返回面积{ }public void Show //显示矩形的长和宽{ } protected double length; protected double width; } class Square extends Retangle {public Square(double side) //调用父类的构造方法{} public double calcPerimeter { return width * 4; } public void Show {( “边长为” + width + “的正方形”); } }publicclass Test{public static void main(String args){Square sq1=new Square ;;(\正方形的边长为\} return (width+length)*2; }return width*length; ----------------------------------------------------------------------------------------------------------------- (\;填写的语句是: super(side,side);classRetangle { publicRetangle(double l, double w) { length = l; width = w;}publicdoublecalcPerimeter //返回周长{return (width+length)*2;} publicdoublecalcArea //返回面积{ returnwidth*length; }publicvoid Show //显示矩形的长和宽{ (\+length+\+\+width ) ; }protecteddoublelength; protecteddoublewidth; }class Square extendsRetangle {public Square(double side) //调用父类的构造方法{ super(side,side); } publicdoublecalcPerimeter { returnwidth * 4; } publicvoid Show { ( \边长为\ + width + \的正方形\);} }publicclass Test{publicstaticvoid main(String args){ Square sq1=newSquare ; ;(\正方形的周长为\+ ); } }2) 类的继承继承是面向对象程序设计的方法中的一种重要手段,通过继承可以更有效的组织程序的结构,明确类之间的关系。
继承通过extends关键字来实现,子类继承父类的属性和行为,同时可以修改父类的属性和行为,并添加新的属性和行为。
Java不支持多重继承。
创建子类的格式如下classSubClass extends SuperClass{ …… }其中SubClass→子类的名称extends→继承的关键字 SuperClass→父类的名字例子3-2 请分析程序,填写语句的功能注释,并上机调试成功。
下面这个例子通过点、圆的层次结构,介绍类的继承。
---------------------------------------------------------------------------- import ; //调用格式化数字输出import ; // joptionpane让您轻松弹出一个标准的对话框class Point{//父类点的的定义protected intx,y ; // 定义点的坐标 public Point { // 确定构造函数setPoint(0,0);} public Point(inta,int b){ //构造函数重载带参数的构造函数setPoint(a,b); }public void setPoint(inta,int b){ // x=a;y=b; } public intgetX { return x;} //获得X的坐标 public intgetY { return y;} // 获得Y的坐标public String toString { return \ } }/*子类圆的定义*/class Circle extends Point { //圆类继承父类点类 protected double radius ;//定义圆的半径public Circle { setRadius(0);}// 定义子类的构造函数,隐含调用了父类的构造函数 public Circle(double r,inta,int b){ super(a,b);// setRadius(r); } public void setRadius(double r){ radius = (r>=r:); // } public double getRadius { // 获得圆半径return radius; }public double area { //return *radius*radius; } public String toString {//圆的半径。
以及圆心坐标转换成字符串输出 return \ } } public class InheritanceTest{ public static void main(String args){ Point pointRef,p;//声明两点对象Circle circleRef,c;//声明两圆对象 String output;//定义一个字符串变量 p=new Point(30,50);//给点对象赋值 c=new Circle (,120,89);//给圆对象赋值//把点对象和圆对象转换成字符串后给字符串output 赋值output=\pointRef=c; output=output+\。