Jump to content

Наполнять

Наполнять
Парадигма объектно-ориентированный
Разработано Университет Оттавы
Разработчик Круизная группа на факультете электротехники и информатики под руководством Тимоти Летбриджа в Оттавском университете
Впервые появился 2008
Стабильная версия
1.34.0 / 6 июня 2024 г. ( 06.06.2024 )
Дисциплина набора текста статический
Платформа JVM
Лицензия МОЯ лицензия
Расширения имен файлов .ump
Веб-сайт www .наполнять .org
Под влиянием
Java , C++ , UML , Ruby , PHP

Umple — язык как для объектно-ориентированного программирования , так и для моделирования с помощью диаграмм классов и диаграмм состояний . Название Umple представляет собой сочетание слов « UML », «обширный» и «простой». [1] указывая на то, что он предназначен для предоставления широких возможностей для расширения языков программирования возможностями UML.

История и философия

[ редактировать ]

Разработка Umple началась в 2008 году в Университете Оттавы . Umple имел открытый исходный код , и его разработка была перенесена в Google Code в начале 2011 года и в GitHub в 2015 году.

Umple был разработан частично для решения определенных проблем, наблюдаемых в модельном сообществе. [2] В частности, он был разработан для согласования моделирования и программирования . Он был призван помочь преодолеть препятствия в отношении моделирования, распространенные в сообществе программистов. Это также было призвано уменьшить некоторые трудности разработки на основе моделей , возникающие из-за необходимости использования больших, дорогих или неполных инструментов. Одна из целей разработки — дать программистам возможность моделировать так, как они считают естественным, путем добавления конструкций моделирования в языки программирования.

Особенности и возможности

[ редактировать ]

Umple можно использовать для текстового представления многих объектов моделирования UML, присутствующих в диаграммах классов и диаграммах состояний . [2] Umple может генерировать для них код на различных языках программирования. В настоящее время Umple полностью поддерживает Java , C++ и PHP в качестве целевых языков программирования и имеет функциональную, но несколько неполную поддержку Ruby .

Umple также включает в себя различные функции, не связанные с UML, такие как шаблон Singleton , ключи, неизменяемость , примеси и аспектно-ориентированное внедрение кода.

Обозначения диаграммы классов, поддерживаемые Umple, включают классы , интерфейсы , атрибуты , ассоциации , обобщения и операции. Код, который Umple генерирует для атрибутов, включает в себя код конструктора , методы get и set. Сгенерированный код существенно различается в зависимости от того, имеет ли атрибут такие свойства, как неизменяемость, имеет значение по умолчанию или является частью ключа .

Umple генерирует множество методов для манипулирования, запроса и навигации по ассоциациям. Он поддерживает все комбинации множественности UML и обеспечивает ссылочную целостность .

Umple поддерживает подавляющее большинство нотаций конечного автомата UML , включая состояния с произвольной глубиной вложенности , параллельные регионы, действия при входе, выходе и переходе, а также длительные действия в состоянии. [3] Конечный автомат рассматривается как перечисляемый атрибут, значение которого контролируется событиями . События, закодированные в конечном автомате, могут быть методами, написанными пользователем или сгенерированными компилятором Umple. События запускаются вызовом метода. Событие может инициировать переходы (в зависимости от защиты ) в нескольких различных конечных автоматах. Поскольку программа может быть полностью написана на основе одного или нескольких конечных автоматов, Umple позволяет программировать на основе автоматов .

Тела методов написаны на одном из целевых языков программирования. То же самое справедливо и для другого императивного кода, такого как действия и меры защиты конечного автомата, а также кода, который необходимо внедрить аспектно-ориентированным способом. Такой код можно внедрить до того, как Umple сгенерирует многие методы в коде, например, до или после установки или получения атрибутов и ассоциаций.

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

Umple в сочетании с одним из целевых языков для императивного кода можно рассматривать и использовать как полноценный язык программирования. Таким образом, Umple плюс Java можно рассматривать как расширение Java.

В качестве альтернативы, если оставить в стороне императивный код и концепции, специфичные для Umple, Umple можно рассматривать как способ выражения большого подмножества UML чисто текстовым способом. Код на одном из поддерживаемых языков программирования можно добавить таким же образом, как UML предполагает добавление кода языка действий.

Лицензия

[ редактировать ]

Umple лицензируется по лицензии MIT .

Вот классическая программа Hello world, написанная на Umple (расширяющая Java): [4]

class HelloWorld {
    public static void main(String [ ] args) {
        System.out.println("Hello World");
    }
}

Этот пример похож на Java, поскольку Umple расширяет возможности других языков программирования.

Программа сохранена в файле с именем HelloWorld.ump, его можно скомпилировать из командной строки:

$ java -jar umple.jar HelloWorld.ump

Чтобы запустить его:

$ java HelloWorld

Ниже приведен полностью исполняемый пример, показывающий встроенные методы Java и объявление ассоциации. [4]

