两种主流的开发方法:结构化开发(C)、面向对象开发(C++、C#、Java)
结构化程序设计
结构化程序设计方法主张按照功能来分析系统需求,又被称为面向功能的程序设计方法。首先采用结构化分析(SA)、再用结构化设计SD(概要设计、详细设计)、最后用结构化编程(SP)来实现系统。
结构化程序设计的最小程序单位是函数,每个函数负责完成一个功能,接收输入数据-数据处理-输出结果。整个系统软件由一个个函数构成,只有唯一一个主函数是程序的入口,由主函数直接或间接调用其他函数,整个结构的设计采用的是自顶向下的方式。
缺点:
📍设计不够直观,与人的思维习惯不一致。需要把客观世界模型拆成一个个功能。
📍适应性差,扩展性不强。结构化设计采用自顶向下的设计方式,当需求改变,需要自顶向下地修改模块结构,维护成本高。
三种程序基本结构
顺序结构、选择结构、循环结构
循环结构分为当型、直到型,当型循环的循环体可能永远不会被执行,直到型的循环体至少被执行一次。
Java的方法体内也是由这三种程序结构组成。
面向对象
面向对象的最小程序单位是类,一个类可以生成系统中多个对象,这些对象直接映射成客观世界的各种事物,比如猫类的对象可以有:小花、小芳、小蓝多只猫。
类的定义=成员变量(字段、属性、状态) + 方法(行为)
java面向对象的三个基本特征:继承、多态、封装。
封装、继承和多态都是面向对象的三大特征。
📍封装:是指将对象的状态信息隐藏在对象内部,然后对外提供一些公共的方法来实现对内部信息的访问和操作。
📍继承:是指在已有类的基础上来建立新类。当子类继承父类后,子类能够获得父类的成员属性和成员方法,也能扩展自己的属性和方法。 ( 继承(和组合都)是实现复用的重要手段,也是实现多态的基础。 )
📍多态: 指不同子类型的对象能够对同一行为作出不同的响应。 分为编译时多态和运行时多态,编译时多态就是方法的重载,而运行时多态是方法重写。
运行时多态需要通过两个步骤:1、方法重写(继承/实现)2、 父类型引用子类型对象
注意:Java仅仅支持单继承,即只能有一个直接父类
面向对象与面向过程的区别
面向过程:以函数为中心,如 吃(猪八戒,西瓜)
面向对象:以对象为中心,如 猪八戒.吃(西瓜)
📍面向对象是把构成问题的事物分解成各个对象,在对象里面封装属性和行为,然后通过调用对象的方法来解决问题。
例子:大象里面封装了一个方法是大象进冰箱,冰箱里面分别封装了两个方法,开冰箱和关冰箱
优点:易维护、易复用、易扩展,更加符合人的思维方式
缺点:性能低,开销较大(因为类调用时需要实例化)
📍面向过程一般是分析解决问题的步骤,然后用一个个函数实现每个步骤,最后按照步骤依次调用这些函数来解决问题。
比如:1、打开冰箱 2、把大象放进冰箱3、关门
优点:性能高,开销小
缺点:没有面向对象易维护、易复用、易扩展。
UML统一建模语言
面向对象软件开发需要经过面向对象分析OOA、设计OOD、编程OOP三个阶段。
UML是用来描述、记录OOA和OOD的分析、设计结果的符号表示法,UML2.0包括多种正式图形,如类图、用例图、时序图、活动图等。
用例图
用例图用于描述系统提供的功能,每个用例代表一个功能模块。
用例图包括:用例(椭圆)、角色(人形符号)、用例与角色的关系(线段)、用例之间的关系(线段)。
![](https://i-blog.csdnimg.cn/blog_migrate/59c8b9773a9c8316069f9fb5bac470b1.png)
用例之间的关系:
①include包含,图中表示必须要先查看预约详情才能够进行预约挂号
②extend扩展,图中表示订单管理可能会进行查询订单
类图
类图用于表示系统中包含哪些实体,各实体之间如何关联。
类在类图上使用三个部分的矩形来描述,最上面部分显示类的名称,中间显示类的熟悉,下面显示类的方法。
![](https://i-blog.csdnimg.cn/blog_migrate/a2623459269e82c85a5ef54c0a8970c0.jpeg)
类之间的关系:
时序图
时序图通过描述对象之间发送消息的时间顺序来显示多个对象之间的动态协作。
时序图有两个维度:横轴表示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。
(1)抉择(Alt)
抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。
![](https://i-blog.csdnimg.cn/blog_migrate/c9a77d81d1778d3d54794af844961e15.jpeg)
(2)循环(Loop)
片段重复一定次数,可以在临界中指示片段重复的条件。
![](https://i-blog.csdnimg.cn/blog_migrate/9802b134c70f238be865f124029a4dc1.jpeg)