程序设计方法学课件_第1页
程序设计方法学课件_第2页
程序设计方法学课件_第3页
程序设计方法学课件_第4页
程序设计方法学课件_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

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

文档简介

程序设计方法学0程序设计方法学程序设计方法学0程序设计方法学0程序设计方法学0程序设计方法学0程序设计方法学0程序设计方法学0主要内容:程序设计方法学基本概念及发展面向对象程序设计方法学及概念面向对象程序设计应用框架设计模式结构化程序设计程序正确性证明程序设计方法学0第一章程序设计方法学简介§1.1程序设计方法学的产生程序设计的发展过程手工艺式的设计方法软件危机

程序设计方法学工程化设计方法软件需求增加三大难点:高,长,难程序设计方法学0第一章程序设计方法学简介程序设计方法学讲述程序设计的性质以及程序设计的理论和方法的一门学科。程序设计方法学0§1.2结构程序设计1974年,D.Gries教授将结构程序设计归纳为:结构程序设计是避免使用GOTO语句的一种程序设计;是自顶向下的程序设计;结构程序设计是一种组织和编制程序的方法,利用它编制的程序容易理解和修改;容易实现正确性的证明;允许在设计过程中的每一步验证其正确性;讨论如何将大规模和复杂的流程图转换成标准形式程序设计方法学0§1.2结构程序设计1.结构程序设计:是一种进行程序设计的原则和方法,按照这种原则和方法设计出的程序的特点是结构清晰、容易阅读、容易修改、容易验证。2.结构程序设计语言:按照结构程序设计的要求设计出的程序设计语言。3.结构化程序:按照结构程序设计的思想编制出的程序。程序设计方法学0§1.2结构程序设计2.关于GOTO语句:限制;避免3.程序的结构1)顺序结构AB程序设计方法学0§1.2结构程序设计例:根据给定半径求圆的周长。#include“stdio.h”main(){intradius;floatcircle;radius=4;circle=2*3.141592*radius;printf(“圆周长=%f\n”,circle);}程序设计方法学0§1.2结构程序设计2)选择结构

APBAP程序设计方法学0§1.2结构程序设计例:将两个数由小到大排列#include“stdio.h”main(){inta,b,t;scanf(“%d%d”,&a,&b);printf(“a=%d,b=%d\n”,a,b);if(a>b){t=a;a=b;b=t;}

printf(“a=%d,b=%d\n”,a,b);}程序设计方法学0§1.2结构程序设计3)循环结构

APAP程序设计方法学0§1.2结构程序设计例:求1到100之间自然数的和。#include“stdio.h”main(){inti,sum;sum=0;for(i=1;i<=100;i++)sum=sum+i;

printf(“sum=%d\n”,sum);}程序设计方法学0§1.2结构程序设计4.逐步求精的程序设计方法就是在编制一个程序时,首先考虑程序的整体结构而忽视一些细节问题,然后逐步地、一层一层细化程序直至用所选语言完全描述每一个细节,即得到所期望的程序为止。

程序设计方法学0§1.2结构程序设计例:有一个班级共有30名学生,本学期共开设了5门课程,要求计算出每个学生的平均成绩,并将5门课程的成绩及平均成绩输出问题分为以下3个部分:1)输入30名学生的5门课程的成绩;2)计算每个学生的平均成绩;3)输出每个学生的5门课程的成绩及平均成绩。

程序设计方法学0§1.2结构程序设计1)输入30名学生的5门课程的成绩;

do{输入一名学生的5门课程的成绩}2)计算每个学生的平均成绩;do{计算每个学生的总分;计算每个学生的平均分。}程序设计方法学0§1.2结构程序设计3)输出每个学生的5门课程的成绩及平均成绩;

do{输出5门课程的成绩;输出平均成绩。}程序设计方法学0§1.2结构程序设计1)输入30名学生的5门课程的成绩;

for(i=1;i<=30;i++){输入一名学生的5门课程的成绩}2)计算每个学生的平均成绩;for(i=1;i<=30;i++){计算每个学生的总分;

average=总分/5;}程序设计方法学0§1.2结构程序设计3)输出每个学生的5门课程的成绩及平均成绩;

