Java程序设计(第一章)_第1页
Java程序设计(第一章)_第2页
Java程序设计(第一章)_第3页
Java程序设计(第一章)_第4页
Java程序设计(第一章)_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计Name:徐晓霞Room:Z323Telime:周一7-8(3206)

周三7-8(3206)课程安排授课学时——48学时上机实验——16学时答疑及辅导时间:周一、周三7-8节地点:综合楼3206考核方式实验+平时(40%)+考试(60%)。作业提交方式网络教学平台教学用书教材:

《Java语言程序设计》

吴倩、林原、李丽霞,铁道工业出版社,2015.2第1版参考书:

《Java编程思想(第三版)》

BruceEckel,机械工业出版社,2005.5

《设计模式:可复用面向对象软件的基础》

ErichGamma,RichardHelm,Ralph Johnson,JohnVlissides,机械工业出版 社,2007.1学习目的Java语言通过本门课程的学习可以使学生掌握Java语言的基本语法和编程规范。面向对象程序设计方法Java语言是一种面向对象的语言,通过学习使学生掌握用面向对象进行编程的思想和实践。培养实际开发能力,使学生成为一名合格的Java程序员。学会使用设计模式解决常用模块设计问题。 设计模式是解决固定问题的固定的解决方法。第一章面向对象程序设计思想面向过程

面向对象面向对象:C++、C#、Java、Objective-C(AppleHP)面向对象学习最重要的是:思想(不是语法),理解编程思想——掌握基础语法——灵活运用工具和类——程序。核心概念:类和对象。面向对象的三大特征:封装、继承、多态。类、对象封装、继承、多态1.1类和对象物以类聚,人以群分。(分类)生活的类:具有相同特征及行为的一种群体。“人”类是一个抽象的概念(不是实际存在的实体),真正的实体是所有具备“人类”这个群体的每一个具体的人,也就是“人类”这个类的对象。不同种类的对象构成了现实世界。类描述了一组相同特性(属性)和相同行为(方法)的对象。DogName(名字)Sex(性别)Age(年龄)Color(毛色)Weight(重量)Breed(品种)Numberofbarks#bark#kump数据方法现实世界的Dog类描述:程序中的Dog类描述:DogstringNameboolean

isMaleintAgestringColordoubleWeightstringBreedint

Numbarks#voidbark()#voidkump()程序中的Dog类描述:属性行为例如:用来描述同一类事物的特征描述一类事物可做的操作用Java提供的一种抽象数据类型——类(class),可以定义Dog类:ClassDog{stringName;

boolean

isMale;

intAge;

stringColor;

doubleWeight;

stringBreed;

int

Numbarks;voidbark(){。。。}Voidkump(){。。。}}Note:面向过程的编程思想:

以过程划分,注重过程。面向对象的编程思想:

以类来划分、以对象来考虑问题;例:用枪射击鸭子如果用C语言来实现,考虑实现步骤:举枪、瞄准、扳机、发射鸭子1、鸭子2……到鸭子10。出发点是射击鸭子的过程。面向过程首先划分类:鸭子类、枪类(猎枪、手枪、气枪等)。枪类具有瞄准、扳机、发射等功能。挑选一杆猎枪——也就是“枪”的这个类的一个对象来完成射击任务。面向对象**面向对象的思维方式更符合认识世界的思维方式,而且代码简洁、可重用性强。思考:如果打10只老虎?1.2面向对象程序设计的三大特征BruceEckel《Thinkinginjava》三大特征:封装、继承、多态。事实上,封装、继承、多态是一种设计理念,一种程序艺术,与程序设计没有关系。面对一个项目。首先思考类与类之间的关联,怎样用封装、继承、多态等机制画出程序的基本架构蓝图,以及优化程序架构,至于细节问题,如采用什么语言,那都是次要的,毕竟语言不过是程序设计思想的一种表现形式而已。1.2.1封装属性可用来描述同一类事物的特征;方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。

1.概念:封装:也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。

2.好处:

(1)实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,从而实现了专业的分工。

(2)隐藏信息,实现细节。通过控制访问权限可以将可以将不想让客户端程序员看到的信息隐藏起来,如某客户的银行的密码需要保密,只能对该客户开发权限。销售数据管理销售管理本部门销售部门人力资源数据管理人力资源管理本部门人力资源部财务数据管理财务管理本部门财务部对象的封装示意图对象属性方法1.2.2继承继承:是个性对共性的属性与方法的接受,并加入个性特有的属性与方法1.概念:一个类继承另一个类,则称继承的类为子类,被继承的类为父类。2.目的:实现代码的复用。3.理解:子类与父类的关系并不是日常生活中的父子关系,子类与父类而是一种特殊化与一般化的关系,是is-a的关系,子类是父类更加详细的分类。如classdogextendsanimal,就可以理解为dogisaanimal.注意设计继承的时候,若要让某个类能继承,父类需适当开放访问权限,遵循里氏代换原则,即向修改关闭对扩展开放,也就是开-闭原则。4.结果:继承后子类自动拥有了父类的属性和方法,但特别注意的是,父类的私有属性和构造方法并不能被继承。

另外子类可以写自己特有的属性和方法,目的是实现功能的扩展,子类也可以复写父类的方法即方法的重写。ColorSizeBirdColorSizechirpJumpColorSizeBombAttackColorSizeSmileCrazyBirdKindBirdAngryBird类的继承示意图1.2.3多态多态是以封装和继承为基础的。是在抽象的层面上实施一个统一的行为。

1.概念:相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。

2.理解:子类以父类的身份出现,但做事情时还是以自己的方法实现。子类以父类的身份出现需要向上转型(upcast),其中向上转型是由JVM自动实现的,是安全的,但向下转型(downcast)是不安全的,需要强制转换。子类以父类的身份出现时自己特有的属性和方法将不能使用。ColorSizeBirdColorSizechirpJumpColorSizeAttackColorSizeSmileCrazyBirdKindBirdAngryBird多态示意图ShootSpawnShootBomb1.3面向对象的程序设计第一阶段:OOA——面向对象需求分析。第二阶段:OOD——面向对象设计第三阶段:OOP——面向对象编程第四阶段:OOT——面向对象测试面向对象软件开发的几个基本流程1.3.1类的建模UnifiedModelingLanguage(UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。建模——勾画出工程的蓝图软件工程“建模”就是在考虑实际的代码细节之前,用UML图示将程序结构在很高的层次上表示出来。建模工具:RationRose(IBM)、Together(Borland公司)、MyEclipse等。MSoffice‘sVisio也可以使用(简单)。UML2套建模机制:静态建模机制和动态建模机制。图名说明类图(ClassDiagram)表示类之间的关系对象图(ObjectDiagram)表示特定对象之间的关系时序图(SequenceDiagram)表示对象之间在时间上的通信协作图(CollaborationDiagram)按照时间和空间顺序表示对象之间的交互和它们之间的关系状态图(StateDiagram)表示对象的状态和响应用例图(UseCaseDiagram)表示用户如何与程序交互活动图(ActiveDiagram)表示系统元素的活动组件图(ComponentDiagram)表示实现系统的组件的组织配置图(DeploymentDiagram)表示环境的配置UML的主要类图1.3.2类的层次结构设计类的层次结构代表了类与类之间的关系,包括有多少个类、它们之间的关系是什么、如何关联等。愤怒的小鸟——“小鸟”类和“绿猪”类。“小鸟”类的子类——白鸟类、蓝鸟类、红鸟类。“小鸟”类的行为又影响“绿猪”类。这就是经过面向对象设计初步得出类的层次结构。从程序设计角度分析:类之间的关系包括泛化、依赖、关联、聚合、组合。1.

泛化(Generalization)

【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

【箭头指向】:带三角箭头的实线,箭头指向父类2.

依赖(Dependency)

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

【代码表现】:局部变量、方法的参数或者对静态方法的调用

【箭头及指向】:带箭头的虚线,指向被使用者3.

关联(Association)

【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

【代码体现】:成员变量

【箭头及指向】:带普通箭头的实心线,指向被拥有者上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

下图为自身关联:

4.

聚合(Aggregation)

【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

【代码体现】:成员变量

【箭头及指向】:带空心菱形的实心线,菱形指向整体5.

组合(Composition)

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。【代码体现】:成员变量【箭头及指向】:带实心菱形的实线,菱形指向整体6.

实现(Realization)

【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.

【箭头指向】:带三角箭头的虚线,箭头指向接口各种关系的强弱顺序:

泛化

=

实现

>

组合

>

聚合

>

关联

>

依赖

下面这张UML图,比较形象地展示了各种类图关系:1.3.3面向对象程序设计原则单一责任原则开放——封闭原则依赖倒转原则李氏代换原则面向对象程序设计主要遵循以下4个原则1.4Java语言Java简史前身:Oak(JamesGosling1990)Java大事记90年,Sun公司开始Green工程93年,WWW席卷全球94年,开始定位于Internet95.1,Java命名HotJava,第一个支持Java的浏览器

Netscape2.01995.5.23Java诞生(Java1.0.2API)1997.2.18JDK1.1(java1.1API)1998.12JDK1.22000.5JDK1.32002.2JDK1.42004.10JDK1.5(JDK5.0)最新版JDK:JDK7.0网址(查询新动向)http://Java简史续j2sej2mej2eeJava大家庭中的三个主要成员1.简单:simpleandsmall2.面向对象完全基于类、对象:OOA,OOD,OOP以类的形式组织代码,数据类型封装、继承、多态3.分布式字节码可来源于网络Java具有丰富的网络编程功能1.4Java的特点:4.稳定性检查数据类型的匹配,数组下标越界不支持指针,保护内存数据、程序自动内存管理,碎片收集例外控制机制,正确处理运行时错误5.安全性字节码加密传输,客户端校验解释器在client端临时分配、布置内存Java的特点(续)6.结构中立、可移植:字节码与计算机结构无关。

对于不同平台,有不同的虚拟机。

JVM屏蔽了底层平台差异,实现了“一次编译,随处运行”。

[Return]Java的特点(续)Importjava.io.*;classtest{….}源程序(*.java文件)DFBA0988……..字节码(*.class文件)LinuxOSJVMforLinuxWindowsOSJVMforWindowsMacOSJVMforMac编译1.4.1Java程序的开发环境Java语言的平台无关性——任意OS。程序经JVM编译——生成字节码——可以运行于任意OS上。设置开发环境。下载:http://

安装配置path&classpathpath:windows系统执行命令时要搜索的路径。classpath:java在编译和运行时要找的class所在的路径。运行javac编译java程序java运行java程序2、设置环境变量1、下载并安装开发工具包1.4.1Java程序的开发环境3、安装集成开发环境NetBeansJCreatorLeBorlandJBuilderMicroSoftVisualJ++VisualAgeforjava(IBM)SunONEstudioBEAworkshopStudioEclipse(MyEclipse

)1.4.2Java程序的编写开发工具

Java程序的编写开发工具。简单程序的编写,几乎使用任何文本编辑器都可以进行。例如:记事本、写字板等。比较复杂的Java应用系统开发:专门的集成开发工具:如JBuilder、VisualJ++、VisualAge、JCreator等。其中优秀的开发工具支持与应用服务如BEAWebLogic、IBMWebSphere的集成。具体选用哪种开发工具要视项目的具体情况而定。JDK实用程序

编译:

javac:java编译器,将Java源程序编译成字节码(.class)运行:1>java:Java解释器,直接从类文件执行Java应用程序,即运行application;

2>appletviewer:小程序浏览器,执行html文件上的Java小程序,即运行Applet。publicclassHelloWorldApp{publicstaticvoidmain(Stringargs[]){

system.out.println(“HelloWorld!”);}}publicclassHelloWorldAppextendsApplet{publicvoidpaint(Graphicsg){g.drawString(“HelloWorld!”,25,50);}}配置path&classpath右击——我的电脑——属性——高级——环境变量——在系统变量里点击path——编辑。这里在前面加上JDK的安装路径下的bin的路径,例如JDK装在了c:\ProgramFiles\Java下,那就在前面添上(里面已经有的变量值不要删掉,直接在前面另外添上)c:\ProgramFiles\Java\jdk1.6.0_01\bin;记得不要把最后面那个“;”丢了。

然后新建系统变量,变量名称为“classpath”(不加双引号),变量值为“.;c:\ProgramFiles\Java\jdk1.6.0_01\lib\dt.jar;c:\ProgramFiles\Java\jdk1.6.0_01\lib\tools.jar;”前面是一个“.”和一个“;”,不要丢掉.查找路径的设置:在dos提示符下输入:path路径类路径的设置:

setclasspath=.;java路径\lib\dt.jar;java路径\lib\tools.jar编写第一个Java程序Java源文件以"java"作为扩展名。源文件的基本组成部分是类(class),本例中的HelloWorldApp类。一个源文件中最多只能有一个public类。其他类的个数不限,如果源文件包含一个public类,该文件必须按该类名命名。Java应用程序的执行入口是main()方法。它有固定的书写格式:publicstaticvoidmain(String[]args){…}Java严格区分大小写。Java方法由语句构成,每条语句以分号结束。Java注释方式://用于单行注/*用于多行注释*//**用于多行注释*/publicclassHelloWorldApp{publicstaticvoidmain(Stringargs[]){System.out.println(“HelloWorld!”);}}publicclassHelloWorldAppextendsApplet{publicvoidpaint(Graphicsg){g.drawString(“HelloWorld!”,25,50);}}文件名:HelloWorldApp.javaJava程序的编译及运行注意:文件名应该与类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。编译:

c:\java>javac

HelloWorldApp.java

编译的结果是生成字节码文件HelloWorldApp.class。运行:

C:\Java>java

HelloWorldApp

其结果就是在显示器上显示出“HelloWorld!”这行文字。

创建Applet例:HelloWorldApplet.javaimportjava.awt.*;importjava.applet.*;publicclassHelloWorldAppletextendsApplet{//Thisisanapplet.publicvoidpaint(Graphicsg){g.drawString(“HelloWorld!”,30,30);}}创建Applet(续)使用appletviewer

appletviewerindex.html使用常规的浏览器该HTML文件如下。<HTML><HEAD><TITLE>AnApplet</TITLE></HEAD><BODY><appletcode=″HelloWorldApplet.class″width=240height=50></applet></BODY></HTML>其中,使用<applet>标记来启动HelloWorldApplet,code属性指明字节码所在的文件,width和height属性指明applet所占区域范围。总结:在Java中可以编写两类程序:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论