Специфицирование интерфейсов объектов
Важной частью любого процесса проектирования является специфицирование интерфейсов между различными компонентами системы. Интерфейсы необходимо определить так, чтобы объекты и другие компоненты можно было проектировать параллельно. Определив интерфейс, разработчики других объектов могут считать, что интерфейс уже реализован.
Одному объекту не обязательно должен соответствовать один интерфейс. Один и тот же объект может иметь несколько интерфейсов, причем каждый из них предлагает свой способ поддержки методов. Такая поддержка имеется непосредственно в Java, где интерфейсы объявляются отдельно от объектов и объекты "реализуют" интерфейсы. Другими словами, через один интерфейс можно получить доступ к набору объектов.
Проектирование интерфейсов объектов связано со спецификацией интерфейса в объекте или группе объектов. Под этим подразумевается определение сигнатур и семантик сервисов, которые поддерживаются этим объектом или группой объектов. В UML интерфейсы можно определить подобно диаграмме классов. Однако раздела свойств там нет, поэтому в стандарте UML шаблон «интерфейс» следует включать в именную часть.
Многие предпочитают альтернативный подход, в котором при определении интерфейса применяется язык программирования. В листинге 10.1 показана спецификация интерфейса на языке Java для метеостанции. По мере усложнения интерфейсов такой подход оказывается более эффективным, так как для обнаружения ошибок и противоречий в описании интерфейса можно воспользоваться средствами проверки синтаксиса, имеющимися в компиляторе языка программирования. Из представленного описания видно, что некоторые методы могут использовать разное количество параметров. Например, метод завершение без параметров применяется к целой станции, а тот же метод с параметрами может отключить один прибор.
Листинг 10.1. Описание интерфейса метеостанции
interface Метеостанция {
public void Метеостанция();
public void запуск();
public void запуск (Прибор i);
public void завершение();
public void завершение(Прибор i) ;
public void отчетПогода();
public void тестировать();
public void тестировать(Прибор i);
public void калибровать(Прибор i);
public int получитьИдНомер();
}//Метеостанция
Дата добавления: 2015-08-14; просмотров: 934;