for(i=1;i<=30;i++){输出5门课程的成绩;

printf(“%f”,average);}程序设计方法学0§1.2结构程序设计1)输入30名学生的5门课程的成绩;

for(i=1;i<=30;i++){for(j=1;j<=5;j++)scanf(“%f”,&score);}程序设计方法学0§1.2结构程序设计2)计算每个学生的平均成绩;for(i=1;i<=30;i++){{for(j=1;j<=5;j++)

printf(“%f”,a[i][j]);}printf(“%f”,average);}程序设计方法学03)输出每个学生的5门课程的成绩及平均成绩;

for(i=1;i<=30;i++){输出5门课程的成绩;

printf(“%f”,average);}§1.2结构程序设计程序设计方法学0主要内容:面向对象程序设计方法学及概念设计模式(MVC)Struts架构JSP技术程序设计方法学0

第二章面向对象的程序设计方法§2.1什么是面向对象的程序设计考虑一个银行系统,该系统允许顾客开设不同类型的银行账户,包括现金账户、支票账户和贷款账户,同时允许存款、取款和转账。首先考虑数据结构:Structaccount{char*name;/*姓名*/unsignedlongaccountID;/*账号*/floatbalance;/*余额*/floatinterestYID;/*年利息*/characcountType;/*账户类型(现金x、支票z和贷款d)*/}返回首页程序设计方法学0

§2.1什么是面向对象的程序设计

再考虑用三个过程分别负责存款、取款和转账。我们可以用三个函数:MakeDeposit()WithDraw()Transfer()这种数据结构与过程分离有许多问题,例如增加一种账户类型——退休账户(t),则三个C函数都必须重新编写。返回首页程序设计方法学0ClassBankAccount{

char*name;unsignedlongaccountID;floatbalance;floatinterestYID;public:voidMakeDeposit(floatamount);floatWithDraw(floatamount);boolTransfer(BankAccount&to,floatamount);};程序设计方法学0

§2.1什么是面向对象的程序设计

1.面向对象程序设计是一种新的程序设计范型。面向对象程序的主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成,在主程序中定义对象并规定它们之间传递消息的规律;第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到后,启动有关方法完成相应操作。数据与定义在它上面的用户需要的操作构成一个整体。当把对银行账户的操作定义在数据上,银行账户就是一个类,称为银行账户类。我们可以建立许多具体的银行账户,而每一个具体的银行账户就是银行账户类的一个对象。返回首页程序设计方法学0

§2.1什么是面向对象的程序设计

2对象与类2.1对象与类的概念对象是现实世界的一个实体,其特性是:(1)每一个必须有一个名字以区别于其他对象;(2)用属性来描述它的某些特征;(3)有一组操作,每一个操作决定对象的一种行为。类是一组具有共同的属性特征和行为特征的对象的抽象。程序设计方法学0类名:教师类属性:姓名:字符串年龄:整数学历:字符串职称:字符串专业:字符串动作:说自己的年龄吃饭授课程序设计方法学0对象1属性:姓名:黎明年龄:30学历:博士职称:教授专业:计算机软件动作:说自己的年龄吃饭授课程序设计方法学02.2.对象的状态

我们可以把对象看成是一个带有状态和行为的活的实体。类的属性的具体值为对象的状态。对象的状态是所有静态属性和这些属性的动态值的总体。属性:姓名:字符串年龄:整数学历:字符串职称:字符串专业:字符串对象的状态不仅仅是初等的数据类型(整数,字符串),而且可以是另外的对象作为它的状态的一部分。

一辆车

程序设计方法学0一辆车发动机座位车轮程序设计方法学02.3对象的交互对象之间的联系称为对象的交互。一个对象向另一个对象发出的请求被称为消息。方法和消息方法也即类的外部接口的另一种说法,实际就是类对象的某一个操作,要是类对进行某一种操作,先要给以消息,也可以方法与消息等同。因此,消息是要求对象进行动作的说明或命令或指导,是对象之间相互请求或相互协作的途径。程序设计方法学0把发送消息的对象称为发送者,接收消息的对象称为接收者。对象间的联系,只能通过传递消息来进行。对象也只有在收到消息后才能选用方法而被激活。消息具有三个性质:1)同一个对象可以接收不同形式的多个消息,做出不同的响应。2)

相同形式的消息可以传递给不同的对象,所作出的响应可以是不同的。3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以不响应。程序设计方法学0C++语言中对类、对象、方法、消息的实现实例Classperson{private:charname[20];intage;charadd[40];charsex;voidprintname(){cout<<name;}\\私有消息voidprintage(){cout<<age;}voidprintadd(){cout<<add;}voidprintsex(){cout<<sex;}public:voidprintme(){printname();\\公有消息

printage();printadd();printsex();}};//这是类,有类名person,内部表示数据,提供外部接口printme()及实现。有了这个类就可以定义各种各样的人(对象),及给对象一个消息,它就会自报家门。程序设计方法学0#include<iostream.h>main(){persony;//y是对象

y.printme();//这是消息,向对象y发送了方法printme()的消息。}注:y.printname();y.printage();等都是错误的。

程序设计方法学02.4数据的抽象与封装2.4.1现实世界中的抽象与封装2.4.2数据的抽象与封装的基本概念将数据结构和作用于数据结构上的操作组成一个实体,数据的表示方式和对数据的操作细节被隐藏起来,用户通过操作接口对数据进行操作。这就是数据的封装。程序设计方法学0对象的封装是:(1)

对象具有一个清楚的边界,对象的私有数据、成员函数的细节被封装在该边界内;(2)

具有一个描述对象与其他对象如何相互作用的接口,该接口必须说明消息传递的使用方法;(3)

对象内部的代码和数据应受到保护,其他对象不能直接修改。程序设计方法学02.5

对象的特性(1)

封装性

封装是指将一个数据和这个数据有关的操作集合放在一起形成一个能动的实体——对象,有一个清除的边界包装,对象,类的所有私有数据内部程序(成员函数)的细节都被固定在这个边界内。具有一个接口,这个接口描述了对象对外界的消息、方法和响应。对象受封壳保护,外界不能直接修改使用本对象所拥有的数据和代码。(2)

模块独立性(3)

动态连接性(4)

易维护性程序设计方法学02.6继承性2.6.1继承的概念以面向对象程序设计的观点来看,继承所表达的是对象类之间相关的关系。这种关系使得某类对象可以继承另外一类对象的特征和能力。

类之间具有继承关系,则有下列特性:(1)

类间具有共享特性(包括数据和程序代码的共享);(2)

类间具有判别或新增部分(包括非共享的数据和程序代码);(3)

类间具有层次结构。

程序设计方法学0

假设有两个类A和B,若类B继承类A,则属于类B中的对象具有类A的一切特征(包括数据属性和操作),这时,我们称被继承类A为基类或父类或超类;而称继承类B为类A的派生类或子类。同时,我们还可以说,类B是从类A中派生出来的。如果类B从类A派生出来,而类C又是从类B派生出来的,就构成了类的层次。继承机制允许派生类继承基类的数据和操作(即数据成员和成员函数),也就是说,允许派生类使用基类的数据和操作。同时派生类还可以增加新的操作和数据。

程序设计方法学02.6.2

继承的分类从继承源上分,继承分为单继承和多继承。程序设计方法学0

2.6.3

继承与封装的关系在面向对象系统中,封装的单位是对象,也就是说,把一个属于某一类的对象封装起来,使其数据和操作成为一个整体。一个对象,无论它是基类的实例,还是派生类的实例,都是一个被封装的实体。因此,我们得出结论,继承机制的引入并不影响对象的封装性。程序设计方法学0

继承是类之间的相交关系,即类间的继承关系。要进行类间继承他们之间应有:类间具有共享特征(包括数据和程序共享)类间具有细微的差别或有新增部分(非共享的数据和代码)类间具有层次结构从继承源上分,继承分为单继承和多继承。从继承内容上分,继承可以对数据(结构特性)的继承又具有操作(行为)的继承。程序设计方法学02.7多态性2.7.1什么是多态性面向对象系统的多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。2.7.2重载的概念重载指的是一个类中有多个同名的方法,但这些方法在操作数或和操作数的类型上有区别。如:多态性:值收到同一个消息名后,对象可以采用多种不同的行为(态度)。程序设计方法学0publicclassA{intage;Stringname;publicvoidsetValue(inti){age=I;}publicvoidsetValue(Strings){name=s;}}程序设计方法学0

2.8面向对象程序设计语言面向对象的程序设计,必须使用面向对象程序设计语言。面向对象程序设计语言应该具备以下特征:(1)

它支持对象的概念(包括对象所有的特性,如封装等);(2)

它要求对象属于类;(3)

它提供继承机制。程序设计方法学0要点: (1)

面向对象的程序设计将数据和数据的操作放在一起,它将对象及对象的操作抽象成一种新的数据类型称为类。(2)

对象是其自身所具有的状态特征及可以对这些状态施加的操作结合一起所构成的独立实体。(3)

类是对一组客观对象的抽象,将该组对象共同特征集中起来。(4)

面向对象系统的特性是封装性、继承性、多态性。抽象:抽象分类从一组对象为起点,抽取公共的行为将其放到一个类中,不同类的对象具有不同的行为。程序设计方法学02.2设计模式与应用框架1.定义设计模式:设计模式用以解决在特定设计情况下出现的重复设计问题,并给出该问题的一种解决方案。2.应用框架:在某特定应用领域中,程序之间的共同结构。3.框架:是一个可复用的组件,它规定了应用的体系结构,阐明了整个设计、协作组件之间的依赖关系,责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为组件复用提供了上下文关系,因此通常组件库的大规模重用也需要框架。程序设计方法学02.2设计模式与应用框架4.设计模式与框架区别:(1)设计模式比框架抽象(2)一个框架含有一个或多个设计模式程序设计方法学02.3MVC设计模式1.MVC模式是起源于70年代的施乐PARC研究中心。2.MVC即Model-View-Controller的缩写,3.MVC模式是为了简化在许多应用程序中普遍存在的三类主要功能:1)在后台存储或远程系统中维护数据;2)建立最终用户的表示层;3)维护条件逻辑来决定哪一个屏幕将要显示给用户,错误发生时会发生什么,系统如何升级以及升级时会发生什么。程序设计方法学02.3MVC设计模式4.使用MVC应用程序被分成三个核心部件:模型、视图、控制器,它们各自处理自己的任务。

程序设计方法学0

2.3MVC设计模式1).模型(Model):是业务流程/状态的处理以及业务规则的制定,是应用程序的主体部分。模型表示业务数据,或者业务逻辑。2).视图(View)是应用程序中用户界面相关的部分,是用户看到并与之交互的界面代表用户交互界面。3).控制(Controller)为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。程序设计方法学0

2.3MVC设计模式5.处理过程程序设计方法学02.4Struts1.Struts的起源

Struts最早是作为ApacheJakarta项目的组成部分版本为Struts1.1,

下载。

程序设计方法学02.4Struts2.Struts体系结构

程序设计方法学02.4Struts3.作为一个MVC的框架,Struts对Model、View和Controller都提供了对应的实现组件

(1)Controller控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端。在Struts中Controller功能由ActionServlet和ActionMapping对象构成,核心是一个Servlet类型的对象ActionServlet,它用来接受客户端的请求。

程序设计方法学02.4Struts(2)

Model在Struts中,Model由一系列的JavaBean来实现,而且还可以自己定义业务处理的Bean。(3)ViewStruts应用中的View部分是通过JSP技术实现的。

程序设计方法学02.4Struts4.Struts工作流程

程序设计方法学02.4Struts5.一个实例

程序设计方法学0程序设计方法学0程序设计方法学02.4Struts6.Struts优点

struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。

优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。

页面导航,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

程序设计方法学0

2.4Struts7.Struts缺点

Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。

Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。

Struts从产生到现在逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的J2EEMVC实现方式。程序设计方法学0

2.4Struts8.Struts项目实施经验

1.首先需要有一个很好的整体规划,整个系统中包括哪几个模块。2.建议不要冒然采用Struts。3.Struts适合于各种大小的项目。

程序设计方法学0系统的内部状态,能够改变状态的行为。我们可以把状态信息当作名词(事物),把行为当作动词(事物状态的改变)。

决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的View组件。在Struts中,controller的基本组件是一个

ActionServlet类的servlet。这个servlet通过定义一组映射(由Java接口

ActionMapping描述)来配置。

通常使用JSP技术来构建。JSP页面包含称为“模版文本”的静态HTML(或XML)文本,加上插入的基于对特殊行为标记解释的动态内容。程序设计方法学02.5JSP技术1.JSP简介

JSP是JavaServerPages(Java服务器页面)的缩写,是由Sun公司在java语言上开发出来的一种动态网页制作技术.程序设计方法学02.5JSP技术2.JSP实现方式

程序设计方法学0程序设计方法学02.5JSP技术3.JSP特点1)应用程序内容与页面显示分离2)一次编写,到处运行3)强调可重用的组件4)采用标记简化页面的开发

程序设计方法学02.5JSP技术4.JSP开发环境的建立(J2SDK+Tomcat)

第一部分

JAVA环境安装

1)J2SDK(Java2SoftwareDevelopment)或者简称JDK(JavaDevelopmentKit)目前J2SDK的最新版本是1.4.2_01

下载地址:

2)安装

程序设计方法学02.5JSP技术3)

配置环境变量

4)新建系统变量5)建第一个系统变量:JAVA_HOME

值:F:\jdk1.46)建第二个系统变量:CLASSPATH

值:.;F:\jdk1.4\lib\tools.jar7)修改,不是新建。系统变量:PATH

的新值是在原有值前加上F:\jdk1.4\bin;8)测试j2sdk的安装与环境变量设置是否正确

程序设计方法学02.5JSP技术

程序设计方法学02.5JSP技术第二部分

Tomcat4.1安装

1、安装Tomcat

直接运行下载的jakarta-tomcat-4.0.1.exe,按照一般的Windows程序安装步骤即可安装好Tomcat,安装时它会自动寻找J2SDK的位置。例如安装到f:\tomcat4.1。

程序设计方法学02.5JSP技术

2、配置Tomcat的环境变量添加一个新的环境变量CATALINA_HOME,变量值为f:\tomcat4.1,添加方法同J2SDK环境变量的配置方法。

程序设计方法学02.5JSP技术

3、测试默认服务设置完毕后就可以运行Tomcat服务器了。用f:\tomcat4\bin\startup.exe启动Tomcat,用f:\tomcat4\bin\shutdown.exe关闭。启动Tomcat后,打开浏览器,在地址栏中输入(Tomcat默认端口为8080),如果在浏览器中看到Tomcat的欢迎界面,表示Tomcat工作正常。

程序设计方法学02.5JSP技术4、测试项目把刚才准备好的test.jsp放在f:\Tomcat\webapps\examples\jsp目录下,在地址栏中输入,如果浏览器中显示"HelloWorld!",则说明你的JSP环境配置成功了!

程序设计方法学02.5JSP技术1、查找资料,总结目前支持JSP的WEB服务器软件及应用服务器软件的优缺点。2、查找资料,对比JSP与ASP两种实现动态WEB站点的技术。3、配置建立JSP开发环境

程序设计方法学02.6JSP基本语法1、helloworld2、获取客户端IP3、传递动态参数

程序设计方法学02.6JSP基本语法1、JSP脚本元素2、JSP指令3、JSP动作元素

程序设计方法学02.6JSP基本语法1、JSP脚本元素包括:HTML注释隐藏注释声明表达式程序段

程序设计方法学02.6JSP基本语法1.1HTML注释:生成客户端能够看见的注释

语法:<!--comment[<%=expression%>]-->例1:<!--Thistheuserloginscreen-->例2:<!--2+3=<%=2+3%>-->

程序设计方法学02.6JSP基本语法1.2隐藏注释:包含在JSP脚本中,不会发给客户端

语法:<%--comment--%>例1:<%--这是隐藏的注释--%>

程序设计方法学02.6JSP基本语法1

温馨提示

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

评论

0/150

提交评论