面向对象设计

UML:同一建模语言
软件工程:
针对软件工程生命周期全过程及其每个具体阶段的工程方法、技术细则、文档规范、技术支持、管理制度、人员组织以及质量保证体系等,软件产品是这些文档的总和,而不仅仅是程序。
软件工程三要素:
方法:完成软件开发的各项任务的技术方法,为软件开发提供如何做的技术
工具:为运用方法而提供的自动的或半自动的软件工程的支撑环境
过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤,如何将软件工程方法与软件工具相结合,合理、及时地进行软件开发
我们在项目中采用的方法、工具、过程
方法:面向对象的方法
工具:EA
过程:基于原型的增量迭代软件开发过程
软件生命周期:
寻找商机
产品:指的是没有需求明确方,指自己将东西生产出来投放到市场上
项目:指的是专门为某个客户定制的,有明确的要求
可行性分析阶段
本阶段就是指方案是否可以执行,如考虑法律法规、经济可行性、技术可行性、操作可行性等等—>主要成果:可行性报告
需求分析阶段
本阶段就是指搞清楚用户需要什么东西,包括了功能需求以及非功能需求—>主要成果:软件需求分析说明书
参与角色:系统分析师,UI工程师,测试人员(将所有的需求进行量化)
设计—>主要成果概要设计说明书,详细设计说明书,数据库设计说明书
概要设计:设计程序的结构(由架构师或者项目经理完成)——开发模式、结构设计(三层模式)、实体抽取
详细设计:一般来说是由项目经理或者是经验老道的资深人员参与设计——–Bean类、接口(业务层和持久层)、数据库表设计
数据设计:一般来说是由专人来设计的(DBA)
实现(开发)阶段
也就是编码阶段,一般来说程序员和测试员(单元测试、回归测试、继承测试)来完成
测试阶段
性能测试、压力测试、用户环境测试、
用户培训
告诉用户该怎么使用
试运行、验收
维护–>利用维护找到用户另外需求,勾引二次开发
统一建模语言:UML
他是专门用来进行软件系统设计和架构建模的一门可视话语言
UML类图:
最上面是类,下面是属性,最下面是方法,减号表示private 加号表示public 抽象用斜体表示
Has–a 聚合,是可以分割的
Contains–a 组合,是不可以分割的
Use – a 依赖—>局部
Java面向对象的设计原则
如何衡量软件设计的质量
(内聚度:该谁做的事情,自己做,不要抛给其他人
耦合度:多个方法的相互协作,协作层次越浅越好,也就是说高内聚,底耦合)

    好的设计是:
        可读性-->软件的设计文档是否是被其他程序员轻易理解
        可复用性-->软件的结构、类、组件等单元能否很容易被本项目的其他部分或者其他项目复用
        可扩展性-->软件面对需求时,功能或性能扩展的难以程度
        可维护性-->软件维护(主要是指软件错误的修改、遗漏功能的添加等)的难易程度
    四个标准归纳起来就是内聚和耦合
        内聚度:表示一个应用程序的单个单元所负责的任务数量和多样性。内聚度与单个类或者单个单元相关
        好的软件的内聚度应该是做到搞内聚
            理想状态下,一个代码单元应该负责一个内聚的任务,也就是说一个任务可以看做是一个逻辑单元,一个方法应该实现一个逻辑操作,一个类应该代表一种类型的实体
            内聚原则背后的主要原因是重用。遵循该规则的另一个优点是,当一个程序的某些方面需要做出改变时,我们能够在相同单元中找到所相关的部分
        耦合度:表示类与类之间的紧密程度
            耦合度决定了变更以个程序的容易成都
        高内聚,底耦合 是所有优秀软件设计的特征
            在设计时遵循一定的原则:
                类的职责是由该类的对象在系统中的角色所决定的
                1、单一职责原则:所有的对象都应该有单一的职责,它提供所有的服务都仅围绕这个职责。也就是说,一个类应该仅有一个引起它变化的原因,永远不要让一个类存在多个改变的理由。这里的单一指的是这个类只做一件事情
                2、开闭原则:对扩展开放,修改关闭。模块的行为可以扩展,当应用的需求改变时,可以对模块进行扩展,以满足新的需求。但是不必改动源代码或二进制
                配置文件的出现就是为了开闭原则。其他设计原则是实现开闭原则的手段和工具
                实现开闭原则的关键在抽象化。
                3、里氏替换原则:在一个项目中,判断一个是否该做继承的时候使用的一种原则。 在一个软件系统中,子类应该能够完全替换任何父类能够出现的地方,并且经过替换后,不会让调用父类的客户程序从行为上有任何改变
                4、依赖倒转原则:指两个模块之间的依赖关系倒置为依赖抽象类或接口
                高层模块不应该依赖于底层模块,二者都应该依赖于抽象
                抽象不应该依赖与细节,细节应该依赖于抽象
                分层的时候,低层设计接口或抽象类与高层绑定,遵循的是依赖倒转原则,高层不应该去绑定低层的实现,而是绑定低层的抽象。(面试常问)
                5、组合/聚合复用原则:指要尽量组合/聚合来达到复用的目的,而不是用继承来达到目的。
                has---a  和  contains---a
                组合/聚合的好处:
                    新对象存取成分对象的唯一方法是通过成分对象的接口
                    这种对象的复用是黑箱复用,因为成分对象的内部实现细节对于新的对象是看不见的
                    这种复用的依赖更小
                    新对象可以在运行的时候动态的引用于成分对象类型相同的对象
                继承复用的优点:
                    新的实现较为容易,因为超类的大部分功能可以通过继承关系自动进入子类
                    修改或者扩展继承而来的实现比较容易
                继承复用的缺点:
                    继承复用破坏包装,将超类的实现细节暴露给子类超类的内部细节常常对子类是透明的,白箱复用
                    超类的实现发生了改变,子类的实现也不得不改变。
                    超类继承而来的是静态的,不可能在运行时间内发生改变。因此没有足够的灵活性。
                6、接口隔离原则:就是尽量定义小接口,尽量少的定义大接口
                7、迪米特法则:一个软件实体应该尽可能少的与其他实体发生相互作用

创建型设计模式(套路)
设计模式(公认的有23种):针对某个具体的问题或者场景做出的代码级别的设计。是一个微观的
创建模式:创建某种特殊的对象、用一种特殊的方式来创建对象
结构模式:
行为模式:就是让一些类具有一些特有的行为
架构模式:是一种宏观的,它主要是针对工程中的类与接口之间的关系进行一个搭建与设计。比如三层架构就是一种–>表示层,业务层,持久层

单例模式(singleton)
    学习模式方式:1.清楚在什么场景用  2.这个模式所提出来的解决方案(代码)  3.学会对比方式的优劣
    当需要设计一种特殊类---->能且只能产生一个对象的时候使用单例模式
工厂模式:就是集中创建实例对象,将生产对象的类与使用对象的类进行一个分离
        简单工厂变化的是商品,工厂方法变化点在工厂身上,抽象工厂是两个变化点都要考虑
原型模式(Prototype):根据一个以有的对象,产生一个跟他长的一模一样的对象
    浅克隆:只克隆一层
    深克隆:用序列化和反序列化
装饰器模式(decorator)

三层架构:
表示层:
类:用户交互界面展示(frame包)
按功能模块在分包
业务层:
类:用来做业务处理(service包)
(数据传递对象)(bean包,只有属性,方法在业务层里,将属性和方法分开,方便并排开发)
数据访问层(持久层):(dao包)
类:完成与数据库的交互(CRUD)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值