《chapter7类与面向对象编程.ppt》由会员分享,可在线阅读,更多相关《chapter7类与面向对象编程.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计初步n程序设计简史n对象、类n类的定义nJava中类、属性、方法的定义n类的构造器面向对象的程序设计n程序设计简史n过程式程序设计n结构化程序设计n面向对象程序设计面向对象编程基础n面向对象编程的基本概念 对象具有的特性:物体的组成,也称为物体的属性和特点;物体的行为,是物体和其他物体的交互以及物体对内部数据的处理n面向对象编程的优点(1)提高了程序的可维护性(2)可重用性高(3)保护数据n对象的抽象:去掉物体中与问题不相关的部分,保留所需要的类的过程抽象成为方法class Car int color_number;int door_number;int speed;void
2、brake()void speedUp();void slowDown()计算机中的对象的原型 现实生活中的对象对象nEverything is Object:万事万物皆对象。n面向对象的编程(OOP)思想力图使对计算机语言中对事物的的描述与现实世界中该事物的本来面目尽可能的一致。nClass/Object:类(class)和对象(object)是面向对象方法的核心概念。类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。作为对象蓝本的类n类(Class)是用来描述一个对象(Object):n类描述了每个对象应包括的数据n类描述了每
3、个对象的行为特征封装n通过将数据和对数据的处理方法封装在对象中,对用户隐藏对象的具体实现细节,降低问题的复杂度n封装是将数据和对数据的操作封装在一个抽象数据类型内部,其他对象只能通过接口才能与数据进行交互n用户可以直接使用类实现需要的供能,提高了类或模块的可重用性n封装在类中的私有数据和私有方法对外是不可用的,使内部信息不易被破坏,从而保护数据的完整性和安全性类的定义n类包括两方面的内容:n属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)n方法:对对象的属性进行的操作称为对象的方法(也称为行为/操作)类的定义n以一个“学生”实体为例,来说明类的定义n学生的基本特征:n学号n年级n
4、姓名n性别Java类的声明n语法格式:n class extends SuperClassimplements Interface nnn /类的成员变量定义 /类的方法定义nn举例:public class Studentpublic class Studentn private int age;n public void setAge(int _age)n age=_age;n nnmodifier类的访问修饰符abstract类不能直接产生属于这个类的对象final类不能被其他任何类所继承(安全的考虑)public类不但可以被同一程序包中的其它类使用,别的程序包中的类也可以使用.frie
5、ndly(缺省)类只能被本包中的其它类使用nextends 类的继承nImplements类中将实现的接口名字属性的声明n语法格式:n type =defaultValue;n举例:public class Studentn private private intint age;age;n public String name=“Alex public String name=“Alex WenWen”;”;n域的定义n在类的定义中,类体部分由数据和方法组成,数据部分体现为成员变量的定义,也成为域或者静态属性,域体现了类的状态,而状态的改变由类体的方法实现,域必须在类体中直接定义,不能包含在方
6、法定义中n【Specifier】type variableNamen【Specifier】可以是public protected private(访问权限)finial(常量)static(静态)transient(临时变量)volatile(用在多线程程序中,需要备份)方法的定义n方法是类的动态属性,表示类具有的功能和行为,用来改变对象的状态,其他对象通过调用对象的方法获得对该对象的服务njava语言是面向对象编程语言,以数据为中心,方法依附于数据的存在,方法只能在类的内部进行定义。方法的声明n语法格式:()n n n举例:public class Studentn private int
7、age;n public public intint getAgegetAge()return age;()return age;n public void public void setAgesetAge(intint _age)_age)n age=_age;age=_age;n nnSpecifier可以是关键字public protected private(访问权限)abstract(抽象方法,只有方法头,没有方法体)static(静态方法)nreturnType指的是返回值类型nparameterList参数表列表,用()括起来n方体的多个参数之间使用逗号隔开 n方法中的变量可以是
8、类的成员变量,通过方法调用传入参数值,也可以是方法内定义的局部变量nmain()方法nJava程序有两种类型,一种是java 应用程序(java application),另一种是java applet,main()是java application中的特定方法,表示java程序的执行入口n在运行程序时,输入的类名必须与main()方法所在的类的名字相同nmain()函数的修饰符必须是public static void,public static顺序可以颠倒n同c语言相比,java中的main()函数必须包含在类定义中n在c中,将main()方法所在的程序文件名作为执行的第一个命令行参数,而
9、java不是构造方法n在创建类对象时,初始化类的实例对象n构造方法必须与类名相同n构造方法没有返回值,因此方法头不能用返回类型修饰n用户不能直接调用构造方法n构造方法在用户创建对象时,由系统自动调用执行n构造方法的作用是对类对象进行初始化n构造方法的修饰符不能是abstract static final,只能是public protected private其中之一n类中也可以不用定义构造方法,如果没有构造方法,系统将为该类默认定义一个空构造方法n一个类中可以有多个同名的构造方法,但是要具有不同的参数构造器(Constructor)的声明n构造器的声明语法:n ()nnnn构建器名称必须和类名
10、称一致n一个类可以有多个构建器,但这些构造器的参数列表必须不同n例如:npublic class Dog nprivate int weight;npublic Dog(public Dog(intint w)w)nweight=w;weight=w;n n3 对象的定义和使用n类是 一种引用数据类型,用户首先要定义他,定义的目的是使用,要使用类,方式就是定义对象,通过访问对象的静态属性或者动态属性,来实现程序的功能nJava 语言中对象的使用步骤是,首先创建对向,然后访问对象的数据和调用对象的方法,多个对象之间通过消息传递的方式,共同完成系统要求的功能,对象使用完毕后,关闭对象,释放对象所占
11、用的各种资源对象的创建n声明对象声明的类可以是java类库中的系统类,如String DataInputStream等,也可以是用户自定义的类n实例化对象实例化关键字objectanme=new ClassName(ParameterValue);myPerson=new person();myPerson=new person(”lily”,0,3500,6);对象的创建和使用n在Java中,使用new 关键字来创建一个对象(实例化一个类),new后面跟上一个构造器n每个类都至少有一个构造器,如果没有定义构造器,则系统将自动提供一个默认的不带任何参数的构造器,如果类没有定义构造器,可以用这个
12、默认的构造起来生成一个对象n使用“.”操作符来访问对象的成员,包括对象方法和对象属性n.小结n面向对象的分析和设计简介n类和对象n构造器n对象的创建和使用信息的隐藏n隐藏:指的是对象的一种保护机制,使得它的属性或方法不被外部的程序直接访问n使用者对类内部定义的数据(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。public class Studentn public int age;npublic class StudentTestn public static void main(String args)nStudent s=new Student();n/合“法”但不合理的
13、设置ns.age=1000;n n信息的封装封装指的是将对象的状态信息(属性)和行为(方法)捆绑为一个逻辑单元的机制。Java中通过将数据封装、声明为私有的(private),再提供一个或多个公开的(public)方法实现对该属性的操作,以实现下述目的:n隐藏一个类的实现细节;n防止对封装数据的未经授权的访问。使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;n有利于保证数据的完整性;n便于修改,增强代码的可维护性;Java源文件的基本结构n源文件的基本语法:nnn+n例如:npackage school;nimport java.util.List;n
14、import java.io.*;npublic class Student nprivate List Teacher;npublic void printSheet(Writer output)npackage语句npackage语句的语法为:npackage .*;n举例:package cn.edu.tsinghua.college;public class Student package语句n打成包后的类的编译和执行:n如果在程序Student.java中已定义了包cn.edu.tsinghua.college,编译时采用如下方式:njavac Student.java 则编译器会在
15、当前目录下生成Student.class文件,如果程序不在cnedutsinghuacollege目录下,则必须再在适合位置(destpath目录)手动创建这些子目录,将Test.class复制到该目录下,这样,这个类才可以被使用。njavac-d destpath Student.java则编译器会自动在destpath目录下建立子目录cnedutsinghuacollege,并将生成的.class文件都放到destpath cnedutsinghuacollege下。import语句n在需要使用不同的包中的类时,使用import语句来引入所需要的类nimport 语句的语法为:nimpor
16、t .;nimport.*;import语句n编译器如何寻找import语句中指定的包或者类?n在CLASSPATH指定的路径下寻找n默认情况下,系统会自动引入java.lang包中的所有类常用的包1.java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。2.java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。3.java.applet-包含applet运行所需的一些类。-包含执行与网络相关的操作的类。5.java.io-包含能提供多种输入/输出功能的类。6.java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。面向对象编程的术语n类(class)n对象(object)n也称:实例(instance)n属性(attribute)n也称:成员变量、实例变量(instance variable)n方法(method)n构造器(constructor)n包(package)小结n信息的封装和隐藏nJava源文件结构nJDK中常用的包