Delphi-codegenerator van Ensemble Systems, Inc. Wat we willen van Rational Rose en Delphi

Momenteel Delphi is een van de meest populaire softwareproducten voor het creëren van informatiesystemen. Op basis hiervan worden zowel kleine programma's als systemen op bedrijfsschaal gecreëerd. Wat is er zo aantrekkelijk aan dit product vanuit het perspectief van een ontwikkelaar? In de eerste plaats is het natuurlijk een uitstekende visuele programmeeromgeving – begrijpelijk, gemakkelijk te leren en vereist vaak niet de kennis van een professionele ontwikkelaar (die, zoals we weten, zich in de loop van vele jaren en decennia beetje bij beetje ophoopt en ongelofelijk duur). In de Delphi-omgeving kun je vrijwel vanaf het begin vrij complexe softwaresystemen maken, waarbij je een minimum aan code schrijft. Tegelijkertijd de taal Voorwerp Pascal, waarin het programma is geschreven, is bij velen bekend (althans in ons land) en wordt momenteel bestudeerd in juniorcursussen aan de meeste binnenlandse technische universiteiten.

Niet alles is echter zo eenvoudig. Als u zich bij het maken van kleine softwaresystemen voor uw eigen behoeften kunt beperken tot een visuele programmeeromgeving, dan is voor het maken van software die voldoende kritisch is voor de kwaliteit van de software een fundamenteel andere aanpak vereist, op zijn minst het gebruik van een levenscyclusmodel bij de ontwikkeling DOOR, met alle daaruit voortvloeiende vereisten voor het documenteren van het proces.

Fundamenteel voor systemen van deze klasse is de aanwezigheid van een basisarchitectuur, die onveranderd blijft gedurende de gehele levenscyclus van ontwikkeling en werking van het systeem en waarvan de belangrijkste elementen worden vastgelegd in de vroege ontwerpfasen. De basisarchitectuur wordt in de regel gecreëerd met behulp van een aantal modellen die de belangrijkste punten weerspiegelen die verband houden met de structuur van het systeem en zijn functies. Helaas is het woensdag Delphi is niet van toepassing voor het oplossen van dergelijke problemen.

Maar laten we terugkeren naar de voordelen van Delphi. Als we de visuele programmeeromgeving weggooien, wat blijft er dan over? Objectmodel. En dit voordeel van Delphi is aantrekkelijk vanuit het oogpunt van de systeemontwerper. Het is het objectmodel (hoe vreemd het ook voor iemand mag lijken) dat grotendeels het succes van de visuele programmeeromgeving bepaalt. Het Delphi-objectmodel bestrijkt een breed scala aan taken en biedt hoogwaardige, maar uiterst flexibele, vrijwel onbeperkte middelen voor het organiseren van de gebruikersinterface, het beheren van bronnen van het besturingssysteem, het manipuleren van databases, het ondersteunen van open systeemstandaarden en het ondersteunen van populaire technologieën (waaronder CORBA En COM), architectuur op meerdere niveaus en, ten slotte, Internet-intranet- technologieën.

De basisarchitectuur kan elementen van het Delphi-objectmodel gebruiken (waarom al het bovenstaande opnieuw maken), en het aanvullen met de noodzakelijke componenten die de toepassingsspecifieke kenmerken van een bepaald systeem weerspiegelen.

Wij gebruiken het product voor systeemontwerp Rationele Roos bedrijven Rational Software Corp.oratie. Dit product heeft alle noodzakelijke kenmerken om de basisarchitectuur van een systeem van elke schaal te creëren. Als je voldoende programmeerervaring hebt in de Delphi-omgeving, lijkt het ons passend om Rational Rose en Delphi samen, binnen één technologisch proces, te gebruiken.

Het doel van dit artikel is om te kijken naar het gecombineerde gebruik van Rational Rose en Delphi en (naar onze mening uiteraard) nauwkeurig de plaats van elk product in het ontwikkelingsproces aan te geven. We hopen dat ontwikkelaars hierdoor een mening kunnen vormen over de toepasbaarheid van dergelijke technologie voor hun eigen behoeften en tijd kunnen besparen bij het bestuderen van de details.

Wat we willen van Rational Rose en Delphi

Methodologie die we volgen tijdens de ontwikkeling DOOR, is een sRationeel uniform proces van Rational Software Corporation. De methodologie omvat vanuit technologisch oogpunt de volgende fasen (uiteraard binnen elke iteratie): domeinmodellering, bepaling van systeemvereisten, analyse en ontwerp, implementatie (codering en offline debuggen), testen en implementatie. De onderstaande tabel laat zien wat we in elke fase kunnen verwachten met Rational Rose en Delphi.

Rational Rose en Delphi gebruiken in verschillende stadia van softwareontwikkeling

Fase Wat wij van Roos verwachten Wat verwachten wij van Delphi
Domeinmodellering Het vakgebied wordt gemodelleerd en het vakgebied wordt beschreven “as is” -
Het bepalen van systeemvereisten Functionele eisen aan het systeem, eisen aan de systeeminterface worden bepaald Er wordt een prototype van de gebruikersinterface gemaakt
Analyse en ontwerp De basiscomponenten van de architectuur worden bepaald, de data worden gemodelleerd en de systeemcomponenten worden tot in detail ontworpen. Elementen van het Delphi-objectmodel zijn opgenomen in de basisarchitectuur. Zorgt voor een één-op-één correspondentie tussen Rose-klassediagramelementen en Delphi-componentelementen
Uitvoering Klassendiagrammen worden geïmplementeerd in de vorm van softwaremodules, componentendiagrammen en plaatsingsdiagrammen worden ontwikkeld De programmacode is geïmplementeerd, waardoor een ondubbelzinnige conformiteit van het project in Rose en Delphi wordt gegarandeerd. Code documenteren in Delphi Reflects in Rose
Testen De modellen blijven vrijwel ongewijzigd. Er worden testgevallen ontwikkeld om systeemfuncties te testen Er worden wijzigingen aangebracht in de programmacode. Veranderingen in programmacode worden weerspiegeld in Delphi-code
Uitvoering Lay-outdiagrammen vormen de basis voor software-implementatie. Op basis van de modellen kan actuele documentatie op systeemniveau worden verkregen -

