1. 请选课的同学每人挑一个练习
2. 4月底之前交给王刚:wanggang@icst.pku.edu.cn
3. 提交内容:
n
练习的代码以及有关的文件,要保证作业老师能够重新生成可执行代码。(打成一个zip包)
n 完整的练习报告。注意,请提交电子文档,并且对于多人合作的题目,重点写自己做的部分工作。
4. 如有不清楚的地方,请通过email联系
试验报告样本文件下载:report-temp.doc
说明:如果选择了练习11或者12,那么这些同学不用再做第二次作业。请这些同学自己形成实验小组。
题目:
实现任意数制间的转换,数制表达形式自定
要求:
做成一个进程内COM组件,客户通过自定义接口调用其功能
提交:
组件程序所有代码,以及测试用的客户代码
注意:
可以使用MFC、ATL,也可以不用
要点:实现自定义的COM接口
题目:
实现1950-2050年间公历与农历的相互转换
要求:
做成一个进程内COM组件,客户通过自定义接口调用其功能
提交:
组件程序所有代码,以及测试用的客户代码
注意:
可以使用MFC、ATL,也可以不用
要点:实现自定义的COM接口
题目:
在“COM原理与应用”第三章例子的基础上,实现一个新的对象,要求以包容方式实现接口ICheckSpellEx,它包含一个方法,返回一个首字母大写、其余字母小写的单词
要求:
做成一个进程内COM组件,客户通过自定义接口调用其功能
提交:
组件程序所有代码,以及测试用的客户代码
注意:
可以使用MFC、ATL,也可以不用
要点:
以包容方式实现COM对象,这个组件对象既是对象,也是另一个对象的客户
题目:
把“COM原理与应用”第三章的例子改成用ATL来实现。
要求:
组件的接口和CLSID不变,用第三章的客户仍然能够调用字典组件的功能。
提交:
组件程序所有代码
要点:练习使用ATL的基本功能
题目:
在VB中实现一个COM对象,在VC中调用该对象
对象的功能:接受一个日期(年、月、日),算出它是星期几
要求:
客户程序不准使用MFC/ATL的包装类
提交:
组件程序和客户程序的所有代码
要点:通过COM实现VB与VC的协作
题目:
把“COM原理与应用”第三章的例子改造成一个自动化对象,重新定义IDictionary为双接口,只实现该接口即可。在VBA(Word或Excel)中调用该对象。
要求:
接口的IID必须改变,在VC中实现双接口时可以用ATL,也可以完全不用类库。
提交:
组件程序所有代码以及VBA中的代码
要点:实现双接口
题目:
实现一个进程外COM对象,它实现一个自定义接口(不是双接口),该接口有一项功能:GetPrimers,接受一个整数参数,返回一个数组,其中包含所有小于该整数的素数。
要求:
不准用MFC/ATL
要求做成一个console工程
输出参数是个不定长度的数组,一种做法是加一个长度指示;另一种做法是利用一个枚举器。建议使用枚举器。
提交:
组件程序、proxy/stub程序、客户测试程序
要点:
实现进程外组件的全过程。
题目:
给出一篇文章,请实现文中的应用。at_script.doc
要求:
实现一个对话框应用,用户通过一段脚本控制应用中的日历对象。
要点:了解用COM实现的脚本技术。
题目:
在一个Exe程序中,创建两个线程,至少一个是STA线程。然后在第二个线程中创建一个COM对象,通过marshaling机制,把对象的接口指针传到第一个线程中,输出这两个接口指针的值。
要求:
提交exe程序的代码,并给出试验结果。
要点:加强在套间之间传递接口指针的marshaling概念
题目:
改写“COM原理与应用”第三章例子中的register模块,包括register.cpp和register.h,使它成为通用的模块,既支持InprocServer,也支持LocalServer,还支持typelib以及Category(可选)。
要求:
通过测试。可以修改该书第三、四章的例子作为测试,也可以自拟方案。
要点:
了解COM注册表的结构,以及注册表对于COM的意义,并熟悉注册表的编程。
题目:
在linux下实现一个轻量级的com库,只支持进程内组件对象的创建和管理,并在此基础上,把进程内字典组件移植到linux上,移植过程中,尽可能保持客户代码和组件代码不变。
要求:
模拟注册表功能。创建对象的支持。可以不支持套间、marshaling、多线程等功能。
如果有可能,支持进程外组件的创建和通信。
2-3人完成一组。如果支持跨进程创建和通信,则需要5人左右。
要点:
了解COM的内部机制。
题目:
Essential COM”的附录给出了一个基于COM的chat程序。以此为基础,实现并调试该程序。COMChat.zip
要求:
2人一组。写出该程序的分析报告,以及程序的配置过程和测试过程。
要点:
了解DCOM的工作过程。