软件设计笔记(八)- 面向对象程序设计 - 6

2.1.3 对象序列化与反序列化

保存对象的媒介:流和字符串

一串有序的二进制数据,包含一个读写指针。比如,java和c#要想访问一个文件,必须创建一个流对象对文件进行访问。

// C#, 不研究C#,代码略
// 使用流实现序列化/反序列化
// 1 二进制序列化,
// 2 XML序列化

应用:大批地复制对象

先将对象序列化到内存流,然后将流的读写指针移动到开头,开始反序列化,即可创建一个与原有对象“一模一样”的对象。重复这个过程,可以克隆多个对象。是实现深复制的比较便捷的方式。
应用:程序退出时状态保存(比如,矢量绘图软件)
分布式系统的对象序列化
分布于不同计算机上的应用程序相互通讯,在网络中传输的数据往往都应用了序列化技术。可以将对象序列化到网络流中,从而将一个对象通过网络从一台机器传送到另一台机器。也可以讲对象序列化为XML或JSON字符串,从而实现跨平台跨网络的远程对象传送。后者在移动互联网中更常用。

2.1.4 对象比较

定义比较规则

在C#中,通过实现IComparable接口定义比较规则

public interface IComparable{
    int CompareTo(object obj); // 1 means >, 0 means =, -1 means <
}

对象的判等:如果只需要知道两个对象是否相等,可以直接重写Object类的Equals方法。此时必须重写GetHashCode方法,并且判等函数重写需要遵循一些数学定律

// java or C#, 最好通过CompareTo来实现;C#也可以通过重写运算符重载来实现,实际开发中,慎用运算符重载。
public override bool Equals(Object obj){
    if(this.CompareTo(obj) == 0){
        return true;
    }
    return false;
}

对象比较的目的:支持排序和查找
对象比较器

不愿意直接修改类的源代码,就可以通过第三个类来实现比较的功能

// 第三个类实现IComparer或下面这个接口
public interface IComparer<in T>{
    int Compare(T x, T y);
}
public int Compare(MyClass x, MyClass y){
    return x.Value.CompareTo(y.Value);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值