Zoals uit de tabel blijkt, kan de belangrijkste interactie tussen Rose en Delphi plaatsvinden tijdens de fasen van het definiëren, analyseren, ontwerpen en implementeren van de systeemvereisten. De belangrijkste modellen die in deze fasen worden gebruikt, zijn: een model van systeemfuncties, een interfacemodel, een datamodel en een model van softwaremodulespecificaties.

Om communicatie tussen Delphi en Rose mogelijk te maken, wordt een middleware gebruikt, een zogenaamde codegenerator. Opgemerkt moet worden dat de taken van deze software strikt genomen niet beperkt zijn tot het genereren van code.

Voordat we verder gaan met de beschrijving van een specifieke codegenerator, vermelden we wat deze naar onze mening zou moeten bieden:

  • in staat zijn om Rational Rose-klassen om te zetten in klassedefinitiecode in de doeltaal (in dit geval Delphi ) . In dit geval moet de beschrijving die bij een specifieke klasse hoort, op de juiste plaats in de programmacode worden geplaatst;
  • ondersteuning voor een klassendiagram stereotypen geassocieerd met specifieke kenmerken van de taal (bijvoorbeeld het stereotype eenheid, interface of eigendom met bijbehorende definities: specifiek pakket - Delphi module , class - Delphi-interface, attribuut - eigenschap voor een Delphi-component);
  • een beschreven, voor de hand liggende en ondubbelzinnige manier hebben om een ​​klassendiagram aan Delphi-code toe te wijzen. In dit geval moet het display aanpasbaar zijn;
  • in staat zijn om het huidige Delphi-objectmodel te importeren (bij voorkeur voor verschillende versies van de bibliotheek VCL);
  • ondersteuning voor het genereren van code voor het maken van Delphi-klassen;
  • in staat zijn om typische soorten relaties tussen klassen correct weer te geven (tenminste generalisatie, aggregatie en samenstelling);
  • de kardinaliteit van de verbinding in de programmacode kunnen weergeven;
  • Maak op basis van het Rose-componentendiagram een ​​Delphi-project met de vereiste softwaremodules ( vooruitstrevende techniek);
  • bouw op basis van een kant-en-klaar Delphi-project een Rose-componentendiagram dat in de vorm van componenten alle modules van het Delphi-project en bijbehorende klassen bevat die zijn verkregen van Delphi als resultaat van reverse engineering ( reverse-engineering).
  • Diagrammen moeten compact en duidelijk zijn; zorgen voor automatische afstemming tussen de Rose- en Delphi-modellen nadat wijzigingen zijn aangebracht in de code van de Delphi-modules ();
  • rondreis techniek
  • nadat u wijzigingen in het Rose-model hebt aangebracht en de code opnieuw hebt gegenereerd, mag u geen fragmenten vernietigen die in de Delphi-omgeving zijn geschreven;
  • naast het genereren van code, een manier hebben om zo'n belangrijk Delphi-element als formulieren weer te geven;

werk aan echte projecten (honderden klassen en modules) met acceptabele prestaties.

Delphi-codegenerator van Ensemble Systems, Inc. Bedrijf Ensemblesystemen, Inc. is momenteel een van de toonaangevende leveranciers van aanvullende componenten(toevoegingen) . voor Rationele Rose

Deze componenten ondersteunen het genereren van code voor een breed scala aan populaire programmeersystemen, waaronder Delphi. Laten we eens kijken hoe de Delphi-codegenerator werkt in de Rational Rose-omgeving.

Na installatie van de Delphi-component van Ensemble Systems, Inc. in de Rational Rose-omgeving verschijnt een nieuw menu-item in de sectie Tools (Fig. 1). De codegenerator wordt aangeroepen (Rose Delphi-link RDL , ). Hoe RDL te gebruiken

we zullen het in het overzicht beschrijven als we naar een specifiek voorbeeld kijken. Nu zullen we ons concentreren op de belangrijkste kenmerken van RDL, zonder inzicht in welke het onwaarschijnlijk is dat RDL effectief kan worden gebruikt. (voor een objectmodel is dit meestal de body van de methode). Wanneer een model wordt bijgewerkt vanuit Delphi-code (reverse engineering of round trip), laadt het model geen Delphi-code voor methodelichamen. Veranderingen in het model hebben alleen betrekking op declaratieve elementen: definities van klassen, interfaces, typen, records, enz. Bij het opnieuw genereren van code uit Rose blijven de methodelichamen in Delphi echter ook ongewijzigd en veranderen alleen de declaratieve elementen. Daarom is het onmogelijk om de programmacode te “bederven” bij het opnieuw genereren ervan. Om modelelementen in programmacode in kaart te brengen, gebruikt RDL Eigenschappen voor het genereren van code (C.G. P) is een reeks speciale tabellen die zijn gekoppeld aan elk element van Rational Rose-modellen en die Delphi-specifieke informatie bevatten die wordt gebruikt voor het genereren van code. Een set van deze tabellen (Fig. 2) is beschikbaar via het hoofdmenu (item Hulpmiddelen/opties, bladwijzer Delphi).

Om ervoor te zorgen dat CGP's voor Delphi beschikbaar zijn vanuit de specificatie, moet de waarde van het veld worden ingesteld Standaardtaal = Delphi in de bladwijzer Notatie menu-item Extra/Opties. Om het werk in het menugedeelte te vereenvoudigen Gereedschap/Ensemble Hulpmiddelen er verschijnt ook een bladwijzer Delphi Vastgoededitor, waar u de eigenschappen van het geselecteerde modelelement kunt configureren. Merk op dat het gebruik van CGP een typische techniek is voor alle codegeneratoren van Ensemble Systems, Inc.

en voor Rational Rose in het algemeen. Wanneer u de Delphi Property Editor gebruikt, kunt u de code van het overeenkomstige modelelement (bijvoorbeeld een klasse) bekijken zonder codegeneratie uit te voeren, wat vaak erg handig is.

Laten we nu eens kijken hoe RDL algemene ontwerppraktijken in programmacode omzet.

1. Overerving van een klasse en implementatie van een interface

Converteert naar code:

Type SampleClass1 = klasse (BaseClass, SampleInterface) (...) einde;

1. Overerving van een klasse en implementatie van een interface

2. Associatieve verbindingen met rollen en verschillende kardinaliteit van verbindingen

