![产品库存管理系统面向对象设计[001].ppt_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-3/17/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f9/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f91.gif)
![产品库存管理系统面向对象设计[001].ppt_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-3/17/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f9/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f92.gif)
![产品库存管理系统面向对象设计[001].ppt_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-3/17/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f9/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f93.gif)
![产品库存管理系统面向对象设计[001].ppt_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-3/17/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f9/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f94.gif)
![产品库存管理系统面向对象设计[001].ppt_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-3/17/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f9/7bd1c7ac-c141-4616-91d4-aa5b31f2b6f95.gif)
已阅读5页,还剩141页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
情境3产品库存管理系统面向对象设计,精品资料网,学习情境描述,要求根据第一个情境的需求分析结果,学生成立项目开发小组,划分角色,推选项目经理和CTO(首席技术师),程序员。经过讨论给出产品库存管理系统中的实体类:入库单、出库单、库存和用户类和控制类接口的详细设计;利用情境2搭建好的环境,对每个类予以编程实现。,所需知识,类的定义与对象的创建构造方法的作用及应用面向对象三大特征:封装性、继承性和多态性的Java语言实现抽象类与接口的应用包的创建与使用访问控制符的应用异常处理,重点及难点,构造方法的作用及应用面向对象三大特征:封装性、继承性和多态性的Java语言实现抽象类与接口的应用异常处理,能力目标,培养学生面向对象的编程能力培养学生良好的团队合作意识及沟通协调能力、接收新知识的能力培养学生分析问题、解决问题的能力、创新能力以及逻辑思维能力,任务一,用Java语言描述现实世界中的Person。,学生讨论确定Person的特征譬如:name-姓名,age-表示年龄,sex-表示性别等。确定Person相关的行为譬如:吃饭、睡觉等。,用Java语言实现Person类,复习引入,面向对象与面向过程的区别?,面向对象编程,面向对象编程是软件设计与实现的有效方法,它将客观世界中存在的事物看作对象,每个客观事物都有自己的特征和行为。,对象的基本概念,变量,方法,客观世界的实体,程序中对象,对象具有两方面的含义(考虑从哪些方面描述对象),面向对象的基本概念,类是抽象的,对象是具体的,具有相同特征和行为的对象被抽象为类。类是对象的模板,包括一个对象的所有数据和代码。,类的示例,形状类,动物类,汽车类,对象,“对象是存在的具体实体,具有明确定义的状态和行为。”,对象的示例,收银员对象,顾客对象,顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品,状态,姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印帐单,行为,消息传递,“消息指一个对象为执行某项特定操作而向另一个对象发送的请求”,类和对象的示例,雇员,收银员,系统管理员,仓库管理员,面向对象技术的实现,对象、类和实体的关系,类是创建对象的模板,对象是类的实例,类的基本概念,现实生活中的对象,classCarintcolor;intname;intspeed;voidbrake()voidspeedUp()voidslowDown(),抽象数据类型,程序中的对象,映射,描述,实现,类定义,类定义中必须要写类名,应该使用Java语言合法的标识符来命名类名不能与java中已定义好的类名相同,格式:修饰符class类名extends父类名implements接口名表成员变量声明方法成员声明,其中class、extends和implements都是Java的关键字。,类中的方法6-1,方法的名称,参数列表,方法的主体,方法返回的对象类型或原始类型,方法体,若局部变量与类的成员变量同名,则类的成员变量被隐藏。,方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。,类的定义举例,classCarintcolor;intname;intspeed;voidbrake()voidspeedUp()voidslowDown(),类的实现,任务一实现,classPersonStringname;intage;Stringsex;publicvoideat()System.out.println(Itsdelicious!);,【实战】:定义一个名为Rectangle表示长方形的类,它包含double类型的长length和宽width两个数据成员和设置长方形长宽值的方法setDim()、计算长方形面积的方法area()。,类的实现,对象的创建,声明,类名对象名;,声明并不为对象分配内存空间,而只是分配一个引用空间,实例化,类名对象名=new类名(),例:Personp=newPerson();,运算符new为对象分配内存空间,它调用对象的构造方法,返回引用,初始化,另外执行构造方法,可进行初始化,当一个变量被创建时,会对其中各种类型的成员变量自动按下表进行初始化赋值。,对象的使用,访问对象成员的一般形式为:对象名.成员变量名对象名.成员方法名(),运算符”.”在这里称为成员运算符,创建对象举例,classTestPersonpublicstaticvoidmain(Stringargs)Personp1=newPerson();=Tom;p1.age=12;p1.sex=male;p1.eat();,按照前面设计Person类来充当生产车间,创建Person对象,任务二,通过构造方法,初始化Person类的实例,为其成员变量赋初值。,构造方法,在Java中,任何变量在被使用前都必须先设置初值。Java提供了为类的成员变量赋初值的专门功能:构造方法。,构造方法的特点,构造方法名与类名相同。构造方法不返回任何值,也没有返回类型。每一个类可以有零个或多个重载的构造方法。若没有为一个类显式的定义构造方法,则当创建类对象时,编译器将自动为它创建一个没有参数的默认构造方法.构造方法只能在创建对象时通过new关键字来自动调用。,注意:一旦我们自己定义了构造方法,系统将不再为我们提供默认的不带参数的构造方法。,classPersonStringname;intage;Stringsex;publicPerson(Strings1)name=s1;publicPerson(Strings1,intx)name=s1;age=x;,任务二实现,publicPerson(Strings1,intx,Strings2)name=s1;age=x;sex=s2;publicvoideat()System.out.println(Itsdelicious!);,classTestPersonpublicstaticvoidmain(Stringargs)Personp1=newPerson(Tom);Personp2=newPerson(John,20);Personp3=newPerson(Bob,22,male);System.out.println(+p1.age+p1.sex);System.out.println(+p2.age+p2.sex);System.out.println(+p3.age+p3.sex);,通过构造方法赋初值,This引用句柄,构造方法的形式参数与类的成员变量名相同在构造方法中调用其他重载的构造方法,用this(参数列表)的形式,自主学习内部类的定义和使用。,面向对象的基本特征,封装性、继承性、多态性是面向对象的三个主要特性。,封装性的引入,classPersonStringname;intage;Stringsex;publicvoideat()System.out.println(Itsdelicious!);,classTestPersonpublicstaticvoidmain(Stringargs)Personp1=newPerson();=Tom;p1.age=-12;/非法的值p1.sex=male;System.out.println(“p1的年龄是:”+p1.age);,通过实例启发学生思考为什么引入封装性?,封装性的实现,外部世界,所谓封装,就是信息隐藏,隐藏对象的实现细节,不让用户看到,封装的示例3-1,接口,采购经理,罗杰斯先生,法拉力公司,.,迪斯尼汽车公司,.,市场经理,雪莉女士,要求,封装的示例3-2,有选择地提供数据,法拉力公司,迪斯尼汽车公司,封装的示例3-3,实体法拉力公司,实体迪斯尼汽车公司,AutiLtd,.,ButoLtd,.,设置器和访问器方法,封装举例,classPersonprivateintage;publicvoidsetAge(inti)if(i130)return;age=i;publicintgetAge()returnage;,将其设为私有的,方法设为公有,封装的好处,任务三,定义Person类的子类Student类,继承性,类继承是指一个类可以继承其他类的非私有成员,实现代码复用。被继承的类称为父类,继承父类后产生的类称为子类。,继承,父类,子类,继承的实现,classSubClassextendsSuperClass,Java中的继承是通过extends关键字来实现的。,关键字,任务三实现,classStudentextendsPersonStringschool;publicvoidstudy()System.out.println(Studding);publicstaticvoidmain(Stringargs)Personp=newPerson();=Tom;p.age=30;p.getInfo();Students=newStudent();=John;s.age=16;s.school=“清华大学”;s.getInfo();s.study();,继承的特点,注意:在Java语言中,只允许单继承。,继承的优点,构造方法的继承,构造方法不能继承,但子类在创建对象时要对继承来自父类的成员进行初始化,因此,在创建子类时除了执行子类的构造方法外,还需要调用父类的构造方法,具体遵循原则如下:,当子类未定义构造方法时,创建对象时将无条件地调用父类的无参构造方法;对于父类的含参数构造方法,子类可以在自己构造方法中使用super调用它,但super调用语句必须是子类构造方法中的第一个可执行语句;子类在自己的构造方法中如果没有用super明确调用父类的构造方法,则在创建对象时,将自动先执行父类的无参构造方法,然后再执行自己定义的构造方法。,任务四,对上例中Student类继承了父类的所有非私有方法进行重写,多态性,方法重写实现的动态多态性(运行时多态),方法重载实现的静态多态性(编译时多态),多态性,方法重写,classRectangleintlength;intwidth;Rectangle(intlen,intwid)length=len;width=wid;/*计算矩形的周长.*/voidgetPerimeter()System.out.println(“矩形的周长为+(2*(length+width);,方法重写,classSquareextendsRectangleSquare(intlen)length=len;/*计算周长.*/voidgetPerimeter()System.out.println(“正方形的周长为+(4*length);,publicstaticvoidmain(Stringarg)RectanglerectObj=newRectangle(10,15);rectObj.getPerimeter();RectanglesqObj=newSquare(15);sqObj.getPerimeter();,调用父类方法,调用子类方法,任务四实现,classPersonpublicStringname;publicintage;publicvoidgetInfo()System.out.println(name);System.out.println(age);publicvoideat()System.out.println(Itsdelicious!);classStudentextendsPersonStringschool;publicvoidstudy(),System.out.println(Studding);publicvoidgetInfo()System.out.println(name);System.out.println(age);System.out.println(school);publicstaticvoidmain(Stringargs)Personp=newPerson();=Tom;p.age=30;p.getInfo();Students=newStudent();=John;s.age=16;s.school=塔山小学;s.getInfo();s.study();,多态性,【实战】:通过分析,编程实现上图,成员方法覆盖应注意的问题,覆盖方法的方法名、返回类型和参数列表必须与它所覆盖的方法相同覆盖方法不能比它所覆盖的方法访问性更低覆盖方法不能比它所覆盖的方法抛出更多的异常,成员变量的覆盖,若子类声明了与父类同名的变量,则父类的变量被隐藏起来,直接使用的是子类的变量,但父类的变量仍占据空间,可通过super或父类名来访问。,程序运行结果:Subclass:200Superclass:100,成员变量的覆盖,classAintx=100;classBextendsAintx=200;voidprint()System.out.println(Subclass:+x);System.out.println(Superclass:+super.x);publicstaticvoidmain(Stringargs)(newB().print();,成员变量的覆盖,类对象之间的类型转换,父类对象和子类对象的转换需要注意以下原则:,子类对象可以被视为是其父类的一个对象,反之则不可。若一个方法的形式参数定义的是父类的对象,则调用该方法的实际参数可以使用子类对象。若父类对象引用指向的实际是一个子类对象,则这个父类对象的引用可以用强制类型转换转化成子类对象的引用。,类变量static修饰符,我们在Person类中增加一个成员变量国籍,并假设所有的人都来自中国,该如何实现?,思考?,类变量,country=China,static,静态变量或类变量,静态变量的访问:类名.变量名,类变量的应用,classCountpublicstaticvoidmain(Stringargs)Useru1=newUser();u1.login();Useru2=newUser();u2.login();,classUserstaticintcount=0;voidlogin()count+;System.out.println(你是第+count+位访问者);,类方法static修饰符,static修饰符修饰的方法叫静态方法,目的:使方法独立于类的实例,使用类去访问,类方法,调用静态方法的语法为:classname.methodname();,类方法的应用,publicclassIsPrimepublicstaticbooleanprime(intx)for(intk=2;k=0;i-)dest.append(s.charAt(i);System.out.println(dest.toString();,main方法的参数,main方法的形参为String类的数组参数args,args可以用来接收Java命令行传送给Java应用程序的数据。例如:javaHelloEchoHowareyou?123,若要将包含多个空格的单词作为一个字符串,可用引号括起来。例如:javaHelloEchoHowareyou?123,main方法的参数举例,classCommandLinepublicstaticvoidmain(Stringargs)for(inti=0;iargs.length;i+)System.out.println(args+i+:+argsi);,显示所有命令行参数,Java异常处理,任务九,publicclassExceptionRaisedpublicExceptionRaised()publicintcalculate(intoperand1,intoperand2)intresult=operand1/operand2;returnresult;publicstaticvoidmain(Stringargs)ExceptionRaisedobj=newExceptionRaised();intresult=obj.calculate(9,0);System.out.println(result);,异常情况,异常,程序突然终止并将控制交给操作系统,在运行时发生的错误,什么是异常,在程序运行过程中发生的、会打断程序正常执行的事件称为异常(Exception),也称为例外。,例如,零用作除数(产生算术异常ArithmeticException)、在指定的磁盘上没有要打开的文件(产生文件未找到异常FileNotFoundException)数组下标越界(产生数组下标越界异常ArrayIndexOutOfBoundsException)等,常见异常,异常类的层次,为内部错误,因此在正常情况下不期望用户的程序捕获它们,Java虚拟机在运行时生成的例外,由系统检测,用户可不做处理,系统将它们交给缺省的异常处理程序,程序中可预知的问题,可能会带来意想不到的结果,Java程序必须捕获或声明所有的非运行时异常,异常处理机制,捕获异常,声明抛出异常,throws,Try-catch,消极的处理方式,积极的处理方式,捕获异常,捕获异常是通过try-catch-finally语句实现的。,try,finally,catch,try和catch块,try,catch,异常,单元,任务九的解决方案一,publicclassExceptionRaisedpublicExceptionRaised()publicintcalculate(intoperand1,intoperand2)intresult=0;tryresult=operand1/operand2;catch(Exceptione)System.err.println(发生异常:+e.toString();e.printStackTrace();returnresult;,指明catch可以捕获并处理的异常类型,调用异常类的方法,异常类的常用方法,实战,阅读下列程序代码,分析程序可能产生的异常情况,捕获并处理异常。,publicclassExceptionDemointarray=1,2,3,4,5,6,7,8,9,0;publicvoidexceptest(intj)for(inti=0;ij;i+)System.out.println(array+i+=+arrayi);publicstaticvoidmain(Stringargs)ExceptionDemoex=newExceptionDemo();ex.exceptest(11);,多重catch块2-1,一段代码可能会生成多个异常当引发异常时,按顺序查看每个catch语句,并执行第一个类型与异常类型匹配的语句执行其中的一条catch语句之后,其他的catch语句将被忽略,try.catch(ArrayIndexOutOfBoundsExceptione)catch(Exceptione),多重catch块2-2,try.catch(Exceptione)catch(ArrayIndexOutOfBoundsExceptione),使用多重catch语句时,异常子类一定要位于异常父类之前。,多重catch块示例,classExceptionCodepublicvoidcalculate()tryintnum=0;intnum1=42/num;intc=1,2,3,4;c4=99;catch(Exceptione)System.out.println(父类异常catch子句);catch(ArithmeticExceptionae)/错误不能到达的代码System.out.println(这个子类的父类是exception类,且不能到达);,classUnreachableCodepublicstaticvoidmain(Stringargs)ExceptionCodeobj=newExceptionCode();obj.calculate();,finally块,try、catch和finally块的执行流程,finally子句可以保证,无论try块中是否抛出异常,finally块中的语句都会被执行到,这样可以对程序的状态作统一的管理。finally语句对增强程序的鲁棒性非常重要。,try块,finally块,catch块,无异常,异常,异常处理块的一般形式,try/要监控错误的代码块catch(Exceptione)/Exceptione的异常处理程序finally/在try结束前要执行的代码块,finally块示例,publicclassSystemExceptionpublicstaticvoidmain(Stringargs)inta=68;intb=0;trySystem.out.println(a/b);/0用作了除数catch(ArithmeticExceptione)System.out.println(“0用作了除数”);return;finallySystem.out.println(“程序结束”);,思考:如果没有finally语句,程序运行的结果有何不同?,try-catch-finally应注意的问题,每个try语句至少有一个catch语句对应,catch语句的排列顺序应该从特殊到一般。,可以用一个catch语句处理多个异常类型,这时它的异常类型参数应该是多个异常类型的父类。,try-cacth-finally语句中间不能插入其他语句,声明抛出异常,注意:一个方法被覆盖时,覆盖它的方法只能抛出相同的异常或异常的子类,即不能抛出新的异常,任务九的解决方案二,classExceptionRaisedpublicExceptionRaised()publicintcalculate(intoperand1,intoperand2)throwsExceptionintresult=0;result=operand1/operand2;returnresult;classArithmeticExceptionpublicstaticvoidmain(Stringargs)throwsExceptionExceptionRaisedobj=newExceptionRaised();intresult=obj.calculate(9,0);System.out.println(result);,用throws声明抛弃异常,实战,用声明抛出异常的方式处理前面的实战。,任务十,编程判断一个数能否被3整除,如果不能整除就让它抛出一个异常。,抛出异常throw语句,语句3,throw异常,引发的异常,停
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年深海矿产资源勘探技术装备创新与市场潜力报告
- 2025年高中数学概率统计知识冲刺押题试卷
- 2025年房地产估价师考试房地产估价实务冲刺试卷
- 2025年考研英语(一)阅读理解技巧精讲 阅读理解高分策略
- 2025年公共营养师二级考试专项训练试卷及真题解析
- 现代化家具知识培训总结课件
- 2025年环境影响评价工程师考试案例分析试卷 环评报告专项强化
- 现代农业知识培训课件
- 测试工程师的岗位职责
- 新重庆市劳动合同范本
- CloudFabric云数据中心网解决方案-Underlay网络
- 场地平整工程合同范本
- 塑料注塑采购合同范本
- 供暖合同能源管理合同
- 快递驿站承包协议书
- 2024-2030年中国铁基纳米晶带材行业应用状况与需求趋势预测研究报告
- 低空经济基础知识 -彻底看懂低空经济 2024
- 手术室胃肠外科进修汇报
- 儿童骨龄评价及身高促进学习培训课件
- TCALC 003-2023 手术室患者人文关怀管理规范
- 九型人格测试108题官方标准版-直接出答案
评论
0/150
提交评论