软件构造复习Lab3(1)

临近期末复习,光看教材让人毫无头绪,故借再次分析和总结以往做过的实验来巩固知识要点。下面是我重温Lab3的时候的思考与心得体会。


Lab3:

目标分析

本次实验覆盖课程第 4-11 讲的内容,目标是编写具有可复用性和可维护性的
软件,主要使用以下软件构造技术:
⚫ 子类型、泛型、多态、重写、重载
⚫ 继承、代理、组合
⚫ 语法驱动的编程、正则表达式
⚫ API 设计、API 复用
本次实验给定了三个具体应用(值班表管理、操作系统进程调度管理、大学
课表管理),学生不是直接针对每个应用分别编程实现,而是通过 ADT 和泛型等
抽象技术,开发一套可复用的 ADT 及其实现,充分考虑这些应用之间的相似性
和差异性,使 ADT 有更大程度的复用(可复用性)和更容易面向各种变化(可
维护性)。

知识点:

对应期末复习的第9-12章节内容,
在这里插入图片描述
在这里插入图片描述

LSP原则:

  1. 子类可以增加方法,但是不能删除方法
  2. 子类型需要实现抽象类型中所有未实现的方法
  3. 子类型中重写的方法必须有相同类型的返回值
  4. 子类型重写的方法必须使用同样类型的参数
  5. 子类型中重写的方法不能抛出额外的异常
    在这里插入图片描述
    要求更弱的前置条件与更强的后置条件
    在这里插入图片描述
    协变
    在这里插入图片描述
    反协变
    在这里插入图片描述
    泛型中通配符
    我们在定义泛型类,泛型方法,泛型接口的时候经常会碰见很多不同的通配符,比如 T,E,K,V 等等,这些通配符又都是什么意思呢?

常用的 T,E,K,V,?
本质上这些个都是通配符,没啥区别,只不过是编码时的一种约定俗成的东西。比如上述代码中的 T ,我们可以换成 A-Z 之间的任何一个 字母都可以,并不会影响程序的正常运行,但是如果换成其他的字母代替 T ,在可读性上可能会弱一些。通常情况下,T,E,K,V,?是这样约定的:

?表示不确定的 java 类型

T (type) 表示具体的一个java类型

K V (key value) 分别代表java键值中的Key Value

E (element) 代表Element在这里插入图片描述
如果子类只需要用到父类中的一小部分方法,那么可以不通过继承,而使用委派机制实现,从而避免继承大量无用方法
在这里插入图片描述
示例:
在这里插入图片描述

composite Rues Principle
(CRP)
组成优先于继承

OO Design Principles: SOLID
在这里插入图片描述
语法和正则表达式
在这里插入图片描述
连接,重复和选择
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设计模式
在这里插入图片描述
创建型模式
工厂方法模式:
Facotory method
在这里插入图片描述

结构型模式

Adapter适配器模式
在这里插入图片描述

Decorator

行为类模式
Strategy
Template method
Iterator
Visitor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值