面向对象程序设计.2021完整版PPT课件.ppt
《面向对象程序设计.2021完整版PPT课件.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计.2021完整版PPT课件.ppt(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计面向对象程序设计面向对象程序设计程序设计方法程序设计方法公共数据函数函数函数函数算法数据结构数据方法方法数据方法方法过程式程序设计OOP程序设计对象消息消息程序设计方法程序设计方法l面向过程的程序设计l面向过程的程序遵循面向过程的问题求解方法l其中心思想是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解决过程。 l算法+数据结构l数据结构利用计算机的离散逻辑来量化表达需要解决的问题 。l而算法则研究如何快捷、高效地组织解决问题的具体过程。 l面向过程面向机器程序设计方法程序设计方法l面向对象的程序设计l它能够用计算机逻辑来模拟、描述系统本身,包括系统的组成,系统的各种
2、可能状态,以及系统中可能产生的各种过程与过程引起的系统状态切换。l面向对象的程序设计是以要解决的问题中所涉及到的各种对象为主要考虑因素。l对象是一种看问题的观点,是对现实世界各种元素的一种抽象。对象既含数据又含功能,因此具有自身处理数据的能力。对象被认为是迄今为止最接近真实事物的数据抽象。对象的几个特征对象的几个特征l原则上,可以将所要解决的问题中的任何一个“概念组件”在程序中表示为一个对象。l所谓 对一个对象发信息,就是调用该对象的一个方法。l对象+消息对象的属性与方法对象的属性与方法l面向对象程序设计中的对象是现实世界对象的模型化,它同样具有状态和行为。l对象的状态用属性来维护,l对象的行
3、为用方法来实现。l因此可以简单地讲,对象是面向对象的程序设计模式,它由描述状态的属性(变量)和用来实现对象行为的方法(代码)组成。l几种叫法l属性 静态属性 域 成员变量 状态l方法 动态属性 成员方法 行为对象与类对象与类l类(Class)是同种对象的集合与抽象l类是对象的抽象及描述,它是具有统一属性和方法的多个对象的统一描述体,是用来定义一组对象共有属性和方法的模板。l类是用来创建对象实例的样板,它包含所创建对象的状态描述和方法的定义。类是一个型,而对象则是这个型的一个实例。l类是静态概念,而对象则是一个动态概念,因为只有在运行时才给对象分配空间,对象才真正存在。对象是类的唯一性实例对象是
4、类的唯一性实例现实世界 实体抽象数据类型 计算机世界对象 类抽象映射 计算机逻辑的实现实例化抽象概念世界接口与实现接口与实现l类是一种封装技术。l如果属性或方法被定义为public ,它就是接口的一部分,其他类可以直接访问它。l如果属性或方法被定义为private,它就是实现的一部分。只有类自己的方法可以访问它。l对象要注意保护自己的数据(私有属性,公有方法)。对象通过它们的方法管理,实现由编程人员控制。l通过接口与对象发生作用,内部实现不影响接口(汽车,内部变化不影响驾驶)程序一部分变化不会影响其他部分。l复用l事先写好的操作可在整个项目中使用l重用比重写更容易对象与类对象与类几种相互关系几
5、种相互关系l包含关系l当对象A是对象B的属性时,我们称对象B包含对象A。 l关联关系l当对象A的引用是对象B的属性时,我们称对象A和对象B之间是关联关系。 l类之间的继承关系lB类继承了A类,就是继承了A类的属性和方法。lA类称之为父类,B类称之为子类。面向对象程序设计基础面向对象程序设计基础主要内容主要内容l 抽象l 封装l 继承l 多态l 类定义l 重载l 包l 接口OOP的主要特点的主要特点l抽象去除对象中与主旨无关的次要部分,而 仅仅抽取出与研究有关的内容(数据抽象) OOP的主要特点的主要特点l封装(encapsulation)l实现了信息的隐藏及安全性l提高了程序的模块化,且易于维
6、护封装封装-信息隐藏信息隐藏l封装 是一种组织软件的方法。其基本思想是把客观世界中联系紧密的元素及相关操作组织在一起,使其相互关系隐藏在内部,而对外仅仅表现为与其他封装体间的接口。从而构造出具有独立含义的软件实现。l封装并不是一个新的概念,但在面向对象的程序设计中提出了一种全新的封装方法 类封装封装-信息隐藏信息隐藏l封装 就是利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其他部分只有通过包裹在数据外面的被授权的操作,才能与这些抽象数据类型交流和交互。l在面向对象的程序设计中,抽象数据类型是用“类”来代表的。封装封装-信息隐藏信息隐藏l每个类里都封装了
7、相关的数据和操作。在实际的开发过程中,类多用来构建系统内部的模块。l由于封装特性把类内的数据保护得很严密,模块与模块间仅通过严格控制的界面进行交互,使它们之间耦合和交叉大大减少,从而降低了开发过程的复杂性,提高了效率和质量,减少了可能的错误,同时也保证了程序中数据的完整性和安全性。 OOP的主要特点的主要特点l继承(inheritance)l体现了对现实世界的抽象模拟l提高了代码的复用性交通工具车船飞机汽车火车父类/超类(superclass)子类(subclass)Java仅支持单重继承,但可通过接口实现多重继承OOP的主要特点的主要特点l多态(polymorphism) l用同一个名字调用
8、实现不同操作的方法l方式1:不同的类之间的同名方法 如:中国人/日本人/美国人 说话l方式2:参数不同的同名方法l使用方便,且降低了维护和编程量Java中的类中的类l几个概念l类:同种对象的集合与抽象 l系统类库中已定义好的类:是系统提供 的已实现的标准类的集合,是Java的API,它可帮助开发者方便、快捷地开发Java程序。l用户自定义的类 针对特定问题l子类、父类Java中的类中的类lJava中的类结构l基类:所有Java的类都派生自ObjectlJava的类可组织在包(package)中lJava提供的标准类库分布在一系列的包中,如java.lang,java.util,等 l编程的过程
9、就是继承基类或标准类而创建、定义特殊子类的过程Java中类的声明中类的声明l类说明语法: 类修饰符 class 类名 extends 父类名 implements 接口名 成员变量定义;方法定义;类体Java中类的声明中类的声明l类修饰符(Modifier):lpublic:允许其他类(没有限制)访问本类,一个 源文件仅可以有一个public类l缺省:可被当前包中的其他类访问labstract:没有实例的抽象概念类,是它的所有子类 的公共属性和公共方法的集合lfinal:不能再被扩展,不能有子类的类;易于安全 性的实现,或用于创建固定功能的类l父类继承声明:extends 父类名l实现接口(i
10、nterface):implements 接口名Java中类的声明中类的声明l例:public abstract class shape class rectangle extends shape final class roundrect extends rectangle 创建对象创建对象l对象(实例instance):以类为模板创建的 具体实例(实际个体)l创建某个类的具体对象(类似变量声明) 类名 欲创建的对象名new 类名(参数表) ; 例如: String s = new String( “Hello!” ) ;类的成员变量的声明类的成员变量的声明l声明成员变量(member)的语
11、法修饰符 数据类型 变量名;l引用:对象名.变量名l修饰符l访问控制符lpublic:可被所有其他类引用lprivate:仅可被该类自身引用和修改,不能被其他任何类(包括该类的子类)引用,它提供了最高级别的保护。成员变量的声明成员变量的声明lprotected:该类自身、子类、同一包中的其他类lprivate protected:该类自身、子类 注:private protected仅1.0.2支持, 1.1之后不再支持l缺省:本包中的类lstatic:类成员变量,对所有的实例一致,引用时前缀 可使用类名或对象名lfinal:数值不变常量,定义同时应对其进行初始化 类成员变量(静态变量)类成员
12、变量(静态变量)l静态变量为类的各实例共享的变量。 static 静态变量名; l位于类的内存区域中,为该类的各个对象共享.l无此限定符的变量是实例变量。 class ex int i ; static int j ; static final int k=10 ; - l final 常量可同时定义为static类exjk=10对象1i : 3对象2i : 5类成员变量(静态变量)类成员变量(静态变量)l实现各实例之间的通讯 对于该类的任何一个对象访问该静态变量时,取得的都是相同的值l跟踪创建的实例数 public class Count private int serial ; /实例变量
13、 private static int counter = 0 ; /静态变量 public Count() counter+; serial = counter ; l静态变量类似于某些语言中的全局变量类成员变量(静态变量)类成员变量(静态变量)l非private 的静态变量无须创建实例就可以从类的外部访问。 class StaticVar static int x=100 ; public class test public void m() int m = StaticVar.x ; 方法的声明方法的声明l定义对类内成员变量(数据)的操作l方法的声明语法:修饰符 返回类型 方法名(参数列
14、表) throws 例外名 方法体;l方法是类的动态属性,标志了类所具有的功能和操作类的方法定义规则类的方法定义规则l形式参数是方法从调用它的环境输入的数据。l返回值是方法在操作完成后返还给调用它的环境的数据。l要指定方法返回值类型。如没有返回值,类型要写 voidl方法名相同,但参数不同,是不同的方法。l与类名相同的所有方法都是类的构造方法。方法体的定义方法体的定义l在方法中定义的变量称为局部变量。l其生命周期:执行进入方法体时建立,退出方法时撤消。l局部变量使用之前必须初始化。l在方法体中可以访问所有的类属性,可以调用所有类中定义的方法。l方法可以递归调用。方法的声明方法的声明l修饰符(M
15、odifier):l访问控制符:public、private、protected、private protectedlstatic:静态方法,又称类方法l使用类名或对象名作为前缀,建议使用类名l在方法体中只能使用static变量和static方法labstract:只有方法头,而没有具体的方法体和操作实现的方法,要在子类中通过重新定义(override)来实现lfinal:不能被重新定义(override)的方法l访问控制符是一组起到限定类、域或方法是否可以被程序里的其他部分访问和调用的修饰符 。l类访问控制符l公共类 :public 类名 l一般类(缺省)l一个类被声明为公共类,表明它可以被
16、所有的其他类所访问和引用。程序的其他部分可以创建这个类的对象、访问这个类的内部可见成员变量和调用它的可见方法l一般类只能被同一包中的类访问和引用。l定义在同一个程序中的所有类属于一个包。 访问控制符访问控制符l一个类作为整体对程序的其他部分可见,并不能代表类内的所有成员变量和方法也同时对程序的其他部分可见,前者只是后者的必要条件 l成员变量和方法的可见性域和方法的访问限定符域和方法的访问限定符只限在本类内使用。private可被同包中其他类使用。可 被子类继承(包括位于不同包中的子类)protected公共变量和公共方法,可被任何类使用。public可被同包中其他类使用。无访问限定符域和方法的
17、访问限定符域和方法的访问限定符l为了使对象具有良好的封装性,一般将类的实例变量设计成私有。l为了使其它类或对象能够访问私有实例变量,本类必须提供访问私有变量的方法(公共方法)。l按照惯例,读私有变量的方法取名为get 写私有变量的方法取名为 set 方法的声明(续)方法的声明(续)l返回类型:void、returnl参数列表:参数类型可为类类型lthrows:l通告本方法中会产生的例外(异常)类型,提醒调用者要对相应的可能例外进行处理。当执行此方法并发生了例外时,程序会转入调用者编制的例外处理程序段。方法的参数方法的参数l参数是值传递 对象的内容可以改变,但对象的引用决不会改变。l方法的参数可
18、以与类的成员变量同名,这时,参数在方法体中将隐藏同名的成员变量。 class circle int x,y, radius ; setCircle (int x , int y , int radius ) 值传送与地址传送值传送与地址传送ABABAB引用类型值传送基本类型值传送地址传送3.143.143.140 x2F0 x2F方法的说明方法的说明l为Employee类增加打印方法将数据和代码封装在一个单一的实体中。 class Employee String name; int age; float salary ; void print() System.out.println(name
19、 + “年龄为: ” + age + “月薪为: ” + salary); /class 对象方法的含义对象方法的含义 Employee emp = new Employee( ) ; emp.name=“张立” ; emp.age=21; emp.salary = 528.37F ;l一旦对象被建立并被初始化,就可以调用该方法打印这个对象的数据。 emp.print() ;l对象emp执行print 方法操作自己的数据。l向对象发消息,让对象做某件事。this与与superlthis和super是常用来指代子类对象和父类对象的关键字。Java系统默认,每个类缺省地具有null、this和su
20、per三个域,所以在任意类中都可以不加说明而直接使用它们。lthis表示的是当前对象本身,更确切地说,this代表了当前对象的一个引用。利用this可以使用当前对象的域,调用当前对象的方法。lsuper 表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。方法中使用方法中使用this class Banana void f(int i) . Banana a = new Banana(); b = new Banana(); a.f(1); b.f(2);l方法如何知道是处理哪个对象?l编译做了一些内部处理 Banana.f(a,1); Banana.f(b,2); l把一个隐含的
21、参数传给了方法指向被操作对象的引用。thislthis 只能在方法中使用,表示当前对象,或类的当前实例。lthis 适用于一些特殊的场合。l例: public class MyDate int day, month, year ; public void born() Birthday bd = new Birthday(this) ; Java中的多态中的多态l多态: 同一程序中同名的不同方法共存l可以通过子类对父类方法的覆盖实现多态l可以利用重载(overload)在同一个类中定义多个同名的方法l多态情况下进行方法调用时,如何区分这些同名的不同方法l不同类中的同名方法:冠以类名以示区别l同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 2021 完整版 PPT 课件
限制150内