![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件构造
文章平均质量分 79
Unstoppable~~~
Hiter
展开
-
java中的异常
一、基本概念Java中Exception可以被分为两个部分,蓝色的运行时异常和绿色的其他异常。运行时异常:由程序员在代码里处理不当造成,在源代码中引入了故障,而如果在代码中提前进行验证,这些故障就可以避免。动态类型检查的时候会发现这种异常,而一旦出现,代码就必然有错误,可以通过调试解决。其他异常:由外部原因造成,程序员无法完全控制的外在问题所导致的,即使在代码中提前加以验证,也无法完全避免失效发生在java中有三种处理机制:Declaring exceptions (throws)声明“本方法可原创 2021-07-06 08:56:54 · 90 阅读 · 0 评论 -
程序可维护性
一、概念1.什么是软件维护在软件发布后,修改软件以修正错误 和提升性能维护不只是运维工程师的工作软件维护不仅仅是运维工程师的工作,而是从设计和开发阶段就开始了设计和开发者需要考虑软件未来的变化和扩展设计方案的“easy to change”这也就是我们说的软件构造的可维护性、可扩展性和灵活性。面向可维护性的软件构造的例子模块化、OO设计原则、OO设计模式、基于状态的构造技术、表驱动的构造技术、基于语法的构造技术软件演化:对软件进行持续的更新软件的大部分成本来自于维护阶段软件生命周期中原创 2021-06-30 16:21:23 · 1692 阅读 · 0 评论 -
Java中的委托机制
一、引入如上图所示,我们需要构造一个排序器,并改变默认排序方法。已经可以看到待排序的对象类型为Edge,成员变量有,s,t,weight。我们无法确定排序的具体标准。需要先定义一个实现类EdgeComparator来实现接口Comparator,在这个实现类中对compare方法进行重写,将排序规则改为weight的升序排列。然后在sort方法中以EdgeComparator创建一个comparator类型的对象。并委托使用排序方法。Collections.sort(edges, comparator)原创 2021-06-29 20:48:38 · 2459 阅读 · 0 评论 -
类型擦除及通配符(由LSP原则引发的探究)
一、什么是协变与反协变图中从上到下的关系就被称为协变:父类型到子类型:越来越具体specific返回值类型不变或变得更具体;异常的类型也是如此。父类型à子类型:越来越具体specific。参数类型:要相反的变化,要么不变或越来越抽象二、泛型不是协变的我们观察上面 的两个说法,ArrayList 是List的子类但是List 不是 List的子类。这是因为类型参数的类型信息在代码编译完成后被编译器丢弃;因此该类型信息在运行时不可用。这一过程叫做类型擦除。从这里开始我们进一步对泛型和类型擦除进原创 2021-06-29 17:00:16 · 156 阅读 · 0 评论 -
面向可复用的软件构造技术
一、软件复用性软件复用分为两个方面:面向复用编程(开发出可复用的软件)和基于复用编程(利用已有的可复用软件搭建应用系统) ,从而降低成本和开发时间,实现标准化,并让系统更加可靠、稳定。高复用性的软件应简单、可移植性和兼容性好、灵活、可扩展、通用和参数化、模块化、将变化限制在局部、稳定。要考虑复用的机会有多频繁、代码有多大。二、可复用性的层次和形态1.概念:最主要的复用是在代码层面,但是软件构造过程中的任何实体都可能被复用(需求、设计、规约、数据、测试用例、文档)2.两种分类:白盒复用:源代码原创 2021-06-28 21:07:29 · 404 阅读 · 0 评论 -
软件构造之ADT(抽象数据类型)
一、总述 传统的数据类型仅仅关注数据的具体表示形式,而抽象数据类型关注的则是“作用于数据上的操作”,程序员和用户无需关心数据如何具体存储,只需要设计和使用操作即可。这一点和面向对象的编程思维也是紧密相连的。(抽象、模块化、封装、信息隐藏、关注点分离(模块具有单独的责任,不要将一个责任分散在不同的模块中))。二、类型和操作的具体分析 在这里我们将抽象操作类型分为三类: 1.Creators(构造器):给入一个或多个别的类型的对象,生成一个此类对象。 具体例子可以参考 构造器 Per原创 2021-05-24 11:08:53 · 447 阅读 · 0 评论