石家庄全网推广/湖南有实力seo优化
面向对象基础
(1)类
类分为三种:实体类(世间万物)、接口类(又称边界类,提供用户与系统交互的方式)、控制类(前两类之间的媒介)。
对象:由对象名+数据(属性、状态)+操作(行为、函数、方法)组成。
消息:对象之间进行通信叫做消息,例如a.func(b),即对象.消息(外界信息)。
重载:方法名相同,参数数量或参数类型不同或参数类型相同排列顺序不同。
(2)面向对象三大特征
封装
对象将自身内部复杂的属性和行为隐藏起来,成为一个整体,将使用者和生产者隔离。
继承
在定义和实现一个类的时候,可以在某个已存在类的基础上进行,将该类中的内容为自己所用,并可以增加新内容,实现类之间数据和方法的共享。
多态
不同对象收到同一消息,可能做出不同形为。用户发出一个通用消息,具体实现细节由接收对象自己决定。多态的实现受继承的支持,通用功能的消息放在较高层次,具体功能的不同实现放在较低层次。
参数多态:用途最广,最纯的多态。
包含多态:子类型化,即一个类型是另一个类型的子类型。
过载多态,同一个名字在不同上下文中含义不同。
强制多态。
动态绑定:运行时,静态绑定:编译时。
(3)面向对象五大设计原则
单一设计原则
一个类只有一个职责,即一个类只有一个引起他变化的原因。
开闭原则
软件实体(类、模块、函数)是可以拓展的(开放),但是不可以修改的(关闭)。
里氏替换原则
子类应该可以替换父类,即父类可以出现的地方,子类也可以出现。
依赖倒置原则
抽象不依赖于细节(实现),细节应依赖于抽象。即高层模块不依赖低层模块,二者都依赖于抽象。
接口分离原则
依赖于抽象,不依赖于具体。
(4)两大补充设计原则
共同重用原则
重用包中一个类,就要重用所有类。
共同封闭原则
一个变化对一个包产生影响,整个包中的类都要被影响,该包以外没有任何影响。
(5)面向对象的分析(OOA)
目的是为了理解问题,描述软件要干什么,主要关注系统的形为。
包含五个活动:认定对象、组织对象、(描述)对象间的互相作用、(基于)确定对象的操作、认定对象的内部信息。
认定对象
将实际存在的“名词”看作对象,难点在于认定其中的实质性对象。
组织对象
确定对象间的关系,如汉堡由肉+菜+面包组成。
对象间的相互作用
描述对象之间的交互行为。
(6)面向对象的设计(OOD)
将OOA所创建的分析模型转为设计模型,即构造蓝图。侧重理解解决方案。
包含五个活动:识别类及对象、定义属性、定义服务、识别关系、识别包。这五个活动与OOA的五个活动一一对应。
(7)面向对象测试
分为四个层次:算法层、类层、模板层、系统层。
(8)面向对象程序设计(OOP)
是一种程序设计范式,OOP实质是使用面向对象的设计语言,采用类、对象等相关概念进行程序设计,其关键是加入了类和继承来提高抽象性。
UML
又称统一建模语言,能够表达软件设计中的动态和静态信息,其中包含三部分构造块:事物,关系和UML图。
(1)事物
结构事物:表示模型的静态部分(名词),有类、接口、协作、用例、主动类、构件、制品、结点。
形为事物:表示模型的动态部分(动词),有交互、状态机、活动。
分组事物:UML中的组织部分,是一些由模型分解成的“盒子”,最主要的分组事物是包。
注释事物:是UML模型的解释部分,注解是一种主要的注释事物。
(2)关系
依赖
一种语义关系,一个依赖事物A依赖独立事物B,当独立事物发生变化,依赖事物会随之改变。如学生(A)读书(B),书类型改变,学生读的这个形为也改变,读语文书变为读数学书。
画作:A--------->B
关联(聚集)
一种结构关系,它是一种链,链是对象之间的连接。
重复度和角色:代表一个角色A可以对应多少个角色B
关联图可画为:A0..1<——>0..*B,数字在箭头上方,此处箭头也可省略。若将此图中A看作老板,B看作员工,可理解为老板和员工有关联关系,其中一个老板可以对应0到*(多个)员工,一个员工可对应0到1个老板。
聚合:是一种特殊的关联,表示整体和部分的关系,两者生命周期不同,整体消失了,部分仍可单独存在。
聚合画为:A——空心菱形B,表示A是部分,B是整体,如A表示学生B表示班级。
组合:一种特殊的关联,表示部分和整体,不同点是部分和整体生命周期一致,整体消失部分也消失。
组合画为:A——实心菱形B,如A表示部门,B表示公司。
泛化
是一种特殊/一般关系,即特殊元素(子类)和通用元素(父类),子类可替换父类,子类共享父类的属性和行为。
画为:A——空心三角箭头B,A为子类B为父类。
实现
是类元之间的语义关系,即接口和实现的关系或用例和实现的关系。
画作:A------空心三角箭头B,A是接口B是实现。
阶段补充
关系强度:依赖<关联
关联关系的线中间上方可以写关联名,解释两者关系;关联关系两个箭头下方可分别写该箭头指向的对象的角色
关联关系:当A的实例可以重复对应B的实例时,就需要在两者之间添加关联关系类。
直接对象/非直接对象:直接对象指自己本身实例化出的对象,非直接指自己的子类实例化出的对象。
(3)图
一组元素的图形表示,画为顶点(事物)和弧(关系)的连通图,其中序列图和通信图被称为交互图。
类图
展现一组对象、接口、协作和它们之间的关系。包含主动类的类图给出了系统静态进程视图,主要表达系统的功能。当有对系统的词汇建模、对简单的协作建模、对逻辑数据库模式建模这三种情况时,使用类图。

