我正在高中开办一个编程俱乐部,我已经使用C++中的简单课程向OOP介绍了我的学生.我相信至少在理论上他们会得到这个想法.我希望能够为他们提供一个可以共同完成的具体项目.我的问题是采取哪种方法.当我在大学学习编程课程时,我看到了两种不同的方法,但在我看来,他们都有严重的缺点.我最后沉睡了大部分时间,并通过书籍和例子自己学习这些东西.既然我是老师的话,我想了解哪种方法更可取或者是否有第三种选择.
使用的方法1是在板上(或在具有投影屏幕的计算机上)编写程序.始终首先编写类定义.通常学生在这一点上看起来真的很困惑,因为变量和方法的目的对他们来说似乎完全模糊不清.他们唯一一次了解每个变量和方法的用途以及它们如何进行交互是指导员最终编写实现的时候(我称之为外向内方法)
方法2是解释我们想要实现的目标,并根据需要创建类和成员.这有相反的问题.他将编写一种方法,使用这些必须在以后实现的虚构类.但学生们并不知道这些其他课程如何运作.
有几个关于如何制作简单GUI的例子.我的问题是什么被认为是这样做的正确方法,这样做的理由是什么?
我一直在Eclipse下使用Window Builder Pro,并检查正在生成的代码.显然,Window Builder更喜欢在视觉类的main方法中将组件(按钮等)声明为局部变量.但是,Window Builder中有一个按钮允许转换为字段.我遇到的大多数例子似乎都更喜欢现场声明.
此外,许多示例表明创建一个扩展的单独类更好JFrame.Window Builder只是JFrame在类中声明为一个字段.
我是否应该为许多事件或多个处理程序提供单个处理程序.Window Builder为每个事件声明匿名处理程序.
我只想清楚首选方法是什么.
我有2个字符串向量(一个大约是另一个的1/3).我试图实现一个算法,将两个向量随机混合在一起.在结果矢量中,先前在矢量A中的项目可以相互跟随,但是矢量B中的项目不能.
例如,如果向量A中的每个元素都是"FOO"并且向量B中的每个元素都是"BAR",那么得到的向量可能是{"FOO","FOO","BAR","FOO","BAR", "富", "富", "BAR"}
你可以看到"FOO"可能会重复,但"BAR"一定不能重复
这大致是我到目前为止:
#include <string>
#include <chrono>
#include <algorithm>
#include <random>
#include <vector>
std::vector<std::string> a(1000, "FOO");
std::vector<std::string> b(300, "BAR");
std::vector<std::string> result;
bool resultIsValid();
void mergeVectors()
{
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::mt19937 generator(seed);
result = a;
result.insert(result.end(), b.begin(), b.end());
while (!resultIsValid())
{
std::shuffle(a.begin(), a.end(), generator);
}
}
bool resultIsValid()
{
for(int i=0; i<result.size()-2; ++i)
if (result[i] == "BAR" && result[i+1] == "BAR")
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
这不是实际的代码,但这应该给出一个想法.当我运行它时,程序进入无限循环,因为字符串的实际数量要高得多(在10000范围内),它永远不会得到有效的向量.总是存在至少一个"BAR"顺序重复.有人能够建议一个更好的选择,然后只是继续重新检查创建的矢量为重复的"BAR"?我是否比这更复杂?
好的,如果我没有在这里看到一些非常简单的东西或忘记C++的一些基本规则,我提前道歉但我不确定为什么这不能按预期工作.
这是一个我无法工作的代码示例
class Foo
{
private:
Bar *ptrBar;
public:
void doSomething(int x, Bar *p = ptrBar);
}
Run Code Online (Sandbox Code Playgroud)
编译器遇到此函数的默认参数问题.有什么理由说这不起作用.
基本上doSomething会对Bar对象进行一些操作,我希望它是ptrBar默认指向的那个.除非忘记什么,否则一切似乎都是合理的?