结构化编程与面向对象编程案例
- 格式:pdf
- 大小:94.79 KB
- 文档页数:10
结构化方法和面向对象方法的对比1 结构化和面向对象的方法1.1 结构化方法结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界。
用结构化开发能提高软件的运行效率,且能够增加软件系统的可靠性。
结构是指系统内各个组成要素之间的相互联系、相互作用的框架。
结构化的系统分析设计方法是一种传统的系统开发方法。
针对软件生存周期各个不同的阶段,有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。
它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
1.1.1 结构化分析结构化分析是面向数据流进行需求分析的方法,主要采用数据流图DFD (Data Flow Diagram)来描述边界和数据处理过程的关系。
结构化分析的主要工作是使用数据流程图、数据字典、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。
1.1.2 结构化设计结构化设计是将数据流图表示的信息转换成程序结构的设计描述,和功能的实现方法,并且采用系统结构图表示系统所具有的功能和功能之间的关系。
结构化设计过程分两步完成,第一步以需求分析的结果作为出发点,构造出一个具体的系统设计方案,决定系统的模块结构(包括决定模块的划分、模块间的数据传递及调用关系)。
第二步详细设计,即过程设计。
在总体设计的基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图1.2 面向对象方法面向对象方法是从内部结构上模拟客观世界,其基本思想为:对象是对现实世界客观实体的描述,均由其属性和相关操作组成,是系统描述的基本单位。
面向对象方法更强调运用人类在日常的逻辑思维中经常采用的思想方法和原则,例如抽象、分类、继承、聚合、封装等,这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。
结构化编程和面向对象编程的对比例子结构化编程和面向对象编程是两种不同的软件开发方法论。
它们分别基于不同的思维方式和编码风格,用于解决复杂的问题和构建可维护和可扩展的软件系统。
在本文中,我将对结构化编程和面向对象编程进行全面评估,并通过对比和例子来阐述它们之间的不同。
让我们了解结构化编程。
结构化编程是一种以顺序、选择和循环为基础的编程范式。
它的核心概念是分解大任务为较小的可执行步骤,通过顺序执行、条件语句和迭代循环来实现。
结构化编程主张使用结构化语句,避免使用GOTO语句,以便使代码更易于理解和调试。
结构化编程的优点之一是它能够更好地控制程序流程,减少代码的复杂性和混乱性。
接下来,让我们转向面向对象编程。
面向对象编程是一种以对象、类和继承为基础的编程范式。
它的核心概念是将现实世界中的事物抽象为对象,并通过封装、继承和多态来组织和管理代码。
面向对象编程强调代码的可重用性、可维护性和扩展性。
通过将数据和操作结合到对象中,面向对象编程可以更好地模拟和解决现实世界中的问题。
现在,让我们通过一个例子来对比结构化编程和面向对象编程。
假设我们要编写一个汽车租赁系统。
在结构化编程中,我们可能会定义一些函数,如"calculateRentalCost"来计算租赁费用,"checkAvailability"来检查汽车是否可供租赁。
虽然这些函数会完成任务,但是在处理各种不同类型的车辆、计算费用的变化和管理客户租赁历史记录时可能变得复杂。
相反,在面向对象编程中,我们可以创建一个"Car"类,通过封装相关属性和方法,如"calculateRentalCost"和"checkAvailability",来管理汽车的租赁。
这样,我们可以更加灵活地处理不同类型的车辆,并且可以通过扩展和继承来增加新的功能。
结构化编程和面向对象编程都有各自的优点和适用场景。
结构化编程和⾯向对象编程结构化设计:结构化程序设计⽅法主张按功能来分析系统需求, 原则有⾃顶向下, 逐步求精, 模块化等.结构化程序设计⾸先采⽤结构化分析(SA)⽅法对系统进⾏需求分析, 然后采⽤结构化设计(SD)⽅法对系统进⾏概要设计,详细设计, 最后采⽤结构化编程(SP)⽅法实现系统.结构化程序设计按功能来把系统逐步细化, 因此⼜叫做⾯向功能的程序设计⽅法.结构化程序设计的每个功能都负责对数据的接收,处理,输出,这种⽅式⼜称为⾯向数据流的处理⽅式⽤DFD(数据流图)表⽰.结构化程序设计⾥最⼩的程序单元是函数.整个程序由⼀个个函数组成, ⽽整个程序的⼊⼝是⼀个主函数(main()), 由主函数调⽤其他函数,函数之间的依赖来构成整个程序的功能.结构化程序设计的局限性:设计不够直观,与⼈类的思维不⼀致.适应性差,可扩展性不强.程序的三种基本结构:结构化程序设计⾮常强调某个功能的算法.算法由⼀系列操作组成. 任何简单或复杂的算法都可以由顺序结构,选择结构,循环结构这三种基本结构来构成.顺序结构: 顺序结构表⽰程序中的各操作是按照它们在代码中的排列顺序依次执⾏的.选择结构: 选择结构表⽰程序的处理需要根据某个特定的条件选择其中的⼀个分⽀执⾏(单选,双选,多选).循环结构: 循环结构表⽰程序反复执⾏某个或某些操作,直到某条件为假(或为真)时才停⽌循环(直到循环, 当循环).当型循环: 当条件为真时循环. 直到型循环: 直到条件为假时结束循环.结构化程序设计中的任何结构都具有唯⼀的⼊⼝和出⼝. java的⽅法⾥⾯则是⼀种结构化设计.⾯向对象设计:⾯向对象的基本思想是使⽤类, 对象, 继承, 封装, 消息等基本概念进⾏程序设计.在系统构造中尽可能的利⽤⼈类的⾃然思维⽅式,强调以现实世界中的事物(对象)为中⼼来思考,认识问题,并根据这些事物的本质特征,把它们抽象表⽰为系统中的类.这使得软件系统的组件可以直接的映像到客观世界,并保持客观世界中事物及其相互关系的本来⾯貌.⾯向对象⽅法的三个基本特征:封装性:将对象的实现细节隐藏起来, 通过⼀些公共的接⼝⽅法来供外部调⽤对象的功能.继承性:是⾯向对象实现的的重要⼿段,⼦类继承⽗类, ⼦类直接获得⽗类的⾮private属性和⽅法.多态性:⼦类对象可以赋值给⽗类对象引⽤, 但运⾏的时候仍然表现出⼦类的⾏为特征,同⼀个类型的对象在执⾏同⼀个⽅法时, 可能表现出不同的特征.⾯向对象还⽀持如下特点:对象是⾯向对象最基本的概念, 它的基本特点有:标识唯⼀性,分类性,多态性,封装性,模块独⽴性好.类是具有公共属性公共⽅法的⼀类事物.类是对象的抽象, 对象是类的实例化. 类的封装提⾼了类的内聚性, 降低了对象之间的耦合性.对象间的相互合作需要⼀个机制协助进⾏, 这样的机制称为"消息", 消息是⼀个实例与另⼀个实例之间的相互通信的机制.⾯向对象⽅法中,类之间的共享属性和共享⽅法的机制称为继承.继承具有传递性.继承分为多继承和单继承(java不⽀持多继承)."基于对象"和⾯向对象⾯向对象和"基于对象"都实现了"封装"的概念, 但是⾯向对象实现了"继承和多态", ⽽"基于对象"没有实现.⾯向对象的程序员按照分⼯分为: 类库的创建者和类库的使⽤者。
面向对象典型案例
面向对象编程是一种编程方法论,它的核心思想是将现实世界中的事物抽象成对象,通过对象之间的交互来实现程序的功能。
下面我们来介绍一些典型的面向对象案例。
1. 银行账户管理系统
银行账户管理系统是面向对象编程的典型案例之一。
在这个系统中,每个账户都是一个对象,它有自己的属性(如账号、余额、户主姓名等)和方法(如存款、取款、查询余额等)。
通过对象之间的交互,可以实现账户的管理和操作。
2. 游戏开发
游戏开发也是面向对象编程的一个重要应用领域。
在游戏中,每个角色、道具、场景等都可以抽象成一个对象。
通过对象之间的交互,可以实现游戏的运行和交互。
3. 汽车租赁系统
汽车租赁系统也是一个典型的面向对象案例。
在这个系统中,每辆汽车都是一个对象,它有自己的属性(如车型、租金、出租状态等)和方法(如租车、还车、查询车辆列表等)。
通过对象之间的交互,可以实现汽车租赁的管理和操作。
4. 医院管理系统
医院管理系统也是一个常见的面向对象案例。
在这个系统中,每个病人、医生、药品等都可以抽象成一个对象。
通过对象之间的交互,可以实现医院的管理和操作,如病人挂号、医生诊断、药品配药等。
总结:面向对象编程是一种非常实用的编程范式,它可以提高程序的可维护性、可扩展性和可重用性。
以上介绍的典型案例只是冰山一角,面向对象编程在各个领域都有着广泛的应用。
Java面向对象编程实战案例1. 简介Java面向对象编程(Object-Oriented Programming,OOP)是一种常用的编程范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。
本文将介绍一些实战案例,展示Java面向对象编程的实际应用。
2. 案例一:学生管理系统学生管理系统是一个典型的Java面向对象编程案例,它常用于学校、培训机构等管理学生信息。
在这个案例中,可以定义一个Student类,包含学生的姓名、年龄、学号等属性,以及学生的增删改查等方法。
可以使用面向对象的思想,将学生信息封装到一个对象中,并使用集合类来管理多个学生对象。
3. 案例二:图形计算器图形计算器是另一个有趣的Java面向对象编程案例。
可以定义一个Shape类作为图形的基类,包含计算图形面积和周长的方法,并派生出Circle、Rectangle和Triangle等子类,分别表示圆形、长方形和三角形。
通过面向对象的继承特性,可以调用对应子类的计算方法,根据用户的输入来计算所需图形的面积和周长。
4. 案例三:银行账户管理系统银行账户管理系统是一个常见的Java面向对象编程案例,用于管理银行的账户信息。
可以定义一个Account类,包含账户的姓名、余额、存取款等方法,并通过封装特性将账户信息隐藏在对象中。
可以使用ArrayList类来存储多个账户对象,实现对账户信息的管理和操作。
5. 案例四:图书馆管理系统图书馆管理系统是另一个典型的Java面向对象编程案例,用于管理图书馆的图书信息。
可以定义一个Book类,包含图书的书名、作者、价格等属性,并封装对应的get和set方法。
可以使用HashMap类来存储图书编号和对应的图书对象,实现图书的检索和借还功能。
还可以定义一个User类表示图书馆的用户,包含用户的姓名、借书数量等属性。
6. 案例五:游戏角色管理系统游戏角色管理系统是一个有趣的Java面向对象编程案例,用于管理游戏中的角色信息。
结构化⽅法与⾯向对象⽅法之应⽤⽐较结构化⽅法与⾯向对象⽅法是最具代表性的,也是⽬前应⽤最为⼴泛的软件开发⽅法。
本⽂将分别对两者进⾏介绍和⽐较。
⼀、结构化⽅法 结构化⽅法(Structured Methodology)是计算机学科的⼀种典型的系统开发⽅法。
它采⽤系统科学的思想⽅法,从层次的⾓度,⾃顶向下地分析和设计系统。
基本思想是基于功能的分解和抽象,形成系统的模块结构,从⽽针对每个模块进⾏结构化设计及结构化编程来完成系统的开发。
结构化⽅法由结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)三者组成。
(⼀)结构化分析 结构化分析是⾯向数据流进⾏需求分析的⽅法。
采取的⼯具主要有数据流图、数据字典、实体关系图等。
数据流图(Data Flow Diagram,DFD)是⼀种分层的建⽴系统逻辑模型的⽅法,模拟系统的⼀个⼤致边界,并展⽰系统和外部的接⼝、数据的输⼊输出以及数据的存储。
它有四个基本要素:数据流、实体、数据加⼯和数据存储。
数据流图分层的思想体现为,⾸先确定系统和系统涉及到的外部实体之间的数据流,画出第0层数据流图(顶层图);其次在顶层图的基础上对系统的主要功能进⾏分析,抽象出功能作为系统的加⼯,确定实体和加⼯之间的数据流,将顶层图细化为第1层数据流图;依此类推,之后不断细化得到第2、3乃⾄更多层的数据流图,直到不能再细化为⽌。
数据字典(Data Dictionary)是⼀个包含所有系统数据元素定义的仓库。
数据元素的定义必须是精确的、严格的和明确的。
⼀个实体⼀般应包含以下⼏个部分的内容:名字、别名、⽤途、内容描述、备注信息。
实体关系图(E-R图)是数据库设计的基础,是指以实体、关系、属性三个基本概念概括数据的基本结构,从⽽描述静态数据结构的概念模式。
(⼆)结构化设计 结构化设计是指在结构化分析的基础上,映射分析模型到设计模型,得到系统的模块结构、数据库结构等。
如在数据流图的基础上,进⾏相应的变换分析和事务分析得到系统的模块结构,在ER模型的的基础上,进⾏数据库设计得到数据库结构。
面向对象案例在面向对象的编程中,我们经常会遇到各种不同的案例,这些案例涉及到了对象、类、继承、多态等概念的应用。
下面,我将通过几个具体的案例来说明面向对象编程的应用。
案例一,图书管理系统。
假设我们需要设计一个图书管理系统,这个系统需要包括图书的借阅、归还、查询等功能。
在面向对象的设计中,我们可以将图书、读者、图书管理员等抽象成对象,然后通过类来描述它们的属性和行为。
比如,我们可以设计一个Book类来表示图书,包括书名、作者、出版社等属性,以及借阅、归还等行为;再设计一个Reader类来表示读者,包括姓名、借阅的图书等属性,以及借阅、归还等行为;还可以设计一个Librarian类来表示图书管理员,包括姓名、管理的图书等属性,以及借阅、归还等行为。
通过这样的设计,我们可以很好地模拟出一个图书管理系统,并且可以方便地对其进行扩展和维护。
案例二,银行账户管理系统。
另一个常见的案例是银行账户管理系统。
在这个系统中,我们需要对账户进行存款、取款、查询等操作。
同样地,我们可以将账户、客户、银行职员等抽象成对象,然后通过类来描述它们的属性和行为。
比如,我们可以设计一个Account类来表示账户,包括账号、余额等属性,以及存款、取款等行为;再设计一个Customer类来表示客户,包括姓名、账户等属性,以及存款、取款等行为;还可以设计一个Banker类来表示银行职员,包括姓名、管理的账户等属性,以及存款、取款等行为。
通过这样的设计,我们可以很好地模拟出一个银行账户管理系统,并且可以方便地对其进行扩展和维护。
案例三,汽车租赁系统。
最后,我们来看一个汽车租赁系统的案例。
在这个系统中,我们需要对汽车进行租赁、归还、查询等操作。
同样地,我们可以将汽车、租户、租赁员等抽象成对象,然后通过类来描述它们的属性和行为。
比如,我们可以设计一个Car类来表示汽车,包括车牌号、品牌、型号等属性,以及租赁、归还等行为;再设计一个Tenant类来表示租户,包括姓名、租赁的汽车等属性,以及租赁、归还等行为;还可以设计一个RentalAgent类来表示租赁员,包括姓名、管理的汽车等属性,以及租赁、归还等行为。
1、结构化、⾯向对象程序设计差别、类基本概念1、⾯向对象程序设计与结构化程序设计的优缺点对⽐(1)结构化程序(C程序为例)的特点程序 = 数据结构 + 算法程序由全局变量以及众多相互调⽤的函数组成,算法以函数的形式实现,⽤于对数据结构进⾏操作。
(2)结构化程序设计缺点①结构化程序设计中,函数和其所操作的数据结构,没有直观的联系。
随着程序规模的增加,程序逐渐难以理解,很难⼀下⼦看出来:某个数据结构到底有哪些函数可以对它进⾏操作?某个函数到底是⽤来操作哪些数据结构的?任何两个函数之间存在怎样的调⽤关系?②结构化程序设计没有“封装”和“隐藏”的概念。
③要访问某个数据结构中的某个变量,就可以直接访问,那么当该变量的定义有改动的时候,就要把所有访问该变量的语句找出来修改,⼗分不利于程序的维护、扩充。
④难以查错,当某个数据结构的值不正确时,难以找出到底是那个函数导致的。
⑤重⽤:在编写某个程序时,发现其需要的某项功能,在现有的某个程序⾥已经有了相同或类似的实现,那么⾃然希望能够将那部分代码抽取出来,在新程序中使⽤。
⑥在结构化程序设计中,随着程序规模的增⼤,由于程序⼤量函数、变量之间的关系错综复杂,要抽取这部分代码,会变得⼗分困难。
软件业的⽬标是更快、更正确、更经济地建⽴软件。
总之,结构化的程序,在规模庞⼤时,会变得难以理解,难以扩充(增加新功能),难以查错,难以重⽤。
违背了软件设计的⽬标。
(3)⾯向对象程序设计的特点⾯向对象的程序设计⽅法,能够较好解决上述问题。
⾯向对象的程序 = 类 + 类 + …+ 类设计程序的过程,就是设计类的过程。
(4)⾯向对象的程序设计⽅法:将某类客观事物共同特点(属性)归纳出来,形成⼀个数据结构(可以⽤多个变量描述事物的属性);将这类事物所能进⾏的⾏为也归纳出来,形成⼀个个函数,这些函数可以⽤来操作数据结构(这⼀步叫“ 抽象”)。
然后,通过某种语法形式,将数据结构和操作该数据结构的函数“捆绑”在⼀起,形成⼀个“ 类”,从⽽使得数据结构和操作该数据结构的算法呈现出显⽽易见的紧密关系,这就是“封装” 。