类图中每个单元包含:类命、属性、方法。
对象图
展现了某一时刻一组对象和他们之间的关系,描述了类图中实例的静态快照(静态进程图、静态视图),其中包含对象和链。
对象图中每个单元包含类名、对象名和属性。

用例图
展现用例、参与者和它们之间的关系,用于对系统的语境建模和对系统的需求建模。
关系包括:
拓展关系(用例与用例之间的关系)
一个用例执行时可能会发生一些特殊情况或可选情况,如A拓展B,箭头指向A,做A时可选做不做B,如还书这个动作(A)可能要做支付逾期款(B)这个动作,如果你还书时逾期了的话。
包含关系(用例与用例之间的关系)
一个用例包含另一个用例,A中包含B,箭头指向B,如修改图书信息(A)这个动作中包含了查找图书(B),即做A时必做B。
泛化关系(参与者与参与者、用例与用例之间的关系)
子类和父类之间的关系。如参与者用户(A)可泛化出商家(B1)和会员(B2),空心箭头指向A;又如用例登录(A)可泛化出手机号登陆(B1)或账号密码登录(B2)。

交互图
对系统的动态方面进行建模,由一个用例中一组对象和它们之间的关系组成,包含对象、链和消息。
(1)序列图(顺序图)
强调消息时间顺序,描述按时间顺序排列的对象的交互,对象从左到右排列,发送和接受消息按时间顺序从上到下排列,消息包括同步消息(调用消息)、异步消息、返回消息。

(2)通信图(协作图)
强调发送和接受消息的对象的结构组织,用对象作为图顶点,用链连接对象,用消息修饰链,用来获取对象之间的消息流及其顺序。

阶段补充:
序列图较通信图的特点:序列图有生命线,序列图有控制焦点(动作箭头指向的矩形)。
通信图较序列图的特点:通信图有路径(链末端依附的路径构造型,有local、parameter、global、self)。消息有顺序号,表示一条消息中每条消息的序号。同一个链可能有来自不同方向的消息,且每条消息都有唯一的顺序号。
消息箭头指向的对象需要实现该消息代表的的方法。
序列图和顺序图时同构的,可以相互转换。
状态图
展现了一个状态机,它由状态、活动、事件和转换
组成,关注系统的动态视图,强调对象行为的事件顺序。
状态
是任何可以被观察到的系统的行为模式,既可以是一种形为,也可以是改变状态,还可以是既做行为又改变状态。包括初态(只能有一个)、终态(可以没有也可以有多个)和中间状态。

活动
活动表,由多个事件名+动作表达式组成,事件名有三种标准的(入口、出口和执行)。

事件
是系统在某个特定时刻发生的事情,表示系统的动作或从一个状态转换到另一个状态的抽象。活动可以在状态内执行,也可以在状态转换(迁移)中执行。

活动图
特殊的状态图,表示从一个活动到另一个活动的流程,是动态视图,强调对象间的控制流程。

构件图(组件图)
展示组件之间的组织和依赖。

纠正:图中半圆是需接口,整圆是供接口
部署图
对面向对象系统物理层面建模的方法,物理和软件之间的关系,实施阶段使用,静态,每个节点是一个运行过程中的物理元素。

阶段总结:

设计模式
相关文章:

软考中级-面向对象
面向对象基础(1)类类分为三种:实体类(世间万物)、接口类(又称边界类,提供用户与系统交互的方式)、控制类(前两类之间的媒介)。对象:由对象名数据&…...

Linux 系统构成:bootloader、kernel、rootfs
写在前面: 本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。 目录前言bootloaderk…...

