Содержание сайта
Главная Новичку Цитаты Реализации Статьи Документация
Компании Программы Ссылки Обсуждение Обсуждение 2 Гостевая

Dolphin Smalltalk, Part I.
По традиции, знакомство с новым языком или средой разработки начинается с создания простейшего приложения HelloWorld. Что мы и проделаем в среде Dolphin Smalltalk XP.

Hello, World!

Традиционно Smalltalk считается закрытой и недружественной программисту системой. В какой-то мере это верно, так как Smalltalk задумывался как самодостаточная среда, в которой все реализовано на самом языке. Поэтому по отношению к нему не был применим термин stand-alone executable.

Но, к счастью, современные реализации Smalltalk стараются не отставать от потребностей разработчиков, и позволяют создавать отдельные приложения, способные эффективно взаимодействовать с операционной системой и другими внешними библиотеками, как мы привыкли это делать в традиционных языках.

Рассмотрим первый случай - создание простейшего консольного приложения.

Package Browser

Для этого откройте инструмент под названием Package Browser. В нем выберите команду New Package и создайте новый пакет HelloWorld в подпапке My Examples для удобной навигации.

После этого откройте System Browser и в левом верхнем углу выберите папку My Examples. Панель, расположенная правее, покажет перечень классов нашего пакета, пока он пустой.

Теперь наша цель - создать подкласс класса ConsoleSessionManager, где будет размещаться метод main. Для этого выберите папку Object Arts, правее должен появится список всех стандартных классов. Найдите класс ConsoleSessionManager (с помощью набора на клавиатуре первых четырех букв названия). После этого правой кнопкой мыши откройте контекстное меню и выберите команду New.... Вам будет предложено ввести имя нового класса, введите HelloWorldMain, и выбрать пакет, в котором его создавать. Перейдите к папке My Examples и выберите пакет HelloWorld.

Hello World

После этого в окне System Browser будет выбран созданный класс внутри нашего пакета.

Теперь необходимо добавить собственно метод main и в нем проивести вывод на консоль.

Перейдите к закладке Method source в нижней панели окна и введите текст метода.

	main
		self stdout nextPutAll: 'Hello, World!'; cr; flush.
		self stdin nextLine.

Первая строка выводит надпись 'Hello, World!' на экран, вторая строка дожидается нажатия Enter.

Исходный код введен, настала пора сохранить изменения в пакете, иначе они будут присутствовать только в текущем образе, но не на диске. Необходимо в списке Packages через контекстное меню выбрать команду Save.

ВНИМАНИЕ!
Последующие действия возможны только в версии Dolphin Smalltalk Professional.

Далее, чтобы создать отдельное приложение, в том же контекстном меню выберите Deploy Executable. Появится окно инструмента Lagoon Deployment Wizard. Настройки по умолчанию вполне подходят, требуется только на втором шаге указать путь к исполняемому приложению. После этого можете нажать кнопку Deploy.

Следует, также, иметь ввиду, что Dolphin автоматически сохранит текущий образ, поэтому перед началом операции может сделать ему Save As под другим именем, чтобы оставить первоначальный образ чистым.

В итоге, на диске будет создано консольное приложение HelloWorld.


Playground

Рассмотрим стандартный пример Playground из поставки продукта. В документации подробно описаны сценарии работы с этим примером.

Для начала, создадим окно Playground с несколькими фигурами внутри него. Это можно сделать в окне Workspace с помощью команды Do It. Введите и выполните в нем следующий код:

	playground := Playground new.
	playground add: Triangle new.
	playground add: Square new.
	playground add: Circle new.

На экране должно появится соответствующее окно. Пусть оно останется открытым до конца операции.

Теперь, как и в примере HelloWorld, найдите пакет Playground в списоке пакетов окна System Browser или Package Browser и выберите команду Deploy Executable. Как и раньше, нужно выбрать путь к исполняемому файлу и оставить другие параметры без изменения. В итоге снова будет создан нужный исполняемый файл.

Стоит отметить, что в таком виде создание отдельного приложения для визуальных приложений выглядит легче, чем для консольных. Но и в случае визуального приложения можно применить тот же подход - создать наследника класса RuntimeSessionManager и в методе main сделать всю необходимую инициализацию. То есть создать окно Playground, добавить фигуры, и т.д. Такой метод предпочтительнее, когда приложение должно выполнить некоторые операции сразу после запуска.




Есть комментарии? Пишите.