MOOC清华面向对象
文章平均质量分 79
sunshineman1986
这个作者很懒,什么都没留下…
展开
-
Debug日志:流对象更名+流运算符重载实验
学堂在线《面向对象程序设计》第四章唯一的一道编程题,调试了两天,依然没有一点眉目。题目如下:在程序中输出一些信息,是一种很有效的调试方法。请设计实现一个名为Log的类,能方便输出调试信息,要求满足如下附件所写的要求:简单罗列一下,解这道题需要的知识点:1,流对象更名:从ostream输出流类的cout对象,改名为Log类的obj对象,同样要具有输出流对象的功能;转载 2017-08-30 13:33:28 · 333 阅读 · 1 评论 -
Dev C++编写的Windows窗口Hello,World程序
#include #include /* 使类名成为全局变量 */TCHAR szClassName[ ] = TEXT("WindowsApp"); /* 这个函数由Windows函数DispatchMessage()调用 */LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPA转载 2017-09-03 14:44:49 · 14814 阅读 · 0 评论 -
Dev C++新建Windows应用程序时的main函数模板
第一次发现!很新鲜哦!#include /* This is where all the input to the window goes to */LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { /* Upon destru转载 2017-09-03 14:37:12 · 3537 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:负载监视器的设计v2.0(采用基于模板的策略模式)
在第6章程序的基础上,按照本章要求做了改进。Debug经验:采用模板定义类时,含有模板形参的函数必须在类里面定义,不能放到类的外面,不能另外放到实现文件中。//main.cpp#include #include #include "Monitor.h"#include "LoadStrategy.h"#include "MemoryStrategy.h"#include "L转载 2017-09-14 20:25:57 · 207 阅读 · 0 评论 -
清华第八战告捷!“路漫漫其修远兮,吾将上下而求索”……
原创 2017-09-22 20:26:57 · 257 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v5.4(单科及格与总分及格)
新需求:如何分别统计单科及格的人数和总分及格的人数?这种算法似乎在Microsoft Office. Excel中用得很多。视频中漏掉了一页课件,下载的PPT中有。//main.cpp#include #include #include "ArrayCollection.h"#include "LinkedListCollection.h"#include "Score.h"#i转载 2017-09-14 15:48:31 · 269 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第3章:前缀/后缀运算符重载实验
#include #include #include using namespace std;class Test{ char src[30] = "exam";public: char* operator++(){ //前缀重载都是不带参数的 strcat(src, "+tail"); return src; } friend ostream& operator<原创 2017-08-17 12:29:04 · 288 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v5.3(采用函数对象)
程序设计的学习真是越来越有趣啦!也需要花更多时间和精力来仔细体会每一个程序的内部机理。//main.cpp#include #include #include "ArrayCollection.h"#include "LinkedListCollection.h"#include "Score.h"#include "isPass.h"using namespace std;转载 2017-09-14 15:05:38 · 200 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v5.2(用文件输入及格线)
也是只有main函数修改,其余不动。//main.cpp#include #include #include #include "ArrayCollection.h"#include "LinkedListIterator.h"#include "LinkedListCollection.h"#include "Score.h"using namespace std;te转载 2017-09-13 21:16:56 · 205 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v5.1(“记住”及格分数线)
为了让“及格分数线”能够被记住,可调用Score类的对象并赋初值。只有main函数修改了,其余代码段与前一篇博文一样。//main.cpp#include #include #include "ArrayCollection.h"#include "LinkedListIterator.h"#include "LinkedListCollection.h"#include "Sc转载 2017-09-13 21:01:58 · 256 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v5.0(某科及格线不是60分)
//main.cpp#include #include #include "ArrayCollection.h"#include "LinkedListIterator.h"#include "LinkedListCollection.h"#include "Score.h"using namespace std;template bool isPass(const _Ite转载 2017-09-13 20:52:45 · 242 阅读 · 0 评论 -
GlobalMemoryStatusEx函数实验(动态获得物理内存与虚拟内存闲置率)
#include #include #include using namespace std;int main(){ MEMORYSTATUSEX statex; statex.dwLength = sizeof (statex);//必须有这一句,否则函数错误! bool res = GlobalMemoryStatusEx(&statex); cout << "Global原创 2017-09-06 15:53:24 · 1077 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v4.0(定义抽象结构)
视频中的PPT有两处错误,本代码已更正。本次Debug经验:定义函数与调用函数时,务必注意类型匹配,有一丝差别都会出现错误。//main.cpp#include #include #include "ArrayCollection.h"#include "LinkedListIterator.h"#include "LinkedListCollection.h"#includ转载 2017-09-13 16:50:22 · 206 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v3.0(自定义数据类型)
如果考试三科,每科都高于60分,这个学生才算及格,那么程序该怎么编?代码如下。通过这个例子,更深刻地体现算法与数据解耦的编程思想。//main.cpp#include #include #include "ArrayCollection.h"#include "LinkedListIterator.h"#include "LinkedListCollection.h"#inclu转载 2017-09-13 14:56:47 · 257 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v2.0(采用迭代器、容器、模板方法)
//main.cpp#include #include #include "ArrayCollection.h"#include "LinkedListIterator.h"#include "LinkedListCollection.h"using namespace std;template void analyze(_iterator begin, _iterator e转载 2017-09-13 11:27:08 · 220 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第7章:统计考试及格率v1.0(采用迭代器模式)
这次Debug的最大收获就是:凡是头文件,都要加上“防止重复编译三句话”。代码中有些语句似乎留与不留都可以编译通过,不知为什么。//main.cpp#include #include #include "Iterator.h"using namespace std;void analyze(Iterator* begin, Iterator* end);int main(in转载 2017-09-12 17:37:36 · 230 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第4章:类模板的特化实验
#include #include #include using namespace std;template class Sum{ T a, b;public: Sum(T op1, T op2): a(op1), b(op2){} T DoIt() {return a + b;}};template<>class Sum{ char *str1, *str2;p转载 2017-08-27 18:56:29 · 284 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:栈的实现(基于数组)
//main.cpp#include #include "MyStack.h"using namespace std;void testStack(MyStack& stack){ for(int i = 1; i < 5; i++) stack.push(i); for(int i = 0; i < 4; i++){ cout << stack.top() << "\转载 2017-09-16 17:30:12 · 190 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:栈的实现(基于STL vector)
//main.cpp#include #include "VectorStack.h"using namespace std;void testStack(VectorStack& stack){ for(int i = 1; i < 5; i++) stack.push(i); for(int i = 0; i < 4; i++){ cout << stack.top转载 2017-09-16 18:45:02 · 189 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第5章:OOP版电子计价器
#include using namespace std;class Calculator{ float _applePrice, _bananaPrice;public: Calculator(float applePrice, float bananaPrice): _applePrice(applePrice), _bananaPrice(bananaPrice){ } fl转载 2017-08-30 21:16:30 · 402 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第9章:听课感想
第9章讲了两个大例子:用工厂模式填充矩阵,和自动组卷系统的设计。本来想把这两个例子实现一下的,但是:填充矩阵的那个例子,我认为我之前的v 3.0版本已经做得非常好了,而且对我而言,采用调用函数的方式来“导流”,比用创建对象的方式来“导流”来得顺手!而自动组卷那个例子里面的各个卷面模块,不就是各种字符串的拼接么?如果不需要开发真实的产品,没必要费劲写一遍。最主要的原因,还是我想尽快进入后续课程的学习原创 2017-09-22 16:43:39 · 417 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:邮件过滤器基本框架(采用责任链模式)
视频中的代码只是一个总体框架,许多细节的函数并没有实现,我暂时也想不出如何实现,先把视频中的代码手打一遍,贴在这里。//main.cpp#include #include "class.h"using namespace std;int main(int argc, char** argv) { DefaultFilter f1(NULL); BodyFilter f2(&f1转载 2017-09-21 12:25:38 · 245 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:装饰模式实验
//main.cpp#include #include "class.h"using namespace std;int main(int argc, char** argv) { TextView textView; VScroll vs_TextView(&textView); HScroll hs_vs_TextView(&vs_TextView); Border b_h转载 2017-09-20 19:51:47 · 257 阅读 · 0 评论 -
Debug日志:OOP版填充数字矩阵的一个失败反例
先看源代码://main.cpp #include #include "Matrix.h" using namespace std; const int str_length = 7;//经测试,至少为7;印证了每个汉字占2个字节('\0'占一个字节) int main() { int size;原创 2017-09-02 21:31:24 · 204 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第5章:填充数字矩阵-终极中文版 v 3.0(采用模板方法,并增加集中控制功能)
//main.cpp #include #include #include "Matrix.h" using namespace std; const int str_length = 7;//经测试,至少为7;印证了每个汉字占2个字节('\0'占一个字节) int main() { int siz原创 2017-09-03 09:34:37 · 351 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第5章:OOP版填充数字矩阵(采用模板方法)
先上源代码://main.cpp #include #include "Matrix.h" using namespace std; int main() { int size; cout << "请输入矩阵的边长 N: "; cin >> size;原创 2017-09-02 13:55:30 · 266 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第5章:OOP版填充数字矩阵-产品级终极中文版 v 2.0(增加按行、按列填充)
之前我没有理解“行优先填充”“列优先填充”是什么意思,以为开始是从填充行开始的就叫“行优先填充”,开始从填充列开始的就叫“列优先填充”。今天看了黄震春老师的“变与不变:多态的威力”一节视频后,发现“顺时针填充”和“行优先填充”是分开作为两个不同的派生类实现的,那么难道“行优先填充”的意思是“按行填充”吗?那还是“旋转矩阵”吗?如果根据我之前的理解,仅仅靠“顺时针”和“行优先”两个描述并不能确定唯一原创 2017-09-02 12:17:24 · 287 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:用代理模式实现延迟初始化
视频里面的代码有问题,作了修改。//main.cpp#include #include "class.h"using namespace std;int main(int argc, char** argv) { Proxy proxy;//实际对象此时未初始化,无需等待 if(proxy._object != NULL) cout test << endl; else转载 2017-09-18 20:30:47 · 368 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第5章:OOP版填充数字旋转矩阵-产品级!-终极中文版!
最大的封装就是化于无形,最好的产品就是傻瓜产品!最终极的用户就是什么都不懂的用户!——连这种用户都能得心应手地使用我们的产品,我们的产品才算做到家了!代码如下://main.cpp#include #include "Matrix.h"using namespace std;const int str_length = 7;//经测试,至少为7;印证了每个汉字占2个字节('\0'占一原创 2017-09-01 16:55:09 · 302 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第5章:OOP版填充数字旋转矩阵
//main.cpp#include #include "Matrix.h"using namespace std;int main() { cout << "Please input N: "; int size; cin >> size; Matrix obj(size); obj.fill(); cout << obj; return 0;}//转载 2017-09-01 14:21:46 · 461 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:智能指针与引用计数实验
//main.cpp#include #include "class.h"using namespace std;int main(int argc, char** argv) {//使用智能指针,无需再考虑释放的问题 SmartPtr ptr1(new int(2)); SmartPtr ptr2(ptr1); SmartPtr ptr3 = ptr2; cout <<转载 2017-09-18 19:25:57 · 362 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:悬挂指针实验
#include using namespace std;int main(){ int* ptr1 = new int(1); int* ptr2 = ptr1; cout << *ptr1 << endl; cout << *ptr2 << endl; delete ptr1; cout << *ptr2 << endl; return 0;}转载 2017-09-18 18:33:23 · 417 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:栈的实现(采用模板实例化)
#include #include using namespace std;int main(int argc, char **argv){ stack stack; for(int i = 1; i < 5; i++) stack.push(i); for(int i = 0; i < 4; i++){ cout << stack.top() << "\n"; stac转载 2017-09-18 13:01:22 · 386 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第8章:栈的实现(采用适配器模式)
//main.cpp #include #include "class.h" using namespace std; void testStack(Stack& stack){ for(int i = 1; i < 5; i++) stack.push(i); for(int i = 0; i < 4; i+转载 2017-09-18 12:47:09 · 429 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第6章:负载监视器的设计
经过了整整一个星期的折腾,负载监视器的设计算是“小功告成”了吧!完成了总体框架设计,采用了黄震春老师所讲的单一责任原则、策略模式,完成了CPU负载率的获得、总内存和已用内存的获得。然而只能算“小功告成”的原因是:黄老师讲的委托模式、GUIDisplay接口的分离,尚未完成,因为如何用GUI显示,我还没学会;另外,在MSDN查了一周的库函数也没有查到能直接获得网络时延的函数或是结构体,后来得知需要自原创 2017-09-09 17:30:12 · 290 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第4章编程题:按照调试级别输出调试信息
题目:在程序中输出一些信息,是一种很有效的调试方法。请设计实现一个名为Log的类,能方便输出调试信息,要求满足如下附件所写的要求:我的答案://main.cpp#include #include "Log.h"using namespace std;int main() { Log obj; obj.set_level("error"); obj <原创 2017-08-30 17:59:29 · 665 阅读 · 1 评论 -
MOOC清华《面向对象程序设计》第5章:OOP版谁做的好事
#include using namespace std;class Student{ char _theMan; bool _isEqual;public: Student(bool isEqual, char theMan): _isEqual(isEqual), _theMan(theMan){ } bool operator() (char thisMan);};bo转载 2017-08-30 21:43:04 · 277 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第4章:函数模板的特化实验
#include #include #include using namespace std;template T sum(T a, T b){ return a + b;}template<> //因为是特化,类型已知,故模板参数列表为空char* sum(char* a, char* b){ char* p = new char[strlen(a) + strlen转载 2017-08-27 18:31:08 · 255 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第2章:私有成员与公有成员不可同名实验
#include using namespace std;class function{ private: int sum; public: int sum;};//实验证明:类的私有成员与公有成员不可以同名 int main(){ return 0;}编译报错:9 7 E:\Dev_Cpp_Files\test.cpp [Error] rede原创 2017-08-27 18:23:50 · 350 阅读 · 0 评论 -
MOOC清华《面向对象程序设计》第2章:new/delete运算符实验
测试代码:#include using namespace std;int main(){ for(int i = 0; i < 10; i++){ switch(i){ case 0 : { int* ptr = new int; cout << "case 0 :" << endl; cout <<"赋值前 *ptr = " << *ptr原创 2017-08-15 12:06:05 · 200 阅读 · 0 评论