SpringCloud - Eureka注册发现
目录 提供者与消费者 Eureka原理分析 搭建Eureka服务 服务注册 服务发现 提供者与消费者 服务提供者: 一次业务中,被其它微服务调用的服务(提供接口给其它微服务)服务消费者: 一次业务中,调用其它微服务的服务(调用其它微服务…...

WampServer安装教程
文章目录简介:官网地址安装步骤:我是阿波,学习PHP记录一下笔记,如果对你有帮助,欢迎一键三连,谢谢! 简介: WampServer是一个用于Windows操作系统的Web开发环境,其名称来…...

Go语言泛型基础
泛型 Go 并不是一种静止的、一成不变的编程语言。新的功能是在经过大量的讨论和实验后慢慢采用的。最初的 Go1.0发布以来,Go语言习惯的模式已经发生了重大变化1.7的context、1.11的modules、1.13 error嵌套等Go的 1.18 版本包括了类型参数的实现,也就是…...

基于android的中医养生app
需求信息: 中医健康养生APP分为四大模块,其中个人中心又分为4大块,游客用户个人中心是空白的。 上图为养生知识推广普及模块的功能结构图。 在养生知识推广普及模块界面,用户可以选择自己感兴趣的模块进行文章浏览,文章…...

2023美赛C代码思路结果【全部更新完毕】注释详尽
C题已完成全部代码,注释详尽,并增加扰动项,保证大家的结果不会撞 需要全部问题的可以点击:https://www.jdmm.cc/file/2708697/ 下面贴出核心代码: -- coding: utf-8 -- TODO: 入口函数 import numpy as np from…...

实现8086虚拟机(二)——模拟CPU和内存
文章目录CPU 架构EU(执行单元)BIU(总线接口单元)小结一下模拟内存模拟 BIU模拟 EU模拟 CPU总结要模拟 8086 CPU 运行,必须知道 CPU 的一些知识。下文的知识点都来自《Intel_8086_Family_Users_Manual 》。CPU 架构 微…...

Windows7下使用VMware11.1.1安装ubuntu-16.04.7
一、说明二、安装说明三、安装步骤详解1、先安装VMware软件2、创建虚拟机3、编辑虚拟机4、开启虚拟机,初始化Linux系统一、说明 虽然VMware和ubuntu最新版已经很高了,我这电脑由于是win7配值还低,所以采用低版本来安装 VMware版本࿱…...

基于SSM框架的CMS内容管理系统的设计与实现
基于SSM框架的CMS内容管理系统的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目…...

华为OD机试 - 运动会 | 机试题算法思路 【2023】
最近更新的博客 华为OD机试 - 自动曝光(Python) | 机试题算法思路 【2023】 华为OD机试 - 双十一(Python) | 机试题算法思路 【2023】 华为OD机试 - 删除最少字符(Python) | 机试题算法思路 【2023-02】 华为OD机试 - Excel 单元格数值统计(Python) | 机试题算法思路 …...

(C语言篇)扫雷的实现
文章目录 一、开始时的基本思维:二、进入游戏的逻辑(test.c文件中实现)三、游戏的编写 1. 初始化棋盘 I. test.cII. game.hIII. game.c 2.打印棋盘 I. test.cII. game.hIII. game.c 3.布置雷 I. test.cII. game.hIII. game.c 4.排查雷 I. test.cII. game.hIII. gam…...

华为手表开发:WATCH 3 Pro(8)获取位置服务
华为手表开发:WATCH 3 Pro(8)获取位置服务初环境与设备文件夹:文件新增第二页面geolocation.hmlgeolocation.js修改首页 -> 新建按钮 “ 跳转 ”index.hmlindex.js 引用包:system.router首页效果点击结果按钮跳转后…...

AnLogicFPGA设计的时序约束及时序收敛
本篇博文讲了三个内容:时序约束基本概念、时序约束命令、时序收敛技巧 时序约束基本概念 时序设计的实质就是满足每一个触发器的建立(setup)时间和保持(hold)时间。 建立时间(Tsu) 触发器的时钟信号沿到来以前&…...

ubuntu22.10安装sogou输入法后不能输入中文字符(可以输入中文标点符号)
问题描述 想在ubuntu22.10系统上安装sogou中文输入法,按照sogou输入法网站给出的步骤安装后,发现无法输入中文字符,但是可以输入中文标点符号。 sogou网站:https://shurufa.sogou.com/linux/guide 寻找答案1 通过各种百度和必…...

基于微信小程序的生活日用品交易平台 的设计与实现
基于微信小程序的生活日用品交易平台 的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一…...

15:高级篇 - CTK 事件与监听
作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 生命周期层事件 在 Plugin 生命周期的不同状态相互转换时,CTK Plugin Framework 会发出各种不同的事件,以供事先注册好的事件监听器处理,这些事件被称为“生命周期层事件”。CTK Plugin Framework 支持的…...

SpringBoot Notes
文章目录1 SpringBootWeb快速入门1.1Spring官网1.2 Web分析2. HTTP协议2.1 HTTP介绍34 SpringBootWeb请求响应5 响应6 分层解耦6.1 三层架构6.1.1 三层架构介绍6.1.2 基于三层架构的程序执行流程:6.1.3 代码拆分6.2 分层解耦6.2.1 内聚、耦合6.2.2 解耦思路6.3 IOC&…...

CoreDNS
目录 文章目录目录本节实战前言1、环境变量2、DNS1.DNS 解析过程2.根域名服务器3.顶级域名服务器4.权威性域名服务器5.dig 域名3、CoreDNS1.CoreDNS 扩展配置(1)开开启日志服务(2)特定域名使用自定义 DNS 服务器(3&…...

码农饭碗不保——ChatGPT正在取代Coder
码农饭碗不保——ChatGPT正在取代Coder 最近被OpenAI的ChatGPT刷屏了。我猜你已经读了很多关于ChatGPT的文章,不需要再介绍了。假如碰巧您还不太了解ChatGPT是什么,可以先看一下这篇文章,然后再回来继续。 与ChatGPT对话很有趣,…...

PAT (Advanced Level) Practice 1004 Counting Leaves
1004 Counting Leaves题目翻译代码分数 30 作者 CHEN, Yue 单位 浙江大学 A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one test case. Eac…...

基于Redis实现的分布式锁
基于Redis实现的分布式锁什么是分布式锁分布式锁主流的实现方案Redis分布式锁Redis分布式锁的Java代码体现优化一:使用UUID防止误删除优化二:LUA保证删除原子性什么是分布式锁 单体单机部署中可以为一个操作加上锁,这样其他操作就会等待锁释…...

2023年,还找算法岗工作吗?
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达2023年春招(补招)已经大规模启动了!距离2023年暑期实习不到2个月!距离2024届校招提前批不到4个月!距离2024届秋招正式批不到6个月&a…...

正点原子ARM裸机开发篇
裸机就是手动的操作硬件来实现驱动设备,后面会有驱动框架不需要这么麻烦 第八章 汇编 LED 灯实验 核心过程 通过汇编语言来控制硬件(驱动程序) 代码流程 1、使能 GPIO1 时钟 GPIO1 的时钟由 CCM_CCGR1 的 bit27 和 bit26 这两个位控制&…...

20222023华为OD机试 - 压缩报文还原(JS)
压缩报文还原 题目 为了提升数据传输的效率,会对传输的报文进行压缩处理。 输入一个压缩后的报文,请返回它解压后的原始报文。 压缩规则:n[str],表示方括号内部的 str 正好重复 n 次。 注意 n 为正整数(0 < n <= 100),str只包含小写英文字母,不考虑异常情况。 …...

SheetJS的部分操作
成文时间:2023年2月18日 使用版本:"xlsx": "^0.18.5" 碎碎念: 有错请指正。 这个库自说自话升级到0.19。旧版的文档我记得当时是直接写在github的README上。 我不太会使用github,现在我不知道去哪里可以找到…...

pytest总结
这里写目录标题一、pytest的命名规则二、界面化配置符合命名规则的方法前面会有运行标记三、pytest的用例结构三部分组成四、pytest的用例断言断言写法:五、pytest测试框架结构六、pytest参数化用例1、pytest参数化实现方式2、单参数:每一条测试数据都会…...

CNI 网络分析(九)Calico IPIP
文章目录环境流量分析Pod 间Node 到 PodPod 到 serviceNode 到 serviceNetworkPolicy理清和观测网络流量环境 可以看到,在宿主机上有到每个 pod IP 的路由指向 veth 设备 到对端节点网段的路由 指向 tunl0 下一跳 ens10 的 ip 有到本节点网段 第一个 ip 即 tunl0 的…...

分布式任务调度(XXL-JOB)
什么是分布式任务调度? 任务调度顾名思义,就是对任务的调度,它是指系统为了完成特定业务,基于给定时间点,给定时间间隔或者给定执行次数自动执行任务。通常任务调度的程序是集成在应用中的,比如:…...

Django框架之模型视图--Session
Session 1 启用Session Django项目默认启用Session。 可以在settings.py文件中查看,如图所示 如需禁用session,将上图中的session中间件注释掉即可。 2 存储方式 在settings.py文件中,可以设置session数据的存储方式,可以保存…...