Type SampleClass3 = klasse privé ArrayRole1: array van SupplierClass2; ArrayRole2: array van SupplierClass5; ArrayRole3: array van SupplierClass3; ArrayRole4: TItems; einde;

1. Overerving van een klasse en implementatie van een interface

Merk op dat om rollen met een kardinaliteit die niet gelijk is aan 1 weer te geven, arrays (vaste lengte of dynamisch) worden gebruikt. De constante SampleRange in het voorbeeld moet worden gedefinieerd in de eigenschap Array_Range voor ArrayRole. Merk op dat voor Role4 de code geen array definieert, maar eerder een TItems-type dat een verzameling zou moeten representeren.

Houd er rekening mee dat we geen significant verschil hebben gevonden in de code voor aggregatie en compositie, en dat de resulterende code sterk lijkt op de code voor reguliere rolassociatie.

4. Stereotypen voor typische Delphi-code-elementen

RDL heeft verschillende stereotypen om typische Delphi-code-elementen weer te geven: pointers, arrays, bestanden, klassereferenties, enz. Het is waar dat naar onze mening deze elementen zelden worden gebruikt bij het ontwerpen van een objectmodel op hoog niveau.

Aan het einde van de korte beschrijving van de kenmerken van RDL merken we het volgende op. Een belangrijk ontwerpelement is de documentatie in de specificatie voor het overeenkomstige modelelement. RDL zorgt voor de overdracht ervan naar programmacode. Dus voor bewerkingen (methoden van de Delphi-klasse): de veldwaarde documentatie in de specificatie wordt het vóór de methodedefinitie in de code ingevoegd. Omgekeerd kunnen opmerkingen in Delphi-code worden omgezet in documentatievelden in de Rose-modelelementspecificaties.

Wat RDL niet kan doen

Eerder hebben we gedefinieerd wat we denken dat een Delphi-codegenerator moet bieden. Over het algemeen dekt RDL alle bovenstaande functies, misschien met één uitzondering: je kunt er geen formulieren mee maken. Kun je je een Delphi-omgeving zonder formulieren voorstellen? Wij ook niet. Het belangrijkste paradigma van visueel programmeren in de Delphi-omgeving bestaat uit het instellen van de waarden van de overeenkomstige eigenschappen (klasse-attribuutwaarden) en het schrijven van code voor gebeurtenishandlers. En helaas is RDL niet onze hulp hierbij. Maar is dit werkelijk zo’n ernstige beperking? Het kan zijn dat hier verschillende meningen over bestaan.

Eén van de manieren om een ​​applicatie te maken is als volgt: de gebruikersinterface wordt ontworpen in de Delphi-omgeving (en waar kan dat sneller en makkelijker?) en de programmacode wordt omgezet naar Rational Rose-modellen. Ondanks het feit dat de vormen behoorlijk omvangrijk blijken te zijn, kunnen ze worden "gekamd", maar het belangrijkste is laat er geen onbelangrijke details in zien . In Rational Rose worden het feitelijke objectmodel, het datamodel en het componentenmodel ontworpen, dat wil zeggen: architectonisch belangrijke elementen. In combinatie met het systeemgebruikersinterfacemodel vormen ze een systeemstructuur die kan worden gevolgd door configuratiebeheertools, opgenomen in de documentatie, gemakkelijk te analyseren op fundamentele fouten, en de basis vormt voor functionele tests, dat wil zeggen dat ze in elk stadium kunnen worden gebruikt van de levenscyclus () softwareontwikkeling. Tegelijkertijd zorgt RDL voor de volledige coördinatie van modellen en programmacode gedurende de gehele softwarelevenscyclus. Wij proberen precies deze aanpak te volgen.

Een voorbeeld van het samen gebruiken van Delphi en Rational Rose

Helaas is het nauwelijks mogelijk om in een kort artikel een volwaardig voorbeeld van een echte toepassing te demonstreren. Dit is echter niet vereist. Op het punt in het artikel waar we beschreven wat we van Rose en Delphi verwachten in elke ontwikkelingsfase, merkten we op dat het voor ons belangrijk is om bij het ontwerpen een basisarchitectuur te creëren, in dit geval inclusief elementen van het Delphi-objectmodel. Hier zullen we de mogelijkheden van RDL demonstreren.

Als voorbeeld kozen we een fragment van een systeem dat indicatoren van de toestand van een patiënt weergeeft aan de behandelend arts. De functionele vereisten voor het systeem worden weergegeven in de vorm van een diagram (Fig. 3).

Het diagram toont drie actieve objecten: beheerder, apparaat, arts. We houden geen rekening met systeemfuncties die verband houden met het apparaat. Wat het apparaat betreft, is het voor ons belangrijk dat de indicator met een bepaalde frequentie wordt verkregen en dat het systeem een ​​interface biedt om deze in de database op te slaan. Alle overige functies van het systeem hebben betrekking op de gebruikersinterface en het aanbieden van informatieopslag in de database of het ophalen ervan.

Wij baseren het systeem op de volgende architectonische oplossingen:

  • gebruikersinterface ( GUI) het systeem is gebouwd op basis van het Delphi-objectmodel;
  • de interface met het DBMS is gebaseerd op het Delphi-objectmodel;
  • Als DBMS wordt een relationeel DBMS gebruikt.

Bij het ontwerpen van een systeem moeten we het volgende definiëren: klassen die de gebruikersinterface vertegenwoordigen ( grensklassen); controleklassen die de logica van het systeem implementeren ( controle klassen); entiteitsklassen voor het weergeven van de informatieopslagstructuur ( entiteit klassen).

De entiteitsklassen die we hebben ontworpen, worden weergegeven in Fig.

4.

Uit het objectmodel van entiteitsklassen hebben we een fysiek datamodel voor een relationeel DBMS verkregen en de generatie ervan voor een specifiek DBMS verzekerd. We laten hier de details weg van hoe dit kan worden gedaan in de Rational Rose-omgeving. ) Omdat we van plan zijn een GUI te bouwen op basis van het Delphi-objectmodel, is het redelijk om aan te nemen dat de klassen voor het representeren van de gebruikersinterface (grensklassen kan worden verkregen door een prototype van de gebruikersinterface te maken in de Delphi-omgeving. Klassen ) gebruikersinterface (grensklassen worden ontworpen

In het klassendiagram hebben we attributen en bewerkingen voor alle klassen van het Delphi-objectmodel verwijderd: aangezien er in elke klasse enkele tientallen van deze attributen en bewerkingen zijn, zou het diagram in dit geval enorm worden. Het diagram laat duidelijk zien welke Delphi-objectmodelklassen worden gebruikt om gebruikersinterface-elementen weer te geven en wat ze precies vertegenwoordigen. U moet onmiddellijk uitsluiten van de modelweergave TGroepBox En T-label

als architectonisch onbelangrijke elementen. Het klassendiagram voor het tabelbewerkingsformulier wordt getoond in Fig. 8.

Naast het hoofdvenster hebben we ook een interface (GUI) nodig voor het onderhouden van een database met patiënten, soorten indicatoren en meeteenheden. Hiervoor zijn we van plan een standaardvorm van tabelbewerking te gebruiken op basis van standaard Delphi-componenten. Laten we deze vorm in Delphi tekenen en omzetten naar het Rational Rose-model (Fig. 9).

Met behulp van het overervingsmechanisme verkrijgen we alle andere schermformulieren uit het tabellarische bewerkingsformulier. Een voorbeeld van hoe de directory met observatietypen eruit zal zien, wordt getoond in Fig. 10. We hebben dus volledig besloten over het uiterlijk van de gebruikersinterface en nu kunnen we ons concentreren op het implementeren van de logica van de applicatie. Voor het gemak (maar beschouw dit niet als standaardpraktijk!) zullen we een reeds bestaande interfaceklasse als controleklasse gebruiken.

THoofdformulier

  • De klasse TMainForm moet het volgende bieden:
  • navigatie tussen schermen, afhandeling van knopklikgebeurtenissen om andere formulieren weer te geven;
  • het invullen van vervolgkeuzelijsten, patiënten, indicatoren, meeteenheden;
  • automatische berekening van de meeteenheid per indicatortype;
  • het selecteren van een patiënt op kaartnummer;
  • het selecteren van een kaartnummer voor de patiënt;

berekening en weergave van de laatste indicatorwaarde.

Laten we bewerkingen maken in de Rational Rose-omgeving om de functies van de hierboven beschreven TMainForm-klasse te implementeren (Fig. 11). De bewerkingen van de klasse TMainForm moeten in twee groepen worden verdeeld: berekeningen en reacties op gebeurtenissen. Bewerkingen die eindigen op Klik of Wijziging , en ook FormulierToon

- reacties op gebeurtenissen, de rest is berekeningen.

  • Operaties moeten het volgende implementeren: Vul PatiëntLis
  • t - het invullen van de vervolgkeuzelijst met patiënten; VulMeasureList
  • - het invullen van de vervolgkeuzelijst met meeteenheden; VulObservLijst
  • - het invullen van de vervolgkeuzelijst met observatietypes; CalcObservVal
  • - berekening van de laatst waargenomen waarde; ChPatientByCard
  • - een patiënt zoeken op kaartnummer; ChCardByPatiënt
  • ChMeasureByObserv- retourneer de meeteenheid voor een bepaald type waarneming;
  • KaartValVeranderen- reactie op het wijzigen van het kaartnummer;
  • PatiëntChComboWijzigen- reactie op de selectie van een nieuwe patiënt op de lijst;
  • ObservTypeComboWijziging- reactie op de keuze van het observatietype;
  • GetValueButtonKlik- reactie op het indrukken van de waardeberekeningsknop;
  • PatiëntDictKlik- reactie op het indrukken van de patiëntenknop;
  • ObserveTypeDictKlik- reactie op het indrukken van de knop Soorten waarnemingen;
  • MetenDictKlik- reactie op het indrukken van de knop Maateenheden;
  • FormulierToon- verwerking wanneer het formulier voor het eerst op het scherm verschijnt.

En het laatste dat nodig is om het ontwerp te voltooien zijn controleklassen om interactie met de database te implementeren. Zonder deze is het vullen van de database en het implementeren van afwikkelingsoperaties van de besturingsklasse TMainForm niet mogelijk. Delphi Net als bij interfaceklassen zullen we de omgeving gebruiken een controleklasse ontwerpen voor interactie met de database - TDataModule1

en voer vervolgens modelmatching uit. De nieuwe module voor interactie met de database wordt getoond in Fig. 12. Objectgebaseerd, VraagPatiënt, QueyObType Querymetingen En, Patiëntgegevensbron, ObTypeDataSource MeetDataSource het werken met een database van patiënten, soorten observaties en meeteenheden is geïmplementeerd - op een standaard Delphi-manier, gebaseerd op het gebruik van een paar klasseobjecten, TQueryT Gegevensbron en hun interactie met GUI-klassen. Observeer gegevensbron een controleklasse ontwerpen voor interactie met de database - Querymetingen We hebben dus volledig besloten over het uiterlijk van de gebruikersinterface en nu kunnen we ons concentreren op het implementeren van de logica van de applicatie. Voor het gemak (maar beschouw dit niet als standaardpraktijk!) zullen we een reeds bestaande interfaceklasse als controleklasse gebruiken gebruikt om toegang te krijgen tot informatie over gemaakte waarnemingen. Om de interactie van controleklassen te beschrijven

u moet verschillende interactiediagrammen maken die verband houden met de uitvoering van de vereiste zoekopdrachten naar de database (vanwege de beperkte reikwijdte van het artikel laten we deze diagrammen achterwege).

Merk op dat we tijdens het proces van het toevoegen van nieuwe modules en klassen aan het systeem en het harmoniseren van modellen automatisch een componentmodel van het systeem ontvingen (Fig. 13).

  • Laten we het dus kort samenvatten. Als resultaat van het gezamenlijke gebruik van Rational Rose en Delphi ontvingen we:
  • interface- en besturingsklassen georganiseerd in pakketten;

componentenmodel van het systeem. rondreis, waarmee u modellen up-to-date kunt houden en ze soepel kunt laten evolueren in overeenstemming met gewijzigde systeemvereisten.

Conclusie

Concluderend willen we de aandacht vestigen op die fasen waarin, naar onze mening, het gezamenlijke gebruik van Delphi en Rational Rose vanuit technologisch oogpunt het meest logisch is.

Ten eerste , is de creatie van een prototype van een gebruikersinterface. Door snel formulieren te maken in de Delphi-omgeving kunt u snel een model van interfaceklassen in Rose verkrijgen, op basis daarvan fundamentele architectonische punten benadrukken (bijvoorbeeld gemeenschappelijk gedrag, typische GUI-elementen, redundantie), en ook interfaceklassen vergelijken met functionele vereisten voor het systeem.

Ten tweede , dit is het creëren van controleklassen in Rational Rose-modellen met daaropvolgende codegeneratie in Delphi. Controleklassen worden duidelijker gepresenteerd in de Rational Rose-omgeving bij gebruik van UML (in Delphi kunnen ze “wazig” zijn tussen grote interfaceklassen).

En tot slot, ten derde , dit is de fase van de implementatie van programmacode waarin wijzigingen kunnen worden aangebracht in het model met betrekking tot implementatieproblemen.

Door periodieke coördinatie van modellen in dit stadium kan de ontwikkelaar ervoor zorgen dat de fundamentele architecturale beslissingen geen significante veranderingen hebben ondergaan, en ook beschikken over actuele modellen die de feitelijke staat van ontwikkeling weerspiegelen.

ComputerPress 4"2001

Tuinders over de hele wereld zijn dol op rozen en kweken ze in een grote verscheidenheid aan klimaten. Een soort revolutie in de rozenwereld werd veroorzaakt door de verschijning van een nieuwe tuingroep struikrozen. Hoewel ze onder onze omstandigheden bijna allemaal nog steeds bescherming nodig hebben voor de winter, zijn het tegenwoordig de struikrozen die het meest veelzijdig en pretentieloos zijn.

Struiken schrobben

De scrubs zijn zeer heterogeen. Dit zijn wilde soorten, hun hybriden en moderne rozen van complexe oorsprong, waarvan de bloemen vergelijkbaar zijn met de bloemen van hybride theeroosjes en floribunda-rozen.

Rose rugosa en zijn hybriden

De bloemen hebben een diameter van 5 tot 10 cm, zijn zeer geurig, in bloeiwijzen van 3-6 bloemen of solitair. De bloemen van hybride variëteiten van rugosa variëren van wit tot donkerrood, er zijn ook gele, ze variëren ook in grootte en dubbelheid. De bladeren zijn groot, hard, gerimpeld. De scheuten zijn dicht bedekt met doornen en borstelharen. De struiken zijn breed, dicht, bereiken een hoogte van 1-2 m en produceren een sterke groei met rechtopstaande scheuten. Het wortelsysteem is krachtig en oppervlakkig. De bloei is overvloedig, vanaf eind mei, langdurig en kan in zwakkere vorm worden herhaald. Dankzij deze functie bevatten de struiken tegelijkertijd fruit en bloemen. Vooral vormen en variëteiten met dubbele bloemen zijn hiertoe in staat, wat decoratief waardevol is. De vruchten zijn helder, oranjerood, groot (2-2,5 cm), zeer decoratief. Rosa rugosa is een zeer winterharde (heeft geen beschutting nodig) en ziekteresistente soort.

De meeste rugosa-hybriden hebben ook geen onderdak nodig voor de winter. Maar sommige variëteiten) verschillen niet in winterhardheid. Hun bloeiende scheuten verschijnen op de overwinterde bovenste scheuten van het voorgaande jaar. Zonder winterbescherming of diepe sneeuwbedekking blijven alleen de onderste knoppen behouden en kunnen ze de bloei niet garanderen. Het is niet eenvoudig om krachtige en dikke scheuten naar de grond te buigen. Daarom is het bij het kiezen van een variëteit noodzakelijk om aandacht te besteden aan de algemene winterhardheid, de frequentie en overvloed van bloei en ziekteresistentie.

Rose rugosa en zijn hybriden worden gebruikt voor kleine groeps- en enkele aanplantingen en hagen. Deze rozen vormen prachtige hagen, vooral die welke het gebied in afzonderlijke delen verdelen. De vruchten zijn geschikt voor het maken van jam en compotes.

Hybriden van rozenmoiesi

Het verspreidingsgebied van de voorouder van deze groep is West-China. Hybriden worden verkregen door de oorspronkelijke soort te kruisen met rozen van verschillende groepen. De bloemen zijn rood, roze, medium (5-6 cm), enkel of semi-dubbel, in bloeiwijzen. De bladeren bestaan ​​uit 7-13 ovale blaadjes. De struiken zijn lang - tot 2-2,5 m, spreidend, met roodbruine scheuten. De bloei is overvloedig vanaf juni, herhaalde bloei is zwakker. De vruchten zijn flesvormig, groot (5 cm lang), donker oranjerood. Hybriden van rozenmoiesi zijn decoratief voor landschapstuinieren. Ze hebben lichte beschutting nodig, zonder de scheuten naar de grond te buigen.

Hybriden van roos Cordes

Deze rozen zijn genoemd ter ere van hun auteur - de beroemde Duitse bedenker V. Cordes. De meeste van deze rozen worden verkregen van de variëteit Max Graf (een spontane hybride van Rosa rugosa en Rosa Vihura). Als resultaat van de kruisingen met variëteiten uit andere groepen werd een variëteitgroep Cordes-rozenhybriden gevormd. Opgemerkt moet worden dat nieuwe tuingroepen niet zonder speciale redenen worden gecreëerd, en Cordes-rozen ontvingen deze eer vanwege hun winterhardheid gecombineerd met aantrekkelijkheid.

De vrij grote (7-8 cm in diameter) bloemen van rozen van deze groep onderscheiden zich door een verscheidenheid aan kleuren en vormen, van halfdubbel tot dicht dubbel, soms geurig, verzameld in kleine bloeiwijzen. Alle soorten hebben prachtige donkergroene, glanzende bladeren. De struiken zijn krachtig (1,5-2 m), vaak met zweepachtige scheuten. Bloeit rijkelijk van juni tot laat in de herfst. De vruchten zijn eivormig. Alle soorten zijn behoorlijk winterhard en ziekteresistent. Niettemin hebben ze onder de omstandigheden in centraal Rusland onderdak nodig voor de winter. Ze kunnen zelfs in halfschaduw worden gekweekt.
Deze groep rozen wordt gebruikt in groeps- en enkele aanplantingen, voor verticaal tuinieren. Ze kunnen worden gebruikt voor het decoreren van tuinhuisjes, terrassen, pergola's, bogen, speciale roosters en andere steunen om de tuinruimte te verdelen, recreatiegebieden te creëren en bijgebouwen te versieren.

