欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    【教学课件】第3章类与对象.ppt

    • 资源ID:69866664       资源大小:453.50KB        全文页数:47页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【教学课件】第3章类与对象.ppt

    第3章 类与对象从本章开始,将深入讲解面向对象的思想和如何利用Java语言进行面向对象编程。类和对象是Java面向对象编程中非常重要的概念。本章首先讲述面向对象的基础知识,而后讲解Java类和对象的创建和使用,以及如何使用方法、包、访问控制等特性。3.1 面向对象程序设计概述面向对象程序设计(Object Oriented Programming,OOP)是当今主流的程序设计方式,取代了20世纪70年代的“过程化”程序设计。Java是纯面向对象的语言,用其进行面向对象的软件开发是非常方便、高效的。本节将在第1章的基础上,对面向对象的基础知识进行简单的介绍,主要包括面向对象程序设计的相关术语、面向过程与面向对象程序设计思想的对比、面向对象技术的优点等3方面的内容。3.1.1 面向对象术语OOP是与具体的语言无关的,无论在C+还是在Java中,OOP的思想是通用的。OOP利用特殊约定的词汇描述相关特性,尽管这些词汇与生活习惯相近,但是为避免歧义,在学习OOP前,仍需要了解OOP相关术语。这里只对其中最为重要的进行简要的介绍,包括:类、对象、接口、封装、继承。3.1.1 面向对象术语1对象前面的章节中曾详细地讲述了对象的概念。这里以现实世界中的一个对象为例,如一只猫、可以说猫具有许多属性(或状态),如猫名、猫龄和颜色;猫还具有各种行为,如睡觉、吃食和发出叫声。在OOP的世界里,对象也具有许多属性和行为。使用面向对象的技术,就可以以一只猫建立一个模型。3.1.1 面向对象术语2类类是OOP中最重要的术语。通常情况下,类被称为模板或者蓝本。对象就是由这些模板或者蓝本产生的。属于某个类的特性和行为总称为该类的成员。这里仍以上面提到的猫为例,猫的特性,包括猫名、猫龄和颜色称为类的属性,用变量表示;而猫的行为如玩、睡觉称为类的方法,用函数表示。3.1.1 面向对象术语3继承OOP的主要优点之一是使用继承实现类之间的共享数据和方法的机制。在我们日常生活中,儿子总会继承父亲的一些特性:所有种类的汽车都需要实现汽车的基本功能;所有种类的电脑都需要实现电脑的基本功能,诸如此类的例子很多。而这些现象,都可以使用继承来实现。新建的类称为子类,该类需要继承的类称为超类或者父类。3.1.1 面向对象术语4接口接口可以描述为类定义的模板,实现接口的类实现该模板。在猫的示例中,接口类似于猫的蓝图:通过蓝图可了解需要的部分,但并不一定提供关于这些部分的组装方法或工作原理的信息。可将接口看作是用于将两个若没有接口便没有任何关系的类关联起来的“编程约定”。例如,多个程序员一起工作,每个程序员开发同一个应用程序的不同部分(类)。设计应用程序时,约定不同的类使用一组方法进行通信。因此,创建一个接口用以声明这些方法、方法的参数及其返回类型。任何实现此接口的类都必须提供这些方法的定义,否则将出现编译错误。3.1.1 面向对象术语5封装封装是OOP中另一个非常重要的概念,也称为数据隐藏。在完美的面向对象的设计中,对象被看作包含或封装功能的“黑匣子”。程序员应当能够在仅知道对象的属性、方法和事件的情况下与对象进行交互,而不需知道其实现的详细信息。此方法使程序员可以在更高的抽象层次上思考,并能提供可用于构建复杂系统的组织框架。同时利用封装可以进行成员访问控制。成员的详细信息对于对象外的代码是私有的和不可见的。3.1.2 面向对象程序设计方法的优点利用面向对象的思想求解问题,使人们的编程与实际的世界更加接近,所有的对象被赋予属性和方法,使编程更加富有人性化。同时利用OOP求解问题,具有更好的重用性、可扩展性、更易管理和维护。3.1.2 面向对象程序设计方法的优点1可重用性软件由各个模块组成,可重用性就是该软件的模块可以被重复利用,不仅用于该项目,还可用于其他项目。对于代码级,可重用性指类或者方法的重复使用,避免对于同一功能多次实现产生多余代码。可重用性是OOP的一个核心思想。OOP中的抽象、继承、封装等都可服务于可重用性。利用可重用性构建程序,优点是显而易见,不仅减少工作量,提高工作效率;利用已有的模块进行开发,更能够提高程序质量。3.1.2 面向对象程序设计方法的优点2可扩展性可扩展性即软件或者程序能够很方便地进行修改和扩充。对于软件产品来说,修改和扩充是必不可少的,一是不断地修订保证程序的稳定;二是可以不断满足用户新的需求。由于继承、封装、多态等特性,面向对象方法可以设计出高内聚、低耦合的系统结构,使得系统更灵活,更容易扩展,而且成本较低。3.1.2 面向对象程序设计方法的优点3易于管理和维护面向过程的开发方法,都是以函数为基本单元。所以当开发项目不断扩大时,这样的函数单元将变得不计其数,显示这样是不利于管理和维护的。而使用OOP后,以类作为开发的基本模块,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便的,成本也较低。3.2 面向对象与UML建模上一节已经详细讲述了对象以及面向对象编程的基本概念。面向对象是人们思考现实世界的一种自然方法,也是编写计算机程序的一种自然方法,在软件的分析和设计过程中,面向对象的思想也是无处不在的。所以在构建软件的过程中,系统建模是非常关键的步骤,所以OOP也与建模紧密地结合在一起。本节主要介绍软件工程中建模的重要性,UML以及使用UML表达面向对象。3.2.1 为什么需要建模建模是一项经过检验并被广为接受的工程技术。建立房屋和大厦的建筑模型,能帮助用户得到实际建筑物的印象,甚至可以建立数学模型来分析大风或地震对建筑物造成的影响。如果真正想建造一个相当于房子或大厦类的软件系统,问题不仅仅是编写许多软件的问题。关键是要编出正确的软件,并考虑如何少写代码,减少软件的打消。所以要生产合格的软件就要有一套关于体系的结构、过程和工具的规范。如果对体系结构、过程或工具的规范没作任何考虑,犹如在没有任何根基的地上盖大楼,总有一天大楼会由于其自身的重量而倒塌。不成功的大楼将对大厦的租户造成严重的影响,同样,不成功的软件也会对用户和企业造成十分严重的影响。3.2.2 UML建模语言UML就是统一建模语言(Unified Modeling Language),是由OMG组织(Object Management Group,对象管理组织)在1997年发布的。UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划就像建筑工人多年来所使用的建筑设计图一样。3.2.3 UML的面向对象分析设计为了创建最好的解决方案,必须遵循从项目需求分析到开发这样一个过程,如果按照面向对象的观点,则称其为面向对象的分析和设计(object-oriented analysis and design,OOAD)。运用UML进行面向对象的系统分析设计,其过程通常由以下3个部份组成。1识别系统的用例和角色2进行系统分析,并抽取类3系统设计,并设计类及其行为3.3 Java语言与面向对象特性在介绍完OOP后,本节将简要介绍面向对象思想在Java中的具体体现,在后续的章节中将详细介绍如何利用Java进行面向对象编程。Java是完全面向对象的语言。对象是Java程序中最核心、最基础的部分。在Java中,对象被映射为类(Class)。类是Java程序中最基本的单元。对象的任何行为都可以通过Java类中的方法实现,而对象的属性则可以通过Java类中的属性来实现。1Java中的类2Java中的封装3Java中的继承4Java中的多态5Java中的垃圾回收机制3.4 类的定义和对象的创建在初步了解面向对象思想的基础上,从本节开始,将逐步介绍如何利用Java进行面向对象编程。类是Java中基本的编程单元,本节介绍如何定义类,如何利用类创建对象。3.4.1 类的基本结构如果一切都是对象,那么是什么决定某一类对象的外观与行为呢?答案是“类”。类是构造对象的模板或蓝图。就像建筑物与设计图纸,通过一份设计图纸,可以造出建筑物,而Java开发人员在编写代码时,实际上是在编写类代码,对象只有程序运行时才存在。当用户创建一个Java程序时,可以通过类声明来定义类,然后使用类来创建用户需要的对象。类声明是用来创建对象模板的抽象规格说明。在前面的一些章节中,已经编写过一些简单的类,只是那些类一般只有main方法。3.4.2 类之间的关系在面向对象思想中,类之间存在以下几种常见的关系。1“USES-A”关系“USES-A”关系是一种最明显、最常见的关系,若类A的方法操纵了类B(对象)的成员,则称之为类A“USES-A”(用到了)类B。例如,汽车启动前检查汽油是否足够,例3-1说明了这个问题。2“HAS-A”关系“HAS-A”关系是一种拥有关系,若类A中有B类型的成员引用变量,则类A“HAS-A”(拥有)类B。3“IS-A”关系在面向对象中“IS-A”的概念是基于继承的,旨在表达一个类是另一个类的子类。也就是说,若类A是类B子类的一种,则可以说类A“IS-A”(是一种)类B。例如,“苹果”是“水果”的一种,则它们之间的关系为“苹果”IS-A(是一种)“水果”。在后面章节中将结合继承性对“IS-A”关系进行详细的介绍。3.4.3 构造函数在创建对象时,对象的成员可以由构造函数方法进行初始化。构造函数是一种特殊的方法,它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个可用的对象。3.4.4 类成员定义了类之后,就可以在类体中声明两种类的成员,成员变量与成员方法。本节介绍与成员变量开发相关的一些知识,主要包括成员变量的开发与使用、成员变量的初始值以及对象引用变量的比较等内容。1成员变量的使用成员变量就是类的属性,类定义中的属性指定了一个对象区别于其他对象的值。例如,学生类的定义中包括年龄、姓名和班级这些属性,每个对象的这些属性都有自己的值。所有由类定义建立的对象都共享类的方法,但是,它们都拥有各自属性变量的副本。2成员变量的初始值每当创建一个对象后,如果对象有成员变量,则系统会自动为其分配一个初始值,3.4.5 对象的创建有了类就可以利用其来创建对象了,在Java中创建对象很简单,只要使用new关键字即可。如下代码创建了Student类的对象。Student s=new Student();由类创建对象的过程称为实例化,每个对象是类的一个实例,说明了类与对象的不同之处。学生类是对什么是学生做定义,而王强、李勇和马跃是对象,是学生类的实例。3.5 方 法在Java中,对对象的操作由方法来完成。要使一个对象完成某些工作,就要调用其相应的方法。方法实际上描述的是一个行为,一种功能,决定了一个对象能够接收什么样的消息,做出什么反应。本节介绍方法的定义以及方法的重载和递归。3.5.1 方法的定义方法的基本组成包括:方法的声明以及方法体,基本语法如下。返回值类型 方法名(参数序列)方法体在sub方法中,入口参数有两个,都是int型,方法的返回值为int型。下面对方法的各组成部分进行详细介绍。1参数序列2方法体3返回值类型3.5.2 方法的重载方法重载是指在同一个类里面,有两个或两个以上具有相同名称,不同参数序列的方法。例如,三角型类可以定义多个名称为area的计算面积的方法,有的接收底和高做参数,有的接收3条边做参数。这样做的好处是,使开发人员不必为同一操作的不同变体而绞尽脑汁取新的名字,同时也是使类的使用者可以更容易地记住方法的名称。1方法重载的规则2重载方法的匹配3.5.3 递归程序由方法组成,而方法又以层次的方式调用其他的方法,但有些时候,这些方法需要调用自身从而方便地求解一些特殊的问题。递归方法就是自调用方法,在方法体内直接或间接地调用自己,即方法的嵌套是方法本身。递归的方式分为2种:直接递归和间接递归,下面分别介绍这2种递归。3.6 静 态 成 员在Java中声明类的成员变量和成员方法时,可以使用static关键字把成员声明为静态成员。静态变量也叫类变量,非静态变量叫实例变量;静态方法也叫类方法,非静态方法叫实例方法。静态成员最主要的特点是它不属于任何一个类的对象,它不保存在任意一个对象的内存空间中,而是保存在类的公共区域中。所以任何一个对象都可以直接访问该类的静态成员,都能获得相同的数据值。修改时,也在类的公共区域修改。本节介绍Java中静态成员,包含静态方法、变量和常量,以及一些特殊的静态方法,如main方法和factory方法。3.6.1 静态方法和静态变量通常情况下,方法必须通过它的类对象访问。但是如果希望该方法的使用完全独立于该类的任何对象,可以利用static关键字。通过该关键字可以创建这样一个方法,它能够被自己使用,而不必引用特定的实例。在方法的声明前面加上static即可。使用static关键字的方法即静态方法。如果一个方法被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。但是在静态方法中,不能以任何方式引用this或super。3.6.2 静态变量和常量在Java中没有一个直接的修饰符来实现常量,而是通过静态成员变量的方式来实现的,如下代码说明了这个问题。1/声明3个常量X、Y、Z2public static final int X=10;3static public final int Y=20;4final static public int Z=40;static表示属于类,不必创建对象就可以使用,因为常量应该不依赖于任何对象,final表示值不能改变。一般用作常量的静态成员变量访问权限都设置为public,因为常量应该允许所有类或对象访问。3.6.3 静态成员的访问上小节已经介绍过静态成员是属于类的,因此对其进行访问应该不需要创建对象,可以使用“.”的语法调用静态成员变量。下面分别从两个方面介绍同一个类中静态成员与非静态成员之间的访问,静态方法访问非静态成员和非静态方法访问静态成员。3.6.4 main()方法在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。因为main()方法是由Java虚拟机调用的,所以必须为public,虚拟机调用main()方法的时候不需要产生任何对象,所以main方法声明为static,且不需要返回值,所以声明为void 所以最终格式如下所示。public static void main(String args)3.6.5 Factory方法Java的静态方法有一种常见的用途,就是使用Factory方法产生不同风格的对象,例如NumberFormat类使用Factory方法产生不同风格的格式对象。Factory Method是最常用的模式了,Factory方法在Java程序系统中可以说是随处可见。Factory方法就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A(),Factory Method也是用来创建实例对象的,所以以后new时可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给系统带来更大的可扩展性和尽量少的修改量。3.7 包在实际项目开发中,往往需要开发很多不同的类,能否方便高效地组织这些类对项目的开发与使用具有很重要的意义。Java中提供包(Package)将不同类组织起来进行管理,借助于包可以方便地组织自己的类代码,并将自己的代码与别人提供的代码库分开管理。使用包的目的之一就是可以在同一个项目中使用名称相同的类,假如两个开发人员不约而同地建立了两个相同名字的类,只要将其放置在不同的包中,就不会产生冲突。本节将从类的放置与导入两个方面对包及其使用进行介绍。3.7.1 包的定义要想将类放入指定的包中,就必须使用package语句,语法如下。package;package语句必须放在源文件的最前面,其之前不可以有其他任何语句。每个源文件中最多有一句package语句,因为一个类不可能属于两个包,就如同不能把一件衣服同时放进两个箱子一样。包名可以是用点“.”分隔的一个序列,如java.lang,这就表示此源文件中的类在java包下的lang子包中。在实际开发中,包可能分很多级,越复杂的系统,包越多,级也可能越多。3.7.2 类的导入当一个类要使用与自己处在同一个包中的类时,直接访问即可。若要使用其他包中的类就必须使用import语句,基本语法如下。import.*;import.类名;包名可以是一个由“.”分隔的序列,如“java.lang”、“java.util”等。第1种语法表示要使用指定包中所有的类,但不包括子包中的类,也称为通配引入,“*”为通配符。第2种语法表示要使用指定包中一个特定的类。3.7.3 静态导入从Java SE 5.0开始,导入语句不但可以导入类,还具有导入静态方法和静态成员变量的功能,不过需要在关键字“import”和包名之间添加关键字“static”,语法如下。import static.*;import static.;“*”还是代表通配符,不过这里表示的是指定类下面所有静态的方法或成员变量。如果要明确指明要使用的方法或成员变量,用第2行语法。碰到不同类下同名静态方法或成员变量时,解决冲突的方法类似上一小节,这里不再赘述。3.8 成员的访问控制上一节已经介绍了类的访问控制,本节将介绍成员(包括方法和成员变量)的访问控制。在介绍成员的访问控制之前,首先需要了解的是成员的访问指的是什么。成员的访问是指以下两种不同的操作。一个类中的方法代码是否能够访问(调用)另一个类中的成员。一个类是否能够继承其父类的成员。3.8.1 公共类型:public公共类型使用public关键字来进行修饰,当一个成员被声明为public时,所有其他类,无论该类属于哪个包,均能够访问该成员。对于继承而言,规则为如果父类的成员声明为public,那么无论这两个类是否在同一个包中,该子类都能继承其父类的该成员。3.8.2 私有类型:private本小节将介绍成员被标识为私有类型后的含义与用法,并且在本小节最后将介绍面向对象中的封装及其优点。标识为私有类型的成员用private关键字修饰,其不能被该成员所在类之外的任何类中的代码访问。对于继承而言,规则为如果父类的成员声明为private,子类在任何情况下都不能继承该成员。3.8.3 默认类型:default当一个成员前面没有写任何访问限制修饰符时,其访问权限为默认类型。具有此访问权限的成员,只对与此成员所属类在同一个包中的类是可见的。也就是说,对同一个包中的类,默认类型相当于public,而对包外的类则相当于private。下面的两段代码说明了默认类型的使用。3.8.4 保护类型:protected标识为保护类型的成员用protected关键字修饰,其规则与默认类型几乎一样,当访问该成员的类位于同一包内,则该类型成员的访问权限相当于public类型。只是有一点区别,若访问该成员的类位于包外,则只有通过继承才能访问该成员。访问限制修饰符不能用来修饰局部变量,否则将导致编译报错,而且局部变量作用域为局部,也没有必要。3.9 封 装封装是一个面向对象的术语,其含义很简单,就是把东西包装起来。换言之,成员变量和方法的定义都包装于类定义之中,类定义可以看成是将构成类的成员变量和方法封装起来。通过限定类成员的可见性,可以使类成员中的某些属性和方法能够不被程序的其他部分访问,它们被隐藏了起来,只能在定义的类中使用,这就是面向对象中实现封装的方式。下面总结了Java中封装需要遵循的规则。用访问限制修饰符保护成员变量,通常是private。建立公有的访问方法,强制调用代码通过这些方法访问成员变量。3.10 利用系统已有的类通过前面几节的介绍,读者已经对类的定义及对象的创建与使用有了一定的了解。本节将介绍Java类库中提供的几个常用的处理日期时间的类。通过对这几个类的介绍,使读者了解利用系统已有的类的思想。3.10.1 Date类在标准Java类库中包含一个Date类,其对象用来描述一个时间点,如“September 22,2007,23:59:59 GMT”。在使用Date类时要在代码的开始添加“import java.util.Date”,这里可以理解为将其导入的意思,下一章将详细介绍此语句的功能和用法。Date类与前面第3章介绍的Math类不同,在开发中不是访问类的静态方法,而是要使用其对象,可以用如下代码创建Date对象。3.10.2 GregorianCalendar类上小节中介绍的Date类,主要的功能是储存时间点的信息,而对日期/时间的处理功能并不强大。其记录的时间是距离一个固定时间点的秒数(可正可负),这个固定时间点是UTC时间1970年1月1日00:00:00(UTC即协调世界时间,是Coodinated Universal Time的缩写,与GMT一样是一种国际标准时间)。虽然Date类可以打印出类似于“February 17,2007,23:59:59 GMT”这样的日期表示形式,但此形式只是公历的表示方式,若需采用中国的农历表示日期,Date类就无能为力了。3.11 小结本章简单介绍了面向对象的思想,并详细介绍了类的定义及其使用,访问控制和封装,最后通过对系统中提供的几个类的介绍阐述了利用系统已有类的思想。通过本章的学习,读者可以构造出自己的类,通过这些类的对象的相互协作,便能开发出具有一定功能的应用程序。

    注意事项

    本文(【教学课件】第3章类与对象.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开