OOP 面向对象编程.pptx

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OOP 面向对象编程

OOP AIA 什么是面向对象? Object??? Oriendted?????? Programming 对象??? ? 以…为导向的 ? ?程序设计 面向对象就是使用对象进行程序设计,简写成OOP 面向过程? (SP) 面向对象(OOP) 设计思路 自顶向下、层次化、分解 自底向上、对象化、综合 程序单元 函数模块 对象 设计方法 程序 = 算法 + 数据结构 程序 = 对象 = 数据 + 方法 优点 相互独立,代码共享 接近人的思维方式 模拟客观世界 缺点 数据与程序不一致 维护困难 客观世界的无序性 概念不成熟 SP和OOP对比 一个示例 示例场景:   我们需要设计一个人事管理系统,其中的一个功能是对各种不同类型的员工,计算其当月的工资——不同类型的员工,拥有不同的薪金计算制度。 结构化做法 结构化做法 1.获得人事系统中所有可能的员工类型 ?2.根据不同的员工类型所对应的不同的薪金制度,计算其工资? enum EmployeeType { Engineer; Sales; Manager; … } // 计算工资程序 if ( type == EmployeeType.Engineer) {……} else if (type == Employeetype.Sales) {……} 面向对象设计 1.根据不同的员工类型设计不同的类,并使这些类继承自一个Employee抽象类,其中有一个抽象方法GetSalary。 ?2.在各个不同的员工类中,根据自己的薪金制度,重写(override)GetSalary方法。 abstract class Employee {…public abstract int GetSalary();} class Engineer: Employee {… public override int GetSalary(){…} } class Sales: Employee {… public override int GetSalary(){…} } // 显示工资程序 Employee e = emFactory.GetEmployee(id); MessageBox.Show( e.GetSalary()); 示例场景: 现在需求改变了……随着客户公司业务规模的拓展,又出现了更多类型的员工,比如钟点工、计件工……等等,这对人事管理系统提出了挑战——原有的程序必须改变。 结构化做法 几乎所有涉及到员工类型的地方(当然包括“计算工资程序”)都需要做改变……这些代码都需要重新编译,重新部署……. 面向对象做法 只需要在新的文件里增添新的员工类,让其继承自Employee抽象类,并重写GetSalary()方法,然后在 EmployeeFactory.GetEmployee方法中根据相关条件,产生新的员工类型就可以了。其他地方(显示工资程序、Engineer类、 Sales类等)则不需要做任何改变。 重新认识面向对象   对于前面的例子,从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响减为最小。 对象 ?对象是面向对象编程的核心部分,是实际存在的具体实体,具有明确定义的状态和行为; ?对象其实就是“数据”和“函数”的封装体,其中: 数据表示自身的状态,也称作“属性”或“成员数据”; 函数表示自身的功能,也称作“方法”或“成员函数”。 类 人们为了更好地认识世界,将现实生活中的事物(对象)划分成类; 同一类中的事物总是具有一些共性。 类和对象的关系 类是用来描述实体的“模板”或“原型”; 对象是实际的实体,每一个对象都是类的一个具体实例。 Java OOP三大思想 封装 继承 多态 封装 隐藏实现细节,对外提供公共的访问接口,增强代码的可维护性 具体实现方式:属性私有化、添加公有的setter,getter方法 继承 多态 增强代码的可扩展性、维护性 同一个实现接口,使用不同的实例而执行不同操作。通过Java接口/继承来定义统一的实现接口;通过方法重写为不同的实现类/子类来定义不同的操作 静态的多态就是只函数的重载,动态的多态就是方法的覆写 原则:“左声明右实现” 这个原则可以在任何地方使用,包括在接口和抽象类中,软件初学者可以以这个原则来理解面向父类的编程方法。 父类 /***坦克类,它是所有坦克的父类*/ class Tank { public void printTank() { System.out.println(This is Tank); } } /***M1坦克类,它继承了坦克父类*/ class M1Tank extends Tank { //该方法重写了父

文档评论(0)

bigone123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档