Корректировка связей и UML

B

Java переименование класса или пакета выливается в достаточно сложный про­цесс, который называется Корректировкой связей {Refactoring). Корректировка связей связана с изменением названий или расположения элементов программы во всех ее фрагментах, где имеются ссылки на эти элементы.

Корректировка связей позволяет решить множество проблем, с которыми вы, возможно, уже успели столкнуться. Чаще всего ее используют для перемещения файлов или переименования классов и пакетов. Даже переименование одного един­ственного метода или переменной является элементом корректировки связей. Час­то программист делает множество попыток для того, чтобы решить некоторую зада­чу. В конечном итоге, одна из этих попыток оказывается успешной. В этот момент может понадобиться переименовать проект. Переименование проекта также являет­ся элементом корректировки связей.

В этой главе мы сначала выполним корректировку связей с помощью UML-брау­зера (UML Browser), который является инструментом редакции JBuilder Enterprise. Если вы используете редакцию JBuilder SE, то сможете легко и просто провести кор­ректировку связей без участия UML-браузера. Также я предложу к рассмотрению и другие инструменты корректировки связей, представленные в JBuilder. Затем мы обсудим, как можно осуществить корректировку связей для редакции Personal, используя мощный инструмент с открытым исходным кодом, называющийся JRefactory Этот инструмент также поддерживает UML и включает в себя возможно­сти печати. Кроме того, он способен переименовывать классы и пакеты при про­смотре UML-диаграмм.

Пусть вас не пугают UML-графики, а также звучание такого необычного терми­на, как "корректировка связей". На самом деле, эта тема достаточно проста для по­нимания. Все, что вам придется делать, это использовать некоторые инструменты с необычными названиями для переименования классов и пакетов. Однако поймите меня правильно, эти инструменты выполняют очень важную функцию, и их реали­зация, должно быть, представляла собой сложную задачу. Тем не менее, пользовать­ся ими совершенно не сложно.

Корректировка связей пакетов

Термин "корректировка связей" кажется сложным. Тем не менее, во время так на­зываемой корректировки связей пакета выполняется всего лишь его переименова­

Ние.

Предположим, вы создали проект по умолчанию с именем вроде untitled27. Вы начинаете экспериментировать с проектом и вдруг понимаете, что написали что-то интересное, и вам хочется это самое интересное сохранить. Однако вы не хотите, чтобы проект продолжал носить имя untitied27, которое он получил по умолча­нию. Вместо этого, вы желаете назвать его, как-нибудь, Myfancycode. Проблема зак­лючается в том, что по всему проекту фигурируют ссылки на имя untitled27. Инст­рументы корректировки связей позволяют легко и просто переименовать все ссыл­ки, в которых упоминается untitied27, по всему проекту. Этот процесс включает в себя не только внесение изменений в код, но и перемещение файлов на диске из ка­талога untitlβd27 в новый каталог untitied27. Корректировка связей — это рутин­ная работа, которую в определенный момент приходится выполнять вне зависимос­ти от того, на каком языке программирования вы работаете. Однако в языке Java, из-за широкого использования пакетов, корректировка связей представляет собой особенно важную задачу, которую приходится выполнять достаточно часто.

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

Независимо от того, поддерживаете ли вы доктрину экстремального программи­рования, скорее всего, вы столкнетесь с множеством ситуаций, где придется пере­именовать пакет, класс или какую-то переменную в своей программе. В таких случа­ях на помощь приходят инструменты корректировки связей JBuilder.

Подготовка к корректировке связей

Нашим первым шагом будет создание программы по умолчанию. Для начала, закройте все открытые проекты в JBuilder. Затем выберите в меню пункт File ∣ New и щелкните на пиктограмме Application внутри закладки General галереи объектов Object Gallery. В результате откроется мастер проектов Project Wizard. На шаге 1 мас­тера проектов присвойте проекту имя HiyTriaIProject и щелкните на кнопке Finish. Откроется мастер приложений Application Wizard. Оставьте настройки по умолчанию без изменений и щелкните на кнопке Finish.

В последующих разделах мы рассмотрим, как происходит переименование в ре­дакциях JBuilder Enterprise и SE. Оба процесса очень похожи друг на друга. Редак­ция Enterprise при корректировке связей представляет проект в форме UML. Это может оказаться весьма полезным, но все же это скорее роскошь, нежели необходи­мость.

