问题标签 [smalltalk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
207 浏览

language-agnostic - 对应的正确 OO 建模

在我的编程中不断出现一些东西,那就是从某些角度来看,两件事是相同的,但从另一个角度来看是不同的。就像,假设您构建了一个由火车连接的火车站图,那么 Vertex 和 RailStation 类有时是相同的,有时则不是。

所以,想象一下我有一个非常代表火车站和火车的图表。然后我将此图交给另一个对象,该对象删除了一些顶点,然后我希望相应的火车站消失。

我不想让火车站成为顶点的“属性”,他们不是。此外,问题是对称的:如果我删除一个火车站,我希望相应的顶点消失。什么是建模或对应的正确OO方式。如果最终整体使用简单易行,我愿意通过编写一些支持方法或类来多走几英里。

我目前正在使用 Smalltalk 编程语言,但我认为这个问题并不是 smalltalk 特定的。我之所以提到它,是因为在 Smalltalk 中,您可以做一些很酷的技巧,例如检查调用堆栈,这在这种情况下可能会有所帮助。

更新:嗯,RailStations 不是顶点!他们是吗?

好的,让我们按照答案的要求考虑真实的代码。让我模拟一个有孩子的人。这是最简单的事情,对吧?孩子也应该知道他们的父母,所以我们就像一棵双环树。为了更容易从孩子中解散父母,我将父母和孩子之间的联系建模为关系,具有父母和孩子的属性。

所以,我可以实现 parent>>removeChild: 也许像这样

因此,父母有一系列关系,而不是孩子。但每一种关系都对应一个孩子。现在我想做这样的事情:

这应该删除关系孩子。

在这里,关系和孩子在某种意义上是对应的。那么,我现在该怎么办?不要误会我的意思,我完全知道我可以在不引入关系类的情况下解决问题。但事实上,父母和孩子确实有共同的关系,那么为什么不建模并使用它来帮助解散双链接呢?

0 投票
1 回答
628 浏览

smalltalk - 在 Pharo 中安装 Magma 和 LPF

我一直在尝试在 Pharo 中安装 Magma,但完全没有运气。这是我到目前为止尝试过的东西:

  1. 使用蒙蒂塞洛安装squeaksource.com/MagmaTester- MaObjectSerializer 中的语法错误 >> setUpClassDefinitionProcessing。
  2. 从 Universe 安装 - 图像挂起,显然在尝试点击installer.pbwiki.com/f/mc15.st.
  3. 直接安装 LPF HTTPSocket httpFileIn: 'ftp.squeak.org/3.11/bob/LPF.st'-- 我得到一个语法错误,因为显然其中一个安装程序文件是 Unicode(或者至少每个字符都意外地是双倍宽)。

有没有人有这方面的运气?

0 投票
3 回答
290 浏览

smalltalk - Squeak 系统浏览器问题

我正在为 OOP/OOD 类使用“Squeak By Example”(SBE)图像(学校修改版本)。但是,我的系统浏览器缺少 SBE 中出现的一些功能。我假设有一些配置选项可以帮我找回它们,但我还找不到它们。

我的问题是:

1) 如何取回按钮?在底部窗格中应该有一堆按钮(浏览、发件人、实施者、版本、...、源)。我的按钮不见了。

2)如何让按钮上方的小工作区出现?顶部窗格下方和按钮上方应该有一个我可以输入的区域,但它没有出现。

提前致谢!

罗伯特

编辑 - 我确实在首选项浏览器中闲逛并尝试了很多设置。我设法让按钮回来,然后又把那个小的(未知名称)工作区窗格拿回来,但我不知道怎么做。我试图再次系统地关闭东西以找出哪些设置控制了什么,但我无法确定是什么控制了这两个问题。所以即使我有它的工作,我希望一些知识渊博的人让我知道如何控制这些,因为它可能会帮助我学习......

0 投票
6 回答
1227 浏览

user-interface - 为什么 Squeak 界面的外观和行为如此陈旧?

不要误会我的意思——我喜欢 Smalltalk,但是...