Deze rozen kunnen zich niet om een ​​steun wikkelen, dus moeten ze eraan worden vastgebonden, gevormd in het vroege voorjaar na het snoeien, zodat ze onmiddellijk in de goede richting groeien. Gedurende het groeiseizoen worden de hoofdtakken langs de steun geleid en er zorgvuldig aan vastgebonden.

Struiken

Scrubs (ook wel moderne parkrozen genoemd) omvatten alle variëteiten die niet met vertrouwen in andere tuingroepen kunnen worden opgenomen.

  • Spectaculaire verschijning. De bloei is overvloedig, langdurig (van juni tot herfst) en wordt herhaald. Bijna alle soorten bloeien herhaaldelijk, maar er zijn ook soorten die één keer bloeien.
  • Aroma. Er zijn meer geurige rozen onder scrubs dan onder hybride theeroosjes.
  • Volume. Veel variëteiten vallen op door hun kracht en groeikracht (bereik 2 m). De struiken van sommige soorten zijn zo sierlijk dat hun flexibele takken weinig steun nodig hebben, die al snel bedekt is met bloemen.
  • Ziekteresistentie en hoge winterhardheid.

In de winter hebben ze alleen lichte bescherming nodig.

  • Bescheidenheid. Elke tuinman kan struiken kweken.
  • Veel gebruikt in landschapsarchitectuur.
  • Scrubs kunnen zowel in enkele aanplantingen als in kleine groepen (3-5 struiken) worden gekweekt.

Het planten in kleine groepen geeft het effect van een grote bloeiende rozenbal; alle onregelmatigheden van één struik worden verborgen door de aangrenzende. De afstand tussen de struiken kan variëren van 50 cm tot meer dan 2 m, afhankelijk van de breedte van de struiken. Het is onmogelijk om een ​​algemene aanbeveling te geven voor het planten van struikgewas, omdat de struikgrootte sterk varieert. Gemiddeld worden er 2 tot 3 struiken per 1 m2 geplant. Bij grote struikrozen is soms het kale deel van de struik zichtbaar, en dan kan het verborgen worden door laagblijvende rozen die ervoor staan.

Een mooie enkele struik op het gazon ziet er indrukwekkend uit. Kies voor de rol van "solist" een plant met een mooie struikvorm en overvloedige bloei, met een aangenaam aroma. Je kunt hem overal planten: bij de ingang van het huis, op het gazon, in het midden van het bloembed. Veel struikrozen, zowel oud als modern, zijn goed voor enkele aanplant. Het belangrijkste is dat de plant harmonieus opgaat in het omringende landschap.

Nostalgische scrubs

Tot de groep scrubs behoren ook de zogenaamde Engelse rozen, gemaakt door de Brit David Austin. Deze veredelaar werkte jarenlang aan een programma om rozen te creëren die leken op oude soorten, maar een moderne bloemkleur hadden en het vermogen om opnieuw te bloeien. Engelse rozen worden verkregen door Franse, Damast-, Bourbon- en andere rozen te kruisen met moderne variëteiten van hybride theerozen en floribunda-rozen. De rozen van D. Austin verschenen in het laatste kwart van de twintigste eeuw. Hun bloemen zijn dicht dubbel en hebben verschillende kleuren: bleek abrikoos, diepgeel, donkerrood, pioenroosvormig, zeer geurig en zien er nostalgisch ouderwets uit. De struiken zijn compact, goed gevormd en bloeien opnieuw. Veel variëteiten zijn ziekteresistent. De verdienste van D. Austin is dat hij de wereld opnieuw liefde voor oude bloemvormen heeft bijgebracht (lange tijd werden bekerrozen van het hybride theetype als ideaal beschouwd), evenals voor de driedimensionale structuur van de struik. .

De meest populaire variëteiten van deze groep zijn Abraham Darby, Graham Thomas. Grotendeels dankzij Engelse rozen leerden tuinders over de groep scrubs. Het klimaat in de middelste zone is voor hen een beetje hard. Daarom moeten hun scheuten zorgvuldig worden afgedekt voor de winter.

Rozen van het Franse bedrijf Meilland in de Romantica-serie onderscheiden zich ook door hun duurzaamheid, overvloedige herhalingsbloei, verscheidenheid aan tinten, gegolfde bloemblaadjes en de charme van oude rozen. Toegegeven, slechts enkele variëteiten uit deze groep behoren tot de groep scrubs, bijvoorbeeld Collette, Les Quatre Saisons, Yellow Romantika, Lovely Meilland. Alle variëteiten onderscheiden zich niet alleen door hun schoonheid en ‘antiek’ uiterlijk, maar ook door hun duurzaamheid. Ze zijn de droom van elke romantische tuin. Ook het Duitse bedrijf Rosen Tantau veredelt al jaren moderne nostalgische rozen. Alle rassen worden getest op ziekteresistentie en vorstbestendigheid in barre klimaten. Nieuwe soorten nostalgische struikrozen: Belvedere, First Lady, Gartentraume, Grafin von Hardenberg, Mariatherese, Pasella.

Rozen uit de Canadian Explorer Roses-serie (Charles Albanel, David Thompson, Henry Hudson, Jens Munk, Martin Frobicher), genoemd naar uitstekende Canadese ontdekkingsreizigers, onderscheiden zich vooral door hun hoge winterhardheid. De oorsprong van veel variëteiten in deze serie betreft de roos van cordesia en de roos van rugosa.

Kenmerken van zorg

Onderdak voor de winter

Hoewel de winterhardheid van moderne struikrozen hoger is dan die van hybride thee- en floribunda-rozen, moeten ze voor de winter worden afgedekt en kan het bedekken zelf moeilijker zijn vanwege het volume van de struiken.
Herhaaldelijk bloeiende struikrozen kunnen tijdens het groeiseizoen 1,5 m hoog of meer worden. Eind oktober wordt de herfstsnoei uitgevoerd - tot 1/3 van de lengte van de scheuten.