Переименование пакета или класса представляет собой процесс, состоящий из двух этапов. Во-первых, вы выбираете элемент, который хотите переименовать, а за­тем фактически его переименовываете. Первый шаг в редакции Enterprise можно выполнить двумя способами, а в редакции SE — всего лишь одним. Пользователи редакции Enterprise могут отдать предпочтение любому из способов, в то время как пользователям редакции SE доступен лишь второй способ. I

Переименование в редакции Enterprise

Если вы пользуетесь редакцией JBuilder Enterprise, щелкните указателем мыши на закладке UML в нижней части панели содержимого, после чего появится UML-брау­зер. Здесь вы можете просмотреть основные свойства своего проекта (см. рис. 31.1).

В UML-браузере щелкните правой кнопкой мыши на слове Hiytrialproject (оно на­ходится выше UML-диаграммы Framel). Должно появиться контекстное меню. Вы­берите в нем пункт Rename… (Переименовать…).

примечаниеВ следующем разделе дается описание второго способа переименования пакета. Поскольку этот второй способ доступен и в редакции Enterprise, пользователям упо­мянутого продукта не стоит прерывать чтение.

Инструменты, подобные описанным здесь, доступны также и в JRefactory.

Переименование в редакции SE

Если вы имеете дело с редакцией JBuilder SE, то у вас нет доступа к UML-браузе­ру. Тем не менее, вы все же можете переименовывать свои пакеты, используя ту же технологию, которая присутствует в редакции JBuilder Enterprise. Вместо того чтобы открывать UML-браузер, просто откройте редактор. Перейдите в верхнюю часть Framel и найдите оператор объявления пакета:

Package Mytrialproject;

Щелкните правой кнопкой мыши на слове Hiytrialproject Должно отобразиться контекстное меню, схожее с тем, которое показано на рисунке 31.2. Выберите в этом меню пункт Rename Package Hiytrialproject (Переименовать пакет Hiytrialproject).

Продолжение корректировки связей

C этого места и до конца данного раздела информация относится и к редакции Enterprise, и к редакции SE. После того как вы выбрали команду меню Rename…, на экране появляется диалоговое окно переименования пакета. Измените в текстовом поле имя проекта на Hiyfinalproject и щелкните на кнопке OK (см. рис. 31.3).

рис. 31.1. uml-браузер дает возможность просмотреть взаимоотношения между классами в вашем проекте flie edii saj∣τ∫ vwwprojest ru∏ iegnn wftzapj? тот wipo jw heip
о as -а в ,
¾Γ^^~ 1 ■ * j ? -jl- * -sfe
,⅛p inytrieiprojectjpx ⅛ <f inytrialprojecl >⅛ appllcationl java 4⅛ framel java,¾> borαerlay□utt : borderlayoui t conientpane: jpanel,i iriytrialproject framet i j sp ¾ extended classes ep plassocialions p ' i dependencies p i "l reverse depends,⅛frame10 void ⅛:
⅛* processwlndowevento void ■ ⅛ jblnlto void
,ecurcej design i bsanj uml [doej hletoiyj,c,psed project: unbttedi ziw,jbudder li documents and settings/tnar^∕jbjΛ4>jett∕my tπ<dpro)
l > -lt¾rf рис 31∙2∙ выбор β контекстном
⅛be ⅛dtl searem view prtljeu run tegm wtotrds teoie ⅛wr>ttov1 help меню пункта rename...
0в8’й»в/ '^⅝∙>
,щ jbuilder -1: dotunnmtls and scmttogvmorgictbimojetvmytn ot г,h й ɪa a sj'=
ŋ mγtrialpro∣enjpx
t si ⅛f mytrialproject 3 : ⅛ applιra∣ion1 ∣ava i a frame1 ,ɪava
i
,el irrylrialprojectframel l
i si- cj extended classesi 3 si- (ej associations
js,,c3 dependencies
sr j,⅞l revβrse dependei
,^⅛sβd project uhbbedttjffl,^Ξ3⅛ ¼*i⅛",o rename package ,'mγtriafproject’*,*f,0∣dname: rn⅛⅛iaipro]e⅛t nftwrtanie Γ,finalproject

рис. 31.3. переименование пакетаB этот момент переименование пакета еще не произошло. В панели сообщений появится сообщение, указывающее на то, что выполняется переименование пакета.

Ниже панели сообщений вы увидите кнопку Refactor (Корректировка), пиктог­рамма которой выглядит так ) . Как только вы нажмете на эту кнопку, JBuilder пе­реименует пакет (см. рис. 31.4).

