实验报告三 类和对象
一、实验目的及要求
-
实验目的:在面向抽象编程的基础上,掌握使用接口进行程序设计的核心思想是使用接口回调,明白接口也可以体现程序设计的“开-闭”原则,即对扩展开放,对修改关闭。
-
实验要求:深刻理解面向接口编程和“开-闭”原则,要求会定义接口变量,该接口变量存放了实现该接口的类的对象的引用,从而接口变量就可以回调类实现的接口方法。
-
上机实验内容:定义接口,声明若干个abstract方法;创建若干实现接口的类,在类中重写抽象方法、定义若干个参数为接口类型的方法,通过实现接口的类的对象回调类重写的接口方法,最后定义主类来实现相应功能,最后完成实验报告。
二、实验环境
-
硬件要求:计算机一台
-
软件要求:Windows操作系统,使用Java语言,集成开发环境不限,建议使用如Eclipse、MyEclipse或IntelliJ IDEA等。
三、实验内容
- 定义一个名为IAnimal的接口,并声明两个abstract方法,分别为eat()和sleep()。创建两个实现IAnimal接口的类,名为Dog和Cat,在这两个类中重写接口中的抽象方法。此外,定义一个名为ZooKeeper的类,包含一个IAnimal类型的成员变量,以及一个名为careForAnimal()的方法,该方法通过调用接口变量的eat()和sleep()方法来照顾动物。
-
设计思路:
(1)定义接口:首先定义一个名为IAnimal的接口,其中包含两个抽象方法eat()和sleep()。这个接口将为所有动物类提供一个公共的行为模板。
(2)实现接口:创建两个类Dog和Cat,都实现IAnimal接口,并都需要实现eat()和sleep()方法。这两个类对IAnimal接口中定义的方法提供具体的实现。
(3)创建ZooKeeper类:在ZooKeeper类中,包含一个IAnimal类型的成员变量,这样ZooKeeper就可以接管任何实现IAnimal接口的类的实例。ZooKeeper类中还包含一个名为careForAnimal()的方法,该方法通过调用IAnimal接口变量的eat()和sleep()方法来照顾动物。
(4)实现“开-闭”原则:在上述设计中,如果想要添加一个新的动物类,只需要创建一个实现IAnimal接口的一个类,然后在ZooKeeper类中的IAnimal类型变量可以存放这个类的实例。ZooKeeper类无需做任何修改就可以照顾新的动物,这就体现“开-闭”原则。
-
设计类图:
图1 题目一类图
-
实验步骤:
(1)定义IAnimal接口,包括eat()和sleep()两个抽象方法。
(2)创建Dog类和Cat类,这两个类都实现IAnimal接口,并重写eat()和sleep()方法。
(3)设计并实现ZooKeeper类,包含一个IAnimal类型的成员变量,以及一个名为careForAnimal()的方法,该方法通过调用接口变量的eat()和sleep()方法来照顾动物。
(4)在主方法中,创建Dog类和Cat类的实例,并将这些实例传递给ZooKeeper类的对象,通过调用ZooKeeper对象的careForAnimal()方法来照顾这些动物。
(5)执行程序,观察并分析结果。
- 定义一个名为IDriveable的接口,并声明两个abstract方法,分别为start()和stop()。创建两个实现IDriveable接口的类,分别为Car和Bike,在这两个类中重写接口中的抽象方法。此外,在Car类中,再定义一个参数为IDriveable类型的方法,代表这辆车可以拖拉其他可驾驶的物体。最后在主类中实例化Car对象,通过接口变量调用拖拉方法。
-
设计思路:
(1)定义接口:首先定义一个名为IDriveable的接口,其中包含两个抽象方法start()和stop()。这个接口将为所有可驾驶物体提供一个公共的行为模板。
(2)实现接口:接着创建两个类Car和Bike,它们都实现IDriveable接口,这意味着它们都要实现start()和stop()方法。这两个类对IDriveable接口中定义的方法提供具体的实现。
(3)接口回调:在Car类中,定义一个参数为IDriveable类型的方法tow(),表示这辆车可以拖拉其他可驾驶的物体。在这个方法中,调用IDriveable接口的start()和stop()方法,实现接口回调。
-
设计类图: