小菜鸟

java菜鸟号正在起航

面向对象:核心概念与分析设计流程

面向对象(Object-Oriented,OO)是一种以 “对象” 为核心的编程思想,强调通过封装、继承、多态等特性构建灵活、可复用的软件系统。以下从类的分类、多态类型、面向对象分析(OOA)和设计(OOD)四个维度展开详细说明:

类的三种类别:职责划分的核心

在面向对象系统中,类按职责可分为实体类、接口类(边界类)和控制类,三者分工明确,共同支撑系统功能:

1. 实体类(Entity Class)

  • 核心特征:映射现实世界中的具体实体,以属性(数据) 为核心,封装实体的静态特征。
  • 职责:存储和管理业务数据,不直接处理复杂逻辑。
  • 示例:
    • “学生” 类(属性:学号、姓名、专业、成绩);
    • “商品” 类(属性:ID、名称、价格、库存)。
  • 设计原则:属性应完整反映实体的核心特征,避免包含与业务逻辑相关的复杂方法。

2. 接口类(边界类,Boundary Class)

  • 核心特征:负责系统与外部环境的交互,以方法(行为) 为核心,定义交互规则。
  • 职责:
    • 接收外部输入(如用户操作、其他系统的数据);
    • 输出系统处理结果(如界面展示、数据反馈)。
  • 分类:
    • 人机接口:用户直接交互的组件(如登录窗口、按钮、菜单、二维码扫描界面);
    • 系统接口:与其他系统通信的组件(如 API 接口、数据库连接模块、第三方服务调用模块)。
  • 示例:
    • “登录界面” 类(方法:获取用户名、验证输入格式、显示错误提示);
    • “支付接口” 类(方法:发送支付请求、接收支付结果、解析回调数据)。

3. 控制类(Control Class)

  • 核心特征:协调实体类与接口类,封装业务逻辑和流程控制,是系统的 “大脑”。
  • 职责:
    • 接收接口类的输入,调用实体类的数据进行处理;
    • 维护业务流程的执行顺序(如订单生成→库存扣减→支付验证的串联)。
  • 示例:
    • “订单处理” 类(方法:创建订单、校验库存、触发支付);
    • “用户认证” 类(方法:验证账号密码、生成令牌、记录登录日志)。

三者协作关系

阅读全文 »

模块设计:高内聚低耦合的核心原则与实践

模块设计是结构化开发和面向对象开发中的核心环节,其目标是将系统分解为独立、可复用的模块,通过合理的模块划分和关系设计,提升系统的可维护性、可扩展性和开发效率。模块设计的核心原则是高内聚、低耦合,以下从设计准则、内聚类型、耦合类型三个维度详细解析.

模块设计的基本原则

模块设计需遵循以下关键准则,确保模块结构清晰、功能明确:

  1. 规模适中
    模块的大小应平衡 “可理解性” 和 “复用性”:过大的模块难以理解和维护,过小的模块会增加模块间的协作成本(如一个简单的 “加法” 功能无需拆分为多个模块)。
  2. 减少调用深度
    模块间的调用层次不宜过深(如避免 A 调用 B,B 调用 C,C 调用 D…… 的多层嵌套),过深的调用链会增加调试难度和系统复杂度。
  3. 扇入与扇出适中
    • 扇出:一个模块直接调用的其他模块数量(如模块 A 调用 B、C、D,则扇出为 3)。扇出过大意味着模块职责过多,扇出过小则可能拆分过细。
    • 扇入:调用该模块的上级模块数量(如 B、C 都调用 A,则扇入为 2)。扇入越大,说明模块复用性越高(如通用工具类的扇入通常较大)。
      一般建议扇出控制在 3~7 之间,扇入根据复用需求调整。
  4. 单入口、单出口
    模块应只有一个入口(被调用的起始点)和一个出口(执行结束的返回点),避免多入口导致的逻辑混乱(如函数中多个return语句需谨慎使用,确保流程清晰)。
  5. 作用域小于控制域
    • 作用域:模块内定义的变量、常量等可被访问的范围。
    • 控制域:模块直接或间接调用的所有模块范围。
      原则上,模块的作用域应局限于自身控制域内,即被访问的元素不应超出其调用链覆盖的范围,否则会导致依赖关系混乱。
  6. 功能可预测
    模块的输出应仅由输入决定,不受外部环境或执行顺序的干扰(如纯函数:相同输入始终返回相同输出),避免 “隐藏状态” 导致的不可控行为。

内聚类型:衡量模块内部元素的关联程度

内聚(Cohesion)是指模块内部各元素(语句、函数、数据)之间的关联强度,内聚度越高,模块的独立性越好。内聚类型从高到低可分为 7 类:

阅读全文 »

软件过程模型

瀑布模型(需求明确)

线性顺序,以文档为驱动,项目的阶段评审和文档控制为手段对开发过程作为指导。适用于软件需求明确,客户必须能够完整、正确、清晰的表达需求

瀑布模型

V模型

瀑布模型的变体,描述了质量保证活动和沟通、建模相关活动及早期构建相关的活动之间的关系

V模型

阅读全文 »

五大算法策略:核心思想、经典问题与适用场景

算法策略是解决问题的方法论,不同策略适用于不同类型的问题。掌握分治、贪心、动态规划、回溯、分支界限五大策略的核心特征,能帮助我们快速选择合适的算法思路,高效解决复杂问题。

分治法(Divide and Conquer):分而治之

核心特征

  • 问题拆分:将原问题拆分为规模更小、结构相同的子问题(子问题相互独立,无重叠)。
  • 递归求解:递归解决每个子问题,再将子问题的解合并为原问题的解。
  • 无重复计算:子问题独立,无需存储中间结果(与动态规划的核心区别)。

经典问题

  • 归并排序:将数组拆分为两个子数组,排序后合并(合并过程是关键)。
  • 快速排序:选基准元素拆分数组为左右两部分,递归排序后直接拼接(无需显式合并)。
  • 二分搜索:将有序数组拆分为左右两部分,通过比较目标值与中间值缩小范围。
  • 汉诺塔:将 n 个盘子的问题拆分为 n-1 个盘子的子问题,递归移动盘子。

适用场景

  • 问题可拆分为独立子问题,且子问题解法与原问题一致(递归结构清晰)。
  • 合并子问题的成本低于直接求解原问题(如归并排序的合并步骤复杂度为 O (n),整体效率优于 O (n²))。

贪心法(Greedy Algorithm):局部最优的累积

核心特征

阅读全文 »

软件生存周期

软件生存周期

1. 可行性研究阶段

  • 核心任务:明确软件要解决的问题,分析项目的可行性(包括技术可行性、经济可行性、操作可行性、时间可行性等)。
  • 输出成果:可行性研究报告,确定项目是否值得继续开发。

2. 需求分析阶段

  • 核心任务:详细收集和分析用户对软件的功能、性能、接口、数据等方面的需求,明确软件必须实现的目标。
  • 输出成果:需求规格说明书,作为后续设计和开发的依据。

3. 设计阶段(概要设计和详细设计)

  • 核心任务:根据需求规格说明书,将软件的功能和性能转化为具体的技术方案。通常分为概要设计(总体架构设计)和详细设计(模块内部实现设计)。
  • 输出成果:概要设计说明书、详细设计说明书、数据库设计说明书等。

4. 编码与单元测试阶段

  • 核心任务:开发人员根据详细设计文档编写代码,实现软件的功能模块;同时对每个单元(模块)进行测试,确保其符合设计要求。
  • 输出成果:可运行的代码、单元测试报告。

5. 集成与系统测试阶段

  • 核心任务:将各个单元模块逐步集成,形成完整的软件系统,并进行系统测试,验证软件是否满足需求规格说明书中的所有要求(包括功能、性能、安全性等)。
  • 输出成果:集成测试报告、系统测试报告、可交付的软件版本。

6. 部署与运行阶段

  • 核心任务:将经过测试的软件系统部署到用户的实际运行环境中,正式交付用户使用,并提供必要的培训和支持。
  • 输出成果:运行中的软件系统、用户手册、部署文档等。

7. 维护阶段

  • 核心任务:在软件运行过程中,根据用户反馈或环境变化,对软件进行修改和完善,包括纠错性维护(修复漏洞)、适应性维护(适应新环境)、完善性维护(增加新功能)和预防性维护(预防潜在问题)。
  • 输出成果:维护后的软件版本、维护记录报告。

8. 退役阶段

  • 核心任务:当软件不再满足用户需求或被新的软件替代时,停止其运行和维护,进行数据迁移、系统下线等收尾工作。
0%