Теперь, если вы зайдете в каталог MyTriaiProject, Где раньше находился ваш файл, то увидите, что каталог src теперь содержит папку под названием Myfinalprojβct. Исходный код проекта теперь находится в этой папке. Вы также можете увидеть папку с названием Mytrialproject. Эта папка теперь пуста, и ее можно удалить. UML-браузер теперь в качестве имени пакета выводит myfinalproject (см. рис. 31.5).

jburlder i: docunrenls uiid ⅛ettmy√m<mgιe.- jbprdjetvtnyl,ɪ r — ɪ ж жтсх их je⅝ - *^~t ⅜⅜⅜mh⅝jr⅜j 53*
fi⅛ edit sewen view pmyeci run ieem wizands ɪuurs wtnouw help
о £ 6’ га β > →bsrb ∙
,_ 1 inytriaiprojbctipx
∣ si ⅛Γ itrytrialproject s⅛ι applicationl java & framel java
s^'"j inylnalprojeciframsli
j1s el extended classes ∣ si el associations ’ si el dependencies ⅛ sl el reverse dependei
bi l ɪi
,jjl ill ..ι.ιz⅜i⅛⅜f " —
,⅛,l-⅛⅜) .⅞⅜2a*⅛ ⅛)
,‰ borderlayout1 : sorderlayout ⅜- contentpane: jpanei,i∣ s- φ rename package: inytrialprojectto myflnalproject ≈∣ r& framel java
» ⅛ ∣⅛r applicationl java
ɪ _ ~Γ -^ ι ' 7 „ ~ - . . 7~ s⅛⅛β⅛i⅛i■ 
£ « vtewreferences xseietticontofefactei) 
,⅜.⅞a⅛l~ '' ~—— - .z ⅛....
closadproiaet mytnalp⅛κ>e¾px
рис. 31.4. панель сообщений и расположенная ниже нее кнопка refactoma закладке refactoring (корректировка связей)
jfiuilder - c-∕t>ocuιnents and settmgs ∣'n<dr9te∕jbprβj<stt∕mythahx ∣ t.∙', i " ■,file edrt search view pro mt quh team wtnrrts [nŋp v⅛iΠq∏* hwp
dtfdΓ-a β
,■ æ ⅛f itiyfinalproject i; & applicationl java f ⅛ framel java,□ myflnalproject framet
i ^~,
±jjj
,1 а’ д| ¾>⅜t⅛ufe j¾l4
⅞f ;,йд ”7“ f∕⅛yi- 
,x ⅛ frtmeti,½-⅛ frameljava æ application! java,..w> refectodng completed k
⅛⅛ * a 33’
1 piaoisii: itisynfjt pf cδ∏⅛∣,.t b?cs'.!'?e ljrθ,⅛{!'.la?? iilði 5г6 iɔijt f 
π⅛4tna⅜jrojhct' 
 ∖ιt
∏v borderlayoun: bordeitayout i
• ! v content >a ιb : jl aι я
sou⅛∣ t⅛eslpηj ⅞ea∏i uiftjdot i ⅛stof⅜{ -
рис. 31.5. проект после корректировки связей

примечаниеЕсли вы работаете в среде Windows и хотите изменить имя, например, с MyFinalProject на InyFinalProject, вам потребуется выполнить еще одно проме­жуточное переименование. Windows не всегда корректно распознает разницу в регист­Ре символов для имен файлов и имен пакетов.

Теперь вы успешно выполнили операцию корректировки связей. Однако вы мо­жете столкнуться с тем, что после корректировки связей ваш проект не работает так, как нужно. Подобное может произойти из-за того, что имя главного класса вашего проекта, указанное в закладке Run диалогового окна Project Properties, более не яв­ляется корректным. Мы рассмотрим, как устранить эту проблему в разделе "Ис­пользование браузера пакетов для указания главного класса".

Переименование классов, методов и полей

Процесс переименования класса практически идентичен процессу переименова­ния пакета. Единственная разница заключается в том, что для того чтобы попасть в контекстное меню, содержащее пункт Rename, вам нужно щелкнуть правой кноп­кой мыши на имени класса, а не на имени пакета. То же относится и к переменным и методам класса. Идея, конечно, состоит не в том, чтобы переименовать только эту ссылку на класс, переменную или метод. Вместо этого вы переименовываете иден­тификатор, с которым вы работаете, и все ссылки на этот идентификатор по всему проекту. Более подробно мы обсудим переименование классов ниже в этой главе. В частности, прочитайте раздел "Неправильный способ переименования класса".

Переименование JPX-файла

Корректировка связей — это технология, направленная на переименование эле­ментов, находящихся в исходном коде Java, создаваемом вами. JPX-файл не являет­ся частью вашего проекта. Он скорее представляет собой средство, с помощью кото­рою JBuilier осуществляет управление проектом в целом. В результате, инструмен-

рис. 31.6. переименование jpx-файла в панели проекта

Ты корректировки связей не переименовывают JPX-файлы. Тем не менее, вы можете легко переименовать JPX-файл из интегрированной среды разработки JBuilder.

Вы можете сменить имя файла C XnyTrialProject. Jp× На XnyFinalProject. Jp× С помощью панели проекта. Для этого щелкните правой кнопкой мыши на ITiyTriaIProjectjpx и выберите в контекстном меню пункт Rename, как показано на рисунке 31.6. Это все, что вам нужно сделать. JPX-файл довольно самодостаточен, он включает только относительные пути к элементам вашего проекта. Простого пе­реименования JPX-файла должно быть достаточно.

Переименование корневого каталога вашего проекта

Иногда вам может понадобиться переименовать корневой каталог проекта. На­пример, если вы создали проект в каталоге Untitled27 И захотели его сохранить, вам, скорее всего, понадобится изменить не только имена пакетов проекта и JPX-файла, но и имя самого корневого каталога. Для того чтобы выполнить этот последний этап, вам следует выйти из проекта, а затем переименовать каталог на MyFinalProject. Теперь вновь откройте JBuilder, найдите свой JPX-файл, и можете продолжать работу.

Отмена корректировки связей

Если вы еще не вносили изменений в код программы, то сможете отменить дей­ствия корректировки связей, щелкнув на кнопке Undo (Отмена), пиктограмма кото­рой выглядит так г’ .

Использование браузера пакетов для указания главного класса

Если после переименования главного класса проекта или после переименования пакета, в котором содержится главный класс проекта, вы запускали свой проект на выполнение, то вам, скорее всего, было выдано сообщение:

Java. Iang-NociassDefFoundError: Inytrialproject Application!

Мдо * jsij

Дело в том, что JBuilder все еше ищет файл Application!.java В старом, уже пустом, каталоге.. XmyTrialPro ject∖src∖mytrialproject.

Чтобы это исправить, выберите в меню пункт Project ∣ Project Properties и перейдите на закладку Run (см. рис. 31.7). Здесь все в порядке, за тем лишь исключением, что путь к файлу Appiicationi ведет к старому ката­логу. Выберите либо кнопку Edit, либо кнопку New…. На экране по­явится диалоговое окно Runtime Properties (Свойства времени выпол­нения), показанное на рис. 31.8.

Проблема состоит в том, что ссыл­ка на главный класс вашего проекта,

6T)PfO,R<~T Properties

PemsJ Uβnwtf JFftm0 βuto Csd*8⅛βj FmponδN &&<х|UIL SnyerJβwmst _

"" ⅛m L ”™ I NoW-

!Application Applicationl

Рис. 31.7. Страница Run Диалогового окна Project Properties

Расположенная в верхней части диалогового окна Runtime Properties, либо пуста, либо не установлена корректно. Чтобы указать главный класс, щелкните на кнопке эллипсиса. Должно появиться диалоговое окно браузера пакетов. Здесь должны присутствовать и mytrialproject, и myfinalproject. Выберите myfinalproject и откройте его щелчком на знаке плюс слева от него. Выберите Applicationl, как показано на ри­сунке 31.9. Щелкните на кнопке OK, чтобы выйти из браузера пакетов, и еще раз на кнопке OK, чтобы выйти из диалогового окна Runtime Properties.

Рис. ЗУЯ. Диалоговое Окно Runtime Properties

θ Select Main Class for Project

C 3sεnp∏,β ITTytinalprojecrAppIicationI

Ffl∙ Φ> com

φ Φ demos & tφ fonts ⅛1 φ> images S S$> java ⅛ S>javax !BΦ launcher Й $> myfinalproject

≈ Frame1 ⅛ Φ> mytrialproject ⅛ -φ∙ netscape IS- ⅞S> org ■* 3β> sun fe-φ sunw! S 4fc> templates

4⅛ AnimatingcontroIsSurface & AnimatingSurface

JdRk>…∕7∖l√bNV-1∣’r>.<w. TΓAθ⅛ι.Mcrt…………………….. ……………………

Cancel

Heto

OK

Рис. 31.9. Выбор Myfinalproject Applicationl В браузере пакетов

рис. 31.10. диалоговое окно project properties после добавления второй конфигурации времени выполнения

Если вы вместо Edit выберите New, то в диалоговом окне Project Properties появится новый элемент. Если необ­ходимо, отметьте флажок, чтобы выб­рать конфигурацию, которая указы­вает место расположения главного класса по умолчанию (см. рис. 31.10).

Щелкните на кнопке OK для акти­визации изменений и запустите при­ложение. На этот раз сообщение об ошибке появляться не должно.

Необходимость перекомпоновки

После операции корректировки связей у вас могут возникнуть про­блемы при запуске проекта. В преды­дущем разделе было показано, как на вашей дороге могут возникнуть проблемы с настройками главного класса. Но даже если вы справились с этой проблемой, у вас все еще может возникнуть проблема с компиляцией. Часто решение этой проблемы сводится к тому, что в меню Project вместо пункта Make должен выбираться Rebuild.

В отдельных случаях вы можете выбрать пункт меню Project ∣ Project Properties, в результате чего появится диалоговое окно, показанное на рисунке 31.8. В нижней части этого диалогового окна размещаются опции настройки компоновки. Если вы просмотрите этот список, то увидите, как минимум, следующие опции: clean, make, rebuild. Выберите Clean. Закройте диалоговое окно и нажмите зеленую кноп­ку запуска. Это должно привести к полной очистке каталога классов. Короче гово­ря, таким образом можно заново запустить компоновку проекта. Теперь вернитесь в диалоговое окно Runtime Properties и снова установите опцию Маке. Попробуйте за­пустить свой проект и посмотрите, правильно ли выполняется компоновка на этот раз.

Неправильный способ переименования класса

Теперь давайте предположим, что вы решили, что вам нужно изменить имя глав­ного класса с Appiicationl. java На что-то более осмысленное. Может возникнуть идея, что нужно щелкнуть правой кнопкой мыши в панели проекта и выбрать из контекстного меню Rename Applicationljava…. Если вы так сделаете, а затем запус­тите свой проект, то получите следующее сообщение:

"MyFinalProject. java": Error #: 475 : class Applicationl is public; must be declared in a file named Applicationl. java at line 15, column 8

("MyFinalProject. java": Ошибка #: 475 ; класс Applicationl является общедоступным; он должен быть объявлен в файле с именем Application!.java в строке 15, позиции 8)

Если вы меняете имя файла на MyFinalProject. java через контекстное меню, вызываемое по щелчку правой кнопкой мыши в панели проекта, изменения отра­зятся на закладке файла и панели проекта. Однако внутри файла будет тот же самый код, который был до этого. Эта путаница изображена на рис. 31.11 Очевидно, что если вы так все и оставите, проект не будет работать корректно, поэтому если вы пе­реименовали Applicationi в панели проекта, выполните обратное переименование В Applicationl. java.

Правильный способ переименования класса

Перейдите к исходному коду и убедитесь, что в редакторе отображен файл Applicationl. java. В редакторе щелкните правой кнопкой мыши на первой ссыл­ке на Appiicationl в исходном коде:

Public class Application!

Появится контекстное меню, которое включает в себя опцию Rename

Applicationl…, перед которой стоит символ корректировки связей (см. рис. 31.12).

В результате выбора в этой меню пункта Rename Applicationl… появляется диа­

Логовое окно, предлагающее переименовать приложение (см. рис. 31.13). При вводе нового имени не включайте в него суффикс. java. Щелкните на кнопке OK, чтобы

Запустить процесс корректировки связей.

примечание,диалоговое окно rename class является функциональной возможностью редакций jbuiider enterprise и jbuiider se. если вы имеете дело с редакцией enterprise, то можете также вызвать это окно из uml-браузера.,fbe ga# fjeercti view protect run teem. wtatde toots wfn<tow hsto o ts <$ ∙½> ы ® >'j*∙ - ⅜ b > a∣ “
⅝a & а я зр -' * атгеп»! × ⅛
,unaj,ф myflnalpro∣ect ⅞ frame1 java myfinalprojectjava,public claβc application!,boolean packfreune = falaej,er ξj∣∣ enors ; o class aoolicat b йч imports is ⅜ appllcationl
~ <⅛ applicatlonic p ⅜ maln(strtngd a ijr packframe
,//’construct the *ppil
public applicatl-onlo
,['ɔ jbmider c:;documents and ⅛euotq⅛< mafφe∕jbpfojv⅝⅛∕royirt⅜⅜>ro)ec⅜√ ⅜ ∣ ι,m fιr∣.⅞if∣∣.ipΓi,рис. 31.11. неправильный способ — исходный код по-прежнему ссылается на application! t format sebrtali,⅛) close ? h tputvettterth ∏, sdwrortzontaity find deflnition,⅜ toflgto breakpoint fs,jjeoitoropaons..,t! renameappiicationi,рис. 31.12. правильный способ переименования класса с использованием контекстного меню с опцией rename applicationl..., перед которой находится символ корректировки связей
i 
у 8m⅛>i .... . l-1:'11.1:1. ⅛'-1:1.'’ 1c1 ■! >⅛".Ψ "1 ⅝? -⅛⅝⅛*'⅛
,⅞⅛Λ k.,cΛ.⅜.⅛⅞ >⅛
bukdtompletsrlwlttilenor bubdtotifoaetonde

fsclcege. oiyfinalproject
okfnarne appltcatfoni
jtew name jrfyfinaiprojecj
⅛ . ' i⅜⅛⅛⅛ s ⅛f' '~⅛⅛7Γ~.~. .j⅛*r- . .
г- viewreferenceedatorerefacforing
. ^/
ok i cancel i help j
рис. 3↑Λ3. диалоговое окно rename class (переименование класса)После щелчка на кнопке OK под панелью сообщений появится кнопка Refactor. Для того чтобы переименовать класс, нужно выполнить на ней обычный щелчок. Как только вы это сделаете, JBuilder изменит все ссылки на Appiicationl, Встречающиеся в коде, на MyFinalProject. Если вы в этот момент сохра­ните и запустите проект, то увидите диалого­вое окно со следующим сообщением: "Could not find the main Class. Program will exit!" ("Отсутствует главный класс. Выполнение про­граммы будет прервано"). Вы уже прошли через процесс перенаправления JBuilder на подходящий главный класс, и вам придется повторить эти шаги. Выберите в меню пункт Project ∣ Project Properties, затем щелкните на кнопке New… и в браузере пакетов найдите по-новому названный главный класс, MyFinalProject. Выберите его в качестве конфигурации по умолчанию, и затем запустите проект на выполне­ние. Компиляция должна пройти без сучка и задоринки. Если все же возникли ка­кие-либо проблемы, вновь пересмотрите указания, перечисленные в этой главе ра­нее, для того чтобы настроить главный класс через браузер пакетов.

Корректировка связей в JBuiIder Personal

Все инструменты, которые использовались для проведения корректировки свя­зей в редакции Enterprise, за исключением UML-браузера, работают и в редакции SE. Мы могли произвести переименование пакета вручную, однако это не доставля­ет особого удовольствия. В JBuilder Personal не установлен ни один из инструментов корректировки связей. К счастью, существует инструмент с открытым исходным ко­дом, носящий название JRefactory, Который доступен по адресу:

Http:/∕sourceforge. net∕proj∙cts∕jrefactory

Инструкции по его установке можно найти по адресу: Http://jrefactory. sourceforge. net/csr-jbuilder. html

Мы просмотрим эти инструкции в текущем разделе. Этот инструмент относится к OpenTool-инструментам JBuilder, поэтому если вы знакомы с тем, как устанавли­вать такие программные средства, проблем возникать не должно.

В первую очередь потребуется выгрузить программу из Internet. На момент напи­сания книги это можно было сделать, щелкнув на ссылке Download, щелкнув правой кнопкой мыши на. zip-файле с последней редакцией и выбрав в контекстном меню пункт Save Target As…. У вас будет выбор между двоичной и полной версией про­граммы. Полная версия программы включает исходный код.

После выгрузки архива потребуется извлечь из него файлы с помощью какой-ни­будь утилиты, например WinZip. Файл, который следует добавить в среду JBuilder, называется J refactory, jar. Его необходимо поместить в соответствующее место JBuilder, как описывается ниже.

Перейдите в каталог, в котором расположена установленная версия JBuilder. В каталоге JBuilder найдите подкаталог lib. В подкаталоге Iib должен быть каталог

Ext. Поместите файл Jrefactory. jar В каталог Ext. Если JAR-файл, содержащий OpenTool-расширение, поместить в каталог Ext, При запуске JBuilder он будет загружен автоматически.

Теперь запустите JBuilder. Вы увидите ди­алоговое окно, показанное на рис. 31.14.

' 2<∣
tt∣ effectively use this tool it is necessary to have some overview of the java development kit's <so jrce code.
please enter the jar or zip fll e that contains the source. ittsupu ιl⅛ called srcjar.
browse i
°Κ j,i. ..√
рис. 31.14. диалоговое окно, которое появляется непосредственно после запуска jbuilder
Воспользуйтесь кнопкой Browse, чтобы указать в JBuilder месторасположение файла, где хранится JDK. Этот файл расположен в каталоге JBuilder/jdkl. 3.1. На моем ком­пьютере путь к файлу выглядит следующим образом: G:\jb\jdkl.3.l\src. jar. После того, как вами было указано подходящее место, щелкните на кнопке OK.

После запуска JBuilder вы увидите в строке меню пункт JRefactory. Теперь создай­те элементарный проект и элементарное приложение, как было описано в главе 3. Дайте проекту ИМЯ MyFirstProject.

Откройте меню JRefactory, в результате чего вы увидите пункты меню, показан­ные на рис. 31.15.

Переименование пакета с помощью JRefactory

Используя JRefactory, Вы можете сделать всю работу в JBuilder, кроме переиме­нования корневого каталога, содержащего проект. Это ограничение также относится и к инструментам, встроенным в JBuilder. Обойти это ограничение можно следую­щим образом. Необходимо сохранить все файлы, закрыть проект в JBuilder, а затем перейти в каталог, в котором находится проект. Далее потребуется изменить имя ка­талога на MySecondProject.

примечание

рис. 31.15. пункты вновь добавленного меню jrefactory,и
fhe ни seaκħ vie* project ⅛m wcaros tows
itdhs <0 ¾*Γ^
ι £1 > • 4? * j ж ♦*
v* ь? хэ 3 <2p refect... » dɔ refactorprojectjpx
,jburidei - c:, documents and 5ettin^∕roβef^/jfeprnjfttj *r 1
jretaetorv
,apphcotioni &йг! package refactor,4⅛ applicallonl .)ava,-ial χ∣
 window help
preftfpflnter clrt+swβ-∙
pftiftfpfintet« mfl*xi∣ τβen extract mettit 1 citrhshitl-*
laau reftctonnp metadata new uml class diapram rc⅛etw>qc
uwljriafactorlno
print
,rs йэ imports i⅛ & frame1
¾ jframe • frameio
■■ processwindoweven' -^v borderlayoutl —
s 4⅛∙ contentpane ,«■ 'p∙>
ti t j
framel « . zoom
aimuljrefectoiy
 .,,.⅛rl
i insert
l<i ; i. ʃ. source Γdas⅛>∏∣ 6ean∣ oof ∣ hietoty∣
addedfiies -to project

,jj<rort java.awt. ijφort java.aut. bφort javaχ.svι:

Если ваш проект был скомпилирован, тогда в каталоге проекта будет присутствовать подкаталог classes. Удалите этот подкаталог, поскольку он может со­Держать некоторые ссылки, которые после переименования станут некорректными.

Теперь откройте проект снова. Для этого зайдите в каталог MySecondProject И откройте JPX-фаЙЛ. JPX — файл по-прежнему называется MyFxrstProject. jpx.

Прежде чем что-либо переименовывать с помощью JRefactory, необходимо откомпилировать проект. Ско­рее всего, безопаснее будет сначала его запустить, чтобы убедиться в том, что все работает должным образом.

В панели проекта щелкните правой кнопкой мыши на файле HiyFirstProjectjpx и переименуйте его на mySecondProject. jpx. Эта функция встроена в JBuilder, и не является частью JRefactory.

В конце концов, наступило время произвести кор­ректировку связей. Дважды щелкните в панели проекта на файле Applicationljava, чтобы его выбрать, а затем вы­берите в меню пункт JRefactory ∣ Refactorings | Туре Refactorings ∣ Move Class (JRefactory | Корректировка свя­зей I Тип корректировки связей | Перемеще­

0 jp mysecondprojectjpxНие класса). В диалоговом окне Move class to the new package (Перемещение класса в новый пакет) введите имя нового пакета, Hiysecondproject, и щелкните на кнопке OK (см. рис. 31.16).

Как только вы щелкнете на OK, JBuilder запросит, требуется ли сохранять проект.

Щелкните еще раз на кнопке OK.

На данном этапе вам следует щелк­нуть правой кнопкой мыши на файле Applicationljava в панели проекта и выбрать пункт Remove from Project (Удалить из проекта). Делая это, вы просто удаляете в JPX — файле все ссылки на старое расположение файла Applicationl. java. Так как JRefactory скопирует и переместит его в другой каталог, то данные JPX-файла станут некорректными. Тем не менее, вы должны обратить внимание на то, что панель проекта содержит новую пиктограмму для нового пакета. Если вы откроете эту пиктограмму, то увидите, что в пакете ITiysecondproject содержится файл Applicationljava.

Проделайте то же самое с файлом Framei. java, Т. е. сначала переместите файл с помощью JRefactory, а затем удалите старую ссылку, которая все еще отображается в панели проекта.

Затем вам потребуется добавить в проект новые файлы, созданные вами. Это де­лать не обязательно, однако это может оказаться удобным. Щелкните на пиктог­рамме Add Files (Добавить файлы), расположенной в панели инструментов выше па­нели проекта, после чего перейдите в каталог MySecondProject∖Src∖mysecondproject и добавьте в проект сначала файл Applicationl. java, А затем Framel. java. К этому моменту переименование пакета завершено, и можно запускать программу на вы­полнение.

Переименование класса с помощью JRefactory

Изменение имени класса не представляет трудности. Поскольку в Applicationl Содержится ссылка на Framel, То данный класс хорошо подходит в качестве приме­ра. Во-первых, выполните двойной щелчок на файле Frameljava в панели проекта. Этот файл должен открыться в редакторе. Выберите в меню пункт JRefactory | Refactorings ∣ Type Refactorings ∣ Rename Class (JRefactory | Корректировка связей | Тип корректировки связей ) Переименование класса). На рис. 31.18 показано диало­говое окно Rename class (Переименование класса). Введите новое имя класса, в данном случае MyFrame.

рис. 31 л&. диалоговое окно rename class

Появится диалоговое окно с запросом, требуется ли сохранить файлы, которые были изменены (см рис. 31.17). Щелкните на кнопке OK.

После щелчка на кнопке OK исходный код Framei. java Исчезнет из редактора. Если сы сделаете двойной щелчок на файле Frame1 Java в панели проекта, появится пустой файл (Иногда может иметь место небольшая задержка из-за буфера, однако в действительности файл перемещен.) Щелкните правой кнопкой мыши на файле Frameljava и удалите ею из проекта. Прямо над панелью проекта находится пик­тограмма с изображением папки с зеленым знаком плюс. Выполните двойной щел­чок на этой пиктограмме, и в открывшемся диалоговом окне найдите каталог, в ко­торой находится проект. Отыщите в дереве каталогов src∖mysecondproject и откройте исходные файлы для своего проекта. Вы увидите файл MyFramejava. Щелкните на нем, чтобы его выбрать, и затем щелкните на кнопке OK. Просмотрите содержимое файлов MyFr≈∏r!. Java и Applicationl. java В редакторе, и вы убедитесь в том, что корректировка свилей была выполнена.

примечаниеВ JRefactory также имеется возможность создания UML-диаграмм, а также вы­полнения множества других операций, связанных с корректировкой связей. Полное описание возможностей этого продукта выходит за рамки этой книги, однако не по­жалейте времени на их исследование.

M∣βa∣*iβ*∙M*aβ Так κaκ в действительности происходит удаление старого файла и до­бавление нового, вы не обязаны выполнять процесс настройки JBuiIder на новый главный класс, если решили изменить имя файла Applicationl. java. Этот процесс был под­робно описан в разделе "Использование браузера пакетов для указания главного клас­са". Не стоит и говорить, что я бы не включала этот раздел в главу, если бы инструменты JBuiIder позволяли изменить имя главного класса. Тем не менее, инструменты, встроен­ные в JBuiIder, все же являются несколько более мощными, чем JRefactory, хотя разница и невелика.

В действительности, я затронула лишь некоторые функции, встроенные в JRefactory. Например, его также можно использовать для переименования классов и пакетов в режиме UML, подобно тому, как это описано в начале этой главы. Функ­ции JRefactory для работы с UML-диаграммами, показанные на рис. 31.19, не на­столько полны и мощны как те, что встроены в JBuilder Enterprise, однако они могут оказаться полезными.

Резюме

В этой главе мы рассмотрели, как использовать JBuilder для выполнения коррек­тировки связей в коде. Мы выполнили некоторые базовые операции корректировки связей и научились пользоваться доступными инструментами JBuilder. Мы иссле­довали возможность работы с подключаемыми модулями с открытым исходным ко­дом, а также научились тому, как выгружать и устанавливать программы подобного рода. В следующей главе тема работы с OpenTool-инструментами будет рассмотрена более глубоко.

Рис. 31.19. Подобно редакции JBuilder Enterprise, Инструменты JRefactory Позволяют просматривать UML-диаграммы и переименовывать элементы программы в режиме UML

Чарли Калверт

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *