Krūminės rožės jūsų sodui. Delphi ir Rational Rose naudojimo kartu pavyzdys

Viso pasaulio sodininkai dievina rožes ir augina jas pačiame įvairiausiame klimate. Savotišką perversmą rožių pasaulyje padarė atsiradusi nauja sodo krūmynų grupė – krūminės rožės. Nors beveik visos mūsų sąlygomis dar reikalauja apsaugos žiemai, šiandien būtent krūminės rožės yra universaliausios ir nepretenzingiausios.

Šveitimo krūmai

Šveitikliai yra labai nevienalyčiai. Tai laukinės rūšys, jų hibridai ir šiuolaikinės sudėtingos kilmės rožės, kurių žiedai panašūs į gėles hibridinės arbatos rožės ir floribundinės grupės rožės.

Rožė rugosa ir jos hibridai

Viena vertingiausių parko rožių – raukšlėtoji rožė, arba rožė rugosa, dar vadinama japonine rože. Originali rūšis paplitusi mūsų šalyje Tolimuosiuose Rytuose, taip pat Šiaurės Kinijoje, Korėjoje, Japonijoje. Jis būna dviejų formų: viena su baltomis gėlėmis, kita su tamsiai rožinėmis arba raudonomis gėlėmis.

Žiedai nuo 5 iki 10 cm skersmens, labai kvapnūs, žiedynuose po 3-6 žiedus arba pavieniai. Hibridinių veislių rugosa žiedai svyruoja nuo baltų iki tamsiai raudonų, yra ir geltonų, skiriasi ir jų dydis bei dvilypumas. Lapai dideli, kieti, susiraukšlėję. Ūgliai tankiai padengti spygliais ir šereliais. Krūmai platūs, tankūs, siekia 1-2 m aukštį, auga stipriai su stačiais ūgliais. Šaknų sistema yra galinga ir paviršutiniška. Žydėjimas gausus, nuo gegužės pabaigos, ilgai išliekantis, gali kartotis ir silpnesne forma. Dėl šios savybės krūmuose vienu metu yra vaisių ir gėlių. Formos ir veislės su dvigubais žiedais yra ypač pajėgios, o tai vertinga dekoratyvine prasme. Vaisiai ryškūs, oranžiškai raudoni, dideli (2-2,5 cm), labai dekoratyvūs. Rosa rugosa yra labai atspari žiemai (nereikalaujanti pastogės) ir atspari ligoms rūšis.

Daugumai rugosa hibridų taip pat nereikia pastogės žiemai. Tačiau kai kurios veislės) nesiskiria žiemos atsparumu. Jų žydintys ūgliai atsiranda ant ankstesnių metų peržiemojusių viršutinių ūglių. Be žiemos apsaugos ar gilios sniego dangos išsaugomi tik apatiniai pumpurai ir negali užtikrinti žydėjimo. Prilenkti prie žemės galingus ir storus ūglius nėra lengva. Todėl renkantis veislę būtina atkreipti dėmesį į bendrą atsparumą, žydėjimo dažnumą ir gausumą, atsparumą ligoms.

Rožė rugosa ir jos hibridai naudojami mažoms grupėms ir pavieniams sodinti bei gyvatvorėms. Šios rožės sukuria nuostabias gyvatvores, ypač tas, kurios padalija teritoriją į atskiras dalis. Vaisiai tinka uogienėms, kompotams gaminti.

Rožių moiesi hibridai

Šios grupės protėvio paplitimo sritis yra Vakarų Kinija. Hibridai gaunami kryžminant originalias rūšis su skirtingų grupių rožėmis. Žiedai raudoni, rausvi, vidutiniai (5-6 cm), pavieniai arba pusiau dvigubi, žiedynuose. Lapai susideda iš 7-13 ovalių lapelių. Krūmai aukšti – iki 2-2,5 m, išsikeroję, su rausvai rudais ūgliais. Žydėjimas gausus nuo birželio mėn., kartotinis žydėjimas silpnesnis. Vaisiai butelio formos, dideli (5 cm ilgio), tamsiai oranžinės raudonos spalvos. Rožių moiesi hibridai yra dekoratyvūs kraštovaizdžio sodininkystei. Jiems reikia lengvos pastogės, nelenkiant ūglių prie žemės.

Rožių Cordes hibridai

Šios rožės buvo pavadintos jų autoriaus – garsaus vokiečių pradininko V. Cordeso – garbei. Dauguma šių rožių gaunamos iš Max Graf (spontaniško Rosa rugosa ir Rosa Vihura hibrido) veislės. Kryžminus jį su kitų grupių veislėmis, susidarė Cordes rožių hibridų veislių grupė. Pažymėtina, kad naujos sodo grupės nėra kuriamos be ypatingų priežasčių, o Cordes rožės gavo šią garbę dėl savo tvirtumo ir patrauklumo.

Gana stambūs (7-8 cm skersmens) šios grupės rožių žiedai išsiskiria spalvų ir formų įvairove – nuo ​​pusiau dvigubų iki tankiai dvigubų, kartais kvapnių, surinktų nedideliuose žiedynuose. Visos veislės turi gražius tamsiai žalius, blizgančius lapus. Krūmai vešlūs (1,5-2 m), dažnai su rykštėmis primenančiais ūgliais. Žydi gausiai nuo birželio iki vėlyvo rudens. Vaisiai kiaušiniški. Visos veislės yra gana atsparios žiemai ir atsparios ligoms. Nepaisant to, centrinės Rusijos sąlygomis jiems reikia pastogės žiemai. Jie netgi gali būti auginami daliniame pavėsyje.
Šios grupės rožės naudojamos grupiniams ir pavieniams sodinimams, vertikaliai sodininkystei. Jie gali papuošti pavėsines, terasas, pavėsines, arkas, specialios grotelės ir kitos atramos, skirtos sodo erdvei padalinti, poilsio zonoms sukurti, ūkiniams pastatams dekoruoti.

Šios rožės nepajėgia apsivynioti aplink atramą, todėl jas reikia prie jos pririšti, formuoti anksti pavasarį po genėjimo, kad iš karto augtų tinkama kryptimi. Per visą auginimo sezoną pagrindinės šakos nukreipiamos išilgai atramos ir atsargiai prie jos pririšamos.

Krūmai

Šveitikliai (dar vadinami šiuolaikinėmis parko rožėmis) apima visas veisles, kurių negalima užtikrintai įtraukti į kitas sodo grupes.

  • Įspūdinga išvaizda. Žydi gausiai, ilgai (nuo birželio iki rudens), kartojasi. Beveik visos veislės žydi pakartotinai, tačiau yra ir veislių, kurios žydi vieną kartą.
  • Aromatas. Kvepiančių rožių tarp šveitiklių yra daugiau nei tarp hibridinių arbatos rožių.
  • Apimtis. Daugelis veislių išsiskiria savo galia ir augimo veržlumu (pasiekia 2 m). Kai kurių veislių krūmai yra tokie grakštūs, kad jų lanksčios šakos reikalauja mažai atramos, kurią netrukus padengia žiedai.
  • Atsparumas ligoms ir didelis žiemos atsparumas.

Jiems reikia tik lengvos apsaugos žiemai.

  • Nepretenzingumas. Bet kuris sodininkas gali auginti krūmą.
  • Plačiai naudojamas kraštovaizdžio kūrime.
  • Krūmai gali būti auginami tiek pavieniais želdiniais, tiek nedidelėmis grupėmis (3-5 krūmeliais).

Sodinimas nedidelėmis grupėmis suteikia didelio žydinčio rožių kamuolio efektą, visus vieno krūmo nelygumus paslepia kaimyniniai. Atstumas tarp krūmų gali būti nuo 50 cm iki daugiau nei 2 m, priklausomai nuo krūmų pločio. Neįmanoma pateikti bendros rekomendacijos dėl krūmynų sodinimo, nes jie labai skiriasi krūmo dydžiu. Vidutiniškai 1 m2 pasodinama nuo 2 iki 3 krūmų. Didelėse krūminėse rožėse kartais matoma plika krūmo dalis, o vėliau ją gali paslėpti prieš juos esančios žemai augančios rožės.

Gražus pavienis krūmas ant vejos atrodo įspūdingai. „Solisto“ vaidmeniui pasirinkite augalą su graži forma krūmas ir gausiai žydi, malonaus aromato. Pasodinti galite bet kur: prie įėjimo į namą, vejoje, gėlyno centre. Daugelis krūminių rožių, tiek senų, tiek modernių, tinka pavieniams sodinti. Svarbiausia, kad augalas harmoningai susimaišytų su aplinkiniu kraštovaizdžiu.

Nostalgiški šveitikliai

Šveitiklių grupei priklauso ir vadinamosios angliškos rožės, kurias sukūrė britas Davidas Austinas. Daugelį metų šis selekcininkas dirbo pagal programą, skirtą sukurti rožes, kurios buvo panašios į senovines rūšis, tačiau turėjo modernią gėlių spalvą ir galimybę iš naujo žydėti. Angliškos rožės gaunamos sukryžminus prancūziškas, damaskines, burbonines ir kitas rožes su šiuolaikinėmis hibridinių arbatinių ir floribundinių rožių veislėmis. D. Ostino rožės atsirado paskutiniame dvidešimtojo amžiaus ketvirtyje. Jų žiedai tankiai dvigubi, įvairių spalvų: blyškiai abrikosiniai, giliai geltoni, tamsiai raudoni, bijūno formos, labai kvapnūs ir atrodo nostalgiškai senamadiškai. Krūmai kompaktiški, geros formos, žydi pakartotinai. Daugelis veislių yra atsparios ligoms. D. Austino nuopelnas yra tas, kad jis vėl įskiepijo pasauliui meilę senoms gėlių formoms ( ilgam laikui Idealios buvo hibridinės arbatos tipo taurės formos rožės), taip pat trimatė krūmo struktūra.

Populiariausios šios grupės veislės yra Abraham Darby, Graham Thomas. Daugiausia anglų rožių dėka sodininkai sužinojo apie šveitimo grupę. Vidurinės zonos klimatas jiems yra šiek tiek atšiaurus. Todėl jų ūgliai turi būti kruopščiai pridengti žiemai.

Prancūzų kompanijos Meilland rožės iš Romantica serijos išsiskiria ir patvarumu, gausiu pasikartojančiu žydėjimu, atspalvių įvairove, raukintais žiedlapiais, senų rožių žavesiu. Tiesa, tik kelios šios grupės veislės priklauso šveitiklių grupei, pavyzdžiui, Collette, Les Quatre Saisons, Yellow Romantika, Lovely Meilland. Visos veislės išsiskiria ne tik grožiu ir „senovine“ išvaizda, bet ir tvarumu. Jie yra bet kurio romantiško sodo svajonė. Vokiečių kompanija Rosen Tantau taip pat daug metų veisia modernias nostalgiškas rožes. Visos veislės yra išbandytos dėl atsparumo ligoms ir atsparumo šalčiui atšiauraus klimato sąlygomis. Naujos nostalgiškų šveitimo rožių veislės: Belvedere, First Lady, Gartentraume, Grafin von Hardenberg, Mariatherese, Pasella.

„Canadian Explorer Roses“ serijos rožės (Charlesas Albanelis, Davidas Thompsonas, Henry Hudsonas, Jensas Munkas, Martinas Frobicheris), pavadintos iškilių Kanados tyrinėtojų vardais, pirmiausia išsiskiria dideliu atsparumu žiemai. Daugelio šios serijos veislių kilmė buvo rožių cordesia ir rožių rugosa.

Priežiūros ypatybės

Prieglauda žiemai

Nors šiuolaikinių krūminių rožių atsparumas žiemai yra didesnis nei hibridinių arbatinių ir floribundinių rožių, tačiau žiemai jas būtina uždengti, o pats dengimas gali būti sunkesnis dėl krūmų tūrio.
Pakartotinai žydinčios krūminės rožės vegetacijos metu gali pasiekti 1,5 m aukščio ir daugiau. Spalio pabaigoje atliekamas rudeninis genėjimas - iki 1/3 ūglių ilgio.

Reikėtų pabandyti sulenkti aukštų krūmynų ūglius prie žemės. Krūmus galima iškasti iš vienos pusės ir pakloti susmeigus į žemę. Sulenktos šakos dedamos ant eglės šakų sluoksnio, kitaip rožės gali pūti atšildytoje žemėje po danga. Viršūnė taip pat padengta eglišakėmis arba bet kokia izoliacine medžiaga. Galite naudoti žemę, kad pritvirtintumėte izoliacinę medžiagą viršuje.

Patikima apsauga krūmams, kurie perėjo įprastus kietėjimo etapus, gali būti stipri sniego danga. Po 50-70 cm sniego sluoksniu temperatūra nenukrenta žemiau 4-5° žemiau nulio, kai lauke 25-30° C. Tačiau kadangi sniego iškritimo laikas ir sniego dangos storis nėra pastovus , būtina naudoti papildomas apsaugos priemones: eglės šakas, ąžuolo lakštą, neaustinę medžiagą.

Apipjaustymas

Krūmams būdingas stiprus tūrinis augimas ir juos reikia lengvai genėti. Šios rožės bijo sunkaus ir net vidutinio genėjimo. Neveikiantys pumpurai pabunda ilgiau nei, pavyzdžiui, hibridinių arbatos rožių. Kai vasara trumpa ir ne visada pakankamai šilta, ši savybė tampa reikšminga. Ilgai genint, žydėjimas būna gausesnis, nes antros eilės ūgliai iš viršutinių pumpurų vystosi intensyviau.

Ant krūmų paliekami 3-5 stipriausi nauji baziniai ūgliai ir ant jų paliekami 6-8 ir daugiau gerai išsivysčiusių pumpurų. Kasmetinio genėjimo tikslas – sutrumpinti ūglius ketvirtadaliu ar puse, šoninius – dviem trečdaliais. Jei ūglio aukštis siekia 120 cm, patrumpinkite juos 30-40 cm, jei šoninio ūglio ilgis 30 cm, patrumpinkite 10 cm Būtina palikti gana tvirtus, tolygiai išsidėsčiusius ūglius.

Šiuo metu Delphi yra vienas iš populiariausių programinės įrangos produktų, skirtų kurti Informacinės sistemos. Jos pagrindu kuriamos ir mažos programos, ir įmonės masto sistemos. Kuo šis produktas toks patrauklus kūrėjo požiūriu? Visų pirma, tai, be abejo, puiki vizualinio programavimo aplinka – suprantama, lengvai išmokstama ir dažnai nereikalaujančių profesionalaus kūrėjo žinių (kurios, kaip žinome, po truputį kaupiasi daugelį metų ir dešimtmečių ir yra neįtikėtinai brangus). Delphi aplinkoje galite sukurti gana sudėtingas programines sistemas beveik nuo nulio, parašydami minimalų kodą. Tuo pačiu ir kalba Objektas Paskalis, kurioje parašyta programa, daugeliui pažįstama (bent jau mūsų šalyje) ir šiuo metu studijuojama daugumos šalies techninių universitetų jaunesniuose kursuose.

Tačiau ne viskas taip paprasta. Jei kurdami nedideles programinės įrangos sistemas savo poreikiams galite apsiriboti vaizdine programavimo aplinka, tada sukurti bet ką, kas labai svarbu kokybei programinė įranga(programinė įranga) reikalauja iš esmės kitokio požiūrio, bent jau naudojimo kuriant gyvavimo ciklo modelį PAGAL, su visais išplaukiančiais proceso dokumentavimo reikalavimais.

Šios klasės sistemų pagrindas yra pagrindinės architektūros buvimas, kuri nesikeičia per visą sistemos kūrimo ir veikimo ciklą ir kurios pagrindiniai elementai yra išdėstyti ankstyvosiose projektavimo stadijose. Pagrindinė architektūra, kaip taisyklė, sukuriama naudojant daugybę modelių, atspindinčių pagrindinius dalykus, susijusius su sistemos struktūra ir jos funkcijomis. Deja, trečiadienis Delphi netaikomas tokioms problemoms spręsti.

Bet grįžkime prie „Delphi“ privalumų. Jei atmesime vizualinio programavimo aplinką, kas tada lieka? Objekto modelis. Ir šis „Delphi“ pranašumas yra patrauklus sistemos dizainerio požiūriu. Būtent objekto modelis (kad ir koks keistas jis kam nors atrodytų) daugiausia lemia vizualinio programavimo aplinkos sėkmę. Delphi objekto modelis apima platų užduočių spektrą, suteikdamas aukšto lygio, bet tuo pačiu itin lanksčius, beveik neribotus organizavimo įrankius. vartotojo sąsaja, operacinės sistemos išteklių valdymas, duomenų bazės manipuliavimas, standartų palaikymas atviros sistemos, taip pat populiarių technologijų palaikymas (įskaitant CORBA Ir COM), kelių lygių architektūra ir galiausiai internetas-intranetas- technologijas.

Pagrindinėje architektūroje gali būti naudojami Delphi objekto modelio elementai (kodėl iš naujo kurti visa tai, kas išdėstyta aukščiau), papildant jį reikalingais komponentais, atspindinčiais konkrečios sistemos taikymo specifiką.

Produktą naudojame sistemos projektavimui Racionali rožėįmonių „Rational Software Corp.oracija. Šis produktas turi visas būtinas charakteristikas, kad būtų galima sukurti bet kokio masto sistemos pagrindinę architektūrą. Jei turite pakankamai programavimo patirties Delphi aplinkoje, mums atrodo tinkama naudoti Rational Rose ir Delphi kartu, viename technologiniame procese.

Šio straipsnio tikslas yra pažvelgti į bendrą Rational Rose ir Delphi naudojimą ir tiksliai (mūsų nuomone, žinoma) nurodyti kiekvieno produkto vietą kūrimo procese. Tikimės, kad tai leis kūrėjams susidaryti nuomonę apie tokios technologijos pritaikymą jų pačių poreikiams ir sutaupys laiko smulkmenoms tyrinėti.

Ko norime iš Rational Rose ir Delphi

Metodika, kurios laikomės kurdami BY, yra programinės įrangos kūrimo metodika Racionalus vieningas procesas iš Rational Software Corporation. Metodika technologiniu požiūriu apima šiuos etapus (žinoma, kiekvienos iteracijos metu): srities modeliavimas, sistemos reikalavimų nustatymas, analizė ir projektavimas, įgyvendinimas (kodavimas ir derinimas neprisijungus), testavimas ir diegimas. Žemiau esančioje lentelėje parodyta, ko galime tikėtis su Rational Rose ir Delphi kiekviename etape.

Rational Rose ir Delphi naudojimas įvairiuose programinės įrangos kūrimo etapuose

Scena Ko tikimės iš Rose Ko tikimės iš Delphi
Domeno modeliavimas Dalyko sritis modeliuojama, o tema apibūdinama „tokia, kokia yra“ -
Sistemos reikalavimų nustatymas Nustatomi funkciniai reikalavimai sistemai, reikalavimai sistemos sąsajai Sukuriamas vartotojo sąsajos prototipas
Analizė ir dizainas Nustatomi pagrindiniai architektūros komponentai, modeliuojami duomenys, detaliai projektuojami sistemos komponentai. Delphi objekto modelio elementai yra įtraukti į bazinę architektūrą. Užtikrina „Rose“ klasės diagramos elementų ir „Delphi“ komponentų elementų atitikimą vienas su vienu
Įgyvendinimas Klasių diagramos įgyvendinamos programinių modulių pavidalu, sudaromos komponentų diagramos ir išdėstymo diagramos Programos kodas yra įdiegtas, užtikrinantis nedviprasmišką projekto atitiktį Rose ir Delphi. Dokumentavimo kodas Delphi Reflects in Rose
Testavimas Modeliai praktiškai nesikeičia. Bandomieji atvejai yra sukurti sistemos funkcijoms išbandyti Atliekami programos kodo pakeitimai. Programos kodo pakeitimai atsispindi Delphi kode
Įgyvendinimas Išdėstymo diagramos yra programinės įrangos diegimo pagrindas. Remiantis modeliais, galima gauti naujausią sistemos lygio dokumentaciją -

Kaip matyti iš lentelės, pagrindinė Rose ir Delphi sąveika gali įvykti sistemos reikalavimų apibrėžimo, analizės ir projektavimo bei įgyvendinimo etapuose. Šiuose etapuose naudojami pagrindiniai modeliai: sistemos funkcijų modelis, sąsajos modelis, duomenų modelis ir programinės įrangos modulio specifikacijų modelis.

Norint įgalinti ryšį tarp Delphi ir Rose, naudojama tarpinė programinė įranga, vadinama kodų generatoriumi. Reikėtų pažymėti, kad griežtai kalbant, šios programinės įrangos užduotys neapsiriboja kodo generavimu.