Probeer de scheuten van hoge struiken naar de grond te buigen. Struiken kunnen aan één kant worden uitgegraven en gelegd door ze op de grond te spelden. De gebogen takken worden op een laag sparren takken gelegd, anders kunnen de rozen onder afdak in de ontdooide grond gaan rotten. De bovenkant is ook bedekt met sparren takken of ander isolatiemateriaal. Om het isolatiemateriaal erbovenop vast te zetten, kunt u aarde gebruiken.

Betrouwbare bescherming voor struiken die de normale stadia van verharding hebben doorgemaakt, kan een sterke sneeuwbedekking zijn. Onder een sneeuwlaag van 50-70 cm daalt de temperatuur niet onder de 4-5° onder nul als de buitentemperatuur 25-30° C is. Maar aangezien het tijdstip van sneeuwval en de dikte van het sneeuwdek niet constant zijn , het is noodzakelijk om aanvullende beschermingstechnieken te gebruiken: sparren takken, eiken blad, niet-geweven materiaal.

Trimmen

Heesters kenmerken zich door een sterke volumineuze groei en vereisen een lichte snoei. Deze rozen zijn bang voor zwaar en zelfs matig snoeien. Slapende knoppen hebben meer tijd nodig om wakker te worden dan bijvoorbeeld hybride theeroosjes. Met een korte zomer, en niet altijd warm genoeg, wordt deze functie belangrijk. Bij lang snoeien is de bloei overvloediger, omdat scheuten van de tweede orde van de bovenste knoppen zich intensiever ontwikkelen.

Er blijven 3-5 van de sterkste nieuwe basale scheuten achter op de struiken en er blijven 6-8 of meer goed ontwikkelde knoppen achter. Het doel van jaarlijks snoeien is om scheuten met een kwart of de helft in te korten, en zijscheuten met tweederde. Als de hoogte van de scheut 120 cm bedraagt, verkort deze dan met 30-40 cm, als de lengte van de zijscheut 30 cm is, verkort deze dan met 10 cm.

Wanneer de koninklijke schoonheid klimroos ‘Elf’ bloeit, zal iedereen de adem benemen. Als een sprookje verschijnen de geopende bloeiwijzen in een prachtige lichte wolk, sneeuwwit van veraf en met een aangename citroenachtige frisheid van dichtbij. Deze blijvende pracht verrukt het hele seizoen en roept romantische gedachten op. De hand strekt zich uit naar de bloem, maar niet om hem te plukken, maar alleen om de onaardse creatie aan te raken en het betoverende aroma in te ademen.

De elf kan niet leven zonder liefde, maar het is ook onmogelijk om niet van hem te houden.

De klimroos “Elf” werd in 2000 veredeld door het Duitse bedrijf Tantau (de serie “Nostalgic Roses”) en is een moderne grootbloemige klimroos (LCI) tuinroos.

Veredelaars hebben een plant gecreëerd met een voortreffelijke combinatie van een elegant silhouet en zachte nostalgische romantiek. Hier komt de naam zelf overeen met zijn uiterlijk, alsof hij uit een sprookjesland komt.

Beschrijving

De struik is krachtig (tot 280 cm hoog, minder vaak tot 250) en rechtopstaand. Klimmers schieten soms tot drie meter.

De bloemen zijn groot, tot 14 cm in diameter, dicht dubbel. Elk bloemenglas bevat verbazingwekkend genoeg maximaal 57 bloemblaadjes. Hun unieke kleur van edel ivoor aan de randen gaat geleidelijk over naar lichtgroen met een citroentint aan de basis. Misschien is dat de reden waarom het aroma origineel is: delicaat, licht fruitig, betoverend en verleidelijk.

Onder gunstige omstandigheden, tijdens de massale bloei, gooit één steel tegelijkertijd maximaal vijf bloemen uit in een schermvormige bloeiwijze.

De bladeren zijn groot, heldergroen. De zon vindt het heerlijk om zichzelf glad te strijken in de weerspiegeling van het glanzende gebladerte.

Landbouwtechnologie

  1. Voorwaarden. De klimroos "Elf" heeft warme, zonnige plaatsen nodig. De grond moet vruchtbaar en licht zijn, licht zuur of neutraal. Het belangrijkste is dat het vocht goed vasthoudt. Net als al zijn familieleden heeft hij regelmatig voeding nodig (bijvoorbeeld paardenmest) en onderdak voor de winter.
  2. Landing. In het voorjaar, vóór het planten, wordt de zaailing een dag in water geweekt. Gedurende deze tijd heeft het wortelsysteem de tijd om verzadigd te raken met vocht. Vervolgens worden de zwakke scheuten van de plant afgesneden en blijft de sterke generieke accutane over. Beschadigde en lange wortels worden bijgesneden.
  3. Duurzaamheid. De variëteit "Elf" is behoorlijk vorstbestendig en slaagt er zelfs in om blad vast te houden. Maar bij zeer lage temperaturen is bevriezing mogelijk. Heeft geen last van echte meeldauw of zwarte vlek. Maar bloemen houden niet van regen en schaduw.
  4. Steun. Als de roos langs een dunne, onopvallende steun wordt geleid, zullen de krachtige zijscheuten het beeld creëren van een stijgende boom met veel prachtige knoppen.

"Elf" ziet er perfect uit in een romantische tuin in de vorm van bogen, decoratieve muren en tuinhuisjes. Citroencrème-cascades zullen schilderachtig buigen onder het gewicht van grote bloemen, waarvan de bloemblaadjes zijn gesneden door een bekwame "meester". Deze roos is voor romantische liefhebbers en mensen met een buitengewoon gevoel voor stijl. En als je verbena, kattenkruid en lavendel aan de voet plant, zullen hun delicate bladeren en luchtige, weelderige bloeiwijzen de schoonheid van de klimroos prachtig omlijsten en aanvullen.

De plant staat in weelderige bloei, als sprookjesachtige elfvrouwen vol heldere emoties. Rose "Elf" kan veranderlijk en wispelturig zijn, maar is tegelijkertijd vol charme, het vermogen om de wereld te betoveren en te veranderen met zijn schoonheid. De sprookjesstruik geeft een nostalgisch tintje aan ons dagelijks leven, en het is zo mooi.

De Elf klimgrootbloemige roos werd in 2000 veredeld door het Duitse bedrijf Tantau in de serie “Nostalgic Roses”. De veredelaars zijn erin geslaagd om in deze plant een voortreffelijke combinatie te creëren van de zachte romantiek van nostalgische rozen met het elegante silhouet van hybride theeroosjes.

