版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 面向对象编程,3.1面向对象问题求解的提出 3.2面向对象的分析与设计 面向对象的分析(OOA) 面向对象的设计(OOD) 3.3面向对象程序设计方法的优点 可重用性 可扩展性 可管理性 3.4Java中类的定义和使用 类声明 类体,3.1面向对象问题求解的提出,程序设计语言的发展阶段: 第一代语言(1GL) : 二进制机器代码( 0101001 ) 第二代语言 (2GL) : 汇编语言 (Low Level Language LLL) ( mov, add ) 第三代语言 (3GL): 高级语言 (HLL)(以C语言为代表,过程式编程语言) 第四代语言(4GL) : 面向对象语言(O
2、OP )非过程化/面向对象的编程语言 OOP最大的优点是具备了隐藏库执行的某些方面的功能,另一个重要优点是过程与数据结构联合,这种数据属性与方法的结合称为类。,最早的面向对象的编程语言是1966年推出的Simlula,它首次提出模拟人类的思维方式,把数据和相关的操作集成在一起的思想。 20世纪80年代末期,以C+为代表的面向对象程序设计(OOP)才流行起来。其优点为隐藏库执行的某些方面的功能,另一个优点是过程与数据结构联合。 Java是20世纪90年代新出现的面向对象的编程语言,它去除C+中非面向对象的内容,并实现一次编写,多次使用的跨平台特点,是面向对象开发工具中极具潜力的成员之一。,3.2
3、面向对象的分析与设计 软件工程的新途径 面向对象作为一种思想及编程语言,为软件开发的整个过程:从分析设计到实现,提供了一个完整解决方案。面向对象堪称是软件发展取得的里程碑式的伟大成就。 面向对象方法简介 从80年代后期开始,进行了面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)等新的系统开发方式模型的研究,在有些文献中统称为OO范型。,图1-1 面向对象软件开发过程(软件生命周期),3.3面向对象程序设计方法的优点,与传统的方法相比,面向对象的问题求解具有更好的可重用性,可扩展性和可管理性 3.3.1可重用性 可重用性是面向对象软件开发的一个核心思路,面向对象程序设计
4、的抽象、封装、继承、多态四大特点都围绕这个核心服务。,1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作
5、修改和观察。,2.继承: 为什么会有继承?建立一个类后,发现另一个新的类有相同的特性,两个选择:重新定义一个新的类;在已有类的基础上,修改(加加/减减) 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。继承性很好的解决了软件的可重用性问题。,运输工具,航空运输工具,陆地运输工具,水上运输工具,人力驱动,引擎驱动,二轮,四轮,客运,货运,3.封装: 封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算
6、始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。,4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态
7、性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 表现在继承中方法的重写 子类从父类继承(extends扩展)而来 多个子类同属一个父类,所有子类有相同的父类 继承父类的方法 在不同的子类中有不同的表现形式 表现在用一个类中方法的重载,多态性在继承中的表现,3.3.2可扩展性3.3.3可管理性,类的实现包括类声明和类体 3.4.1 类声明 class Mankind class 定义类的关键字。(注意不要把class写成Class)。 Mankind 类的名称,习惯上,类名的首字母大写,并且命名的规则符合标识符的规则。,3.4 java中类的定义和使用,3.4
8、.2 类体,类体包含数据(变量)的定义和方法的定义。只可以在类体中定义数据、初始化数据、定义方法的语句,而不能有其他的语句,如控制语句、赋值语句等。 class ,在定义类的成员变量时可以同时赋初值,但对于成员变量的操作只能放在方法中。例如: class Tom int x=98, y; y=87; /此语句对成员变量y进行了赋值操作 ,一个简单的类 class Student String name, stuNumber; double score1, score2, score3; void set1(String s1, String s2) name = s1;stuNumber =
9、s2; System.out.println(name + “ “ + stuNumber); double setScore(double d1, double d2, double d3) double d; score1 = d1; score2 = d2; score3 = d3; d = d1 d2 + d3; return d; ,1、变量的定义,(1)成员变量 在类体中定义的变量称为类的成员变量。其类型可以是java中的任一类型。成员变量在声明它的整个类中有效。 成员变量又可以分为: 类成员变量(类变量):类变量前有static关键字修饰,所有的对象共享类变量。改变一个对象的类变
10、量会影响到其他对象的这个变量 实例成员变量(实例变量):实例变量前无static修饰,所有的对象拥有各自不同的实例变量,存储空间也不同。,Java 实例,class Mankind String name=“Tom”,sex=“man”; static float salary= 3000.0f; void printInf(String n,String s,float m) int count=1; System.out.println(“person:”+n+”sex:”+s+ ”salary:”+m); System.out.println(“count=“+count); ,(2)局
11、部变量 在方法体中定义的变量和方法的参数称为局部变量。如n,s,m,count; 其类型可以是java中的任一类型。 其作用域只限制在定义它的方法内。,如果局部变量的名字与成员变量的名字相同,成员变量被隐蔽,即暂时无效。 例3.2 class Tom int x=98,y; / 实例变量 static int a; / 类变量 void f( ) /方法f int x=3; /x为局部变量 y=x; y=this.x; 如果局部变量与成员变量的名字相同,在该方法内引用成员变量,则必须使用关键字this(类的当前对象),2、方法的定义,方法声明部分:方法名和方法的返回类型 方法体:局部变量的定义
12、和合法的java语句 class Tom int x=98,y; static int a; void f( ) int x=3; y=x; y=this.x; ,方法分类,(1)类方法 方法前有static修饰的方法,类方法只能对类变量进行操作。 类方法调用: 类名.方法名 或者 对象名.方法名 类变量的调用: 类名.类变量名 或者对象名.类变量名,(2)实例方法 方法前无static修饰的为实例方法,实例方法既能对类变量操作也可以对实例变量操作。 实例方法调用: 对象名.方法名 实例变量的调用: 对象名.实例变量名,class Test public static void main(St
13、ring args) double d_product; Area myArea; myArea = new Area(); myArea.setV(21,23); d_product = myAduct(); System.out.println(d_product); class Area double width, height; void setV(double w, double h) width = w; height = h; double product() return width*height; ,Java实例-例3.3,class A int a=5; st
14、atic int b; void c() /实例方法 b=10; /在实例方法中可对类变量进行操作 A.f(b); /类方法可以由类名调用,也可以写成f(b) System.out.println(“from instance method,b=”+b); static void f(int x) /类方法 b=x; / a=x; a是实例变量,要创建对象来引用它 System.out.println(“from class method,b=”+b); public static void main(String args) A.f(15); /A.c();实例方法不可以由类名调用 A t=
15、new A(); t.c(); ,输出结果 from class method,b=15 from class method,b=10 from instance method,b=10,作业:,设计一个学生类Student,包含的成员变量有“学号”、“班级”、“姓名”、“年龄”,成员方法有“获得 学号”“获得班级”“获得姓名”“获得年龄”、“修改年龄”。,(3)方法重载(method Overloading),所谓方法重载就是在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,或者是个数或者是类型。 注意:不可以以方法的返回值为基础构成重载方法,方法的重载(overload)
16、方法名相同,但方法的参数不同 方法描述 方法名(标识符) 参数类型 方法返回值 绝对值 abs(a) int int 绝对值 abs(a) long long 绝对值 abs(a) float float 绝对值 abs(a) double double public static int abs(inta) public static long abs(longa) public static float abs(floata) public static double abs(doublea),class Calculation void add(int a,int b) int c; c
17、=a+b; System.out.println(c); / int add(int a,int b) return (a+b); float add(float a,float b) float c=a+b; return c; void add(String a,String b) String c=a+b; System.out.println(c); public static void main(String args ) Calculation c=new Calculation(); c.add(12,12); c.add(“good ”,” morning”); float x
18、=c.add(5f,3f); / float x=c.add(5,3);出错 System.out.println(“x=”+x); ,作业:,利用重载的方法square计算一个整型数和一个双精度数的平方。,(4)构造方法,构造方法名与类名相同; 构造方法没有返回类型,也不是void; 构造方法的主要作用是对成员变量的初始化。如果没有定义构造方法时,各种类型的默认值; 构造方法不能由编程人员显式地直接调用,在创建某个类的对象时,设置的构造方法将自行调用。 使用不同数量、不同类型的参数对类初始化会拥有多个构造方法;,Java实例例3.5,class Number private int n; Number(int m) n=m; void setNumber(int i) n= i; int getNuber( ) return n; boolean isEven( ) if(n%2=0) return ture; else return false; ,class Class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京大学力学与工程科学学院招聘1名劳动合同制工作人员备考题库附参考答案详解(黄金题型)
- 2026四川成都市第二十五幼儿园储备教职工招聘备考题库重点附答案详解
- 2026河南豫能控股股份有限公司及所管企业招聘31人备考题库及答案详解【必刷】
- 2026湖北黄石市大冶市事业单位统一招聘118人备考题库附答案详解【夺分金卷】
- 2026中国东方演艺集团有限公司子公司东方歌舞团有限公司总经理、副总经理岗位招聘3人备考题库含答案详解【基础题】
- 2026年辽宁省鞍山市高职单招职业适应性测试考试题库含答案详细解析
- 2026年吉林省白城市高职单招综合素质考试题库有答案详细解析
- 2026年宁波城市职业技术学院单招职业技能考试题库有答案详细解析
- 2026年内蒙古自治区乌海市高职单招职业适应性测试考试题库及答案详细解析
- 2026年甘肃畜牧工程职业技术学院单招职业适应性测试题库有答案详细解析
- 2025年九江学院护理单招题目及答案
- 图书馆志愿者培训课件
- 2026年许昌电气职业学院单招职业倾向性测试题库附答案
- 云南省2025年春季学期期末普通高中学业水平合格性考试《信息技术》试卷(解析版)
- 2025年公安部交管局三力测试题库及答案
- 飞灰填埋场安全培训报告课件
- 2025年度社工《社会工作实务》考试题库(附答案)
- GB/T 15072.4-2025贵金属合金化学分析方法第4部分:钯含量的测定
- 安全防护用品使用培训课件
- 矿业可持续供应链管理-洞察及研究
- 英语口语课件自我介绍
评论
0/150
提交评论