适用于UI编程的范例


9

这是一个更具体的问题(或者实际上是两个,但它们是相关的),来自OOP技术死亡的评论,有人说OOP不是GUI编程的正确范例。

在这里和这里阅读评论,我仍然感觉有很多东西要学习:哪种编程范例被认为是合适的,为什么它们比其他范例更好(也许用示例进行说明?)

我从标题和问题中删除了tk-example


@Inca-请记住,SK-logic(提出此评论的人)在任何可能的情况下都会与OOP作战-就像他执行疯狂任务一样。我强烈怀疑他是否真的可以证明tk与OOP根本无关。
Andreas_D 2011年

-1:引用个人观点好像是事实。面对C#和目标C,“ OOP不是用于GUI编程的正确范例”会显得很困难,因为C#和目标C似乎在很大程度上依赖于OOP进行GUI编程。如果这不是正确的范例,那么苹果的全部巨大市场份额就不存在了。
S.Lott

1
@ S.Lott这不是正确的范例,GUI应该是声明性的。您似乎将流行与正确相混淆。
雷诺斯2011年

@Raynos:“声明性”。如,一些相关对象?我不知道声明不是一堆对象之间的关系。和。对于这个问题,这似乎是题外话。问题似乎是关于OO,而不是更好的编写GUI的方法。与实际问题相比,标题似乎具有误导性。两者都不是很好。
S.Lott

1
@Inca:考虑完全忽略它只是夸张。
S.Lott

Answers:


9

我通常不是OOP的拥护者,但是我想说GUI编程为利用OOP的优点提供了一些最佳机会。通过使用OOP的多态性和继承,可以轻松实现各种小部件。PLT Racket的GUI库就是一个很好的例子。


2
函数式反应式编程似乎更合适。
SK-logic

@ SK-logic:您可以为此做一个很好的案例,并且在Common Lisp(您听说过Cells?)中做了一些有趣的工作。我将编辑答案以使其更加精确。
拉里·科尔曼

5

由小部件及其布局组成的典型GUI完全是声明性的。小部件本身不会彼此交互,因此对象和消息的概念在这里有点陌生。分层声明性DSL目前是一种主流,Tk是早期的例子之一,而WPF是一种更现代的方法来处理同一件事。函数式反应式编程是另一种有趣的(但不是很广泛)的方法。

有些人倾向于在定义层次结构的任何地方看到OOP,这是错误的-严格层次结构(读取-代数数据类型)与Kay的OOP定义之间绝对没有联系。


3
以我的经验,小部件确实需要相互交互以创建更好的GUI,而我所遇到的更具声明性的系统(某些基于xml的系统,包括HTML + css)在交互部分中肯定缺乏可能性。另外,我使用声明式(prolog)和函数式(Haskell)合并UI的经验并没有真正给人以轻松的印象。您是否有资料可以专门讨论更多?我只拿出不太多,为什么某些方法更好的工作,解释非常抽象的(或者非常基本的)例子
印加人
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.