我读过Head First Java,我理解OOP是如何工作的.这是我的问题:我是一名PHP程序员,虽然我在PHP中使用了OOP,但我很难弄清楚应该是什么对象以及提供它的方法.
例如,假设我有一个允许人们登录和编辑文档的应用程序.如果只有一个实例,为什么文档应该是一个对象?我应该将deleteDocument()方法提供给文档对象还是管理对象?该文档是被删除的文档,但管理员是执行该操作的文档.
所以我真正的问题是,来自程序背景,我如何弄清楚应该是什么对象以及应该有什么方法?
我有以下代码:
#include <boost/shared_ptr.hpp>
struct Foo { int a; };
static int A;
void
func_shared(const boost::shared_ptr<Foo> &foo) {
A = foo->a;
}
void
func_raw(Foo * const foo) {
A = foo->a;
}
Run Code Online (Sandbox Code Playgroud)
我认为编译器会创建相同的代码,但对于shared_ptr版本,会发出额外的看似冗余的指令.
Disassembly of section .text:
00000000 <func_raw(Foo*)>:
0: 55 push ebp
1: 89 e5 mov ebp,esp
3: 8b 45 08 mov eax,DWORD PTR [ebp+8]
6: 5d pop ebp
7: 8b 00 mov eax,DWORD PTR [eax]
9: a3 00 00 00 00 mov ds:0x0,eax
e: c3 ret
f: …Run Code Online (Sandbox Code Playgroud) 我使用通用列表将不同实体的数据填充到一组列表中,如下所示:
List<Foo> foos ..
List<Bar> bars ..
Run Code Online (Sandbox Code Playgroud)
我需要将这些列表写入文件,我有一个util方法来使用反射来获取属性的值等.
我想要做的是:使用单一方法将这些文件写入文件,例如:
void writeToFile(a generic list)
{
//Which i will write to file here.
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我希望能够打电话:
writeToFile(bars);
writeToFile(foos);
Run Code Online (Sandbox Code Playgroud) 我已经尝试过psvn.el,但是你正在查看文件的命令只是可怕的:M-x svn-file-show-svn-diff.我尝试安装vc-svn.el,但无法在我的版本的Emacs上运行:2004-03-10的NYAUMO的GNU Emacs 21.3.1(i386-mingw-nt5.1.2600).我已经尝试将vc-snv.el的副本放在我的site-lisp目录中,但是当我尝试运行命令"Mx vc-diff"时,它说我的文件"不受版本控制".
在Emacs的wiki页面,其中主要集中在VC-svn.el,似乎是可怕的过时,因为很多的链接不工作.
这是我一直在研究的一个棘手的iPhone问题.我在页面上有三个UIScrollViews,一个只能水平滚动,一个只能垂直滚动,另一个水平和垂直滚动.我想将视图锁定在一起,以便水平唯一滚动视图的水平位置与主滚动视图的水平位置匹配,同样垂直滚动视图,以便拖动主滚动视图来控制水平和垂直滚动视图.
问题是,我完全难过了.我在Apple文档中查看过,但似乎没有任何方法可以正式执行此操作.有人认为我曾经以某种方式"克隆"任何滚动视图上的任何触摸到另外两个上的点,但我不知道如何做到这一点.如果有人对此有任何想法,我会非常感激.
编辑:我尝试了子类化UIScrollView的建议并重写touchesMoved以在其他滚动视图上调用touchesMoved.不幸的是,touchesMoved没有被调用滚动动作,因为UIScrollView以某种方式截取这些动作并使用它们来控制它的滚动.我开始寻找更多低级别的东西并找到核心动画滚动图层,但理想情况下我不想从头开始重新创建UIScrollView.还在努力想出这个.
有没有办法在c#中用linq复制db记录到sql?
Id [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Foo] [nvarchar](255) NOT NULL,
[Bar] [numeric](28,12) NOT NULL,
...
Run Code Online (Sandbox Code Playgroud)
鉴于上面的表格,我想复制一条记录(但是给它一个不同的id),以便在以后添加到数据库和Linq dbml文件的新字段仍然可以复制而不必更改复制记录的代码.
即我不想为newRecord.Foo = currentRecord.Foo;桌子上的所有字段写.
我在JavaScript和jQuery中有以下代码:
$("<li />")
.html('Some HTML')
Run Code Online (Sandbox Code Playgroud)
我希望能够通过使用if- else语句来更改.html的内容.我的代码应该是这样的,但它不起作用.
var showinfo = <?php echo '$action'; ?>
$("<li />")
if (showinfo == 'action1'){
.html('Some HTML')
else {
.html('Other HTML')
}
Run Code Online (Sandbox Code Playgroud)
我该怎么改变它?
我最近一直在考虑在排序算法中使用面向对象的设计.然而,我无法找到一种合适的方法来进一步制作这种在O(n)时间内进行排序的排序算法.
好的,这是我一周以来的想法.我有一组输入数据.我将为每个输入数据分配一个质量(假设输入数据的类型Mass和类型Sphere.如果我们假设所有对象都是完美的球形物体,其形状与其质量成比例,则最重的物体首先接触地面.).我将把所有输入数据放在距离地球相同距离的空间中.我会让他们自由落体.根据引力定律,最重的一个首先击中地面.它们命中的顺序将为我提供排序数据.这在某种程度上很有趣,但在下面我觉得应该可以使用我迄今为止学到的OO
真的有可能制作一种使用引力拉动场景的分类技术,还是我愚蠢/疯狂?
编辑:同时关闭所有撞击地面的物体,因此我引入了球形物体概念.
有谁知道编写通用JMS客户端是否可行- 即.与不同提供商的JMS合作的一个(例如Sonic,IBM SIB,Jboss等)?
每次我编写JMS客户端代码时,它总是非常特定于实现,具有依赖的JAR和Context类.
谢谢.
是否有人知道可以嵌入C++(或Pascal以外的任何其他东西)应用程序的Pascal解释器/编译器?我正在克隆(缺少一个更好的词)一个使用Object-Pascal兼容的脚本语言并且需要与脚本兼容的应用程序.我最终会写一个翻译吗?(!)