class Person {
    name; // Attribute, string by default
    String toString () {
        return(getName());
    }
}
  
class Student {
    isA Person;
}
  
class Mentor {
    isA Person;
}
  
association {
    0..1 Mentor -- * Student;
}
  
class Person {  
    public static void main(String [ ] args) {
        Mentor m = new Mentor("Nick The Mentor");
        Student s = new Student("Tom The Student");
        s.setMentor(m);
        System.out.println("The mentor of "  + s  + " is " +  s.getMentor());
        System.out.println("The students of " +  m  + " are " +  m.getStudents());
    }
}

В следующем примере описан конечный автомат под названием status с состояниями Open, Closing, Closed, Opening и HalfOpen, а также с различными событиями, которые вызывают переходы из одного состояния в другое. [5]

class GarageDoor
{
    status {
        Open { buttonOrObstacle -> Closing;  }
        Closing {
            buttonOrObstacle -> Opening;
            reachBottom -> Closed;
        }
        Closed { buttonOrObstacle -> Opening; }
        Opening {
            buttonOrObstacle -> HalfOpen;
            reachTop -> Open;
        }
        HalfOpen { buttonOrObstacle -> Opening; }
    }
}

Заполнение дверей на практике

[ редактировать ]

Первая версия компилятора Umple была написана на Java, Antlr и Jet (шаблоны Java Emitter), но в процессе начальной загрузки код Java был преобразован в Umple с использованием метода, называемого Umplification. [6] Позже Antlr и Jet были преобразованы в родной Umple. Таким образом, Umple теперь написан полностью сам по себе, другими словами, он размещается на собственном хостинге и служит собственным крупнейшим тестовым примером.

Umple и UmpleOnline использовались в классе несколькими преподавателями для преподавания UML и моделирования. В одном исследовании было обнаружено, что он помогает ускорить процесс обучения UML, а также улучшает оценки учащихся. [7]

Инструменты

[ редактировать ]

Umple доступен в виде файла Jar , поэтому его можно запускать из командной строки, а также в виде плагина Eclipse .

Существует также онлайн-инструмент для Umple под названием UmpleOnline. [8] , который позволяет разработчику создавать систему Umple, рисуя диаграмму классов UML, редактируя код Umple или и то, и другое. Модели Umple, созданные с помощью UmpleOnline, хранятся в облаке . В настоящее время UmpleOnline поддерживает только программы Umple, состоящие из одного входного файла.

Помимо кода, инструменты Umple могут генерировать множество других типов вывода, включая пользовательские интерфейсы на основе модели Umple. [9]

См. также

[ редактировать ]
  1. ^ «Официальный сайт проекта» .
  2. ^ Перейти обратно: а б Нападающий, Андрей (2010). «Конвергенция моделирования и программирования: облегчение представления атрибутов и ассоциаций в универсальном модельно-ориентированном языке программирования» . Докторская диссертация, Университет Оттавы .
  3. ^ Бадреддин, Омар (2012). «Проявление двойственности модели и кода: облегчение представления конечных автоматов на универсальном модельно-ориентированном языке программирования» . Докторская диссертация, Университет Оттавы .
  4. ^ Перейти обратно: а б «Примеры привет, мир» . Простое руководство пользователя . 2013.
  5. ^ «Базовые государственные машины» . Простое руководство пользователя . 2013.
  6. ^ Летбридж, Тимоти К.; Нападающий, Эндрю; Бадреддин, Омар (2010). «Умплификация: рефакторинг для постепенного добавления абстракции в программу». 2010 17-я Рабочая конференция по обратному проектированию . стр. 220–224. дои : 10.1109/wcre.2010.32 . ISBN  978-1-4244-8911-4 . S2CID   14808702 .
  7. ^ Летбридж, Тимоти К.; Муссбахер, Гюнтер; Нападающий, Эндрю; Бадреддин, Омар (2011). «Преподавание UML с использованием Umple: применение модельно-ориентированного программирования в классе». 2011 24-я конференция IEEE-CS по образованию и обучению программной инженерии (CSEE&T) . стр. 421–428. дои : 10.1109/cseet.2011.5876118 . ISBN  978-1-4577-0349-2 . S2CID   15975894 .
  8. ^ Группа CRuiSE, Университет Оттавы. «Умпл Онлайн» .
  9. ^ Нападающий, Эндрю; Бадреддин, Омар; Летбридж, Тимоти К.; Солано, Джулиан (июль 2012 г.). «Быстрое прототипирование на основе моделей с помощью Umple». Программное обеспечение: практика и опыт . 42 (7): 781–797. дои : 10.1002/спе.1155 . S2CID   36046547 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 241996f5bff79655f40c78899f6ab23d__1717713900
URL1:https://arc.ask3.ru/arc/aa/24/3d/241996f5bff79655f40c78899f6ab23d.html
Заголовок, (Title) документа по адресу, URL1:
Umple - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)