利用类接口技术完成排序
(接上讲)
三接口实例的应用及思路分析
在上面的两讲中,我们讲了接口和类的关系,从中我们注意到,接口是类的模板,类是实现接口的,在之前的讲解中我们也了解到,类是对象的模板,对象是实例化类得到的。那么从这讲开始,我将利用相当的时间给大家讲解一个实例,让大家从这个实例中了解到接口、类、对象、过程、函数等概念的具体的应用。
实例:实现某列文本数据的排序,要求:
1 读取数据,预存在数组中
2 实现按照指定的要求排序,一是按冒泡排序,二是实现快速排序
3 实现排序过程中的比较方式不同,一是区分大小写,二是忽略大小写。
4 排序后将数组回填给某列。
这里我给出了一列的测试数据:
上述数据共3000行,其中有几个小写的字符数据,我们要实现按照上述要求排序。
思路分析:
1 建立一个排序的接口。对应两个类用于实现排序接口,一个类实现冒泡排序,一个类实现快速排序。
2 建立一个比较的接口。对应两个类用于实现这个比较接口,一个类用于区分大小写的比较,一个类用于忽略大小写的比较。
3 在标准模块中实现数据的读取,数据的传递,数据的反馈。
4 在标准模块中实现排序及比较的选择。
实现思路结构的搭建:
1 Isortable 接口,这个接口定义排序。为了实现这个接口建立两个类:一个是Csortermp,实现冒泡排序,这个类中实现一般的排序方案,比较,然后根据比较的结果实现位置的调换,达到冒泡的目的;第二类是Csorter,实现快速排序,这种排序方法在很多资料上都有介绍,就是通过取中间值,递归实现分布比较达到排序的目的,这种方法在数据量大时,可以显著的节约时间。
2 Icomparer接口,这个接口定义了比较。也有两个类实现这个接口,一个类是CompareIgnoreCase,用于忽略大小的比较,一个类是CompareUseCase,用于实现大小写的比较。这两个类可以利用StrComp()函数实现,这个函数中可以利用参数vbBinaryCompare和vbTextCompare实现是否区分大小写的目的。
3 标准模块:在标准模块中将要求用户选择排序的方式和比较的方式,根据用户的选择实现不同类的实例化过程。
这种思路的优点:
1 不同的模块实现不同的功能,从而达到低耦合性。当有一个模块的逻辑进行修正时不会影响其它的模块。
2 给程序升级带来方便。当我们想利用其它的方法实现排序时,这需要再建立一个新类实现Isortable排序的接口;如果我们要利用其它的方法实现比较时,只需要建立一个新的类实现Icomparer比较接口,而不必去修改其它的代码。
3 给自己的代码库增加筹码。我一直推崇的是积木编程,通过上述思路的实现,可以增加自己的积木库,在后续自己写代码时可以利用上述的类和接口。这需要在标准模块中调用这些积木。
4 在某种程度上讲,代码具有遗传性,这种遗传性给理解代码带来很大的便利。自己写的代码可以自成体系。
从下讲开始将正式进入代码搭建讲解部分。
今日内容回向:
1 如何利用接口实现我们的目的?
2 利用接口的好处用哪些?
在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。
学习VBA是个过程,这个过程是自己忍受孤独的过程。
“水善利万物而不争”,你看她绵绵密密,微处则无声,巨则汹涌。学习亦如此,把握现在,为达千里,需要默默耕耘,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时去自欺欺人。要在当下,用一颗充满生机的心灵,努力提高自己,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。一杯茶,满也好,少也好,不要去计较;浓也好,淡也好,其中都有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。一切众生的心都在变化,像时间一样,永远不会停留,把握现在就是福报。
VBA是利用Office实现自己小型办公自动化的有效手段,我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了五部VBA专门教程,回向给需要学习的朋友:
第一套:VBA代码解决方案是VBA中各个知识点的讲解,覆盖绝大多数的VBA知识点,初学必备;
第二套:VBA数据库解决方案数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作。
第三套:VBA数组与字典解决方案数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习。
第四套:VBA代码解决方案之视频是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。
第五套:VBA中类的解读和利用这是一部高级教程,讲解类的虚无与肉身的度化,可以对促进自己理论的提高。
学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。在平静中积累自己的财富。我的上述教程是我多的经验的传递,大家可以根据1,3,2,5或者是4,3,2,5的顺序逐渐深入的逐渐学习。可以WeChat: NZ9668
最后将一阙词送给致力于VBA学习的朋友:
浮云掠过,暗语无声,
唯有清风,惊了梦中啼莺。
望星,疏移北斗,
奈将往事雁同行。
阡陌人,昏灯明暗,忍顾长亭。
多少VBA人,
暗夜中,悄声寻梦,盼却天明。
怎无凭!
分享成果,随喜正能量
举报/反馈
利用类接口技术完成排序相关推荐
- 计算机组成原理+左冬红,计算机组成原理与接口技术--基于MIPS架构(第2版高等学校电子信息类专业系列教材)...
导语 内容提要 华中科技大学电子信息与通信学院基于FPGA平台的"微机原理与接口技术"课程教学改革已进行数载,作者在总结教学经验基础上,对<计算机组成原理与接口技术>进 ...
- 反思脑机接口技术:机器真的能控制我们的大脑吗?
来源:AI科技评论 作者:R. Douglas Fields 编译:陈彩娴 猛烈的公牛在冲锋的途中锁定了双腿.它将双蹄扎进地下,在与之搏斗的人类参赛选手被刺伤之前停了下来. 这个人类参赛选手不是职业斗 ...
- 计算机接口实验1,计算机接口技术实验一.doc
计算机接口技术实验一.doc 数学与计算机学院 <计算机接口技术 实验报告 专业:网络工程 班级:1202 学号:1205110121 姓名:吴天亮 郭峰林 实验1定时与中断接口程序设计 一实验 ...
- 天津工业大学19年计算机考研大纲,2019年天津工业大学《计算机原理及接口技术》考研复试大纲...
2019年天津工业大学<计算机原理及接口技术>考研复试大纲已出,圣才考研网小编为大家整理了相关内容,欢迎大家点击查看!更多考研动态|模拟试题|历年真题请关注圣才考研网! 天津工业大学硕士研 ...
- Entity Framework 实体框架的形成之旅--为基础类库接口增加单元测试,对基类接口进行正确性校验(10)...
本篇介绍Entity Framework 实体框架的文章已经到了第十篇了,对实体框架的各个分层以及基类的封装管理,已经臻于完善,为了方便对基类接口的正确性校验,以及方便对以后完善或扩展接口进行回归测试 ...
- 天津工业大学19年计算机考研大纲,天津工业大学2019考研《计算机原理及接口技术》复试大纲...
2019考研初试成绩预计将于2月15日左右开始查询,现在应该有不少估过分的考生开始准备复试了.下面是天津工业大学2019考研<计算机原理及接口技术>复试大纲,以供大家备考复试作参考. 天津 ...
- 如何利用大数据技术构建用户画像
在大数据时代,我们经常谈论的概念之一是用户画像.准确营销的商业目的可以通过在互联网领域利用用户画像来实现,这就是为什么在这个流量至上的时代构建用户画像是如此重要.任何企业公司的产品要想做好精细化运营, ...
- 微机原理与接口技术简答题集锦(河北专升本计算机)
第一章 微型计算机基础 1. 微处理器.微型计算机和微型计算机系统三者之间有什么区别? 微处理器(CPU)∶将运算器与控制器集成在一起,它包括运算器.控制器.寄存器组和片内总线.用于实现微型计算机的运 ...
- 脑机接口技术使瘫痪病人重获运动能力,4D打印技术已经到来!|技术前沿洞察...
热点追踪 / 深度探讨 / 实地探访 / 商务合作 滴!友情提醒:您的假期余额已经不足一天. 今天小探也按时为你带来技术前沿洞察,最近高校.大公司的最近技术真是眼花缭乱,阿司匹林减轻能够减轻空气污染伤 ...
最新文章
- Codeforces Round #403 (Div. 1, based on Technocup 2017 Finals)
- c++怎么输入esc_绘制CAD图纸的过程中CAD快捷键失灵了怎么办?
- springboot2使用JUnit5单元测试使用大全
- Delphi编译指令说明
- 《教师教学究竟靠什么--谈新课程的教学观》之交往与互动的教学观 心得体会三...
- 傅里叶变换和逆傅里叶变换numpy
- 【python数字信号处理】——循环卷积(也叫圆圈卷积)
- Bootloader传参数到Kernel
- python import如何使用_python之import引用
- Docker 终失 C 位,开源少年缘何黑化
- 白话machine learning之Loss Function
- 使用SourceOffSite时出现的问题及解决办法
- Sketch2AE插件(Sketch文件导入AE)最新破解版
- leetcode-739.每日温度-单调栈
- mysql门店分析_餐饮数据分析(MySQL+Pivot)
- NOIP2020总结
- Python使用RMF聚类分析客户价值
- 网盘加速器PanDownload+网盘倍速播放
- Adaboost算法介绍
- 使用virt-manager创建虚拟机