关于面向对象作业实例
- 格式:pdf
- 大小:120.99 KB
- 文档页数:8
面向对象练习题及答案一、用例图1.请就以下需求建立用例图:一个新的音像商店准备采用计算机系统向比较广泛的人群销售或租借录像带和光碟。
该音像商店将存有大约1000 盘录像带和500 张光碟,这些订购涉及多家订购商。
所有的录像带和光碟都有一个条码,可以使用条码扫描仪来支持销售和返还,客户会员卡也同时条码化。
客户可以预定录像带并在指定日期来取。
系统必须拥有灵活的搜索机制来回答客户的询问,包括关于该音像商店还没有进货的电影(但可能是已经请求订购了)。
评分标准:画图格式标准3 分,用例全面正确4 分,角色与用例之间的关系正确3 分2.试用用例图描述小型图书资料管理系统。
某学院打算开发一个小型图书资料管理系统MiniLibrary,该系统基于Internet实现教师和学生对各种图书资料的借阅、查询和管理。
图书管理员负责管理各种图书资料,查询图书资料信息,并进行图书的借阅管理。
注册用户可以通过Internet 随时查询图书资料信息和个人借阅情况,预订目前借不到的图书资料,并可以快捷地查找和浏览所需要的电子资料。
系统可以提供适当的浏览器供用户阅读电子文献资料。
3.试用用例图描述系统简介:航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。
各个旅行社把预定机票的旅客信息输入到系统中,系统为旅客安排航班。
当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单到航空公司交款取票,系统核对无误即打印出机票给旅客。
此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。
技术要求和限制条件(1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发票)等。
(2)对于本系统还应补充一下功能:1)旅客延误了取票时间的处理2)航班取消后的处理4 .请就此需求建立功能模型:某报社采用面向对象技术实现报刊征订的计算机管理系统,该系统基本需求如下:报社发行多种刊物,每种刊物通过订单来征订,订单中有代码、名称、订期、单价、份数等项目,订户通过填写订单来订阅报刊。
面向对象典型案例
面向对象编程是一种编程方法论,它的核心思想是将现实世界中的事物抽象成对象,通过对象之间的交互来实现程序的功能。
下面我们来介绍一些典型的面向对象案例。
1. 银行账户管理系统
银行账户管理系统是面向对象编程的典型案例之一。
在这个系统中,每个账户都是一个对象,它有自己的属性(如账号、余额、户主姓名等)和方法(如存款、取款、查询余额等)。
通过对象之间的交互,可以实现账户的管理和操作。
2. 游戏开发
游戏开发也是面向对象编程的一个重要应用领域。
在游戏中,每个角色、道具、场景等都可以抽象成一个对象。
通过对象之间的交互,可以实现游戏的运行和交互。
3. 汽车租赁系统
汽车租赁系统也是一个典型的面向对象案例。
在这个系统中,每辆汽车都是一个对象,它有自己的属性(如车型、租金、出租状态等)和方法(如租车、还车、查询车辆列表等)。
通过对象之间的交互,可以实现汽车租赁的管理和操作。
4. 医院管理系统
医院管理系统也是一个常见的面向对象案例。
在这个系统中,每个病人、医生、药品等都可以抽象成一个对象。
通过对象之间的交互,可以实现医院的管理和操作,如病人挂号、医生诊断、药品配药等。
总结:面向对象编程是一种非常实用的编程范式,它可以提高程序的可维护性、可扩展性和可重用性。
以上介绍的典型案例只是冰山一角,面向对象编程在各个领域都有着广泛的应用。
Java面向对象编程实战案例1. 简介Java面向对象编程(Object-Oriented Programming,OOP)是一种常用的编程范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。
本文将介绍一些实战案例,展示Java面向对象编程的实际应用。
2. 案例一:学生管理系统学生管理系统是一个典型的Java面向对象编程案例,它常用于学校、培训机构等管理学生信息。
在这个案例中,可以定义一个Student类,包含学生的姓名、年龄、学号等属性,以及学生的增删改查等方法。
可以使用面向对象的思想,将学生信息封装到一个对象中,并使用集合类来管理多个学生对象。
3. 案例二:图形计算器图形计算器是另一个有趣的Java面向对象编程案例。
可以定义一个Shape类作为图形的基类,包含计算图形面积和周长的方法,并派生出Circle、Rectangle和Triangle等子类,分别表示圆形、长方形和三角形。
通过面向对象的继承特性,可以调用对应子类的计算方法,根据用户的输入来计算所需图形的面积和周长。
4. 案例三:银行账户管理系统银行账户管理系统是一个常见的Java面向对象编程案例,用于管理银行的账户信息。
可以定义一个Account类,包含账户的姓名、余额、存取款等方法,并通过封装特性将账户信息隐藏在对象中。
可以使用ArrayList类来存储多个账户对象,实现对账户信息的管理和操作。
5. 案例四:图书馆管理系统图书馆管理系统是另一个典型的Java面向对象编程案例,用于管理图书馆的图书信息。
可以定义一个Book类,包含图书的书名、作者、价格等属性,并封装对应的get和set方法。
可以使用HashMap类来存储图书编号和对应的图书对象,实现图书的检索和借还功能。
还可以定义一个User类表示图书馆的用户,包含用户的姓名、借书数量等属性。
6. 案例五:游戏角色管理系统游戏角色管理系统是一个有趣的Java面向对象编程案例,用于管理游戏中的角色信息。
J a v a面向对象经典案例10个------------------------------------------作者xxxx------------------------------------------日期xxxx1class Anthropoid //类人猿{private int n=100;void crySpeak(String s){System.out.println(s);}}class People extends Anthropoid{void computer(int a,int b){int c=a*b;System.out.println(c);}void crySpeak(String s){System.out.println("**"+s+"**");}}public class Monkey{public static void main(String args[]){Anthropoid monkey=new People();//monkey是People对象的上转型对象//puter(10,10); //非法monkey.crySpeak("我喜欢这个运动");People people=(People)monkey;//把上转型对象强制转化为子类的对象puter(10,10);}}2class ManyArea{public double area(double radius){return Math.PI*radius*radius;}public double area(double len,double width){return len*width;}public double area(int len,int width){return len*width;}public double area(double len,double width,double height){return len*width*height;}}public class OverLoad{public static void main(String args[]){ManyArea ob=new ManyArea();System.out.println("半径为3.0的圆的面积:"+ob.area(3.0)); System.out.println("长2.0、宽3.0的面积:"+ob.area(2.0,3.0)); System.out.println("长2、宽3的面积:"+ob.area(2,3));System.out.println("立方体的面积:"+ob.area(2.0,3.0,4.0));}}3class Animal{public void shout(){}}class Dog extends Animal{public void newDog(){System.out.println("Dog的新特性");}public void shout(){System.out.println("汪");}}class Cat extends Animal{public void shout(){System.out.println("喵");}}class Test{public void animalshout(Animal a){a.shout();}}public class PolyEx{public static void main(String[] args){Animal d=new Dog();//(1)Dog d1= (Dog)d;//(3)父类对象强制转换成子类对象d1.newDog();//d.newDog();d.shout();Test t=new Test();t.animalshout(d);//(2)t.animalshout(d1);}}4class ArrayEx{public int[] subarray(int a[],int start,int end){int subarr[] = new int[end-start];for(int i=0,j=start;j<end;i++,j++){subarr[i] = a[j];}return subarr;}}public class Test{public static void main(String args[]){ArrayEx arrex = new ArrayEx();int arr[] = new int[10];for(int i = 0;i<arr.length;i++){arr[i] = i+10;}int sub[] = arrex.subarray(arr,2,6);for(int temp:sub){System.out.println(temp);}}}5class Box{int length;int width;int height;void set(int len,int wid,int hei){length = len;width = wid;height = hei;}}class ShowBox{void show(Box b){System.out.println(b.length+" "+b.width+" "+b.height); }}class TestTwo{public static void main(String args[]){Box a = new Box();a.set(3,4,5);ShowBox sbox = new ShowBox();sbox.show(a);}}6.class One{int a = 5;void showB(){int a = 3;int b = this.a;System.out.println("b = "+b);}}public class ThisOne{public static void main(String args[]){One test = new One();test.showB();}}7.class Mystatic{private int x=3;public static void showx(){System.out.println("x="+x);}public static int add(int m){return m+x;}}class UseMystatic{public static void main(String args[]){Mystatic.showx();System.out.println("add="+Mystatic.add(2));}}8.class Point{int x;int y;Point(){x=0;y=0;//this(1,1);}Point(int a,int b){x=a;y=b;}void show(){System.out.println("x="+x+" y="+y); }}public class UsePoint{public static void main(String args[]){ Point p = new Point();p.show();}}9.class Point{private int x,y;Point(){x=1;y=3;}void showPoint(Point t){System.out.println("x="+t.x+" y="+t.y);}void seeit(){showPoint(this);}}public class UsePointThis{public static void main(String args[]){Point p=new Point();p.seeit();}}10class Point{static int x=2;int y=0;}public class UseStatic{public static void main(String args[]){System.out.println("利用类调用静态变量"); System.out.println("x="+Point.x);//System.out.println("y="+Point.y);Point p1=new Point();System.out.println("利用对象调用");System.out.println("x="+p1.x);System.out.println("y="+p1.y);Point p2=new Point();p2.y=3;System.out.println("对象p1中y的值"+"y="+p1.y); System.out.println("对象p2中y的值"+"y="+p2.y); p1.x=6;System.out.println("对象p1中x的值"+"x="+p1.x); System.out.println("对象p2中x的值"+"x="+p2.x);}}。
面向对象案例在面向对象的编程中,我们经常会遇到各种不同的案例,这些案例涉及到了对象、类、继承、多态等概念的应用。
下面,我将通过几个具体的案例来说明面向对象编程的应用。
案例一,图书管理系统。
假设我们需要设计一个图书管理系统,这个系统需要包括图书的借阅、归还、查询等功能。
在面向对象的设计中,我们可以将图书、读者、图书管理员等抽象成对象,然后通过类来描述它们的属性和行为。
比如,我们可以设计一个Book类来表示图书,包括书名、作者、出版社等属性,以及借阅、归还等行为;再设计一个Reader类来表示读者,包括姓名、借阅的图书等属性,以及借阅、归还等行为;还可以设计一个Librarian类来表示图书管理员,包括姓名、管理的图书等属性,以及借阅、归还等行为。
通过这样的设计,我们可以很好地模拟出一个图书管理系统,并且可以方便地对其进行扩展和维护。
案例二,银行账户管理系统。
另一个常见的案例是银行账户管理系统。
在这个系统中,我们需要对账户进行存款、取款、查询等操作。
同样地,我们可以将账户、客户、银行职员等抽象成对象,然后通过类来描述它们的属性和行为。
比如,我们可以设计一个Account类来表示账户,包括账号、余额等属性,以及存款、取款等行为;再设计一个Customer类来表示客户,包括姓名、账户等属性,以及存款、取款等行为;还可以设计一个Banker类来表示银行职员,包括姓名、管理的账户等属性,以及存款、取款等行为。
通过这样的设计,我们可以很好地模拟出一个银行账户管理系统,并且可以方便地对其进行扩展和维护。
案例三,汽车租赁系统。
最后,我们来看一个汽车租赁系统的案例。
在这个系统中,我们需要对汽车进行租赁、归还、查询等操作。
同样地,我们可以将汽车、租户、租赁员等抽象成对象,然后通过类来描述它们的属性和行为。
比如,我们可以设计一个Car类来表示汽车,包括车牌号、品牌、型号等属性,以及租赁、归还等行为;再设计一个Tenant类来表示租户,包括姓名、租赁的汽车等属性,以及租赁、归还等行为;还可以设计一个RentalAgent类来表示租赁员,包括姓名、管理的汽车等属性,以及租赁、归还等行为。
生活实例解释面向对象的多态一、引言在现实生活中,多态是一个普遍存在的现象。
例如,动物世界中的狮子、老虎和豹,它们都属于猫科动物,但各自有着不同的特点。
同样,在人类社会中,人们从事着各种不同的职业,如医生、教师和工程师等。
这些生活实例都可以用来解释面向对象的多态。
二、多态的应用场景1.动物世界中的多态现象在动物世界中,多态现象无处不在。
以猫科动物为例,狮子、老虎和豹虽然都属于猫科,但它们在体型、毛色和习性等方面都有明显的差异。
这种多态性使得猫科动物能够在不同的生态环境中生存和繁衍。
2.人类职业的多态性在人类社会中,人们从事着各种不同的职业。
这些职业在职责、技能和待遇等方面都有所不同。
例如,医生、教师和工程师这三个职业,虽然都属于专业人士,但它们的职业特点和收入水平有很大差异。
这种多态性反映了社会分工的细化,使得人类社会能够更加繁荣发展。
三、面向对象编程中的多态1.基本概念与原理面向对象编程(OOP)是一种编程范式,它强调用对象来表示和处理问题。
多态是OOP的核心概念之一,它指的是同一操作在不同对象上具有不同的行为。
在面向对象编程中,多态主要有三种形式:继承、接口和抽象类。
2.多态的优势多态性使得程序具有更好的可扩展性和可维护性。
通过继承、接口和抽象类,我们可以轻松地为新对象添加新的行为,而无需修改原有代码。
这有助于降低代码的耦合度,提高代码的复用性。
四、多态的实现方法1.继承与多态继承是子类继承父类的属性和方法,从而实现多态。
例如,从动物类Animal继承出鸟类Bird和猫类Cat,使得Bird和Cat都具有Animal的属性和方法,但它们各自也有自己的特点。
2.接口与多态接口是一种抽象类型,它只定义了一些方法的签名,没有具体的实现。
实现类可以实现接口中的方法,从而实现多态。
例如,定义一个动物接口Animal,包含跑、跳和叫的方法。
猫类Cat和狗类Dog都可以实现这个接口,从而实现多态。
3.抽象类与多态抽象类是一种特殊的类,它不能被实例化,但可以被继承。
例题1.习题管理系统该系统的功能需求是:在一个公共习题库的支持下,使各科教师可以在系统中编写习题及其标准答案,并将编写的习题及答案加入题库;或者从题库中选取一组习题,组成一份向学生布置的作业,并在适当时刻公布答案。
学生可以在系统中完成教师布置的作业,也可以从题库中选择更多的题目练习。
教师可以通过系统检查学生的作业,学生也可以在教师公布答案后对自己的练习进行核对。
系统维持对题库的管理,并对教师及学生的权限进行检查:只有本课程的教师可以提交或修改习题,并指定哪些习题的答案可以向学生公开。
例2.超级市场销售管理系统该系统是超级市场业务管理系统的一个子系统。
为了讨论的简练,我们对它的功能做了适当的限制:只负责前台的销售管理,而且不处理信用卡付款和会员优惠等业务。
其功能需求是:为顾客选购的商品计价、收费、打印清单;记录每一种商品的编号、单价及现有数量;帮助供货员发现哪些商品将要脱销,以及时补充货源;随时按上级系统的要求报告当前的款货数量、增减商品种类或修改商品定价;例3建立顺序图收款员▪收款收款机商品一览表商品销售事件账册供货员输入开始本次收款的命令;作好收款准备,应收款总数置为0,输出提示信息;for顾客选购的每种商品do输入商品编号;If 此种商品多于一种then输入商品数量end if检索商品名称及单价;货架商品数减去售出数:If货架商品书低于下限值then通知供货员请求上货end if名称、数量、单价、总价;总价累加到应收款总数;end for打印应收款总数;输入顾客交来的款数;计算应找回的款数,打印以上两个数目,收款数计入账册。
《信息系统分析与设计》课程之面向对象建模案例案例1 座位预订系统【案例描述】本系统要完成对飞机航班座位的预订工作。
座位预订问题有两个并发的输入,中央数据库包含有飞机中空闲座位的信息。
处于南京和北京的两个终端可以查询并更新中央数据库,这两个终端可以并行地运行。
为简单起见,假设中央数据库中只包含一个座位的信息,该座位要么已经被预订,要么还处于空闲状态。
这个小系统应能保证该座位要么被南京预订处预订,要么被北京预订处预订。
但是不能被这两处同时预订。
【案例分析】本系统的参与者为预订飞机座位。
参与者查询数据库是否有空闲。
如果有,那么它就通知用户有空闲的座位,并代表用户预订座位;否则,该系统将返回一条表明座位已经被别人预订的消息。
座位预定系统的用例图座位预定系统的活动图《UML与软件建模》清华大学出版社。
P234案例2 银行储蓄系统——存取款业务状态图【案例描述】出处:《软件工程概论》机械工业出版社。
P49-52 例3-1【案例分析】出处案例3 银行储蓄系统——用例图和类图【案例描述】出处:《软件工程概论》机械工业出版社。
P170-171 例7.1【案例分析】出处案例4 银行储蓄系统——取款活动图【案例描述】出处:《软件工程概论》机械工业出版社。
P176【案例分析】出处案例5 教学管理系统——类图【案例描述】《软件工程概论》机械工业出版社。
P172 例7.2【案例分析】出处案例6 选课系统【案例描述】出处:《软件工程概论》机械工业出版社。
P180-201 例8.1【案例分析】案例7 饭店管理系统——用例图【案例描述】本饭店管理系统向旅客和旅行社提供预订房间的业务。
在旅客达到饭店后,通过饭店管理系统进行住房登记。
在旅客离开时,为其办理退房手续。
【案例分析】根据案例描述得知:旅客和旅行社需要使用本系统。
在使用过程中,会与饭店管理系统交换信息。
因此,参与者Actor是:旅客和旅行社。
饭店管理系统要提供预订房间、住房登记和退房三项服务。
面向对象分析与设计案例美味佳贸易公司是一家专门经销各种调味料的商贸型企业,该企业目前拥有员工近40人,公司经销的品种调味料包括味精、淀粉、五香粉、食用油、酱油、醋等各种调味料;公司目前经营状况良好,拥有固定的客户群(包括一类客户8家,二类客户10家,散客三十余家),分布于珠三角各城市。
目前企业的采购、仓存、销售环节管理不够完善,多为手工台账或简单的电子表格,企业管理层希望开发一套涵盖上述业务环节的管理信息系统,通过信息技术手段,改进管理绩效。
为尽可能降低成本,企业直接从各个调味料生产企业或大型批发商进货,其供应商达三十余家(目前核心供应商12家,其余为一般供应商);根据需要,采购员可以新增供应商(记录供应商名称、地址、联系人、法人、工商注册号、开户行、银行账户等),并要求供应商提供相应的证件、资质证明复印件等,供采购经理审核;通过审核后方可供货。
对于后续合作中不合格的供应商,采购经理可以予以淘汰。
目前,企业经营的商品近百种,采购员可以根据相关人员的指示,增加或减少相关商品(商品名称、简称、规格、保质期、默认仓库、采购计量单位、仓存计量单位、销售计量单位、生产厂家)。
当某商品缺货时(或者根据企业经营计划需要进货时),采购员向某供应商下达采购订单,采购订单详细记录了采购商品的信息,包括采购商品名称、规格、数量、计量单位、不含税采购单价、含税单价(税率17%)、采购金额;一张采购订单可以包含1-10种商品。
除以上信息外,为了便于管理,采购部希望采购订单记录编号、供应商、采购日期、要求到货日期、采购员。
对于某些商品,根据需要可以设置其最低库存量;当其库存量降低到最低库存量以下时,系统可以提示其库存量不足、并询问用户是否生成采购订单。
为保障企业利益,企业对每种商品实行价格管控,即记录每个供应商所供应的每种商品的最高采购价;普通采购员的采购价不能超过最高限价,且采购员下采购订单后,采购经理审核后方可生效(订单一旦审核,则不允许再修改;审核后若要修改,则需要反审核)。
面向对象设计的应用实例在现代软件开发中,面向对象设计已成为一种流行而广泛使用的方法。
这种方法强调将程序中的数据和操作封装在一起,以便更好地管理和操作。
让我们看看一些面向对象设计的应用实例。
1. 游戏开发现代游戏通常是一个复杂的软件系统,需要处理大量的数据和交互逻辑。
面向对象设计可以使游戏开发变得更加容易和清晰。
一个游戏可以被看作是一个由多个对象组成的系统,其中每个对象有自己的属性和方法。
例如,在一个角色扮演游戏中,每个人物可以被看作是一个对象,每个对象都有自己的属性,如名字、等级和经验值。
同时,每个对象都有自己的方法,如攻击和回复。
这些对象之间可以互相交互,比如敌人可以攻击玩家,而同伴可以帮助玩家。
使用面向对象设计,可以很容易地管理和组织这些对象。
游戏设计师可以更轻松地添加新的对象和方法,同时也可以更轻松地修改和维护现有的对象和方法。
这样能够降低开发难度,提高游戏的质量和稳定性。
2. 企业应用企业应用通常需要处理大量的数据和业务逻辑,面向对象设计可以使这些应用更加模块化和易于维护。
例如,一个电子商务网站可能包含多个对象,如用户、订单和商品。
每个对象都有自己的属性和方法,比如用户可以下订单,订单可以取消或确认。
使用面向对象设计,可以快速实现这些对象和方法,实现系统的各项功能。
同时,还可以更轻松地添加新功能或修改现有功能,而不会对整个系统造成太大的影响。
3. 数据库应用数据库是现代企业的重要组成部分,有助于组织和管理数据。
面向对象设计可以使数据库应用更加易于使用和维护。
例如,可以将每个表看作一个对象,每个对象都有自己的属性和方法。
查询可以使用对象的方法来进行,这样可以更清晰地了解数据之间的关系。
使用面向对象设计,可以更轻松地管理数据,并可以更容易地添加或修改数据项。
此外,还可以更好地处理数据之间的关系,提高查询效率,从而提高数据库系统的性能和可靠性。
总结面向对象设计是现代软件开发的一种流行方法,可以适用于各种场景,如游戏开发、企业应用和数据库应用。
生活中面向对象和面向过程的例子
以下是 6 条关于生活中面向对象和面向过程的例子:
1. 咱就说打扫房间这事儿,那就是一个典型的面向过程呀!你得先扫地,再擦桌子,然后整理床铺,一步一步来,这不是面向过程是啥!就好比是搭积木,一块一块按顺序往上垒。
2. 你想想,做饭不也是嘛!切菜、炒菜、调味,每个步骤都不能乱,妥妥的面向过程呀!就像走一条规定好的路,必须沿着特定的顺序走下去,不然这饭能好吃吗!
3. 嘿,谈恋爱可就是面向对象啦!对象就是那个独一无二的存在呀。
你会全心全意对 Ta 好,考虑 Ta 的感受,这多像围绕着一个宝贝在转动呀!
4. 养宠物也是呢!狗狗或者猫咪就是你的对象呀,你照顾它的整个过程就是面向对象的行为,满心欢喜地为它做各种事儿,多有爱呀!
5. 逛街买衣服,从挑款式到试穿再到决定买哪件,这就是面向过程呀!但一旦你买到了心仪的那件,之后你对它的珍爱不就是面向对象了嘛,哇塞!
6. 装修房子咯,设计布局、选材施工,这就是一连串的面向过程。
可等房子装好了,它就成了你心中的特别存在,就像一个珍贵的对象,你会去爱护它、珍惜它呀!
我的观点结论就是:生活中到处都有着面向对象和面向过程的例子,它们相互交织,让我们的生活丰富多彩又充满条理!。
面向对象分析设计案例在软件开发领域,面向对象分析设计(OOAD)是一种常用的方法论,它将系统看作是一组对象的集合,这些对象之间通过消息传递进行通信和协作。
本文将以一个简单的图书馆管理系统为例,介绍面向对象分析设计的基本概念和流程。
首先,我们需要明确系统的需求和业务场景。
图书馆管理系统主要包括图书管理、读者管理、借阅管理等功能。
在面向对象分析阶段,我们需要识别系统中的各种对象,并分析它们之间的关系和行为。
在这个案例中,我们可以识别出图书、读者、图书管理员、借阅记录等对象。
接下来,我们需要对每个对象进行分析,包括属性和方法的识别。
以图书对象为例,它可能包括书名、作者、出版社、ISBN号等属性,而方法可能包括借阅、归还等操作。
通过对每个对象的分析,我们可以建立起对象模型,明确对象之间的关系和交互方式。
在面向对象设计阶段,我们需要将对象模型转化为类和接口,定义类的属性和方法,以及类之间的继承和关联关系。
在图书馆管理系统中,我们可以定义图书类、读者类、图书管理员类等,通过继承和接口实现来建立它们之间的关系。
同时,我们还需要设计相应的界面和交互逻辑,确保系统能够满足用户的需求。
除此之外,面向对象分析设计还强调系统的可扩展性和可维护性。
在设计阶段,我们需要考虑到未来可能的变化和扩展,尽量降低系统的耦合度,提高系统的灵活性和可重用性。
在图书馆管理系统中,我们可以通过设计插件机制和扩展接口,来支持新的业务需求和功能扩展。
总的来说,面向对象分析设计是一种强调抽象、模块化和分层的方法论,它能够帮助我们理清系统的结构和功能,提高系统的设计质量和开发效率。
通过本文的案例介绍,相信读者对面向对象分析设计有了更深入的理解,能够在实际项目中更好地应用这一方法论。
(1)阅读以下说明和图,完成问题1至问题4,并在答题纸上自行列表写出答案。
[说明]在线会议审稿系统(Online Reviewing System, ORS)主要处理会议前期的投稿和审稿事务,其功能描述如下:(1)用户在初始使用系统时,必须在系统中注册(register)成为作者或审稿人。
(2)作者登录(login)后提交稿件和浏览稿件审阅结果。
提交稿件必须在规定提交时间围,其过程为先输入标题和摘要,选择稿件所属主题类型,选择稿件所在位置(存储位置)。
上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。
(3)审稿人登录后可设置兴趣领域,审阅稿件给出意见,以与罗列录用和(或)拒绝的稿件。
(4)会议委员会主席是一个特殊的审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和(或)拒绝的稿件,以与关闭审稿过程。
其中关闭审稿过程须包括罗列录用和(或)拒绝的稿件。
系统采用面向对象的方法开发,使用UML进行建模。
在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。
参与者名称、用例和活动名称分别参见表1、表2和表3。
系统的部分用例图和提交稿件的活动图分别如图1和图2所示。
表2 用例名称列表表3 活动名称列表图1 ORS的用例图图2 提交稿件过程的活动图[问题1](4分)根据[说明]中的描述,使用表1中的英文名称,给出图1中A1~A4所对应的参与者。
[问题2](3分)根据[说明]中的描述,使用表2中的英文名称,给出图1中U1~U3所对应的用例。
[问题3](4分)根据[说明]中的描述,给出图1中(1)和(2)所对应的关系与其含义。
[问题4](4分)根据[说明]中的描述,使用表2和表3中的英文名称,给出图2中Action1~Action4对应的活动。
答案:[问题1](4分)根据[说明]中的描述,使用表1中的英文名称,给出图1中A1~A4所对应的参与者。
java⾯向对象九个经典例⼦程序1 Hello world例⼦1package Example; //定义⾃⼰的包名23public class Example1 //定义⼀个类4 {5public static void main(String[] args) //系统可以执⾏的main⽅法,这⾥是⼀个公有静态⽆返回值的⽅法6 {7 System.out.println("Hello world!");8//调⽤ng包中的System类的PrintLine⽅法输出Hello world!9 }10 }2 类的基本组成⽰例1package Example;2class Person3 {4public int age; //声明公共字段age5private String name; //声明私有字段name,此时name为类的属性,下⾯通过公有⽅法进⾏访问6public String getName() {7return name;8 }9public void setName(String name) { = name;11 }1213public void eat() //定义⽆参数的eat⽅法14 {15 System.out.println("Person can eat");16 }17public void eat(String s) //定义带参数的eat⽅法,实现⽅法重载18 {19 System.out.println("Person can eat"+s);20 }21public Person() //定义⽆参构造函数,注意⽆返回值定义,⽅法与类同名22 {23 }24public Person(int age, String name) //重写⼀个带参数构造函数,注意⽆返回值定义,⽅法与类同名25 {26this.age = age; //前⼀个age为对象的字段,由this指定,后⼀个age为函数形参 = name; //前⼀个name为对象的属性,由this指定,因为在本类中可直接访问,后⼀个name为函数形参28 }2930 }31public class Example232 {33public static void main(String[] args)34 {35 Person person1 = new Person(); //调⽤类的⽆参构造函数36 person1.age = 20; //给对象的公有字段直接赋值37 person1.setName("zhangsan"); //必须使⽤公共⽅法才能给对象的属性赋值38 System.out.println("第⼀个⼈信息,姓名:"+person1.getName()+"年龄:"+person1.age);39 person1.eat(); //调⽤对象的⽆参⽅法40 Person person2 = new Person(18, "lisi");//调⽤类的有参构造函数41 System.out.println("第⼆个⼈信息,姓名:" + person2.getName() + "年龄:" + person2.age);42 person2.eat(" 馒头"); //调⽤对象的有参⽅法4344 }45 }3静态与⾮静态变量及⽅法的使⽤1package Example;23class Example34 {5public int x; //⾮静态变量6public static int y; //静态变量7void method() //⾮静态⽅法8 {9 x = 1; //正确,⾮静态⽅法可以访问⾮静态成员10 y = 1; //正确,⾮静态⽅法可以访问静态成员11 System.out.println("实例⽅法访问:x="+x+" y="+y);12 }13static void smethod() //静态⽅法14 {15//x = 3; 错误,静态⽅法不能⾮静态成员16 y = 3; //正确,静态⽅法可以访问静态成员17 System.out.println("静态⽅法访问:y="+y);19public static void main(String[] args)20 {21 Example3 prog3 = new Example3();//⽣成类的实例22 prog3.method(); //⾮静态⽅法通过实例来调⽤2324 Example3.smethod(); //静态⽅法通过类名来调⽤25 }26 }4 类继承的例⼦1package Example;23class mother4 {5public static String sex;//成员变量6public void method1()//⽗类成员⽅法17 {8 System.out.println("母亲的⽅法1!");9 }10public void method2() //⽗类成员⽅法211 {12 System.out.println("母亲的⽅法2!");13 }14 }15class boy extends mother //继承16 {17public void method2() //改写⽗类成员⽅法,Java中⽅法均为虚⽅法18 {19 System.out.println("我⾃⼰的⽅法2!");20 }21 }22public class Example423 {24public static void main(String[] args)25 {26 boy boys = new boy();27 boy.sex = "男孩";//静态变量的继承28 System.out.println("继承⽽来的字段sex的值为:"+boy.sex);29 boys.method1();//来⾃⽗类的⽅法30 boys.method2();//⾃⼰改写后的⽅法31 }5类的访问修饰符1package Example;23class program14 {5public int a; //公⽤成员6protected int b; //保护成员7int c; //友好成员8private int d; //私有成员9public void method1()10 {11 a = 1; //内部访问公⽤成员,正确12 b = 1; //内部访问保护成员,正确13 c = 1; //内部访问友好成员,正确14 d = 1; //内部访问私有成员,正确15 System.out.println("a="+a+",b="+b+",c="+c+",d="+d);16 }17 }18class program219 {20public void method2()21 {22 program1 prog1 = new program1();23 prog1.a = 2;24//prog1.b=2 //错误,只能在类的内部访问或在它的继承类⾥访问25 prog1.c=2; // 正确,在同⼀个程序集⾥都可以访问26//prog1.d = 2; //错误,只能在它的类的内部访问27 System.out.println("另⼀个类中访问公有成员a="+prog1.a+",友好成员c="+prog1.c);28 }29 }30class program3 extends program131 {32public void method3()33 {3435 b = 4; //正确,保护成员可以在它的继承类⾥访问36 System.out.println("⼦类可以访问受保护成员b="+b);37 }39public class Example540 {41public static void main(String[] args)42 {43 program1 prog1 = new program1();44 prog1.method1();45 program2 prog2 = new program2();46 prog2.method2();47 program3 prog3 = new program3();48 prog3.method3();49 }50 }6抽象类及其实现⽰例1package Example;23//应该注意的是:继承抽象类的类,要求抽象类中的抽象⽅法要被实例化4abstract class personClass //抽象类5 {6public String sex;//变量。
《面向对象分析设计》大作业网上招聘系统分析设计专业:班级:学号:姓名:成绩:二〇一四年六月大连理工大学城市学院目录第一章网上招聘系统需求规格说明书 .................................... -3- 第二章软件项目的概要设计说明书16ﻩ第三章网上招聘系统详细设计 ............................................................ 46 第四章软件项目的编码案例说明 .. (58)第五章网上招聘系统客户端系统测试计划 .................................... 65第六章网上招聘系统客户端系统测试设计 .................................... 69 第八章网上招聘系统客户端系统测试报告86ﻩ第一章网上招聘系统需求规格说明书1.导言1.1 目的该文档是关于用户对于网上招聘系统的功能和性能的要求,重点描述了网上招聘系统的功能需求,是概要设计阶段的重要输入。
本文档的预期读者是:·设计人员;·开发人员;·项目管理人员;·测试人员;·用户。
1.2 范围该文档是借助于当前系统的逻辑模型导出目标系统的逻辑模型的,解决整个项目系统的“做什么”的问题。
在这里,没有涉及开发技术,而主要是通过建立模型的方式来描述用户的需求,为客户、用户、开发方等不同参与方提供一个交流的平台。
1.3编写说明HR,HumanResource(人力资源管理)的缩写。
JSP,JavaServerPage(Java服务器页面)的缩写,一个脚本化的语言。
UML,Unified ModelingLanguage(统一建模语言)的缩写,是一个标准的建模语言。
1.4术语定义无1.5引用标准[1]《企业文档格式标准》,****************有限公司软件工程过程化组织[2]《需求规格报告格式标准》,************有限公司软件工程过程化组织1.6 参考资料[1]《UML说明》,***********************软件有限公司[2]《需求规格报告格式标准》,************公司软件工程过程化组织1.7 版本更新信息本文档的更新记录如表A-1所示。
⾯向对象分析过程案例实战原始需求描述如下:某公司鉴于业务和员⼯的快速发展,为了提升整体⼯作效率,公司准备开发⼀套员⼯报账系统,取代原来的⼈⼯处理⽅式,更加⽅便的服务于员⼯⽇常的账务操作。
财务部门能够通过账务系统定期向各部门负责⼈反映账务统计情况,并设置和维护相关额度准则。
系统应该具有基于先进技术的操作界⾯。
这段描述⾥包含的业务⽬标⼤致有⼆:1. 为员⼯提供账务的⾃动化办理,提⾼办事效率,⽅便员⼯。
2. ⽅便财务部门管理好账务信息。
这些业务⽬标⼀般在项⽬的招标书⾥都有相关的描述,也可以由开发⽅整理得出。
之所以这⾥要把业务⽬标列出来,是因为我所采取的⽅法⾥,业务⽬标是进⾏需求分析的第⼀步,接下来的推导过程和业务模型的建⽴都是根据业务⽬标开始的。
整理出了业务⽬标后,接下来先不要⼀头扎进具体的业务流程和业务细节之中去,应该先把涉众找出来,整理出⼀份涉众分析报告,涉众就是和这个项⽬相关的⼈。
也不要就去考虑技术实现细节,要⽤什么先进的技术,界⾯如何美观,性能如何优越等等,虽然这些确实重要,但是相⽐起来,忠实的实现涉众的期望,满⾜涉众的需求才是最为重要,也是⼀个项⽬成败的关键。
在实际的项⽬中,我们可以通过需求调研找出相关的涉众,这⾥我就直接列出本案例的涉众分析报告:员⼯:公司的正式录⽤雇员;期望:通过⽹上办理账务业务申请,计算机控制流程。
部门经理:部门负责⼈,负责审核员⼯提交的申请;期望:⽅便审核操作,通过计算机代替原来的⼿⼯审核⽅式。
公司主任:公司负责⼈,负责2次审核员⼯提交的申请;期望:⽅便审核操作,通过计算机代替原来的⼿⼯审核⽅式,界⾯友好易⽤。
财务主任:公司财务部门负责⼈,负责发放报账款项;期望:通过计算机转账的⽅式替代原来的⼈为付款⽅式。
以上的涉众分析报告是很简单的了,在实际稍微复杂些的项⽬中要下功夫好好整理清楚⼀份完整的⽂档才是,因为接下来的业务⽤例获取⼯作也是在此基础上展开的。
这⾥先罗嗦下业务⽤例和平时开发中的我们开发⼈员从项⽬经理或者需求⼈员⼿中拿到的需求⽂档中的⽤例什么区别。