Prieš pereinant prie konkretaus kodo generatoriaus aprašymo, išvardijame, ką, mūsų nuomone, jis turėtų pateikti:

  • sugebėti konvertuoti Rational Rose klases į klasės apibrėžimo kodą tiksline kalba (šiuo atveju Delphi ) . Tokiu atveju su konkrečia klase susietas aprašymas turi būti patalpintas atitinkamoje programos kodo vietoje;
  • klasių diagramos stereotipų, susijusių su specifinėmis kalbos ypatybėmis (pavyzdžiui, stereotipu, palaikymas). vienetas, sąsaja arba nuosavybė su atitinkamais apibrėžimais: konkretus paketas - Delphi modulis , klasė - Delphi sąsaja, atributas - savybė Delphi komponentui);
  • turi aprašytą, akivaizdų ir nedviprasmišką būdą susieti klasės diagramą su Delphi kodu. Šiuo atveju ekranas turi būti pritaikomas;
  • turėti galimybę importuoti dabartinį Delphi objekto modelį (pageidautina skirtingos versijos bibliotekos VCL);
  • paramos kodų generavimas Delphi klasėms kurti;
  • mokėti teisingai atvaizduoti tipinius klasių santykių tipus (bent jau apibendrinimą, agregavimą ir kompoziciją);
  • mokėti programos kode rodyti ryšio kardinalumą;
  • Remdamiesi „Rose“ komponentų diagrama, sukurkite „Delphi“ projektą su reikiamais elementais programinės įrangos moduliai (pirmyn inžinerija);
  • remdamiesi paruoštu Delphi projektu, sukurkite Rose komponentų diagramą, kurioje komponentų pavidalu būtų visi Delphi projekto moduliai ir susijusios klasės, gautos iš Delphi, atlikus atvirkštinę inžineriją ( atvirkštinės inžinerijos). Diagramos turi būti kompaktiškos ir akivaizdžios;
  • užtikrinti automatinį Rose ir Delphi modelių suderinimą pakeitus Delphi modulių kodą ( inžinerija pirmyn ir atgal);
  • atlikus Rose modelio pakeitimus ir iš naujo sugeneravus kodą, nenaikinti Delphi aplinkoje parašytų fragmentų;
  • be kodo generavimo, turėti būdą parodyti tokį svarbų Delphi elementą kaip formos;
  • dirbti su realiais projektais (šimtai klasių ir modulių), kurių rezultatai priimtini.

Delphi kodo generatorius iš Ensemble Systems, Inc.

Bendrovė Ensemble Systems, Inc.šiuo metu yra vienas iš pirmaujančių papildomų komponentų tiekėjų (pridėti) už Rational Rose . Šie komponentai palaiko kodų generavimą įvairioms populiarioms programavimo sistemoms, įskaitant Delphi. Pažiūrėkime, kaip veikia Delphi kodų generatorius Rational Rose aplinkoje.

Įdiegę Delphi komponentą iš Ensemble Systems, Inc. Rational Rose aplinkoje įrankių skiltyje atsiranda naujas meniu punktas (1 pav.).

Kodo generatorius vadinamas Rose Delphi nuoroda (RDL). Kaip naudoti RDL , aprašysime plane, kai svarstysime konkretus pavyzdys. Dabar mes sutelksime dėmesį į pagrindines RDL ypatybes, kurių nesuvokus mažai tikėtina, kad RDL gali būti veiksmingai naudojamas.

Pirma, atkreipkite dėmesį, kad RDL sugeneruotas kodas nėra įgyvendinimo (objekto modeliui tai paprastai yra metodo korpusas). Kai modelis atnaujinamas iš Delphi kodo (atvirkštinė inžinerija arba kelionė pirmyn ir atgal), modelis neįkelia Delphi kodo metodo korpusams. Modelio pakeitimai susiję tik su deklaratyviais elementais: klasių apibrėžimais, sąsajomis, tipais, įrašais ir kt. Tačiau iš naujo generuojant kodą iš Rose, Delphi metodo elementai taip pat išlieka nepakitę ir keičiasi tik deklaratyvūs elementai. Todėl iš naujo generuojant programos kodą „sugadinti“ neįmanoma. Norėdami susieti modelio elementus į programos kodą, RDL naudoja Kodo generavimo ypatybės (C.G. P) yra specialių lentelių rinkinys, susietas su kiekvienu Rational Rose modelių elementu ir kuriame yra specifinė Delphi informacija, naudojama kodo generavimui. Šių lentelių rinkinį (2 pav.) rasite pagrindiniame meniu (elementas Įrankiai/parinktys, skirtukas Delphi).

Kad Delphi CGP būtų pasiekiami iš specifikacijos, turi būti nustatyta lauko reikšmė Numatytoji kalba = Delphižymėje Žymėjimas meniu elementas Įrankiai/Parinktys. Norėdami supaprastinti darbą meniu skyriuje Įrankiai / ansamblis Įrankiai taip pat pasirodo žymė Delphi nuosavybės redaktorius, kur galite konfigūruoti pasirinkto modelio elemento savybes. Atkreipkite dėmesį, kad CGP naudojimas yra tipiškas metodas visiems kodų generatoriams iš Ensemble Systems, Inc. ir apskritai Rational Rose. Naudodami Delphi Property Editor galite peržiūrėti atitinkamo modelio elemento (pavyzdžiui, klasės) kodą negeneruodami kodo, o tai dažnai yra labai patogu.

Dabar pažiūrėkime, kaip RDL sujungia įprastą projektavimo praktiką į programos kodą.

1. Paveldėjimas iš klasės ir sąsajos įgyvendinimas

Konvertuoja į kodą:

Tipas SampleClass1 = klasė (BaseClass, SampleInterface) (...) pabaiga;

2. Asociatyvūs ryšiai su vaidmenimis ir skirtingas sąsajų kardinalumas

Konvertuoja į kodą:

Tipas SampleClass3 = privati ​​klasė ArrayRole1: TiekėjoClass2 masyvas; ArrayRole2: masyvas TiekėjoClass5; ArrayRole3: masyvas TiekėjoClass3; ArrayRole4: TItems; galas;

Atminkite, kad norint pavaizduoti vaidmenis, kurių kardinalumas nelygus 1, naudojami masyvai (fiksuoto ilgio arba dinaminiai). Pavyzdyje esanti SampleRange konstanta turi būti apibrėžta ArrayRole ypatybėje Array_Range. Atminkite, kad Role4 kodas neapibrėžia masyvo, o veikiau TItems tipą, kuris turėtų atstovauti kolekcijai.

Konvertuoja į kodą:

SampleClass1 = viešoji klasė A: SampleClass2; B: SampleClass3; C: SampleClass4 masyvas; D: SampleClass5 masyvas; galas;

Atminkite, kad neradome jokio reikšmingo agregavimo ir sudėties kodo skirtumo, o gautas kodas yra labai panašus į įprasto vaidmenų susiejimo kodą.

4. Stereotipai tipiniams Delphi kodo elementams

RDL turi keletą stereotipų, atspindinčių tipinius Delphi kodo elementus: rodykles, masyvus, failus, klasių nuorodas ir kt. Tiesa, mūsų nuomone, šie elementai retai naudojami aukšto lygio objekto modelio projektuojant.

Trumpo RDL savybių aprašymo pabaigoje atkreipiame dėmesį į tai. Svarbus dizaino elementas yra atitinkamo modelio elemento specifikacijos dokumentacija. RDL užtikrina jo perkėlimą į programos kodą. Taigi operacijoms (Delphi klasės metodams) lauko reikšmė dokumentacija specifikacijoje jis įterpiamas į kodą prieš metodo apibrėžimą. Ir atvirkščiai, komentarai Delphi kode gali būti konvertuojami į dokumentacijos laukus Rose modelio elementų specifikacijose.

Ko RDL negali padaryti

Anksčiau mes apibrėžėme, ką, mūsų manymu, turėtų suteikti Delphi kodų generatorius. Apskritai, RDL apima visas pirmiau minėtas funkcijas, galbūt su viena išimtimi - neleidžia kurti formų. Ar įsivaizduojate Delphi aplinką be formų? Mes taip pat negalime. Pagrindinė vizualinio programavimo paradigma Delphi aplinkoje yra atitinkamų savybių (klasės atributų reikšmių) nustatymas ir kodo rašymas įvykių tvarkytojams. Ir, deja, RDL nėra mūsų pagalba. Bet ar tai tikrai toks rimtas apribojimas? Čia gali būti įvairių nuomonių.

Vienas iš aplikacijos kūrimo būdų yra toks: Delphi aplinkoje suprojektuojama vartotojo sąsaja (o kur tai galima padaryti greičiau ir paprasčiau?) ir programos kodas konvertuojamas į Rational Rose modelius. Nepaisant to, kad formos pasirodo gana stambios, jas galima „šukuoti“, tačiau svarbiausia nerodykite jose nesvarbių detalių. „Rational Rose“ yra sukurtas tikrasis objekto modelis, duomenų modelis ir komponento modelis, ty architektūriškai reikšmingų elementų. Kartu su sistemos vartotojo sąsajos modeliu jie sudaro sistemos struktūrą, kurią galima sekti konfigūracijos valdymo įrankiais, įtraukti į dokumentaciją, lengvai analizuoti, ar nėra esminių klaidų, ir yra funkcinio testavimo pagrindas, ty gali būti naudojamas bet kuriame etape. gyvenimo ciklo ( J C) programinės įrangos kūrimas. Tuo pačiu metu RDL užtikrina visišką modelių ir programos kodo koordinavimą per visą programinės įrangos gyvavimo ciklą. Mes stengiamės laikytis būtent šio požiūrio.

Delphi ir Rational Rose naudojimo kartu pavyzdys

Deja, vargu ar įmanoma trumpame straipsnyje parodyti visavertį realaus pritaikymo pavyzdį. Tačiau tai nėra būtina. Straipsnio taške, kuriame aprašėme, ko tikimės iš Rose ir Delphi kiekviename kūrimo etape, pažymėjome, kad projektuojant mums svarbu sukurti pagrindinę architektūrą, šiuo atveju apimančią Delphi objekto modelio elementus. Čia mes parodysime RDL galimybes.

Kaip pavyzdį pasirinkome sistemos fragmentą, kuris rodo paciento būklės rodiklius gydančiam gydytojui. Funkciniai reikalavimai sistemai pateikti diagramos pavidalu (3 pav.).

Diagramoje rodomi trys aktyvūs objektai: administratorius, įrenginys, gydytojas. Mes nenagrinėsime sistemos funkcijų, susijusių su įrenginiu. Kalbant apie įrenginį, mums svarbu, kad indikatorius būtų gaunamas tam tikru dažniu ir kad sistema pateiktų sąsają jo saugojimui duomenų bazėje. Visos likusios sistemos funkcijos yra susijusios su vartotojo sąsaja ir informacijos saugojimo duomenų bazėje suteikimu ar jos paėmimu.

Sistemą grindžiame šiais architektūriniais sprendimais:

  • vartotojo sąsaja ( GUI) sistema sukurta Delphi objekto modelio pagrindu;
  • sąsaja su DBVS yra pagrįsta Delphi objekto modeliu;
  • Reliacinė DBVS naudojama kaip DBVS.

Kurdami sistemą, turime apibrėžti: klases, kurios vaizduoja vartotojo sąsają ( ribines klases); valdymo klasės, įgyvendinančios sistemos logiką ( kontrolinės klasės); objektų klasės, skirtos informacijos saugojimo struktūrai rodyti ( subjektų klasės).

Mūsų sukurtos objektų klasės pateiktos Fig. 4 .

Iš objektų klasių objektinio modelio gavome fizinį duomenų modelį reliacinei DBVS ir užtikrinome jo generavimą konkrečiai DBVS. Čia praleidžiame išsamią informaciją, kaip tai galima padaryti „Rational Rose“ aplinkoje.

Kadangi planuojame kurti GUI remiantis Delphi objekto modeliu, pagrįsta manyti, kad vartotojo sąsajai atvaizduoti skirtos klasės (ribinės klasės ) galima gauti prototipuojant vartotojo sąsają Delphi aplinkoje. Klasės vartotojo sąsaja (ribinės klasės ) yra projektuojami formai, parodytai pav. 5 .

Klasių diagramoje pašalinome visų Delphi objekto modelio klasių atributus ir operacijas: kadangi kiekvienoje klasėje yra kelios dešimtys šių atributų ir operacijų, diagrama tokiu atveju taptų didžiulė. Diagramoje aiškiai parodyta, kurios Delphi objektų modelių klasės yra naudojamos vartotojo sąsajos elementams vaizduoti ir ką tiksliai jie atstovauja. Turėtumėte nedelsiant pašalinti iš modelio atstovavimo TGroupBox Ir TLabel kaip architektūriškai nesvarbūs elementai. Lentelės redagavimo formos klasių diagrama parodyta pav. 8 .

Be pagrindinio lango, mums taip pat reikalinga sąsaja (GUI), skirta pacientų, rodiklių tipų ir matavimo vienetų duomenų bazei palaikyti. Tam planuojame naudoti standartinę lentelių redagavimo formą, pagrįstą standartiniais Delphi komponentais. Nubraižykime šią formą Delphi ir konvertuokime į Rational Rose modelį (9 pav.).

Naudodamiesi paveldėjimo mechanizmu, visas kitas ekrano formas gauname iš lentelės redagavimo formos. Pavyzdys, kaip atrodys stebėjimo tipo katalogas, parodytas pav. 10 .

Taigi, su išvaizda Mes visiškai apibrėžėme vartotojo sąsają ir dabar galime sutelkti dėmesį į programos logikos įgyvendinimą. Patogumo dėlei (bet nelaikykite to kaip įprasta praktika!) kaip valdymo klasę naudosime jau esamą sąsajos klasę. TMainForm.

TMainForm klasė turi pateikti:

  • naršymas tarp ekranų, mygtukų paspaudimų įvykių tvarkymas, kad būtų rodomos kitos formos;
  • išskleidžiamųjų sąrašų, pacientų, rodiklių, matavimo vienetų pildymas;
  • automatinis matavimo vieneto apskaičiavimas pagal indikatoriaus tipą;
  • paciento parinkimas pagal kortelės numerį;
  • paciento kortelės numerio parinkimas;
  • paskutinės indikatoriaus reikšmės apskaičiavimas ir rodymas.

Rational Rose aplinkoje sukurkime operacijas aukščiau aprašytoms TMainForm klasės funkcijoms įgyvendinti (11 pav.).

TMainForm klasės operacijas reikėtų suskirstyti į dvi grupes: skaičiavimus ir reakcijas į įvykius. Operacijos, kurios baigiasi Spustelėkite arba Keisti, ir FormShow- reakcijos į įvykius, visa kita – skaičiavimai.

Operacijos turi įgyvendinti šiuos veiksmus:

  • UžpildykitePatientLis t - išskleidžiamojo pacientų sąrašo pildymas;
  • FillMeasureList- išskleidžiamojo matavimo vienetų sąrašo užpildymas;
  • UžpildykiteObservList- išskleidžiamojo stebėjimo tipų sąrašo užpildymas;
  • CalcObservVal- paskutinės stebėtos vertės apskaičiavimas;
  • ChPatientByCard- paciento paieška pagal kortelės numerį;
  • ChCardByPatient- ieškoti kortelės numerio pagal pacientą;
  • ChMeasureByObserv- grąžinti tam tikro tipo stebėjimo matavimo vienetą;
  • CardValChange- reakcija keičiant kortelės numerį;
  • PatientChComboChange- reakcija į naujo paciento atranką į sąrašą;
  • ObservTypeComboChange- reakcija į stebėjimo tipo pasirinkimą;
  • GetValueButtonClick- reakcija į vertės skaičiavimo mygtuko paspaudimą;
  • PatientDictClick- atsakas paspaudus mygtuką Pacientai;
  • ObservTypeDictClick- reakcija į mygtuko paspaudimą Stebėjimų tipai;
  • „MeasureDictClick“.- reakcija į matavimo vienetų mygtuko paspaudimą;
  • FormShow- apdorojimas, kai forma pirmą kartą rodoma ekrane.

Ir paskutinis dalykas, kurio reikia norint užbaigti dizainą, yra valdymo klasės, skirtos sąveikai su duomenų baze įgyvendinti. Be jų negalima nei pildyti duomenų bazės, nei įgyvendinti TMainForm valdymo klasės atsiskaitymo operacijas. Kaip ir sąsajos klasių atveju, naudosime aplinką Delphi sukurti valdymo klasę sąveikai su duomenų baze - TDataModule1, tada atlikite modelio suderinimą. Naujas sąveikos su duomenų baze modulis parodytas Fig. 12 .

Objektinis QueryPatient, QueyObType, QueryMeasures Ir PatientDataSource, ObTypeDataSource, MeasureDataSourceįgyvendinamas darbas su pacientų, stebėjimų tipų ir matavimo vienetų duomenų baze – standartiniu Delphi būdu, remiantis poros klasės objektų naudojimu TQuery, TDuomenų šaltinis ir jų sąveika su GUI klasėmis. ObservDataSource naudojamas norint gauti informaciją apie atliktus stebėjimus. Apibūdinti kontrolinių klasių sąveiką TDataModule1 Ir TMainForm turėtumėte sukurti keletą sąveikos diagramų, susijusių su reikiamų duomenų bazės užklausų vykdymu (dėl ribotos straipsnio apimties šias diagramas praleidžiame).

Atkreipkite dėmesį, kad papildydami sistemą naujais moduliais ir klasėmis bei derindami modelius, automatiškai gavome sistemos komponentinį modelį (13 pav.).

Taigi, trumpai apibendrinkime. Bendrai naudodami Rational Rose ir Delphi, gavome:

  • sąsajos ir valdymo klasės, suskirstytos į paketus;
  • sistemos komponentinis modelis.

Esybių klasės ir diagramos, apibūdinančios dinamiką, sukurtos „Rational Rose“. Ateityje Rational Rose modeliai suteiks mums pagrindą dokumentuoti projektą, sekti jo būseną ir organizavimą funkcinis testavimas. Delfyje gautas projektas savo ruožtu yra įgyvendinimo pagrindas. Diegimo proceso metu projektas periodiškai derinamas Delphi su technologija paremtu Rational Rose modeliu kelionė pirmyn ir atgal, kuri leidžia nuolat atnaujinti modelius ir sklandžiai juos tobulinti pagal pasikeitusius sistemos reikalavimus.

Išvada

Baigdami norime atkreipti dėmesį į tuos etapus, kuriuose, mūsų nuomone, bendras Delphi ir Rational Rose naudojimas yra prasmingiausias technologiniu požiūriu.

Pirmiausia , yra vartotojo sąsajos prototipo sukūrimas. Greitas kūrimas Formos Delphi aplinkoje taip pat leidžia greitai gauti sąsajos klasių modelį sistemoje Rose, jo pagrindu paryškinti pagrindinius architektūrinius taškus (pavyzdžiui, įprastas elgesys, tipiški GUI elementai, perteklius), taip pat palyginti sąsajos klases su funkciniais reikalavimais. sistema.

Antra , tai yra valdymo klasių sukūrimas Rational Rose modeliuose su vėlesniu kodo generavimu Delphi. Valdymo klasės Rational Rose aplinkoje pateikiamos aiškiau naudojant UML (Delphi jos gali būti „suliejamos“ tarp didelių sąsajų klasių).

Ir, galiausiai, Trečia , tai yra programos kodo diegimo etapas, kuriame galima atlikti modelio pakeitimus, susijusius su diegimo problemomis. Periodiškas modelių derinimas šiame etape leidžia kūrėjui užtikrinti, kad esminiai architektūriniai sprendimai nepasikeitė, o taip pat turėti naujausius modelius, atspindinčius tikrąją raidos būklę.

ComputerPress 4"2001

Kai pražys karališkosios gražuolės vijoklinė rožė „Elfas“, ji bet kam užgniaužs kvapą. Kaip pasakoje, prasiskleidę žiedynai pasirodo gražiame šviesiame debesėlyje, iš tolo sniego baltumo, o iš arti su maloniu citrininiu gaivumu. Šis ilgalaikis spindesys džiugina visą sezoną ir sukelia romantiškų minčių. Ranka tiesiasi prie gėlės, bet ne jos nuskinti, o tik paliesti nežemišką kūrinį ir įkvėpti užburiančio aromato.

Elfas negali gyventi be meilės, bet taip pat neįmanoma jo nemylėti.

Vijoklinę rožę „Elfas“ 2000 m. išvedė Vokietijos įmonė „Tantau“ („Nostalgic Roses“ serija) ir yra moderni Large-Flowered Climber (LCI) sodo rožė.

Selekcininkai sukūrė augalą su išskirtiniu elegantiško silueto ir švelnaus nostalgiško romantizmo deriniu. Čia pats pavadinimas dera su savo išvaizda, tarsi iškylantis iš pasakų šalies.

apibūdinimas

Krūmas yra energingas (iki 280 cm aukščio, rečiau iki 250) ir stačias. Alpinistų ūgliai kartais siekia tris metrus.