Bovendien hebben de grote, dichte bloemen van deze roos een verbazingwekkende groenwitte tint met een licht fruitig aroma en spelen ze in verschillende tinten, afhankelijk van het weer en het lichtniveau. Dit artikel zal u vertellen of de Elf-klimroos kan groeien in onze klimatologische omstandigheden, welke factoren de groei, ontwikkeling en overvloed aan bloei beïnvloeden.

Algemene kenmerken

Volgens de officieel aanvaarde classificatie van de American Rose Society, die door veel tuinders over de hele wereld wordt gebruikt, is de herhaaldelijk bloeiende Elfe een moderne rozen - een moderne tuinroos die behoort tot de soort Large-Flowered Climber (LCI). Elf-klimroos vormt een rechtopstaande, krachtige struik, waarvan de scheuten tot 3-4 meter lang kunnen worden. Dankzij dit is het perfect voor de muren van huizen en verschillende gebouwen, en zal het pergola's en tuinhuisjes versieren. De groei van langbloeiende scheuten kan zowel naar boven als naar beneden op de steun worden gericht. In het laatste geval zullen ze onder het gewicht van bloemen en knoppen naar de grond stromen. Het ras is redelijk resistent tegen typische ziekten en lichte verkoudheid, maar in de middelste zone overwintert het beter onder dekking.

Rose Elf klimmen: beschrijving van bloemen

Naast zijn ongebruikelijke lichtgele tint onderscheidt deze variëteit zich door de grote omvang van zijn dubbele bloemen, waarvan de diameter kan variëren van 10 tot 14 cm bloeien in parapluvormige bloeiwijzen op sterke scheuten. Afhankelijk van de samenstelling en waar het groeit, kan de kleur van de bloemblaadjes enigszins variëren. Helaas vervaagt de Elf-klimroos (beoordelingen van tuinders geven dit aan) behoorlijk slecht in de zon, en de bloemen kunnen ook beschadigd raken door hevige regen. Het aroma van Elfe is zeer delicaat, met zachte fruitige tonen.

Waar planten?

Elf-klimroos geeft de voorkeur aan lichtzure of neutrale, vruchtbare, lichte gronden, evenals plaatsen die goed worden verwarmd door de zon en geventileerd, maar beschermd tegen harde wind. Daarom raden de meeste experts aan om Elfe op verhoogde of hoge zuidelijke gebieden te planten. Dankzij deze plaatsing zal de groei zich actief ontwikkelen en na het planten het volgende jaar kunnen bloeien. Deze zuidelijke schoonheden kunnen geen stilstaand vocht verdragen, dus het wordt niet aanbevolen om ze te planten in gebieden met hooggelegen gebieden. Het is belangrijk om te onthouden bij het kiezen van een plek waar de Elf-klimroos zich zal "zetten": het planten en verzorgen ervan vergt nogal wat. veel ruimte eromheen. Bedenk van tevoren hoe en waar je de struik voor de winter gaat leggen, of je alle scheuten kunt bedekken.

Hoe een zaailing bereiden?

Voordat u een zaailing van de grootbloemige klimroos Elf op een vaste plaats plant, moet u er een aantal eenvoudige procedures mee uitvoeren. Als de plant in de lente wordt geplant, wordt de zaailing een dag in water bij kamertemperatuur geweekt, waardoor het wortelsysteem verzadigd kan raken met vocht. Vlak voor het snijden blijven er enkele van de sterkste scheuten achter. De wortels worden ook bijgesneden, waarbij zeer lange en beschadigde wortels worden verwijderd. Een dergelijke snoei stimuleert de zaailing om actief te groeien in het eerste jaar en zorgt ervoor dat hij u het volgende seizoen kan plezieren met bloeien.

Wij planten

Wanneer u begint met het planten van een klimroos, inclusief Elfe, moet u er rekening mee houden dat de afstand tussen de plant en een eventueel gebouw minimaal 0,5 meter moet zijn. Anders raakt hij oververhit en droogt hij uit, en de struik zelf zal zich langzaam ontwikkelen en kan afsterven.

Voor een zaailing is het noodzakelijk om een ​​gat te maken met een diepte van ongeveer 50-60 cm. De breedte en diepte van het plantgat zijn afhankelijk van hoe ontwikkeld het wortelsysteem van de plant is. Wanneer u een gat graaft, moet u er rekening mee houden dat de wortels er vrij in moeten zitten. Nadat het gat klaar is, wordt er 3-4 kg rotte compost gemengd met tuingrond of koeienmest aan toegevoegd en goed bewaterd.

We strekken de wortels van de zaailing stevig in het gat, zodat er geen holtes meer zijn, en vullen het gat met een vooraf bereid mengsel van tuingrond en humus. De wortelhals van elke klimroos (en Elf is daarop geen uitzondering) moet minimaal 10 cm in de grond worden begraven. Dit beschermt de plant tegen bevriezing. Bovendien vormen bij een dergelijke diepe beplanting de in de grond gelegen scheuten extra wortels.

Nadat het gat tot het hoofdniveau met aarde is gevuld, kan de grond rond de plant zelf met de voeten worden verdicht. De geplante roos moet worden bewaterd en eventuele humaten kunnen aan het water worden toegevoegd. Voor een betere aanpassing moeten zaailingen de eerste weken worden afgedekt met folie of, als de planten klein zijn, met gesneden plastic flessen. Geleidelijk aan, als de planten ‘tot bezinning komen’, kun je de hoezen verwijderen.

Hoe zorg je?

Het jaar daarop na het planten heeft de Elf-klimroos veel minder zorg en aandacht nodig.

Het is voldoende om de struik onmiddellijk te verwijderen en in te korten, water te geven en de plant te voeden met kunstmest. Rozenstruiken worden gesnoeid, waardoor het interne volume wordt uitgedund en de plant ook wordt gevormd in overeenstemming met het ontwerp van de tuin of het creatieve concept van de tuinman. Rozen moeten niet vaak worden bewaterd, eens in de 7-10 dagen, maar overvloedig. De mest of humus die tijdens het planten wordt geïntroduceerd, zal voldoende zijn voor de eerste groeijaren, maar in de toekomst moet de koningin der bloemen minstens 5 keer per seizoen worden gevoed met zowel organische als minerale meststoffen.