JAVA课件吴刚3面向对象

上传人:w****i 文档编号:92221764 上传时间:2019-07-08 格式:PPT 页数:231 大小:2.16MB
返回 下载 相关 举报
JAVA课件吴刚3面向对象_第1页
第1页 / 共231页
JAVA课件吴刚3面向对象_第2页
第2页 / 共231页
JAVA课件吴刚3面向对象_第3页
第3页 / 共231页
JAVA课件吴刚3面向对象_第4页
第4页 / 共231页
JAVA课件吴刚3面向对象_第5页
第5页 / 共231页
点击查看更多>>
资源描述

《JAVA课件吴刚3面向对象》由会员分享,可在线阅读,更多相关《JAVA课件吴刚3面向对象(231页珍藏版)》请在金锄头文库上搜索。

1、JAVA 面向对象,信息学院计算机系统研究所吴刚 信息学馆415,行胜于言 敢为人先 和而不同 居安思危,1,理解面向对象的概念,行胜于言 敢为人先 和而不同 居安思危,2,面向对象程序设计历史,20世纪50年代末,60年代初,MIT出现“objects”和“oriented”等概念 LISP:atoms, attributes Sketchpad:object, instance ALGOL(AED-0):结合数据结构和过程,message, methods, member functions,行胜于言 敢为人先 和而不同 居安思危,3,1960年的Simula语言中出现面向对象程序设计的雏

2、形 在软硬件环境逐渐复杂的情况下,软件如何得到良好的维护? classes, instances or objects, subclasses, virtual methods, coroutines, discrete event simulation, 类似LISP引入automatic garbage collection Simula 67影响了LISP (CLOS), Object Pascal, C+.,行胜于言 敢为人先 和而不同 居安思危,4,70年代的Smalltalk语言在面向对象方面堪称经典 仍然被视为面向对象语言的基础 Xerox PARC (Alan Kay等人) 2

3、0世纪90年代成为主流编程方法 C-C+ Visual FoxPro 3.0, C+, Delphi 促进了GUI 促进了事件驱动编程,行胜于言 敢为人先 和而不同 居安思危,5,纯面向对象 Smalltalk,Java、C#、Eiffel 增加面向对象元素 C-C+,C-Objective-C,BASIC-Visual Basic-Visual Basic .NET,Pascal-Object Pascal,Ada-Ada95。 同时支持面向对象和过程的脚本语言 Python、Ruby,行胜于言 敢为人先 和而不同 居安思危,6,Alan Kay,May 17, 1940 (age 71)

4、OOP,Windows,GUI Dynabook (1968) “A Personal Computer For Children Of All Ages” /One Laptop per Child (100$) Smalltalk (1969) Apples Lisa & Macintosh The best way to predict the future is to invent it 荣誉 ACM Turing Award (2003, OOP) Kyoto Prize, 轶事 3岁流畅阅读,1年级150本书“I had the fortune or misfortune I al

5、ready knew that the teachers were lying to me.“ 数学分子生物学本科,犹他大学博士,职业爵士吉他手(柏林艺术大学荣誉博士/教授),行胜于言 敢为人先 和而不同 居安思危,7,从面向过程到面向对象,面向过程(Procedure Oriented) 在一个结构体中定义窗口的大小,位置,颜色,背景等属性,对窗口操作的函数与窗口本身的定义没有任何关系,如HideWindow,MoveWindow,MinimizeWindow,这些函数都需要接受一个代表要被操作的窗口参数 ,是一种谓语与宾语的关系。 面向对象(Object Oriented) 定义窗口时,除

6、了要指定在面向过程中规定的那些属性,如大小,位置,颜色,背景等外,还要指定该窗口可能具有的动作 ,如隐藏,移动,最小化等。这些函数被调用时,都是以某个窗口要隐藏,某个窗口要移动的语法格式来使用的,如window1.hide(), window2.move()。这是一种主语与谓语的关系。,行胜于言 敢为人先 和而不同 居安思危,8,面向对象的内涵,面向对象(Object Oriented),是一种现代的软件开发方法学,它涵盖了软件开发的整个过程,主要包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的程序设计(OOP),行胜于言 敢为人先 和而不同 居安思危,9,类、对象、实例

7、,类(class)用来表示客观世界中的一种事物或者一个概念,如:人、汽车、房屋 对象(object),原意是物体,用于表示客观世界中的一个具体事物,如:一个人,一辆汽车、一间房屋。两个特征: 属性(Property) 行为(Behavior) 某类(class)的一个对象(object)称为该类的一个实例(instance),类可以看作是创建对象的模板,行胜于言 敢为人先 和而不同 居安思危,10,面向对象的基本特征,1.封装:将数据成员(Data Member)和属于此数据的操作方法(Operating Method),放在同一个实体(Entity)或对象中。 2.继承:父类定义(Defin

8、e)一些通用的属性与行为,其子类继续使用。 3.多态:在同一个类中可有许多同名的方法,但其参数数量与数据类型不同,而且操作过程与返回值也可能会不同。,行胜于言 敢为人先 和而不同 居安思危,11,面向对象的程序设计,所有东西都是对象 程序是一大堆对象的组合;通过消息传递,各对象知道自己要做什么 每个对象都有自己的存储空间,可以容纳其它对象 每个对象都有一种类型 同一类的所有对象都能接收相同消息 参见http:/ 敢为人先 和而不同 居安思危,12,面向对象程序设计: 程序=对象+消息,行胜于言 敢为人先 和而不同 居安思危,13,Xerox Alto,The Xerox Star Workst

9、ation GUI,Sketchpad,Pirates of Silicon Valley,又名: 硅谷有贼 / 微软英雄 / 硅谷海盗 导演: Martyn Burke 编剧: Martyn Burke / Michael Swaine / Paul Freiberger 主演: Bodhi Elfman / Anthony Michael Hall / Noah Wyle 类型: 剧情 / 传记 制片国家/地区: 美国 语言: 英语 上映日期: 1999-06-20(美国) 片长: 95分钟 IMDB链接: tt0168122,行胜于言 敢为人先 和而不同 居安思危,14,Java中的类和

10、对象,行胜于言 敢为人先 和而不同 居安思危,15,类的定义,定义类的语法 类的数据 类的方法,行胜于言 敢为人先 和而不同 居安思危,16,定义类的语法,最简单的类 class SimpleClass 使用class关键字来定义类,语法: 修饰符 class 类名 extends 父类implements 接口列表 /类的数据和方法 ,行胜于言 敢为人先 和而不同 居安思危,17,类的数据,可以在类中定义属于类的数据,类的数据通常表示类的实例所具有的某些属性(attribute) class Human char sex; int age; 类中的数据通常称为“域”(field),行胜于言

11、敢为人先 和而不同 居安思危,18,类的数据不仅可以使用基础类型,而且可以包含引用类型的数据: class Human char sex; int age; String name; ,行胜于言 敢为人先 和而不同 居安思危,19,类的方法,类的方法表示可以对类进行的一种操作,方法的功能类似于传统程序设计语言中的函数 以下是一个简单的方法定义: void getMoney (int money) if(0 = money) System.out.println (“No money!”); else System.out.println (“I got money!”); ,行胜于言 敢为人先

12、 和而不同 居安思危,20,返回值类型,方法名称,参数列表,方法的参数,方法可以接收参数作为输入 方法可以有任意多个参数 方法不需要任何参数时,可以将参数列表保留为空,行胜于言 敢为人先 和而不同 居安思危,21,方法的返回值,一个方法可以返回一个值来表示方法执行的结果,这个结果可以是任意类型的数据 一个方法只能有一个返回值,不能返回一个以上的值 通常一个方法(构造、析构方法除外)必须有一个返回值类型,如果确认方法不会返回任何值,则必须将返回值类型声明为void,行胜于言 敢为人先 和而不同 居安思危,22,使用return,方法可以使用return来返回值 return 100; 方法内用r

13、eturn返回的值的类型,需要同方法返回值类型兼容 使用return可以立即结束方法的执行并返回调用点 如果方法返回值声明为void,可以使用不带值的return语句结束方法执行: return;,行胜于言 敢为人先 和而不同 居安思危,23,如果方法需要返回值,则方法的每一条执行路径都必须要使用return返回一个值。如果有一个或一个以上分支没有返回值,方法的定义无法通过编译 在方法的任何分支上,return语句后都不能有其他的语句。如果有则方法的定义无法通过编译,行胜于言 敢为人先 和而不同 居安思危,24,class Human int age; char sex; int money;

14、 void printAge() System.out.println(“My age is “ + age); void isManOrWoman() if (sex = M | sex = m) System.out.println(“I am a man“); else if (sex = F | sex = f) System.out.println(“I am a woman“); else System.out.println(“I am sorry “); int getMoney() return money; void addMoney(int m) money += m;

15、System.out.println(“I got $“ + money); ,行胜于言 敢为人先 和而不同 居安思危,25,对象与对象的引用,一个对象是一个类的实例(instance),对象与类的关系类似于一个具体的某人同人这个概念之间的关系 对象的引用类似于C语言中的指针,它是在程序中代表对象的一个名字,行胜于言 敢为人先 和而不同 居安思危,26,定义引用的方法如下: ClassTypeName referenceName; 例如: Human aMan; 定义引用时并没有创建对象,应该使用new关键字创建对象: aMan = new Human();,行胜于言 敢为人先 和而不同 居安思危,27,可以将定义引用和创建对象两个步骤同时进行: Human aMan = new Human(); 可以使用null来给对象赋值,给一个对象赋值为null代表这个变量不指向任何对象,null可以赋值给任何类型的对象引用,行胜于言 敢为人先 和而不同 居安思危,28,访问对象的成员,在程序中,通过引用来操控对象;对于我们,对象是不可见的,引用是可见的 对成员的访问需要通过对象(的引用): Human human = new Human(); human.sex = M; human.age = 24; human.printAge();,行胜于言 敢为人先 和而不

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号