Translate

середа, 27 березня 2013 р.

Особливості класів в Blueprint документах


Особливість (feature) класу - це група взаємозвязаних атребутів і операцій класу, що призначені для підтримання певної відповідальності.

Особливітсь класу записуєтся за допомогою тегу feature з атребутом name, який містить ім'я особливості. Дочірніми тегами для feature можуть бути слідуючі:

1. description - опис особливості класу.
2. responsibility - відповідальнісь яку несе дана особливість.
3. feature - під-особливості на які можу групуватись дана.
4. attributes - атрибути: типи даних, константи, змінні, елементи даних, інтерфейси, класи.
5. operations - операції: коструктори, деструктори, методи.
6. static - псевдокод який виконуєтся при загрузці класу.
7. thread - псевдокод потоку класу, якщо клас активний.
8. diagrams - UML діаграми які відображаются в бровзері при відкритті документу. 
9. test-procedures - тестові процедури, для тестування даної особливості.

Приклад використання включає клас PlainTextArea - компонент для редагування тексту і його особливість State knowing - знання стану. Тут згруповані функції призначені для повідомлення викликаючого коду про стан в якому перебуває текстовий компонент.

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href=".blueprint/analysis.xslt"?>
<!DOCTYPE analysis SYSTEM ".blueprint/analysis.dtd">
<analysis>
    <architecture>
        <class id="PlainTextArea" name="PlainTextArea" visibility="public">
            <description>Text component for editing plain text.</description>
            <superclass name="JTextArea" />
            <feature name="State knowing">
                <description>Knowing in witch state is text</description>
                <responsibility>Knowing whether text is selected</responsibility>
                <responsibility>Knowing whether text is empty</responsibility>
                <responsibility>Knowing whether can all text may be selected</responsibility>
                <responsibility>Knowing whether can text may be printed</responsibility>
                <operations>
                    <method name="isTextSelected" visibility="public"><returns type="boolean" /></method>
                    <method name="isAllTextSelected" visibility="public"><returns type="boolean"/></method>
                    <method name="isTextEmpty" visibility="public"><returns type="boolean" /></method>
                    <method name="canSelectAll" visibility="public"><returns type="boolean"/></method>
                    <method name="canPrint" visibility="public"><returns type="boolean"/></method>       
                </operations>
            </feature>
        </class>
    </architecture>
</analysis>

Вигляд документу в бровзері: