面向对象经典题整理

文章介绍了面向对象编程的基本概念,如类和对象,并提供了几个代码示例,包括House、Book和Animal类的定义。同时,提出了根据场景绘制类图的需求,如工人使用螺丝刀、汽车与轮胎的聚合关系、形状类的继承结构以及公司与部门的组织关系。此外,还涉及了类的构造和依赖关系,如Head和Mouth类,以及Car和Engine类。最后,通过Beverage、Tea、Coffee和Beer类展示了继承和多态的应用,并设计了CarAudio接口及其实现类BOSE和Philips,强调了软件设计的可扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

面向对象就是把构成问题的事物分解成一个个对象,建立对象不是为了实现一个步骤,而是为了描述某个事物在解决问题中的行为。

类是面向对象中的一个很重要的概念,因为类是很多个具有相同属性和行为特征的对象所抽象出来的,对象是类的一个实例。
请添加图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、请根据类图编写代码框架

1、
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

public class House {
	private int roonNum;
	protected String address;
	private float area;
	public void show() {
	
	}
	public void paint(String color) {
		
	}
	public float getArea() {
		return 1;
	}
}

2、
在这里插入图片描述

public class Book {
	private String title;
	private int pages;
	public void trunPage(int index) {
		System.out.println("The book has turn page on"+index);
	}
public class sanDBook extends Book{
	private String material;
	public void play() {
		
	}
	public void turnPage(int index) {
		System.out.println("The 3DBook has turn page on"+index);
		}	
	}
}

3、
在这里插入图片描述

abstract class Animal {
	private String color;
	private String type;
public abstract void cry(String sound);
public void run() {
	}
}

二、请根据场景描述绘制类图

1、工人(Person)会使用(useTool)螺丝刀(Screwdriver)来完成日常维修工作
在这里插入图片描述

2、小汽车(Car)与轮胎的关系(Wheel)

小汽车与轮胎的关系通常被认为是聚合关系。

在软件工程的领域模型中,聚合关系表示“拥有”关系,其中部分(轮胎)可以独立于整体(汽车)存在。也就是说,轮胎可以被拆卸下来用于维修、更换或者在其他汽车上使用,它的生命周期并不完全依赖于单一的小汽车。

组合关系则表示一种更强的“拥有”关系,其中部分(如汽车的发动机)的生命周期是与整体(汽车)紧密绑定的,当整体销毁时,部分也会随之销毁。在这种情况下,部分不能脱离整体而独立存在。

由于轮胎可以独立于汽车存在和使用,小汽车与轮胎的关系更符合聚合关系的定义,应该在UML图中用空心菱形表示,下面图画错了

感谢大佬【m0_62066150】指出错误!!!
在这里插入图片描述
3、圆(Circle)、矩形(Rectangle)和多边形(Polygon)都是形状(Shape)的一种。它们都可以移动(move),都可以变换大小(resize〉和显示(show)。但是圆具有自己的半径(radius),矩形拥有自己的长(width)和宽( height),多边形拥有自己的顶点列表( points)
在这里插入图片描述
4、公司(Company)是由部门(Department)构成的
在这里插入图片描述

请根据代码绘制类图

5、(1)

public class Head { 
public Mouth mouth; 
public Head() { 
mouth = new Mouth();
} …… 
}
public class Mouth { …… }

在这里插入图片描述
(2)

public class Car { 
private Engine engine; 
public Car(Engine engine) { 
this.engine = engine; 
}
public void setEngine(Engine engine) {
this.engine = engine; 
} …… } 
public class Engine { …… }

在这里插入图片描述
6、用户小李对数据展示系统 CustomerDataDisplay 发出请求,想要读取一些信息,进行图形创建并展示,
如下类图如何修改?

在这里插入图片描述
在这里插入图片描述

三、综合题

1、茶(Tea)、咖啡(Coffee)、啤酒(Beer),都属于饮品(Beverage)的一种,它们都具有品牌(brand)、类型(typeName)、产地(place)、价格(price)等特征,它们都有一定的制作方法(make)。但是,不同的饮品,制作的方法却完全不一样。
(1)、请通过类图将上述的关系表达出来
在这里插入图片描述
(2)、请用代码实现 Beverage 类和 Coffee 类

package Beverage;

public class Beverage {
	String brand;
	String typeName;
	String place;
	String price;
	public void make() {
		System.out.println("我是饮品");
	}
}
package Beverage;

public class Tea extends Beverage{
	String brand;
	String typeName;
	String place;
	String price;
	public void make() {
		System.out.println("我是茶");
	}
}
package Beverage;

public class Coffee extends Beverage{
	String brand;
	String typeName;
	String place;
	String price;
	public void make() {
		System.out.println("我是咖啡");
	}
}
package Beverage;

public class Beer extends Beverage{
	String brand;
	String typeName;
	String place;
	String price;
	public void make() {
		System.out.println("我是啤酒");
	}
}
package Beverage;

public class Text {
	public static void main(String[] args) {
		Beverage b=new Beverage();
		Beverage T=new Tea();
		Beverage C=new Coffee();
		Beverage B=new Beer();
		b.make();
		T.make();
		C.make();
		B.make();
	}
}

2、请为汽车厂家设计一套驱动车载音响(CarAudio)的协议,让凡是遵守这个协议的车载音响制造商所生产的产品,都能在汽车(Car)上使用。车载音响上的功能包括播放(play)、暂停(pause)、上一首(prev)、下一首(next)、调节声音大(turnUp)、调节声音小(turnDown)。目前有 Philips 和 BOSE两个品牌满足这个协议。
(1)、请通过类图表达自己的设计思想

在这里插入图片描述
(2)、实现类 CarAudio 和 BOSE 的代码

package CarAudio;

public class BOSE implements CarAudio{
	public void play() {
		System.out.println("我是BOSE品牌上的播放键");
	}
	public void pause(){
		System.out.println("我是BOSE品牌上的暂停键");
	}
	public void prev(){
		System.out.println("我是BOSE品牌上的上一首");
	}
	public void next(){
		System.out.println("我是BOSE品牌上的下一首");
	}
	public void turnUp(){
		System.out.println("我是BOSE品牌上调节声音大的");
	}
	public void turnDown(){
		System.out.println("我是BOSE品牌上调节声音小的");
	}
}
package CarAudio;

public class Car {
	CarAudio carAudio;
	public void play() {
		carAudio.play();
	}
	public void pause() {
		carAudio.pause();
	}
	public void prev() {
		carAudio.prev();
	}
	public void next() {
		carAudio.next();
	}
	public void turnUp() {
		carAudio.turnUp();
	}
	public void turnDown() {
		carAudio.turnDown();
	}
}
package CarAudio;

public interface CarAudio {
	public void play();
	public void pause();
	public void prev();
	public void next();
	public void turnUp();
	public void turnDown();
}
package CarAudio;

public class Philips implements CarAudio{
	public void play() {
		System.out.println("我是Philips品牌上的播放键");
	}
	public void pause(){
		System.out.println("我是Philips品牌上的暂停键");
	}
	public void prev(){
		System.out.println("我是Philips品牌上的上一首");
	}
	public void next(){
		System.out.println("我是Philips品牌上的下一首");
	}
	public void turnUp(){
		System.out.println("我是Philips品牌上调节声音大的");
	}
	public void turnDown(){
		System.out.println("我是Philips品牌上调节声音小的");
	}
}

(3)、请根据题 2 中给出的方案,用代码描述在一辆车上既可以使用 BOSE 音响,也可以使用 Philips音响的场景。

package CarAudio;

public class BOSEText {
	public static void main(String[] args) {
		Car c=new Car();
		c.carAudio=new BOSE();
		c.play();
		c.pause();
		c.prev();
		c.next();
		c.turnUp();
		c.turnDown();
	}
}
package CarAudio;

public class PuilipsText {
	public static void main(String[] args) {
		Car c = new Car();
		c.carAudio = new Philips();
		c.play();
		c.pause();
		c.prev();
		c.next();
		c.turnUp();
		c.turnDown();
	}
}
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二哈喇子!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值