❤❤❤❤
面向对象 = 对象 + 分类 + 继承 + 通过消息的通信
1、对象:属性(数据)+方法(操作)+对象
2、消息:对象间通信的一种构造
3、类:抽象,类(实体类/控制类/边界类)
4、继承:复用机制
5、多态:不同对象收到同样的消息产生不同的结果,多态实质上是将子类的指针对象或者引用对象传递给父类指针对象后,通过这个父类指针对象调用的函数(此函数在父类中声明为虚函数,且在各个子类中重写这个函数),不是父类中定义的,而是传递进来的子类对象中重写的函数。
(软设考试中对于多态分类只出现过过载多态-
过载多态:同一个名字在不同的上下文中所代表的含义不同)。
6、动态绑定:根据接收对象的具体情况将请求的操作与实现的方法进行连接(运行时绑定)。
❤❤❤
1、认定对象
2、组织对象
3、对象间的相互作用
4、基于对象的操作
❤❤❤
1、面向对象设计的活动
(1)识别类及对象
(2)定义属性
(3)定义服务
(4)识别关系
(5)识别包
2、面对对象设计的原则
(1)单一职责原则:设计目的单一的类
(2)开放-封闭原则:对扩展开放,对修改封闭。
(3)李氏(Liskov)替换原则:子类可以替换父类。
(4)依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。
(5)接口隔离原则:使用多个专门的接口比使用单一的总接口要好。
(6)组合重用原则:要尽量使用组合,而不是继承关系达到重用目的。
(7)迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解。
(8)重用发布等价原则:重用的粒度就是发布的粒度
(9)共同封闭原则:包中的所有类对于同一性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包里的所有类产生影响,而对于其他的包不造成任何影响。
(10)共同重用原则:一个包里的所有类应该是共同重用的。如果重用了包里的一个类,那么就要重用包中的所有类。
(11)无环依赖原则:在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的无环图形。
(12)稳定依赖原则:朝着稳定的方向进行依赖。
(13)稳定抽象原则:包的抽象程度应该和其稳定程度一致。
1、类: 具有实例化功能
2、继承和类层次结构:子类和父类
3、对象、消息传递和方法:对象之间进行通信的一种构造叫作消息。消息是异步通信的(消息传递:接收到信息的对象经过解释,然后予以响应)
4、对象自身引用:关键字this
5、重置:在子类中重新定义父类中已经定义的方法
6、类属类:类的模板
7、无实例的类:抽象类
从底层开始,从单元测试,综合测试到系统测试。
❤❤❤❤❤
结构事物、行为事物、分组事物、注释事物
❤❤❤❤❤
对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。
交互图展现了一种交互,它由一组对象或参与者以及它们之间可能发送的消息构成。交互图专注于系统的动态视图。
是强调消息的时间次序的交互图。有生命线和控制焦点,是以时间为顺序组织的对象之间的交互活动
强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构(关系)。
状态图描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。它对于接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为,这非常有助于对反应式系统建模。
活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程。
构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体。
部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。
(1)模式名称
(2)问题
(3)解决方案
(4)效果
❤❤❤❤❤
1、抽象工厂模式(Abstract Factory)
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类【生产成系列对象】
2、生成器模式(Builder)
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示
3、工厂方法模式(Factory Method)
定义一个创建对象的接口,但由子类决定需要实例化哪一个类。 工厂方法使得子类实例化的过程推迟
4、原型模式(Prototype)
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象
5、单例模式(Singleton)
保证一个类只有一个实例,并提供一个访问它的全局访问点
1、适配器模式(Adapter)
将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作
2、桥接模式(Bridge)
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化
3、装饰模式(Decorator)
动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活
4、外观模式(Facade)
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用
5、享元模式 (Flyweight)
提供支持大量细粒度对象共享的有效方法
6、代理模式(Proxy)
为其他对象提供一种代理以控制这个对象的访问
1、职责链模式(Chain of Responsibility)
通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中
传递请求,直到有一个对象处理这个请求
2、命令模式(Command)
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持
可撤销的操作
3、解释器模式(Interpreter)
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子
4、迭代器模式(Iterator)
提供一种方法来顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示
5、中介者模式(Mediator)
用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以
独立地改变对象间的交互
6、备忘录模式(Memento)
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后
将该对象恢复到原先保存的状态
7、观察者模式(Observer)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并
自动更新
8、状态模式(State)
允许一个对象在其内部状态改变时改变它的行为
9、策略模式(Strategy)
定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的
用户而变化
10、模板方法模式(Template Method)
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新
定义算法的某些特定步骤
11、访问者模式(Visitor)
表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的
新操作