3- UML图、序列化

1. UML图

1. 如何通过UML图画一个普通类?
答:图分为三层:最顶层的为类名,中间层的为属性,最底层的为方法。
属性的表示方式为:【可见性】【属性名称】:【类型】={缺省值,可选}
方法的表示方式为:【可见性】【方法名称】(【参数列表】):【类型】
可见性都是一样的,"-“表示private、”+“表示public、”#"表示protected。
在这里插入图片描述
2. 继承关系如何画UML图?
答:空心三角形+实线,三角指向基类。
在这里插入图片描述
3. 抽象继承关系如何画UML图?
答:答:空心三角形+实线,三角指向基类,抽象类用斜体。
在这里插入图片描述
4. 什么是关联关系?
答:一个类对象作为另一个类的成员变量,则两个类为关联关系。分为单向关联、双向关联、自关联
5. 三种关联关系如何画UML图?
(1)单向关联在这里插入图片描述
(2)双向关联在这里插入图片描述
(3)自关联在这里插入图片描述
6. 什么是聚合关系?如何画UML图?
答:聚合关系表示整体与部分的关系,成员是整体的一部分,但是成员对象
可以脱离整体对象独立存在。比关联关系更紧密。
通过空心菱形+实线+箭头表示,箭头指向部分。在这里插入图片描述
7. 什么是组合关系?如何画UML图?
答:组合关系也表示的是一种整体和部分的关系,但是成员不可以脱离整体对象独立存在,整体对象和成员对象之间具有同生共死的关系。
通过实心菱形+实线+箭头表示,箭头指向部分。在这里插入图片描述
8. 什么是依赖关系?如何画UML图?
答:依赖关系是一种使用关系,某类对象为另一类成员方法的参数或局部变量,则两类为依赖关系。
通过虚线+箭头表示。在这里插入图片描述

2. 序列化

  1. 什么是序列化?
    答:序列化就是将对象的状态信息转换为存储或传输的信息。
  2. 网络通信为什么要序列化?
    答:
    (1)平台不同,某些数据类型占用的内存大小不一样。
    (2)字节序转换,可能大小端不同;
    (3)语言不同,某些数据类型占用的内存大小不一样,如long型;
    (4)字节对齐问题。
  3. 序列化常用的方式?
    答:xml、Json、protobuf。
  4. html与xml之间有什么区别?
    答:xml是自定义标记语言,即标签可以自己定义。
  5. 什么是Json?
    答:Json是一种序列化方式,是一种数据格式而非语言。本质是通过“键值对”的方式来描述对象。保持了XML的可读性,但序列化后的数据更简洁。
  6. 如何表示Json数组和Json对象?
    答:
    (1)Json数组用[]表示,成员可以是基本数据类型或Json数据类型;
    (2)Json对象用{}表示,成员是键值对,键是字符串,值可以是基本数据类型或Json类型。
  7. Json数组与Json对象之间的语法?
    答:二者之间可以相互嵌套,但同一文件有且仅有一个二者中的其中一个;键值对元素之间逗号分隔,最后元素无逗号。
{
	[
		"No1": 
		{
			"name" : "Jack",
			"favorite": ["foootball", "basketball"]
		},
		"No2": 
		{
			"name" : "Rose",
			"favorite": ["foootball", "basketball"]
		}
	]
}
  1. 什么是protobuf?
    答:Protocal Buffer简称protobuf是一种结构化数据存储格式,适合做数据存储或RPC数据交换格式,可以和各种传输层协议一起使用;但其支持的数据类型少,不支持常量类型。
  2. protobuf序列化流程?
    答:(1)在.proto文件定义要序列化的C++类的消息格式;(2)执行protobuf编译器生成相关的头文件;(3)在工程项目中包含该头文件;(4)使用C++ API进行序列化及读写消息;
  3. 如何在.proto文件中定义数据的消息格式?
struct TEST
{
	int id;
	string name;
	int age;
	string sex;
};
syntax = "proto3";

message TEST
{
	int32 id = 1;
	bytes name = 2;
	int32 age = 3;
	string sex = 4;
}
  1. .proto类型中的string与bytes的区别?
    答:若数据中涉及中文,则需要支持utf-8的bytes类型。
  2. 如何将.proto文件生成C++类头文件?
    答:通过.protoc.exe命令。protoc .proto文件路径 --cpp_out=生成路径
  3. 头文件如何使用?
    答:将头文件加入VS项目中,源文件调用头文件中的函数初始化类中的成员变量,将数据序列化,将数据反序列化。
  4. 如何配置vs?
    答:属性:(1)包含文件包含指定的include/google文件
    (2)链接器中附加依赖项添加libprotobuf.lib
    (3)预处理器添加PROTOBUF_USE_DLLS宏
  5. repeated的作用?
  6. 如何使用枚举类型?
  7. 如何在成员变量中引用其他.proto文件的类?
  8. Debug与release版本区别?
  9. 如何设置版本与位机?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值