对我来说,Squeak 界面是最大的障碍之一。我喜欢 Smalltalk——不是用户界面。只需将 GNOME、MacOS X 和 Windows Vista 等现代界面与 Squeak 的平面 2-D 卡通 16 色(或者是 256 色?)界面的易用性和视觉上令人愉悦的视觉效果相结合。

难道我们不会看到现代用户界面设计融入 Squeak 吗?

还是我完全遗漏了一些东西,而当前的计算机用户界面都是错误的?

0 投票
8 回答
2059 浏览

java - 是什么让框架成为“真正的”MVC 框架?

在阅读有关 MVC 框架的在线讨论时,我听到很多来自 Java/.NET 开发人员的评论指向 PHP 项目,如 Cake、Code Igniter 和 Symfony,“这些都是聪明的 hack,但不是真正的 MVC”。

那么,是什么让某个东西成为“真正的”MVC 框架?即 .NET 或 Java MVC 框架的示例与 Cake、Code Igniter、Symfony 等不同,这些不同的东西是什么?只是 PHP 缺乏需要引导程序的强制面向对象,还是其他原因?

我知道为什么 PHP 语言“很烂”,我对 MVC 实现和/或使用的差异更感兴趣。

0 投票
2 回答
642 浏览

smalltalk - 用数组初始化对象

我正在阅读(使用 Squeak)发现更好的代码:Ron Jeffries 的 Smalltalk 系列保龄球,但我无法通过第三篇文章。

正在创建一个新类(称为 Frame),它在构造函数中将数组作为参数。

当我尝试在一个简单的测试中运行它时:

我收到以下错误:

替代文字 http://files.getdropbox.com/u/120566/junk/error.png

我应该如何修改 #new 消息才能使用数组初始化 Frame 对象?

0 投票
1 回答
632 浏览

smalltalk - 吱吱声 - 我如何移动一个圆圈?

在 Squeak Smalltalk 环境中,我正在尝试学习 Morphic。有很多很多 Morphic 类,我无法确定最适合用于我当前应用程序的类,并且我不希望发明此时已经存在的任何东西。相关代码/信息的链接将不胜感激。虽然 Pharo 可能更好,但我被 Squeak atm 困住了。

我的问题是:
使用 Squeak 和 Morphic,我如何创建某种画布,将其放入可移动、可滚动、可调整大小的窗口中,将其显示在桌面上,将 circleMorph 拖放到该画布上,并允许用户抓取圆圈并在画布上移动它?

谢谢!

0 投票
1 回答
505 浏览

smalltalk - 引用通过“代码”直接操作创建的 Squeak (Mophic) 中的变形

如何引用(即编程)通过直接操作创建的变形,例如通过工作区中的 Squeak/Smalltalk 代码将文本框从耗材菜单拖动到桌面?当我通过 Squeak/Smalltalk 代码实例化一个 Morph 时,我很好(好吧——我只是在学习 Morphic),但是当我将 Morph 拖入存在时我不知所措。

0 投票
3 回答
1675 浏览

persistence - Magma、GOODS、GLORP 还是其他?

所以我已经使用 Smalltalk 大约 6 个月了(Squeak 和 Pharo),主要是做数据分析,我即将开始我的第一个 Seaside 应用程序。所以我想问你们所有的 Smalltalkers,你们最喜欢的持久性解决方案是什么?我一直在关注 Magma、GOODS 和 GLORP。我是一名长期的 python 黑客,所以我得到了 ORM,但似乎 Magma 或 GOODS 会是一个更好的解决方案,因为它们看起来是面向对象的。

快速说明:我想在多个 VM 上扩展我的应用程序,因此仅将数据保存到映像不会真正起作用。

谢谢!

0 投票
4 回答
379 浏览

smalltalk - 是否有一个脚本可以将 Pharo 核心图像变成更有用的东西,包括 OmniBrowser?

由于 Pharo 内置的编译器存在一些奇怪的问题,我无法使用最新的 dev Pharo 版本。好。我想知道与开发图像相比,是否有一种快速的方法可以将核心图像缺少的所有漂亮的附加功能安装到 Pharo 中。