Žiedai dideli, iki 14 cm skersmens, tankiai dvigubi. Kiekvienoje gėlių stiklinėje nuostabiai telpa iki 57 žiedlapių. Jų unikali tauraus dramblio kaulo spalva kraštuose palaipsniui pereina į šviesiai žalią su citrininiu atspalviu apačioje. Galbūt todėl aromatas originalus – subtilus, šiek tiek vaisinis, kerintis ir viliojantis.

Esant palankioms sąlygoms, masinio žydėjimo metu vienas žiedynas vienu metu išmeta iki penkių žiedų skėtiniame žiedyne.

Lapai dideli, ryškiai žali. Saulė mėgsta grožėtis blizgančios lapijos atspindyje.

Žemės ūkio technologija

  1. Sąlygos. Vijoklinei rožei „Elfui“ reikia šiltų, saulėtų vietų. Dirva turi būti derlinga ir lengva, šiek tiek rūgšti arba neutrali. Svarbiausia, kad jis gerai išlaikytų drėgmę. Kaip ir visiems jo giminaičiams, jai reikia reguliaraus šėrimo (pavyzdžiui, arklių mėšlu) ir pastogės žiemai.
  2. Nusileidimas. Pavasarį, prieš sodinimą, daigai parai mirkomi vandenyje. Per tą laiką šaknų sistema turės laiko prisotinti drėgmės. Tada nupjaunami silpni augalo ūgliai ir paliekami stiprūs pirkti generic accutane. Pažeistos ir ilgos šaknys apkarpomos.
  3. Tvarumas. „Elf“ veislė yra gana atspari šalčiui ir netgi sugeba išlaikyti žalumynus. Tačiau esant labai žemai temperatūrai, galimas užšalimas. Neserga miltligėmis ar juodosiomis dėmėmis. Tačiau gėlės nemėgsta lietaus ir šešėlio.
  4. Palaikymas. Jei rožė bus nukreipta išilgai plonos, nepastebimos atramos, galingi šoniniai ūgliai sukurs sklandančio medžio su daugybe nuostabių pumpurų įvaizdį.

„Elfas“ puikiai atrodo romantiškame sode arkų pavidalu, puošia sienas ir pavėsines. Citrininės-grietinėlės kaskados vaizdingai nusilenks nuo didelių gėlių, kurių žiedlapius išraižė įgudęs „meistras“. Ši rožė skirta romantiškų mėgėjams ir tiems, kurie turi nepaprastą stiliaus pojūtį. O jei jos papėdėje pasodinsite verbeną, katžolę, levandą, jų gležni lapai ir erdvūs, vešlūs žiedynai gražiai įrėmins ir papildys vijoklinės rožės grožį.

Augalas vešliai žydi, tarsi pasakų elfės, kupinos šviesių emocijų. Rožė „Elfas“ gali būti permaininga ir kaprizinga, tuo pačiu kupina žavesio, gebėjimo užburti ir keisti pasaulį savo grožiu. Pasakų krūmas įneša nostalgijos į mūsų kasdienį gyvenimą ir yra toks gražus.


Medžiaga buvo paskelbta kovo mėn
žurnalo „Programuotojas“ 2002 m

Bendrovė

Racionali programinė įranga Jau keletą metų ji pirmauja programinės įrangos projektavimo, kūrimo, testavimo ir priežiūros įrankių kūrimo srityje. Pagrindinis linijos produktas Rational yra Rational Rose CASE įrankis. Racionali rožė palaiko vizualinį objektinį modeliavimą ( UML ), palaiko kodų generavimą ir atvirkštinę inžineriją (modelio kūrimą iš programos kodo) daugeliui programavimo kalbų, leidžia sukurti sukurto objekto modelį. programinės įrangos sistema, apibrėžti klasių, objektų, atributų ir operacijų specifikacijas (daugiau informacijos žr. „Programuotojas“ Nr. 2, 3, 5/6 2001 m.). Racionali rožė turi visas būtinas charakteristikas kuriant bet kokio masto sistemos architektūrą, naudojimo idėją Rožė su tokia galinga ir populiaria programavimo sistema kaip Delphi . Standartinis pristatymas Racionali rožė su juo dirbti negalima Delphi, bet Rational Software vykdo programą, kuri palaiko trečiųjų šalių tilto programinės įrangos pardavėjus ( Nuorodos) tarp Rose ir kitos kūrimo priemonės. Kaip šios programos dalis, įmonė Ansamblių sistemos buvo sukurta tilto programa Rose Delphi Link (RDL), jungianti Rational Rose ir Delphi . Pagrindinės funkcijos RDL - kodų generavimas ir atvirkštinė inžinerija. Reikėtų prisiminti, kad sukurta RDL kode nėra funkcionalumo įgyvendinimo! Generuojami tik deklaratyvūs elementai: klasių apibrėžimai, sąsajos, įrašai, tipai, matomumo direktyvos ir kt.

Paskirstymas

Rose Delphi nuoroda galima nemokamai atsisiųsti iš svetainės„Rational Software“ (http://ftp.rational.com/public/rose/Links/RoseDelphiLink3Setup.exe ), dydis – apie 8 MB. Montavimas RDL standartinis, nesukelia jokių sunkumų. Įdiegę programą Rational Rose naujas elementas Ensemble Tools ® Rose Delphi Link pasirodo įrankių meniu (1 pav.).

1. RDL meniu punktas

Prieš pereinant prie peržiūros

Rose Delphi nuoroda , priminsiu pagrindinius darbo aplinkoje etapus Racionali rožė . Paprastai naudojamas toks metodas:
  1. Sistemos reikalavimų nustatymas ir sistemos elementų sąveikos modelio kūrimas (
Naudokite atvejo diagramą ir bendradarbiavimo diagramą ). Norėdami gauti daugiau informacijos Naudojimo atvejis, naudojamas sekos diagrama . Šios diagramos rodo domeno objektus, susijusius su verslo procesais. Šios diagramos neturi įtakos sukurtam kodui.
  • Sistemos aparatinio modelio konstravimas (
  • Diegimo schema ). Šioje diagramoje parodytas sistemos modelis įdiegiant aparatinę įrangą. Diagrama neturi įtakos sugeneruotam kodui R.D.L.
  • Sistemos objektinio modelio kūrimas (klasių apibrėžimas, jų sąveika, atributai, operacijos). Lygiagrečiai su klasių diagramos kūrimu, kaip taisyklė, sukuriama komponentų diagrama (
  • Komponentų diagrama ), kuriame rodoma sistemoje naudojamų failų, modulių ir papildomų bibliotekų sąveika. Komponentų diagrama taip pat neturi įtakos kodo generavimui.
  • Programos kodo generavimas.
  • Tik klasių diagramos turi įtakos kodo generavimui, todėl šiame straipsnyje mes atsižvelgsime tik į skyrių diagramas

    Loginis vaizdas . Kitų diagramų sudarymo ypatybės praleistos.

    Išvardinti projektavimo etapai aplinkoje

    Racionali rožė naudojamas modeliui kurti ir kodui generuoti įvairiomis aplinkos palaikomomis kalbomis Rožė. Bet Delfyje yra bruožas, kuris žymiai išskiria vystymąsi Delphi nuo kūrimo kitose programavimo aplinkose: vartotojo sąsajos programavimas. Ne paslaptis, kad į Delphi Daugumos programų kūrimas prasideda nuo vartotojo sąsajos dizaino, o nuo tolesnio programavimo – reikšmingų jos pakeitimų. Todėl naudokite standartinį metodą Racionali rožė nelabai patogu. Norėdami išspręsti šią problemą, įmonė Ansamblių sistemos siūlo tokią projektavimo metodiką:

    2 pav. Projektavimo metodika naudojant

    RDL

    Pagrindinė šio metodo idėja yra naudoti atvirkštinę inžineriją (

    Inžinerija pirmyn ir atgal ): visi kodo lygiu atlikti pakeitimai Delphi , rodomi integruotame objekto modelyje Rožė , ir atvirkščiai, keičiant klases, metodus ir pan. objekto modelyje Rožė , atitinkamai,Programos kodas ištaisytas. Atkreipkite dėmesį į rodyklių porą, jungiančią trečiąjį ir ketvirtąjį blokus. Šios rodyklės rodo atvirkštinės inžinerijos procesą.

    Pažiūrėkime į pagrindinį langą

    Rose Delphi nuoroda (3 pav.). Sąsaja gana paprasta, joje yra:
    • meniu, kuriame yra komandos, skirtos darbui su projektu, parinkčių nustatymas ir pagalbos iškvietimas;
    • skydeliai, kuriuose medžių pavidalu atvaizduojamos modelių hierarchinės struktūros
    Rose ir Delphi;
  • objektų medžių atnaujinimo mygtukas, atvirkštinės inžinerijos mygtukai (¬
  • Atnaujinti viską) ir tiesioginio dizaino, t.y. kodo generavimas (Atnaujinti viską®).

    3 pav. Pagrindai

    Rose Delphi Link langas

    Pagrindinis langas

    RDL yra pagrindinio lango vaikas Racionali rožė ir nuolat yra šio lango viršuje, taip sumažintas toks pat kaip vaikiškas langas, kuris neabejotinai labai patogus.

    Prieš žvelgdami į konkretų pavyzdį, atidžiau pažvelkime į meniu elementus

    Rose Delphi nuoroda.

    Failas ® Atidaryti projektą – skirta atsidaryti RDL sukurtas projektas Delphi . Atidarant projektą lange RDL Rodomi atidaryto projekto objektų medžiai.

    Failas® Naujas projektas– pasirenkant šį meniu elementą RDL siūlo sukurti tuščią Delphi - projektas. Šiuo atveju sukurtoje projekto byloje yra tik deklaratyvūs elementai,reikalinga minimaliai programai Delphi (programa, pradžia, pabaiga ). Jei programoje nėra grafinės vartotojo sąsajos, pavyzdžiui, dinaminės bibliotekos, reikėtų sukurti naują projektą. Tiesa, tokiu atveju reikės pakoreguoti sugeneruotą kodą – pakeisti programa bibliotekoje . Naudodami kontekstinį meniu galite kurti modulius ( vienetas ) ir papildomi modulių katalogai. Tokiu būdu sukurtuose moduliuose taip pat yra tik minimalus įgyvendinimas ( panaudojimas, sąsaja, įgyvendinimas, pabaiga ). Sukūrus modulį, vėliau generuojant kodą, skyriuje naudoja prie projekto bylos pridedama nauja modulio deklaracija.

    Meniu elementai Žiūrėti Ir Pagalbayra standartiniai ir jiems nereikia aprašymo šiame straipsnyje.

    Dabar pasinaudokime aukščiau pateikta projektavimo metodika ir sukurkime programą bei atitinkamą modelį

    Rožė . Pavyzdžiui, paimkime programą, kuri užpildo du skaitinius 5 x 5 dydžio matricas atsitiktiniai skaičiai, taip pat įgyvendinant kai kurias matematines jų apdorojimo funkcijas. Programa turi atlikti šias funkcijas:
    • Užpildykite masyvus atsitiktiniais skaičiais nuo 1 iki 10;
    • Apskaičiuokite kiekvieno masyvo elementų sumą;
    • Nustatyti elementų aritmetinį vidurkį;
    • Išvalyti masyvus (inicijuoti juos iki nulio).

    Pradėkime nuo vartotojo sąsajos kūrimo

    Delphi . Dėl paprastų veiksmų su pele gavau tokią programą, kuri dar neatlieka jokių veiksmų (4 pav.).

    4 pav. Sukurtos programos sąsaja

    Išsaugokime šį projektą su pasiūlytais modulių pavadinimais

    Delphi pagal numatytuosius nustatymus atidarykite naujas projektas Rational Rose ir paleiskite „Delphi Rose Link“. . Pasirinkite meniu elementąAtviras projektas,ir atidarykite ką tik išsaugotą Delphi projektas. RDL lange bus rodomi modelio objektų medžiai Rose ir Delphi projektas (5 pav.).

    5 pav. Projektas

    Delphi atidarytas RDL

    Kairysis objektų medis yra modelio objektai

    Rožė , tinkamas medis yra šaltinio kode deklaruoti objektai Delphi . Atkreipkite dėmesį į raudonus šauktukus, esančius kairėje nuo piktogramų, žyminčių objektus. Jie nurodo kodų skirtumus Delphi ir Rose modelis . Dabar visos piktogramos yra pažymėtos, nes modeliai yra Rožė dar visai neegzistuoja.

    Kitas žingsnis yra modelių generavimas

    Rožė pagal šaltinio kodą. Norėdami pradėti generuoti, turite paspausti mygtuką ¬Atnaujinti viską.Sėkmingos kartos atveju šauktukai objektai išnyksta, o tai reiškia, kad modelis Rožė kiekvienam objektui atitinka šaltinio kodą Delphi . Norėdami peržiūrėti pranešimų generavimo istoriją, turite pasirinkti meniu elementąPeržiūrėti ® pranešimus. Atsidariusiame lange bus rodomas gana išsamus pranešimų žurnalas. RDL , išvestis generuojant modelį arba šaltinio kodą. Rose Delphi nuoroda ir objekto naršyklėje Rose, pasirinkite loginio vaizdo šaką . Matome, kad pasirodo du paketai:<>1 vienetas, kuriame yra kodo objekto modelis iš modulio Unit1.pas ir Išorinės nuorodos,kuriuose yra objektai Delphi , kurie deklaruojami moduliuose, esančiuose už dabartinio projekto ribų (bibliotekos objektai VCL).

    Dabar atidarykime jį aplinkoje

    Rožė modulį atitinkanti klasių schema 1 vienetas ( Loginis vaizdas ® Unit1 ® apžvalga). Pradinėje formoje diagramoje pavaizduotas šiek tiek painus objektų modelis, kurį sutvarkysime kruopščiai išdėstydami objektus pagal jų hierarchiją (6 pav.).

    6 pav. Modulio objekto modelis

    1 vienetas

    Kai kuriamos programos sąsaja yra gana sudėtinga ir apima daugiau nei tuziną elementų, objekto modelis šiek tiek perkraunamas. Norėdami iškrauti modelį, galite pašalinti kai kuriuos neesminius modelio elementus. Iš diagramos reikia ištrinti tik elementus, nes tokiu atveju jie pašalinami tik vizualiai. Kai objektai ištrinami iš naršyklės, jie ištrinami visam laikui, o tai reiškia, kad sugeneruotas

    RDL kodas.

    Dabar pereikime prie kito žingsnio: objekto modelio, įgyvendinančio aukščiau nurodytas programos funkcijas, kūrimas. Klases, jų atributus ir metodus diegsime atskirame modulyje, pagrindiniame modulyje kursime klasių egzempliorius, o mygtuko paspaudimo įvykių tvarkyklėje rašysime šių klasių metodų iškvietimus.

    Sukurkime naują modulį. Tai taip pat galima padaryti viduje

    Delphi, Rose ir RDL , bet eksperimento grynumui viską kursime tik in R.D.L. Rožėje suaktyvinti langą RDL ir spustelėkite dešiniuoju pelės mygtuku spustelėkite užveskite pelės žymeklį ant šakninio elemento modelio objektų medyje Rožė – mūsų atveju taip Model1.mdl . Kontekstiniame meniu pasirinkiteNaujas ® vienetas.Atsidarys komponentų rengyklės langas ( Komponentų redaktorius ) (7 pav.). SkirtukeGenerolasnurodytas modulio pavadinimas ( Vienetas 2), ir sukurto modulio komentarą, kuris kodo generavimo metu bus įterptas į modulį kaip komentaras. SkirtukeDetalėtipas nurodytas ( malonus ) komponentą ir kelią į šaltinio failą. SkirtukeKodo peržiūragalite pamatyti kodą, kuris bus sugeneruotas RDL šiam moduliui. IšjungtiLeisti kodo / modelio naujinimusneleidžia generuoti kodo ir atnaujinti pasirinkto elemento modelį.

    7 pav. Komponentų rengyklė

    Paspaudus mygtuką

    Geraimes matome, kas yra lange RDL atsirado piktograma, nurodanti naują modulį, o šalia jo Šauktukas, signalizuojantis, kad modelis Rose ir Delphi kodas nesinchronizuotas. Atnaujinkime kodą Delphi spustelėdami mygtuką Atnaujinti viską®.

    Dabar reikia pereiti prie

    Delphi . Matome langą, įspėjantį, kad modulis buvo pakeistas (8 pav.). Norėdami atsisiųsti atnaujintą modulį, spustelėkiteGerai.

    8 pav. Pranešimas

    Delphi apie projekto failo keitimą

    Dabar atidarykime naujai sugeneruotą modulį

    2 vienetas.pas . Galite patikrinti, ar kodo generavimas buvo sėkmingas – viskas būtina raktinius žodžius, komentaras įdėtas. Kitas žingsnis – modeliuoti klases ir jų metodus šiame modulyje. Eime Rožė ir suaktyvinkite langą RDL . Objektų medyje mes parodysime objekto kontekstinį meniu Vienetas 2 ir pasirinkite elementusNauja ® klasė. Pasirodo klasės rengyklės langas ( Klasės redaktorius ) (9 pav.). SkirtukeGenerolasreikia nurodyti klasės pavadinimą ( Vardas), malonus, matomumas ) ir klasės komentaras ( Dokumentacija ). Mūsų atveju klasė bus vadinama Tmassiv , jo taikymo sritis yra Viešas

    9 pav. Klasės redaktorius

    Norėdami sukurti visus klasės metodus ir atributus, naudosime meniu elementą

    Naujaklasės kontekstiniame meniu objektų medyje RDL . Atributų ir metodų rengyklės iš esmės yra panašios į klasės redaktorių, todėl kūrimo detalių praleisime. Sukurkime šiuos atributus ir metodus (visi metodai su matomumo direktyvomis Viešas, M atributas turi išvaizdą privatus):

    M: sveikųjų skaičių masyvas;

    ; // Inicijuoti masyvą

    procedūra FillMassiv

    ; // Masyvo užpildymas atsitiktiniais skaičiais

    procedūra CalcSum

    ; // Apskaičiuokite masyvo elementų sumą

    procedūra CalcSr

    ; // Apskaičiuokite vidutinę masyvo elementų reikšmę

    funkcija GetElement(X, Y: sveikasis skaičius): Sveikasis skaičius; //

    Gaunamas masyvo elementas (x, y)

    Taip pat sukurkime metodą klasei

    TForma 1, kuris užpildys komponentus TMemo , esantis formoje, elementai iš masyvų:

    procedūra GetMassiv;

    Metodų su parametrais kūrimas yra kažkas ypatingo. Pirma, metodas sukuriamas įprastu būdu, tada objektų medyje

    RDL , metodo, kurio parametrą prašoma nurodyti, kontekstiniame meniu pasirinkite elementąNaujas ® parametrasir nurodomas parametro pavadinimas, tipas ir komentaras.

    Sukūrę klasę, pažiūrėkite į modulio klasių diagramą

    2 vienetas Rožėje – mūsų klasė suplanuota pagal specifikaciją UML (10 pav.).

    10 pav. Klasių diagrama su sukurta klase

    Taigi, klasė, tiksliau, jos apvalkalas, sukurtas dar neįgyvendinus. Dabar pagrindiniame modulyje

    1 vienetas Sukurkime du šios klasės egzempliorius. Paskelbkime juos kaip M1 ir M2 TForm klasės viešajame skyriuje 1. Tai atliekama objekto medžio kontekstiniame meniu pasirenkant reikiamus elementus ir atributų rengyklėje nurodant parametrus. Modifikuota diagrama kur klasėje TForma 1 rodo deklaruotus klasės egzempliorius, parodytus Fig. vienuolika.

    11 pav. Skyriuje deklaruoti klasių egzemplioriai

    viešoji klasė TForm1

    Taigi, modelis sukurtas, o dabar turime sugeneruoti galutinį kodą. Lange

    RDL spustelėkite Atnaujinti, atnaujinti viską®ir eik iki trečiadienio Delphi . Dabar turime parašyti kodą, kuris įgyvendina funkcionalumą, ir sukompiliuoti programą. Kai užpildote metodus kodu, kartais reikia pridėti vietinių arba visuotinių kintamųjų. Tai galima padaryti viduje RDL , bet geriau įdiegti šiuos kintamuosius kode ir tada atnaujinti modelį Rožė pagal šaltinio kodą Delphi (¬ Atnaujinti viską). Jei kai kurie elementai buvo pašalinti iš modelio, bet jie jau įdiegti kode, šis kodas yra tarp kompiliatoriaus direktyvų($IFDEF IŠTINTAS) ir ($ENDIF) .

    Įdiegę visą šaltinio kodą

    Delphi grįžta į RDL ir dar kartą apverskite paspausdamiAtnaujinti Ir ¬ Atnaujinti viską. TForm klasė 1 pasikeitė – jame atsirado metodai – mygtukų įvykių tvarkyklės (12 pav.). Mūsų atveju tai yra galutinė klasės diagramos ir viso modelio versija.

    12 pav. Galutinė modulio klasių diagrama

    1 vienetas

    Galutinis šaltinis programas ir sukurtą modelį

    Rožė galima atsisiųsti iš žurnalo svetainės.

    Nagrinėjamame pavyzdyje vadovavosi kūrėjo pasiūlyta aplikacijų kūrimo metodika

    Rose Delphi nuoroda , ir dėl to gavome sistemos objektinį modelį. Sukurtos visos klasės ir diagramos, apibūdinančios sistemos veiklą Racionali rožė naudojant programą Rose Delphi nuoroda.

    Taigi, išskirkime pagrindinius dalijimosi privalumus

    RDL ir Rational Rose:
    • greitas ir patogus vartotojo sąsajos prototipo sukūrimas;
    • galimybę gauti detalus modelis sąsajų klases ir jo pagrindu išryškinti pagrindines sistemos architektūrines ypatybes;
    • gebėjimas palyginti klases su funkciniais sistemos reikalavimais;
    • gebėjimas modeliuose kurti valdymo klases
    • Racionali rožė po to seka kodo generavimas Delphi;
    • pilnas sukurtos programinės įrangos gyvavimo ciklo palaikymas naudojant kitus įmonės produktus
    • Racionalus.

    Taigi, periodiškai derinant atvirkštinės inžinerijos technologija, užtikrinamas modelio laikymasis

    Rose ir Delphi kodas , kuri leidžia kūrėjui užtikrinti, kad architektūriniai sprendimai nepasikeitė, o taip pat turėti naujausius dokumentais pagrįstus modelius, atspindinčius tikrąją projekto vystymo būklę.

    Literatūra:

    1. Vendrovas A.M. Ekonominių informacinių sistemų programinės įrangos projektavimas. – M.: Finansai ir statistika, 2000 m.
    2. Trofimovas S.A.
    3. CASE - technologijos: praktinis darbas V Racionali rožė – „Leidykla BINOM“, 2001 m
    4. Butch G., Rambo D., Jacobson A. Kalba
    5. UML . Vartotojo vadovas: Per. iš anglų kalbos – M.

    „Rational Software“ jau keletą metų yra programinės įrangos projektavimo, kūrimo, testavimo ir priežiūros įrankių lyderė. Pagrindinis Rational linijos produktas yra Rational Rose CASE įrankis. „Rational Rose“ palaiko vizualinį objektinį modeliavimą (UML), palaiko kodų generavimą ir atvirkštinę inžineriją (modelio kūrimą iš programos kodo) daugeliui programavimo kalbų, leidžia sukurti kuriamos programinės įrangos sistemos objektinį modelį, apibrėžti klasių specifikacijas, objektai, atributai ir operacijos (plačiau žr. "Programuotojas" Nr. 2, 3, 5/6 2001).

    Kadangi „Rational Rose“ turi visas būtinas charakteristikas kuriant bet kokio masto sistemos architektūrą, kyla mintis „Rose“ naudoti su tokia galinga ir populiaria programavimo sistema, kaip „Delphi“. „Rational Rose“ nėra standartinė „Delphi“, tačiau „Rational Software“ turi programą, kuri palaiko trečiųjų šalių tilto programas (nuorodas) tarp Rose ir kitų kūrimo įrankių. Kaip šios programos dalį, Ensemble Systems sukūrė Rose Delphi Link (RDL) tilto programą, jungiančią Rational Rose ir Delphi. Pagrindinės RDL funkcijos yra kodų generavimas ir atvirkštinė inžinerija. Reikia atsiminti, kad sugeneruotame RDL kode nėra funkcionalumo įgyvendinimo! Generuojami tik deklaratyvūs elementai: klasių apibrėžimai, sąsajos, įrašai, tipai, matomumo direktyvos ir kt.


    1 pav. RDL meniu punktas

    Prieš pereinant prie „Rose Delphi Link“ apžvalgos, priminsiu pagrindinius darbo „Rational Rose“ aplinkoje etapus. Paprastai naudojamas toks metodas:

    1. Sistemos reikalavimų nustatymas ir sistemos elementų sąveikos modelio kūrimas (naudojimo atvejo diagrama ir bendradarbiavimo diagrama). Sekos diagrama naudojama detalizuoti naudojimo atvejį. Šios diagramos rodo domeno objektus, susijusius su verslo procesais. Šios diagramos neturi įtakos sukurtam kodui.
    2. Sistemos aparatinio modelio konstravimas (Deployment Diagram). Šioje diagramoje parodytas sistemos modelis įdiegiant aparatinę įrangą. Diagrama neturi įtakos RDL sugeneruotam kodui.
    3. Sistemos objektinio modelio kūrimas (klasių apibrėžimas, jų sąveika, atributai, operacijos). Lygiagrečiai su klasių diagramos kūrimu, kaip taisyklė, kuriama komponentų diagrama, kurioje rodoma sistemoje naudojamų failų, modulių ir papildomų bibliotekų sąveika. Komponentų diagrama taip pat neturi įtakos kodo generavimui.
    4. Programos kodo generavimas.
      Tik klasių diagramos turi įtakos kodo generavimui, todėl šiame straipsnyje mes atsižvelgsime tik į diagramas, esančias skyriuje Loginis vaizdas. Kitų diagramų sudarymo ypatybės praleistos. Šie Rational Rose projektavimo žingsniai naudojami modeliui sukurti ir kodui generuoti įvairiomis Rose palaikomomis kalbomis. Tačiau „Delphi“ turi savybę, kuri žymiai išskiria Delphi kūrimą nuo kūrimo kitose programavimo aplinkose: vartotojo sąsajos programavimas. Ne paslaptis, kad Delphi daugumos programų kūrimas prasideda nuo vartotojo sąsajos dizaino, o nuo tolesnio programavimo – reikšmingų jos pakeitimų. Todėl naudoti standartinį „Rational Rose“ metodą nėra visiškai patogu. Norėdami išspręsti šią problemą, Ensemble Systems siūlo tokią projektavimo metodiką:


    2 pav. Projektavimo metodika naudojant RDL

    Pagrindinė šio požiūrio idėja yra naudoti atvirkštinę inžineriją (inžinerija į abi puses): visi Delphi programos kodo lygiu atlikti pakeitimai atsispindi objekto modelyje, sukurtame Rose, ir atvirkščiai, kai klasės, metodai ir kt. yra pakeisti. Rose objekto modelyje atitinkamai koreguojamas programos kodas. Atkreipkite dėmesį į rodyklių porą, jungiančią trečiąjį ir ketvirtąjį blokus. Šios rodyklės rodo atvirkštinės inžinerijos procesą.
    Pažiūrėkime į pagrindinį Rose Delphi Link langą (3 pav.). Sąsaja gana paprasta, joje yra:

    • meniu, kuriame yra komandos, skirtos darbui su projektu, parinkčių nustatymas ir pagalbos iškvietimas;
    • skydeliai, kuriuose rodomos Rose ir Delphi modelių hierarchinės struktūros medžių pavidalu;
    • mygtukas objektų medžiams atnaujinti, mygtukai atvirkštinei inžinerijai (Update All) ir pirmyn inžinerijai, t.y. kodo generavimas (Atnaujinti viską->).


    3 pav. Rose Delphi Link pagrindinis langas

    Pagrindinis RDL langas yra pagrindinio „Rational Rose“ lango antrinis ir yra nuolat šio lango viršuje ir yra sumažintas taip pat, kaip ir vaikiškas langas, o tai neabejotinai yra labai patogu.
    Prieš žvelgdami į konkretų pavyzdį, atidžiau pažvelkime į Rose Delphi Link meniu elementus.
    Failas -> Atidaryti projektą - skirtas atidaryti sukurtą Delphi projektą RDL. Kai atidarote projektą, RDL lange rodomi atidaromo projekto objektų medžiai.
    Failas -> Naujas projektas – pasirinkus šį meniu punktą, RDL pasiūlo sukurti tuščią Delphi projektą. Šiuo atveju sukurtame projekto faile yra tik minimaliai Delphi programai reikalingi deklaratyvūs elementai (programa, pradžia, pabaiga). Jei programoje nėra grafinės vartotojo sąsajos, pavyzdžiui, dinaminės bibliotekos, reikėtų sukurti naują projektą. Tačiau tokiu atveju reikės pakoreguoti sugeneruotą kodą – pakeisti programą biblioteka. Naudodami kontekstinį meniu galite sukurti modulių vienetus ir papildomus katalogus. Tokiu būdu sukurtuose moduliuose taip pat yra tik minimalus įgyvendinimas (naudojimai, sąsaja, įgyvendinimas, pabaiga). Sukūrus modulį, vėlesnio kodo generavimo metu į projekto failo naudojimo skyrių įtraukiama naujo modulio deklaracija.
    Meniu Rodymas ir Žinynas yra standartiniai ir jų šiame straipsnyje aprašyti nereikia.

    Dabar naudosime aukščiau pateiktą projektavimo metodiką ir sukursime programą bei ją atitinkantį Rose modelį. Pavyzdžiui, paimkime programą, kuri atsitiktiniais skaičiais užpildo dvi 5 x 5 dydžio skaitines matricas, taip pat įgyvendina kai kurias matematines jų apdorojimo funkcijas. Programa turi atlikti šias funkcijas:

    • Užpildykite masyvus atsitiktiniais skaičiais nuo 1 iki 10;
    • Apskaičiuokite kiekvieno masyvo elementų sumą;
    • Nustatyti elementų aritmetinį vidurkį;
    • Išvalyti masyvus (inicijuoti juos iki nulio).

    Pradėkime nuo vartotojo sąsajos kūrimo Delphi. Dėl paprastų veiksmų su pele gavau tokią programą, kuri dar neatlieka jokių veiksmų (4 pav.).


    4 pav. Sukurtos programos sąsaja

    Išsaugokime šį projektą numatytais „Delphi“ siūlomais modulių pavadinimais, atidarykime naują „Rational Rose“ projektą ir paleiskime „Delphi Rose Link“. Pasirinkime meniu elementą Atidaryti projektą ir atidarykime projektą, kurį ką tik išsaugojome Delphi. RDL lange bus rodomi Rose modelio ir Delphi projekto objektų medžiai (5 pav.).


    5 pav. Delphi projektas atidarytas RDL

    Kairysis objektų medis yra Rose modelio objektai, dešinysis medis yra objektai, deklaruoti Delphi šaltinio kode. Atkreipkite dėmesį į raudonus šauktukus, esančius kairėje nuo piktogramų, žyminčių objektus. Jie nurodo Delphi kodo ir Rose modelio skirtumus. Visos piktogramos dabar patikrintos, nes modelio Rose dar nėra.
    Kitas žingsnis yra sugeneruoti Rose modelį iš šaltinio kodo. Norėdami pradėti generuoti, turite spustelėti mygtuką Atnaujinti viską. Jei generavimas sėkmingas, šauktukai ant objektų išnyksta, o tai reiškia, kad Rose modelis kiekvienam objektui atitinka Delphi šaltinio kodą. Norėdami peržiūrėti pranešimų generavimo istoriją, pasirinkite meniu elementą View -> Messages. Atsidariusiame lange bus rodomas gana išsamus RDL pranešimų išvesties žurnalas generuojant modelį arba šaltinio kodą.
    Sumažinkime „Rose Delphi Link“ ir „Rose Object Browser“ pasirinkite loginio vaizdo šaką. Matome, kad pasirodo du paketai:<>1 vienetas, kuriame yra Unit1.pas modulio kodo objekto modelis, ir išorinės nuorodos, kuriose yra Delphi objektai, deklaruoti moduliuose už dabartinio projekto ribų (VCL bibliotekos objektai).
    Dabar atidarykime klasių diagramą, atitinkančią Unit1 modulį Rose aplinkoje (Logical View -> Unit1 -> Overview). Pradinėje formoje diagramoje pavaizduotas šiek tiek painus objektų modelis, kurį sutvarkysime kruopščiai išdėstydami objektus pagal jų hierarchiją (6 pav.).


    6 pav. Unit1 modulio objekto modelis

    Kai kuriamos programos sąsaja yra gana sudėtinga ir apima daugiau nei tuziną elementų, objekto modelis šiek tiek perkraunamas. Norėdami iškrauti modelį, galite pašalinti kai kuriuos neesminius modelio elementus. Iš diagramos reikia ištrinti tik elementus, nes tokiu atveju jie pašalinami tik vizualiai. Kai objektai ištrinami iš naršyklės, jie ištrinami visam laikui, o tai reiškia, kad sugeneruotas RDL kodas pasikeičia.
    Dabar pereikime prie kito žingsnio: objekto modelio, įgyvendinančio aukščiau nurodytas programos funkcijas, kūrimas. Klases, jų atributus ir metodus diegsime atskirame modulyje, pagrindiniame modulyje kursime klasių egzempliorius, o mygtuko paspaudimo įvykių tvarkyklėje rašysime šių klasių metodų iškvietimus.

    Sukurkime naują modulį. Tai galima padaryti ir Delphi, ir Rose, ir RDL, bet dėl ​​eksperimento grynumo viską kursime tik RDL. Rose suaktyvinkite RDL langą ir dešiniuoju pelės mygtuku spustelėkite šakninį elementą Rose modelio objektų medyje – mūsų atveju tai Model1.mdl. Kontekstiniame meniu pasirinkite Naujas -> Vienetas. Atsidarys komponentų rengyklės langas (7 pav.). Skirtuke Bendra nurodomas modulio pavadinimas (Unit2) ir sukurto modulio komentaras, kuris kodo generavimo metu bus įterpiamas į modulį kaip komentaras. Skirtuke Išsami informacija nurodomas komponento tipas ir kelias į šaltinio failą. Kodo peržiūros skirtuke galite pamatyti kodą, kurį šiam moduliui sugeneruos RDL. Išjungus jungiklį Leisti kodo / modelio naujinimus neleidžiama generuoti pasirinkto elemento kodo ir modelio naujinimų.


    7 pav. Komponentų rengyklė

    Paspaudę mygtuką Ok, matome, kad RDL lange atsirado naują modulį nurodanti piktograma, o šalia jos yra šauktukas, signalizuojantis, kad Rose modelis ir Delphi kodas nėra sinchronizuoti. Atnaujinkime Delphi kodą spustelėdami mygtuką Atnaujinti viską->. Dabar reikia persijungti į Delphi. Matome langą, įspėjantį, kad modulis buvo pakeistas (8 pav.). Norėdami atsisiųsti atnaujintą modulį, spustelėkite Gerai.


    8 pav. Delphi žinutė apie projekto failo keitimą

    Dabar atidarykime naujai sugeneruotą modulį Unit2.pas. Galite įsitikinti, kad kodo generavimas pavyko – deklaruojami visi reikalingi raktažodžiai ir įterpiamas komentaras. Kitas žingsnis – modeliuoti klases ir jų metodus šiame modulyje. Eikime į Rose ir suaktyvinkime RDL langą. Objektų medyje parodykite Unit2 objekto kontekstinį meniu ir pasirinkite Naujas -> Klasė. Pasirodo langas Class Editor (9 pav.). Skirtuke Bendra turite nurodyti klasės pavadinimą (Pavadinimas), rūšį (Kind), matomumą (Visibility) ir klasės komentarą (Dokumentacija). Mūsų atveju klasė vadinsis Tmassiv, jos taikymo sritis bus vieša.


    9 pav. Klasės redaktorius

    Norėdami sukurti visus klasės metodus ir atributus, RDL objektų medyje klasės kontekstiniame meniu naudosime meniu punktą Naujas. Atributų ir metodų rengyklės iš esmės yra panašios į klasės redaktorių, todėl kūrimo detalių praleisime. Sukurkime šiuos atributus ir metodus (visi metodai su viešo matomumo direktyvomis, M atributas turi privatų matomumą):
    M: sveikųjų skaičių masyvas; procedūra Init; // Masyvo procedūros inicijavimas FillMassiv; // Masyvo užpildymas atsitiktiniais skaičiais procedūra CalcSum; // Apskaičiuokite masyvo elementų sumą procedura CalcSr; // Apskaičiuokite vidutinę masyvo elementų reikšmę funkcija GetElement(X, Y: integer): Integer; // Masyvo elemento gavimas (x,y) Taip pat sukursime metodą TForm1 klasei, kuri užpildys formoje esančius TMemo komponentus elementais iš masyvų:

    Procedūra GetMassiv;

    Metodų su parametrais kūrimas yra kažkas ypatingo. Pirmiausia metodas sukuriamas įprastu būdu, tada RDL objektų medyje, kontekstiniame meniu prie metodo, kurio prašoma nurodyti parametrą, pasirinkite Naujas -> Parametras ir nurodykite parametro pavadinimą, jo tipas ir komentaras. Sukūrę klasę, pažiūrėkite į Rose Unit2 modulio klasių diagramą – mūsų klasė rodoma pagal UML specifikaciją (10 pav.).


    10 pav. Klasių diagrama su sukurta klase

    Taigi, klasė, tiksliau, jos apvalkalas, sukurtas dar neįgyvendinus. Dabar pagrindiniame modulyje Unit1 sukursime du šios klasės egzempliorius. Paskelbkime juos kaip M1 ir M2 TForm1 klasės Viešojoje skiltyje. Tai atliekama objekto medžio kontekstiniame meniu pasirenkant reikiamus elementus ir atributų rengyklėje nurodant parametrus. Modifikuota diagrama, kurioje deklaruoti klasės egzemplioriai rodomi TForm1 klasėje, parodyta Fig. vienuolika.


    11 pav. Klasių egzemplioriai, deklaruoti viešoje TForm1 klasės dalyje

    Taigi, modelis sukurtas, o dabar turime sugeneruoti galutinį kodą. RDL lange spustelėkite Refresh, Update All-> ir eikite į Delphi aplinką. Dabar turime parašyti kodą, kuris įgyvendina funkcionalumą, ir sukompiliuoti programą. Kai užpildote metodus kodu, kartais reikia pridėti vietinių arba visuotinių kintamųjų. Tai galima padaryti naudojant RDL, tačiau geriau šiuos kintamuosius įdiegti kode ir tada atnaujinti Rose modelį iš Delphi šaltinio kodo (Atnaujinti viską). Jei kai kurie modelio elementai buvo ištrinti, bet jie jau įdiegti kode, šis kodas yra tarp kompiliatoriaus direktyvų ($IFDEF DELETED) ir ($ENDIF). Įdiegę visą šaltinio kodą „Delphi“, grįžkime prie RDL ir dar kartą pakeiskime jį atgal, spustelėdami Atnaujinti ir atnaujinti viską. TForm1 klasė pasikeitė – dabar ji turi metodus – mygtukų įvykių tvarkykles (12 pav.). Mūsų atveju tai yra galutinė klasės diagramos ir viso modelio versija.


    12 pav. Galutinė 1 vieneto klasių diagrama

    Galimas galutinis programos šaltinio kodas ir sukurtas Rose modelis.

    Šiame pavyzdyje vadovavosi Rose Delphi Link kūrėjo pasiūlyta aplikacijų kūrimo metodika, todėl gavome objektinį sistemos modelį. Visos klasės ir diagramos, apibūdinančios sistemos veiklą, buvo sukurtos Rational Rose naudojant Rose Delphi Link programą. Taigi, pabrėžkime pagrindinius RDL ir Rational Rose naudojimo kartu privalumus:

    • greitas ir patogus vartotojo sąsajos prototipo sukūrimas;
    • galimybė gauti išsamų sąsajų klasių modelį ir jo pagrindu išryškinti pagrindines sistemos architektūrines ypatybes;
    • gebėjimas palyginti klases su funkciniais sistemos reikalavimais;
    • galimybė kurti valdymo klases Rational Rose modeliuose su vėlesniu kodo generavimu Delphi;
    • Visiškas sukurtos programinės įrangos sistemos gyvavimo ciklo palaikymas naudojant kitus Rational produktus.

    Taigi, periodiškai derinant atvirkštinės inžinerijos technologija, Rose modelis ir Delphi kodas yra nuoseklūs, todėl dizaineris gali užtikrinti, kad architektūriniai sprendimai nepasikeitė, taip pat turėti naujausius dokumentuotus modelius, atspindinčius tikrąją būklę. projekto vystymo.

    Literatūra:

    1. Vendrovas A.M. Ekonominių informacinių sistemų programinės įrangos projektavimas. - M.: Finansai ir statistika, 2000.
    2. Trofimovas S.A. CASE technologijos: praktinis darbas Rational Rose - BINOM leidykloje, 2001 m
    3. Butchas G., Rumbaugh D., Jacobsonas A. UML kalba. Vartotojo vadovas: Per. iš anglų kalbos – M.
    Dalintis