一、某公司面试题目:

定义一个体育活动类(Sports)作为基类,它有一个进行活动的方法play(方法名命名规范:J2EE方向:小写字母开头  . NET方向:大写字母开头)。
足球(Football)和篮球(Bascketball)都是体育活动类的衍生类。
请在测试类(Test)中编写一个方法howToPlay(Sports sp),该方法要求传递一个Sports类型的参数。该方法的作用是:
1. 当传入的实例类型为Football时,控制台上应打印:足球是用脚踢的!
2. 当传入的实例类型为Bascketball时,控制台上应打印:篮球是用手打的!
在main方法中调用howToPlay()验证你的代码是对的。

二、某考试题目

事务具有ACID特性,在现代应用系统中建立事务环境是保证信息完整性和一致性的重要手段,请按照题目要求实现简单的事务管理操作。

1. 实现事物管理类TransactionManager,包含有基本的函数:

1)void begin()开始事务,即初始化事务环境,准备接受操作命令;

2)void commit( )提交事物,即完成事物环境中的所有操作,清空命令。

3)void rollback( )回滚事务,即将事物环境中的所有操作均放弃,恢复到事务开始时的状态。

为了保证操作一致性,需要将操作命令一次保存到事务环境中,(最多可存5条命令)所以该类还包括函数:

int addCommand(Icommand *comm)将某个操作记录放入事物环境中,成功时返回1,记录满时返回0,其中Icommand的说明如下:

2.设计操作命令的抽象类Icommand,包含基本的函数:

void execute( )执行该操作,

void undo( )反向执行该操作。即补偿执行时造成的损失。

2. 该系统的命令均是对自定义数值类 Number的处理,其中Number类包括属性value(整数类型),构造函数可以给该属性赋值,重载运算符+=,-=,*=,/=和输入输出运算 符,以+=为例,函数原型为:int Number::operator+=(const Number & other)返回值计算方法为:如果参数other是(Number)0,则不进行任何计算,返回0表示失败,否则正常运算,返回1表示成功。

3. 该系统中有三种操作命令种类,分别为:

a)求和命令AddCommand类,其中包括属性Number *PNumber 和int opnum,构造函数用以给两反向操作时将增加的部分减去,即为PNumber求差。

b)求差命令Subcommand类,其中包括属性Number *PNumber和int opnum,构造函数用以给两个属性赋初值,执行操作时为PNumber求差,反向操作时将减去的部分家回,即为求和

c)求积命令,Mulcommand类,其中包括属性Number *PNumber和int opnum,构造函数用以给两个属性赋初值,执行操作时为PNumber求积,将乘上的部分去除,即为求PNumber求商。

备注:以上操作均使用Number类提供的运算符。

4. 编定main()函数,测试事务管理功能,模拟输入若干命令,对同一个Number对象进行操作,如果成功完成运算,则提交事务,否则回滚事务,最后观察操作后的值是否正确,类似执行如下操作:

5. 测试程序示例:

TransactionManager manager;//事物对象

Number num;//待运算的对象

Cin>>num;//读入对象的初始值

Int hasError=0;

ICommand *command;

Int opnum;//运算第二个操作数

Manager.begin();

While(1)//与用户的交互界面省略

{//根据用输入构造相应的命令

Command=new Addcommand(&num,opnum);

If (!command->execute())

{

hasError=1;

break;

}

Else

If(!manager.Addcommand(ICommand))

Break;

}

Else

If(manager.Addcommand(ICommand))

Break;

}

If(hasError)

Manager.rooback();

Else

Manager.Commit();

Cout<<num;

三、一个帖子上的题目

一部汽车是由轮子、车门、窗户、引擎等部件构成的。  
窗户(Window)是一个类,它的属性有水平/垂直坐标(x,y),宽度(width),高度(height),颜色(color),以及绘制自己的方法draw(Graphics   g)。  
车门(Door)是一个类,它的属性有水平/垂直坐标(x,y),宽度(width),高度(height),颜色(color),以及绘制自己的方法draw(Graphics   g)。另外,每个门都含有一个窗户,一个把手。  
引擎(Engine)是一个类,它的属性有水平/垂直坐标(x,y),宽度(width),高度(height),颜色(color),以及绘制自己的方法draw(Graphics   g)。  
轮子(Wheel)是一个类,它的属性有水平/垂直坐标(x,y),直径(Diameter),颜色(color),以及绘制自己的方法draw(Graphics   g)。  
汽车(Car)也是一个类,它的属性有水平/垂直坐标(x,y),宽度(width),高度(height),颜色(color),以及绘制自己的方法draw(Graphics   g)。另外,每部汽车都包括一个车门,两个轮子,一个引擎,以及不定数目的窗户。  
要求:请根据上面的需求陈述,用面向对象的思想设计一个车长、车高以及车子的车窗数可动态改变的系统,并用Java语言实现你的设计方案。发挥你的想象力吧!

国家宝藏
 
设计题目:国家宝藏
本·富兰克林·盖茨(尼古拉斯·凯奇饰)是一个喜爱考古的冒险家。从小就梦想要找到国家宝藏,二十年来这个秘密一直

萦绕在他的心头,现在他决定完成这一梦想。假设我们知道国家宝藏在哪里,并且想设计一个系统,如果尼古拉斯碰触国

家宝藏中的每箱黄金,系统会自动通知宝藏的守护神。
系统中应该有一个抽象的宝藏类(Treature),宝藏类维护着一个聚集,用于对守护神的跟踪,当宝藏被更动时,通知这

些守护神,这个聚集可以用一个向量(Vector)作为宝藏类的Obs属性来实现。该类提供一系列的保护神管理方法,可以

增加(addObserver())和删除(deleteObserver())宝藏保护神,以及当宝藏状态被更动时,通知(notifyObservers()

)守护神。当然,宝藏类还要有一些辅助方法,比如探测宝藏状态是否改变的方法(hasChanged()),标记宝藏状态已更

动的方法(setChanged())和复位状态变化标志(clearChanged()),以及返回宝藏守护神数目的方法(countObserver

())。
具体的宝藏如黄金(Gold)也应是一个类,且是宝藏类的子类,维护着自己的状态(State),这可以用String型变量来

实现。当然还有获得状态(getState())和改变状态(setState())的辅助方法,并且当重新设定的状态与原状态不同时,

会通知看护该箱黄金的所有守护神。
你还可发挥想象力定义其他的具体宝藏类,比如钻石(Diamond)类等等。
守护神(Eudemon)应是个抽象类或接口,为各种具体的守护神定义一个接口,在得到宝藏的通知时采取行动。这个接口

中只包含一个方法update(),用于宝藏状态改变时,具体的保护神所应采取的行动。
具体的守护神比如老虎(Tiger)就是一个实现了抽象守护神接口中update()方法的具体守护神。你还可发挥想象力定义

其他的具体守护神类,比如狮子(Lion)类等等。
最后,尼古拉斯·凯奇(Cage)也是一个类,且是具体类,他将凭借智慧和勇敢,更动(touchTreature())这些国家宝

藏的状态,这可要惊动宝藏的守护神呦......
要求:请根据上面的剧本陈述,设计一个国家宝藏的守护系统,并用Java语言实现你的设计方案。发挥你的想象力吧!

农夫果园
 
设计题目:农夫果园
一个农场,专门种植销售各类水果,在这个系统中需要描述下列水果:
葡萄:Grape
草莓:Strawberry
苹果:Apple
水果与其他的植物有很大的不同,水果最终是可以采摘食用的。那么一个自然的做法就是建立一个各种水果都适用的接口

,以便与农场里的其他植物区分开。水果接口规定出所有的水果都必须实现的接口,包括任何水果必须具备的方法:种植

plant(),生长grow(),收获harvest()。
Apple类是水果中的一种,因此它实现了水果接口所声明的所有方法。另外,由于苹果是多年生植物,因此多出一个

treeAge性质,描述苹果树的树龄。
Grape类是水果类的一种,也实现Fruit接口中所声明的所有方法。但由于葡萄分为有籽和无籽的两种,因此比通常的水果

多出一个seedless性质。
Strawberry类也是水果的一种,也实现了Fruit接口。
农场的园丁也是系统的一部分,自然要由一个合适的类来代表。这个类就是FruitGardener,它会根据农场老板的要求,

使用factory()方法创建出不同的水果对象,比如苹果(Apple),葡萄(Grape)或草莓(Strawberry)的实例。而如

果接到不合法的要求,会提示错误。
农场的市场调查员也是系统的一部分,也需要一个类代表,这个类是MarketInquirer,它通过inquire()调查今年市场

上哪一种水果热销。
农场的老板也是系统的一部分,仍需要一个类来代表,这个类是FruitBoss,他会根据市场调查员的反馈信息,通知农场

的园丁今年种植哪种水果。
要求:请你根据上述系统需求,用Java语言设计这个农场系统,发挥你的想象力吧!
祝你的农场百果丰收!

夏日麽麽茶
 
设计题目:夏日麽麽茶
在一个茶庄(TeaStall)所使用的系统里,有各种风味的名茶。
茶(Tea)在系统中要用一个类代表,它有一个属性(Flavor)。
茶庄的菜单(TeaMenu)在系统中以用类来表示,也可用接口来实现。其中包含了茶庄中可供顾客点的茶。比如"西湖龙井

","洞庭碧螺春","白毫银针","君山银针","黄山毛峰 ","武夷岩茶","安溪铁观音","信阳毛尖","庐山云雾","

六安瓜片"等。
茶庄的沏茶员(InfuseMan)是系统中的一个类,他可以根据侍者(Waitor)所下的单,冲泡各种风味的茶,如果订单中

风味的茶已沏好,就直接为侍者提供(getTea())茶;如果还没沏好则先冲泡再给侍者提供。沏茶员负责维护茶壶柜(

teapotCabinet)和冲泡好的风味数(totalFlavors),这些都可作为沏茶员的属性来维护。由于一个茶庄所能提供的风

味数是没有限制的,所以茶壶柜(teapotCabinet)应该能动态调整大小,以容纳下未知数量的茶壶,这可以由一个向量

Vecotor来实现。闭店时,沏茶员可以统计(getTotalFlavors())一天冲泡的风味数。
茶客(TeaClient)也是系统中的一个类,他最喜欢的风味(favoriteFlavor)是一个属性。茶客每天根据菜单点

(whatIsYourFavoriteFlavor())适合自己心情的茶。
侍者(Waitor)也是一个类,他担负着茶客和沏茶员之间的桥梁。他询问茶客最喜欢的风味,并根据顾客的要求下单

(takeOrder())给沏茶员,从沏茶员那里接过茶杯放于茶盘(TeacupTray)上,茶盘也可以用一个向量Vector来表示

,作为侍者的一个属性由侍者维护。侍者将茶盘上的茶杯端给(serveTeacup())顾客。侍者会在一天中,统计自己招

待过的订单数(totalOrders),这可作为侍者的一个属性实现,并在闭店时,统计(getTotalOrders())服务的订单

数。
茶庄(TeaStall)也是系统中的一个类,它聚集了菜单、沏茶员、侍者、顾客,它在创建时会指定一个可容纳的最多顾客

数(CLIENT_MAX_NUM),每天开店(open())时,派出一位沏茶员和一位侍者,并接待最多数量的顾客。侍者迎接顾客

,为顾客下单,沏茶员沏好茶后,侍者会用茶盘将茶端给顾客。每天闭店(close())后,会统计当天的订单数和沏茶

风味数。 要求:你可能玩过大富翁、主题公园、主题医院等策略游戏,这个茶庄系统,就是这类游戏的一个原型,请你

根据上述脚本,用Java语言设计这个主题茶馆,发挥你的想象力吧!
 
茶,
香叶,嫩芽,
慕诗客,爱僧家。
碾雕白玉,罗织红纱。
铫煎黄蕊色,碗转曲尘花。
夜后邀陪明月,晨前命对朝霞。
洗尽古今人不倦,将至醉后岂堪夸。

转载于:https://www.cnblogs.com/myphoebe/archive/2011/08/26/2155041.html

部分面向对象习题,留给学生做不错!!!相关推荐

  1. 推荐三款适合学生做笔记的软件

    "好记性不如烂笔头",这是我们从小听到大的俗语,也是古人对学习方法的总结.确实,做笔记是学习过程中绕不开的话题. 在中小学阶段,做笔记主要以老师所认为的要点进行重复摘抄和记忆为主. ...

  2. 东华大学计算机蔡博士,蔡雅琦博士为信息学院学生做“大学生人际关系”讲座...

    10月22日下午在2103教室,信息学院邀请校心理咨询中心副主任蔡雅琦博士为2012级学生做了一场题为"大学生人际关系"的讲座,旨在帮助我院二年级同学正确认识大学生人际交往中存在的 ...

  3. 程序员的-多做多错,少做少错,不做不错

    #欢迎光临我的随便说 记得多年前公司里一个大项目出了重大问题,大领导震怒,于是我们一帮子leader被分配去各个组做check review. 重灾区是一个财务模块,据说这个模块是整个项目最难.最复杂 ...

  4. php 考试系统 倒计时,jQuery_jQuery练习——倒计时,近学生做一个在线考试系统, - phpStudy...

    jQuery练习--倒计时 近学生做一个在线考试系统,需要加入试卷倒计时功能.很显然最放方便的就是ajax实现.一下子想起上次提到的jQuery,一用果然简单.jQuery中提供了ajax的方便功能. ...

  5. 作业辅导班怎么提高效率,提醒便签让学生做作业的速度提高

    很多家长比较忙,没空辅导孩子作业,就把小孩送进作业辅导班,让专人辅导孩子做作业.那么对于作业辅导班的老师来讲,该如何提高小孩做作业效率呢? 小孩的写作业效率低下,主要有两种原因,一个是作业不会做卡壳, ...

  6. python制作学生管理系统_Python——面向对象,简易学生信息管理系统

    一.概述 1.1涉及到的知识点 项目开发:创建项目,创建包,导入包: 面向对象:静态方法,继承,内置函数,自定义函数: 数据类型:列表,字典,字符串.列表.字典的转换和自动生成导向: 异常处理:捕获异 ...

  7. Day 09 学校应该鼓励学生做社区服务吗

    1.今日话题 Do you agree with the following statement ? Schools should eccourage students to volunteer in ...

  8. 杭十四计算机教室,杭十四中学生做了个图书馆智能机器人

    通讯员 张冠超 记者 胡信昌 摄影 时鹏 本报讯 昨天是第23届浙江省青少年科技创新大赛第一天,大赛现场,机器人创意展览最抢风头,中小学生设计的机器人,样子各式各样,功能五花八门. 平湖的小学生设计了 ...

  9. 教学思路SQL之入门习题《学生成绩》 二、基础单表查询

    根据查询要求,写出SQL脚本: 1.    查询学生信息表,查找学生的姓名,性别,并将查询结果按姓名进行排序. 2.查询学生信息表,查找地区在大连的学生,显示其姓名,联系电话,地区. 3.    查询 ...

最新文章

  1. 范数介绍及C++/OpenCV/Eigen的三种实现
  2. Java源码详解六:ConcurrentHashMap源码分析--openjdk java 11源码
  3. DevExpress v15.1:WPF控件升级(四)
  4. .NET业务实体类验证组件Fluent Validation
  5. php 该throw还是该404,前端魔法堂——异常不仅仅是try/catch
  6. 第21章:MongoDB-聚合操作--聚合管道--$geoNear
  7. Python Flask框架常用组件介绍
  8. 图解TCP协议中的三次握手和四次挥手
  9. Ubuntu下安装最新版QQ
  10. 决策树之C4.5(详细版终结版)
  11. win10家庭版无法安装mysql_大师处置win10系统家庭版安装MySQL server 5.7.19失败的详细办法...
  12. img 图片找不到时,设置显示默认图片
  13. arduino与肌电信号(传感器)的碰撞② 2021 7 20
  14. 如何设计一份令人舒服的PPT,每次看都有新的idea
  15. linux刚删除的文件,Linux文件误删除恢复方法
  16. “互联网+教育”促进优质资源共享
  17. pamac 安装 ros-noetic-desktop-full(AUR) 失败后如何清理残留的问题
  18. 上采样,重采样和下采样,降采样
  19. 计算机虚拟筛选方法,药物发现的虚拟筛选基本方法 .ppt
  20. JS : 网页樱花飘落特效

热门文章

  1. 常用数学化简技巧与常用公式[运算能力辅导]
  2. 乐购社区全新系统源码V1.0
  3. Word2Vec【附代码】
  4. 阿里的Java开发规范插件验证
  5. 中台实践-企业级通用化黑名单平台1
  6. Samsung S8+ 欧版 Google Play服务耗电快解决方案尝试
  7. A2W W2A等所需要的文件
  8. Tmux教程 (一文就够)
  9. java实现debounce_Rxjava debounce 操作符
  10. MIT 线性代数 Linear Algebra 10: 矩阵的四个space