Проектирование и реализация гетерогенных приложений
Цель: знакомство с проектированием и реализацией гетерогенных приложений для платформы .NET на примере совместного проекта из компонент на языках SML и С#.
Гетерогенные приложения
х + у = 2
Платформа программирования .NET изначально разрабатывалась для построения приложений на компонентной основе и обеспечения независимости взаимодействия компонентов от языка программирования. Благодаря этому в рамках одного приложения могут быть использованы компоненты, реализующие различные подходы к программированию.
В качестве основной структурной единицы компонентного программирования выступает решение (solution), которое может состоять из сборок (assembly). Сборка представляет из себя управляемую динамическую библиотеку (DLL-файл) для .NET или приложение (ЕХЕ-файл). В каждом решении должна быть хотя бы одна сборка.
Для взаимодействия между сборками используется механизм ссылок. Ссылка ( reference ) - это пространство имен из одной сборки, доступное в другой. После добавления дополнительного проекта к решению и ссылки к основному проекту, в коде основного проекта можно пользоваться пространствами имен дополнительного.
Взаимодействие с SML.NET на компонентном уровне
Код SML.NET может создавать пространство имен, видимое в рамках других приложений. Для этого в файл script, smlnet добавляется директива export. Данная директива экспортирует фрагмент программы на языке программирования (скажем, SML) в форме объекта или структуры в пространство имен .NET. Последнее, в свою очередь, может быть использовано в любой сборке решения при добавлении соответствующей ссылки.
Описание директивы export
Синтаксис:
export имя1[, имя2 ...]
При создании нового проекта SML.NET платформа автоматически заносит имя основной структуры SML-проекта в создаваемый файл. В случае добавления дополнительных файлов или создания дополнительных экспортируемых структур экспортом необходимо управлять вручную.
Для создания ссылки на другие проекты .NET в решении для SML.NET необходимо добавить директиву reference.
Директива reference
Синтаксис:
Reference файл_с_кодом_компонента_1 [...]
Порядок выполнения работы
- 1. Реализовать программу на C# в соответствии с вариантом исполнения.
- 2. Представить в графическом виде взаимодействие компонентов в среде .NET.
Варианты заданий
Зыков С. В. Введение в теорию программирования. Объектно-ориентированный подход
Оснастить графическим интерфейсом на языке C# следующие функции на языке SML.
Реализовать функцию на языке программирования SML, которая выполняет синтаксический разбор следующего аппликативного выражения по ассоциации влево с построением бинарного дерева:
- 1. а (Ьс)
- 2. ас (Ьс)
- 3. (ас) (Ьс)
- 4. (ab) (с (de) )
- 5. a (b (cd) (ef) )
- 6. a (b (cd) (ef) g)
- 7. a (b ( (cd) (ef) )
- 8. (a (be (de) f) gh)
- 9. abb (edd (e) fg)
- 10. (ab (c (de) ) f (g (hi) ) j )
Реализовать функцию на языке программирования SML, которая выполняет синтаксический разбор следующего аппликативного выражения по ассоциации вправо с построением бинарного дерева:
- 1. а (Ьс)
- 2. ас (Ьс)
- 3. (ас) (Ьс)
- 4. (ab) (с (de) )
- 5. a (b (cd) (ef) )
- 6. a (b (cd) (ef) g)
- 7. a (b ( (cd) (ef) )
- 8. (a (be (de) f) gh)
- 9. abb (edd (e) fg)
- 10. (ab (c (de) ) f (g (hi) ) j )