1、综合案例:汽车租赁系统 学完本次课程后,你能够:深入了解面向对象三大特征使用面向对象思想开发程序本课目标2/18面向对象回顾 面向对象的软件开发方法软件系统即各种对象的集合按对象设计出来的系统结构较稳定子系统相对独立,提高了软件的可维护性支持封装、继承和多态,提高了软件的可重用性和可扩展性 万物皆对象软件系统所模拟的真实世界中,所有的实体都可以抽象为对象每个对象都是唯一的3/18对象 对象具有属性和行为(方法)对象具有状态状态指某个瞬间对象各种属性的取值对象的方法可以改变对象自身的状态 对象都属于某个类,每个对象都是某个类的实例4/18类 类是一组具有相同属性和行为的对象的抽象 开发人员自定义
2、数据类型 面向对象编程的主要任务就是定义各个类 对象是类的实例,类是对象的模板5/18面向对象三大特征 面向对象三大特征封装继承多态 封装隐藏对象的属性和实现细节,仅仅对外公开接口便于使用者正确方便的理解和使用系统有助于各系统之间的松耦合,提高系统独立性提高软件的可重用性把尽可能多的东西藏起来,对外提供便捷的接口把所有的属性藏起来6/18继承 子类、父类子类继承了父类的部分属性和方法子类还可以扩展出新的属性和方法子类还可以覆盖父类中方法的实现方式 注意继承的层次不可太多,尽量两到三层继承的最上层最好抽象7/18多态 多态多种实现方式提供服务 动态绑定 向上转型把引用变量转换为父类类型 向下转型
3、把引用变量转换为子类类型Pet pet=new Dog();Dog dog=(Dog)pet;/向下转型向下转型Animal animal=pet;/向上转型向上转型8/18面向对象应用某汽车租赁公司出租多种轿车和客车,出租费用以日为单位计算。出租车型及信息如下表所示车型车型具体信息具体信息日租金日租金折扣折扣轿车轿车宝马宝马X6(京(京NY28588)800days7天天9折折days30天天8折折days150天天7折折宝马宝马550i(京(京CNY3284)600别克林荫大道(京别克林荫大道(京NT37465)300别克别克GL8(京(京NT96968)600客车客车金杯,金杯,16座(
4、京座(京6566754)800days=3天天9折折days=7天天8折折days=30天天7折折days=150天天6折折金龙,金龙,16座(京座(京8696997)金杯,金杯,34座(京座(京9696996)1500金龙,金龙,34座(京座(京8696998)演示示例:汽车租赁系统演示示例:汽车租赁系统9/18面向对象设计步骤需求需求名词名词动词动词类类类的属性类的属性类的方法类的方法优化设计优化设计梳理运行梳理运行过程过程10/18抽象出类 找出问题中名词某汽车租赁公司、汽车、轿车、客车、别克、某汽车租赁公司、汽车、轿车、客车、别克、宝马、金杯、金龙、宝马、金杯、金龙、X6、550i、G
5、L8、林荫、林荫大道、座位数、日租金、折扣、京大道、座位数、日租金、折扣、京NY28588、京京CNY3284、京、京6566754等车牌号等车牌号抽象出类:抽象出类:汽车类汽车类客车类客车类轿车类轿车类汽车业务类汽车业务类汽车租赁管理类汽车租赁管理类品牌品牌型号型号车牌号车牌号座位数座位数日租金日租金11/18类的属性 类和类的属性汽车类:车牌号、品牌、日租金客车类:车牌号、品牌、日租金、座位数轿车类:车牌号、品牌、日租金、型号汽车业务类:忽略汽车租赁管理类:忽略12/18类的方法 找出问题中动词2203抽象出类:抽象出类:汽车类汽车类客车类客车类轿车类轿车类汽车业务类汽车业务类汽车租赁管理类汽车租赁管理类计算租金计算租金租赁租赁程序入口程序入口13/18优化设计 优化设计设计类汽车设计为抽象类设计方法计算租金设计为抽象方法14/18 面向对象程序设计步骤是什么?总结15/18问题及作业集中问题&课后作业16/18