Voor het Windows besturingssysteem zijn een aantal zeer uitgebreide omgevingen
beschikbaar waarmee bijzonder krachtige applicaties kunnen worden ontwikkeld. Dit artikel
beperkt zich tot de meest recentelijk los verkrijgbare versies van de twee meest gebruikte
en uitgebreide omgevingen, Microsoft Visual C++ 4.0 en Borland C++ 5.0 Development Suite. Twee andere omgevingen,
Symantec C++ en Watcom C++, hadden hier ook onder de loep kunnen worden genomen. Uit
praktische overwegingen is echter gekozen voor een uitgebreidere beschouwing van minder
producten.
In een bespreking van beperkte omvang kan natuurlijk geen volledigheid nagestreefd
worden. In dit artikel is daarom gekozen voor een benadering vanuit gebruikers oogpunt.
Dit in tegenstelling tot veel andere C++ besprekingen, waarin veel aandacht wordt besteed
aan de technische capaciteiten, die overigens staat en valt bij de wijze van testen. Een
taak kan in C++ in veel gevallen op zeer veel manieren worden geimplementeerd omdat C++
een extreem expressieve taal is. De programmeur speelt kortom een belangrijkere rol dan
het gereedschap. Bovendien kan wel met redelijke zekerheid worden aangenomen dat, hoewel
er natuurlijk verschillen in uitvoeringssnelheid zullen zijn, alle ontwikkelingsomgevingen
bijzonder efficiente code
kunnen produceren. Daarom wordt in dit artikel vooral
bekeken hoe Visual C++ en Borland C++ de ontwikkelaar helpen bij het zo aangenaam en
efficient mogelijk doorlopen van de ontwikkelcyclus.
Ontwikkelcyclus
Het ontwikkelen van een nieuwe applicatie begint in veel gevallen met het starten van
een gereedschap zoals AppWizard of AppExpert, waarmee binnen een minuut een toegesneden
skelet voor het project kan worden gegenereerd via een aantal eenvoudige
keuzemogelijkheden. Met volledig geintegreerde Resource Editors kan vervolgens het applicatie-specifieke deel
van de interface objecten aangemaakt worden, zoals bitmaps, iconen, dialoog sjablonen en
dergelijke.
Met behulp van een klassen gereedschap zoals ClassWizard of ClassExpert kunnen vervolgens
de relevante boodschappen van de interface objecten worden geselecteerd en afgevangen.
Voor iedere afgevangen boodschap kan dan een skelet functie worden gegenereerd waarna de
specifieke functionaliteit moet worden gecodeerd. Hier begint kortom pas het echte werk.
Natuurlijk is de eigen broncode foutloos, maar mocht dit per ongeluk toch eens niet het
geval blijken te zijn, dan biedt de geintegreerde debugger hopelijk uitkomst bij het
localiseren van denk- en typefouten. Just-in-time natuurlijk, oftewel het is nooit net te
laat om te debuggen, zelfs niet na een crash.
Microsoft Visual C++ 4.0 & Borland C++ 5.0
Visual C++ 4.0
Microsoft Visual C++ 4.0 is een 32-bit ontwikkelomgeving waarmee applicaties kunnen
worden gemaakt voor Windows NT, Windows 95 en Windows 3.1 met Win32s. Het wordt geleverd
met het applicatie raamwerk Microsoft Foundation Classes (MFC) 4.0, dat onder meer de
Windows 95 Common Controls ondersteunt. Ook OLE Controls kunnen binnen deze omgeving
worden ontwikkeld en gebruikt. Database ondersteuning wordt geleverd in twee smaken,
namelijk de Data Access Objects (DAO) en Open Database Connectivity (ODBC).
Microsoft Visual C++ 1.52 wordt als apart product bijgeleverd, tesamen met MFC 2.5. Met
deze ontwikkelomgeving kunnen 16-bit applicaties worden gemaakt voor Windows 3.1 en
MS-DOS. Dit lijkt wederom een bevestiging van de strategie bij Microsoft: 16-
bit mag niet
meer. Zo is bijvoorbeeld één van de nieuwe uitbreidingen in MFC, DAO, niet te gebruiken
in Windows 3.1, zelfs niet met Win32s. Dit is een essentieel punt, aangezien Windows 3.1
op dit moment nog steeds het meest gebruikte Windows besturingssysteem ter wereld is.
Eén van de bijgeleverde externe producten is InstallShield SDK Edition, waarmee setup
programma’s voor applicaties kunnen worden aangemaakt via installatie scripts.
Crystal Reports levert een uitbreiding op Visual C++ met een database rapportage systeem
met run-time engine. Het is echter nogal onduidelijk wat WinCIM, de Windows interface voor
CompuServe, op deze CD-ROM doet.
Het is zeer de moeite waard om een jaarabonnement te nemen op Microsoft Visual C++. Zo
kan namelijk automatisch updates worden ontvangen. Bovendien zijn kleinere opwaarderingen
enkel via dit abonnement te verkrijgen.
Installatie
Een volledige installatie van Visual C++, inclusief de gigantische hoeveelheid online
documentatie, vergt 248 Mb en verloopt als een zonnetje. Een typische installatie vereist
131 Mb, omdat dan onder andere de documentatie niet op de harde schijf wordt gezet. Er
blijken twee patches te bestaan die een aantal bugs moeten verhelpen. Deze zijn onder meer
op de Microsoft website te vinden. Beide verlopen zoals gepland en het aantal bijgewerkte
bestanden is nog op de vingers te tellen.
Documentatie

Visual C++ wordt geleverd met slechts 2 centimeter aan handleidingen, een Getting Started voor
Visual C++ 1.52 en Tutorials voor Visual C++ 4.0. 89 Mb (!) aan online hulp moet deze
schamele hoeveelheid handleidingen in papiervorm compenseren. Zeer opvallen
d is dat niet
het standaard Windows hulp systeem wordt gebruikt, maar één die volledig geintegreerd is
met de Visual C++ ontwikkelomgeving. Dit hulpsysteem is werkelijk een verademing en hoewel
het niet compleet is en soms ook bepaald niet helder, mag het in zijn totaliteit toch
zeker tot één van de beste online-documentatie systemen in de software industrie worden
gerekend.
IDE
Algemeen

Visual
C++ projecten worden ontwikkeld in de Developer Studio. Opvallend is dat binnen deze
omgeving tevens informatie van Visual Basic, Fortran Powerstation, Visual Test en de
Development Library benaderd kan worden, indien deze producten tenminste apart zijn
aangeschaft.
Het hart van de Developer Studio is het Project Workspace Window, dat uit vier
tabbladen bestaat, namelijk ClassView, ResourceView, FileView en InfoView.

Met
ClassView kan eenvoudig door de C++ klassen en de bijbehorende methoden en eigenschappen
worden genavigeerd. De ResourceView geeft toegang tot de grafische objecten die bij het
project horen, zoals dialoog sjablonen, menu’s, iconen en dergelijke. De FileView
biedt via een niet-gelaagde listing van de bronbestanden een meer traditionele manier om
het project te benaderen. Tenslotte de InfoView. Hiermee kan Books Online, de zéér
uitgebreide collectie hulpbestanden,
binnen de IDE worden benaderd en
doozocht, een enorme vooruitgang vergeleken met de gangbare hulpsystemen die de standaard
Windows Help aanroe
pen.
Helaas is het Project Workspace Window read-only, zodat het bijvoorbeeld niet mogelijk
is om de knopen in de hierachie te herstructureren. Alle benodigde informatie wordt achter
de schermen verzameld door de projectbestanden wanneer nodig te parseren. Bij uitgebreide
projecten kan het aantal gebruikte klassen echter flink uit de hand lopen. Het niet kunnen
ingrijpen in de presentatie methode leidt dan alsnog tot veelvuldig zoeken naar klassen en
methoden.

Natuurlijk
biedt de Developer Studio tevens windows voor output, variabelen, registers, geheugen en
dergelijke. Al deze windows zijn overigens ‘dockable’ en hebben een full-screen
optie. Een ander typisch Microsoft kenmerk is tenslotte de overdaad aan toolbars die
bovendien eenvoudig wijzigbaar zijn. Gelukkig maar dat al deze high-tech interface
eigenschappen niet persé gebruikt hoeven te worden.
Component gallery
De Component Gallery bevat herbruikbare code zoals OLE Controls, eigen C++ klassen en
eventueel componenten van andere producenten. Vooral het toevoegen van OLE Controls door
het aanmaken van C++ code omhulsels is hierdoor bijzonder eenvoudig. Andere componenten
breiden bestaande klassen uit zodat bijvoorbeeld OLE Automation aan een bestaande klasse
kan worden toegevoegd of systeem informatie in de About box door simpelweg op het juiste
icoontje te klikken.
Custom AppWizards

Met
AppWizard kunnen, behalve applicaties en bibliotheken,
ook aangepaste AppWizards worden
gemaakt op basis van code en grafische objecten in een reeds bestaand project. Ook kunnen
de standaard AppWizard sjablonen worden aangepast of uitgebreid. Voorbeelden van
eenvoudige uitbreidingen zijn bijvoorbeeld bedrijfsspecifieke informatie, iconen en
hulpbestanden.
Gegevens
Producent: Microsoft.
Toepassing: Geintegreerde applicatie ontwikkeling in C++.
Minimale systeemeisen: PC met 486 processor, Window 95 of Windows NT 3.51, 16
Mb geheugen, 131 Mb voor een typische installatie, CD-ROM drive.
Prijs: Fl. 1032 inclusief BTW.
Meerprijs jaarabonnement: Fl. 139 exclusief BTW.
Leverancier: Voor Nederland: Microsoft BV, telefoon 023-4689189, fax
023-5637761; Voor België: XXX
Afbeeldingen
Borland C++ 5.0
Borland C++ 5.0 is een
32-bit ontwikkelomgeving waarmee applicaties kunnen worden gemaakt
voor Windows NT, Windows 95, Windows 3.1 en DOS. Het wordt geleverd met het applicatie
raamwerk ObjectWindows Library (OWL) 5.0. Deze bibliotheek ondersteunt onder meer de
Windows 95 Common Controls en 16-bit emulatie voor de meeste daarvan. De grote concurrent
van OWL, MFC, wordt bovendien door de Borland compiler ondersteund. Een belangrijk
pluspunt, aangezien de Microsoft compiler geen OWL ondersteunt. Database ondersteuning
wordt geleverd in de vorm van de Visual Database Tools (VDBT). Natuurlijk ontbreekt de
geintegreerde debugger niet. En, last but not least, Java. Met deze omgeving kunnen tevens
Java applicaties worden ontwikkeld, inclusief syntax highlighting, AppExpert,
geintegreerde debugger en Sun’s Development Kit (JDK).
De Borland C++ 5.0 Development Suite voegt hieraan nog een aantal gereedschappen toe.
CodeGuard 32/16 is een krachtig bug detectie en diagnose gereedschap. De PVCS Version
Manager is belangrijk bij grote projecten waar veel programmeurs voor nodig zijn en versie
controle complexer wordt. Met InstallShield Express BC++ 5.0 Edition kan op visuele wijze
een setup programma voor de applicatie worden aangemaakt. Tenslotte is er nog een
supersnelle Java just-in time compiler die Java applicaties vijf tot tien keer sneller
maakt.
Installatie
Een volledige installatie van Borland C++ vereist 195 Mb. Het installeren duurt dus wel
even, maar verloopt soepeltjes. Het tekstbestand dat verschijnt na het installeren
verwijst de ontwikkelaar nadrukkelijk één van de online adressen te bezoeken alvorens
Borland C++ te gebruiken. Er blijken aldaar twee patches aanwezig te zijn. Het uitvoeren
van de eerste verloopt foutloos, al worden er beangstigend veel bestanden bijgewerkt. De
tweede patch crasht echter direct. Een goede aanleiding dus om de oninstallatie te testen
om er helemaal zeker van te zi
jn dat er geen bestanden zijn beschadigd. Helaas, die faalt
ook genadeloos. Helemaal opnieuw dan maar.
Uiteindelijk blijkt een verkeerd patch programma bij de tweede patch te zijn bijgevoegd.
Met het zeer verontrustende aantal van 229 (!) bijgewerkte bestanden in de tweede patch
wordt het installatieproces tenslotte afgerond. Een advies dus: bestudeer eerst uitvoerig
de Borland C++ website voor informatie over veel voorkomende problemen. Jammer.
Documentatie

Borland C++ wordt geleverd met 9 centimeter aan
handleidingen als Getting Started, Quick Tour, User’s Guide en Programmer’s
Guide. Een praktische Tutorial onbreekt echter. Met 44 Mb in 48 online hulpbestanden wordt
de documentatie gecomplementeerd. Rest nog de ontsluiting van deze geweldige hoeveelheid
informatie. Hiervoor gebruikt Borland C++ de nieuwe standaard Windows Help, waarmee de
volledige tekst doorzocht kan worden. Helaas, het overkoepelende hulpbestand OpenHelp is
niet dusdanig geconfigureerd dat automatisch alle hulpbestanden doorzocht kunnen worden.
Zo levert het zoeken naar het sleutelwoord ‘tutorial’ in eerste instantie geen
relevante treffers op, terwijl er wel degelijk een hulpbestand met verwijzingen naar
voorbeelden aanwezig is.
IDE
Algemeen

Het hart van de Borland C++ Integrated Development Environment (IDE) is het Project
Manager Window, waarin alle project bestanden hierarchisch geschikt zijn. Deze
hierachie
kan vervolgens vrij eenvoudig gewijzigd of uitgebreid worden met nieuwe targets, of
project doelen. Zo wordt dus volledige controle gegeven om source pools op te zetten,
verzamelingen bronbestanden die door meerdere versies van de toepassing kunnen worden
gedeeld. Via de rechter muisknop zijn altijd de belangrijkste commando’s binnen
handbereik voor de geselecteerde knoop in de project hierarchie.

Vervelend is wel dat dit belangrijkste window geen speciale
eigenschappen kan worden gegeven, zoals bijvoorbeeld een mogelijkheid tot
‘docking’ of ‘always on top’. Nu moet regelmatig gezocht worden naar
dit window. De meest evidente tekortkoming van het Project Manager Window is echter wel
het ontbreken van de
geintegreerde mogelijkheid om het project te benaderen op
basis van klassen informatie. De IDE beschikt namelijk wel over dergelijke functionaliteit
in de ClassExpert, waarover elders meer, maar dit gereedschap is altijd minstens één
‘window away’.
ObjectScripting
Borland C++ 5.0 wordt geleverd met een prijsvraag! Het betreft de promotie van
ObjectScripting, de scripttaal waarmee de IDE zélf volledig geprogrammeerd kan worden.
Het bereikbaar maken van de volledige functionaliteit van de IDE voor aanpassingen en
uitbreidingen door en voor gebruikers kan natuurlijk het gebruikersgemak vergroten,
waardoor uiteindelijk de projectcyclus op een prettigere manier doorlopen zou kunnen
worden. En in minder tijd misschien, dus tegen lagere projectkosten. Doel is natuurlijk
door middel van de ObjectScripting Contest een aantal praktische toepassingen beschikbaar
te kunnen stellen voor iedereen zonder dat Borland zelf daar t
ijd, geld en creativiteit in
hoeft te steken.

Voor de hand
liggende toepassingen zijn onder meer het aanpassen van bestaande en het toevoegen van
nieuwe functionaliteit, het automatiseren van veel voorkomende vervelendheden zoals het
importeren van standaard bibliotheken en dergelijke en het integreren van externe
gereedschappen. Om de leerdrempel zo laag mogelijk te houden, wordt zelfs een aanzienlijke
handleiding meegeleverd.
Java Add-on
De Borland C++ Development Suite IDE heeft verder een op dit moment nog uniek kenmerk:
geintegreerde ondersteuning voor de ontwikkeling van Java applicaties en applets. Ideaal.
Het leren werken binnen een IDE is namelijk niet de prettigste manier om je tijd door te
brengen. Helemaal in het geval van het ontwikkelen van Java applicaties, wat tot voor kort
op de command-line diende te gebeuren. Vooral de aanwezigheid van een geintegreerde
debugger is natuurlijk een geschenk uit de hemel. Een verlaagde Java leerdrempel dus voor
Borland C++ ontwikkelaars.
Gegevens
Producent: Borland.
Toepassing: Geintegreerde applicatie ontwikkeling in C++ en Java.
Minimale systeemeisen: PC met 486 processor, Window 95 of Windows NT 3.51, 16 Mb
geheugen, 120 Mb voor een typische installatie, CD-ROM drive (floppy disk versie tegen
meerprijs verkrijgbaar).
Prijs: F. 779 / Bfr. 14.250,
Upgrade: F. 399 / Bfr. 7.350,
Development Suite: F. 1079 / Bfr. 19.700,
Upgrade: F. 559 / Bfr. 10.200, exclusief BTW.
Leverancier: Borland Benelux, telefoon 020-5035100, fax 020-5035170.
Afbeeldingen
Kader: MFC versus OWL, Wizards versus Experts
MFC en OWL C++ klassen verzamelingen als de Microsoft Foundation Classes (MFC) en de ObjectWindows Library (OWL) bieden een dusdanig omvangrijke functionaliteit dat ze eigenlijk geen klassen bibliotheken meer genoemd kunnen worden. Ze bevatten een hoge mate van volledigheid aan benodigde componenten voor het ontwikkelen van complete applicaties.
Beiden verschaffen een object-georienteerde abstractielaag over de meest frequent benodigde functiegroepen in de Windows API’s. De ontwikkelaar krijgt bovendien door de omkapseling en overerving een gestructureerd beeld van aanwezige functionaliteit in de Windows API’s.
Het gebruik van één van deze applicatie raamwerken leidt impliciet tot een hoge mate van standaardisatie in het ontwikkelen. Beide funderingen bieden bijvoorbeeld standaard het Document/View model, waar de gegevens bewaard en beheerd worden in het document object. Het laten zien en manipuleren van die gegevens wordt vervolgens verzorgd door het View object. Hierdoor is h et onder meer mogelijk om meerdere aanzichten te bieden op dezelfde gegevens.
Een andere overeenkomst is het gebruik van boodschapverwerkingssystemen, die Windows boodschappen automatisch doorsturen naar de juiste klasse methoden. In MFC zijn deze kenmerken bekend onder de naam ‘message maps’; in OWL worden ze ‘response tables’ genoemd. Een enorme vooruitgang vergeleken met traditionele Windows code, waar alle boodschappen in één functie werden opgevangen. Dit staat niet alleen object-georienteerd programmeren in de weg, maar kan bovendien uiteindelijk leiden tot technische onoverkomelijkheden.
De alsmaar toenemende complexiteit bij het ontwikkelen van software impliceert helaas dat er fouten in de uitvoering van applicaties kunnen optreden. Wie heeft immers nog nooit de intrigerende boodschap "GENERAL PROTECTION FAULT" op zijn scherm gehad? Om dit soort gebruikersonvriendelijkheden zo veel mogelijk te voorkomen, kunnen "exception handler" objecten worden gebruikt om foutgevoelige delen in de broncode te omsluiten. Een functie die een fout veroorzaakt, kan dan zo een nooduitgang worden verschaft. In het ergste geval zou de applicatie tenminste nog elegant afgebroken moeten kunnen worden. Zowel MFC als OWL bieden een aantal klassen die deze functionaliteit verzorgen.
Het toevoegen van OLE functionaliteit aan applicaties hoeft het programmeursgilde niet langer meer slapeloze nachten te bezorgen. Met MFC en OWL wordt OLE binnen handbereik gebracht doordat het gehele onderliggende Component Object Model (COM) ingekapseld is binnen een begrijpbare OLE object hiërarchie.
Ook bij het implementeren van database en internet applicaties schieten de raamwerken te hulp. Hoewel het gebruik en de achterliggende technologie ervan verschillen, kan wel degelijk hetzelfde doel worden bereikt.
Er zijn natuurlijk ook verschillen tussen MFC en OWL aan te wijzen in de onderliggende achitectuur en de aangeboden functionaliteit. Veel belangrijker is echter dat beide raamwerken een groot aantal identieke essentiële kenmerken delen, waarvan er hierboven slechts een klein aantal zijn genoemd. Het zijn twee volwassen producten, die beiden een dusdanig krachtig en flexibel raamwerk verschaffen dat de ontwikkelaar zich enkel nog op een consistente wijze met de applicatie-specifieke functionaliteit hoeft bezig te houden, zonder zich beperkt te voelen. Alles kan, en in veel gevallen nog eenvoudig ook. In het begin is alleen wel een flinke dosis volharding vereist voordat door de klassen het raamwerk te zien is.
Wizards En Experts Programmeren voor Windows vereist geavanceerde gereedschappen die lastige en vervelende technische problemen voor hun rekening nemen, zoals het afvangen van object boodschappen en het automatisch up-to-date houden van de grafische objecten. Zowel Visual C++ als Borland C++ bieden hiervoor oplossingen, Microsoft zoals gewoonlijk met Wizards en Borland natuurlijk met Experts.
Dit zet echter wel een serie afhankelijkheden in werking, omdat deze geavanceerde gereedschappen uit moeten kunnen gaan van een gestroomlijnde en gestandaardiseerde fundering, zoals MFC en OWL. Dit heeft kortom tot gevolg dat de Wizards en Experts enkel bruikbaar zijn indien de applicatie gebaseerd is op het achterliggende applicatie raamwerk.
Aangezien de Wizards van Visual C++ MFC als fundering hebben en de Experts van Borland C++ OWL, is het niet mogelijk om een eenmaal ontwikkelde applicatie in een andere ontwikkelomgeving te importeren zonder de functionaliteit van de gereedschappen te verliezen. Visual C++ ondersteunt eenvoudigweg geen OWL; Borland C++ biedt gelukkig een compilatie optie die de C++ interpretatie dusdanig aanpast dat MFC code in ieder geval gebruikt kan worden.
Opzet Algemeen De belangrijkste reden om een applicatie raamwerk te gebruiken, is de mogelijkheid om zeer snel en eenvoudig Windows applicaties (.EXE), bibliotheken (.DLL) en dergelijke te kunnen opzetten. Aan het te generen project kan een groot aantal kenmerken worden toegewezen door opties aan te klikken, zodat een toegesneden geraamte voor de applicatie kan worden gegenereerd waaraan enkel (!) nog de applicatie-specifieke functionaliteit hoeft te worden toegevoegd.
Zo kan voor het type gebruikersinterface worden gekozen voor een Single Document Interface (SDI), Multiple Document Interface (MDI) of een dialoog-gebaseerde gebruikersinterface. Belangrijk is ook de mogelijkheid dat ieder mogelijk type OLE ondersteuning gekozen kan worden, zoals OLE Containers, OLE Servers en OLE Automation..
Zowel AppWizard als AppExpert bieden veel mogelijkheden om een snelle start te bewerkstelligen, al gaat AppWizard hierin wel iets verder.
AppWizard De AppWizard in Visual C++ biedt tevens twee typen database ondersteuning. Er kan gekozen worden uit Open Database Connectivity (ODBC) en Data Access Objects (DAO). Bijzonder prettig is het overigens dat voor het genereren reeds gekozen kan worden voor een view die gebaseerd is op een Common Windows Control, zoals bijvoorbeeld de RichEditView voor standaard tekstverwerkingsfunctionaliteit. Control-gebaseerde views zijn omhulsels voor onafhankelijke standaard objecten die intern alle benodigde functionaliteit implementeren, zodat met weinig extra werk een volledige applicatie voor bijvoorbeeld geformatteerde tekstverwerking te realiseren is.
Het aantal uiteindelijk gegenereerde en geimporteerde bestanden kan oplopen tot een stuk of 30. Gelukkig wordt er tevens een ReadMe.txt bij gegenereerd, zodat even nagelezen kan worden wat er eigenlijk allema al gebeurd is. Tenslotte verloopt het genereren, compileren, linken en uitvoeren van het nieuw aangemaakte project foutloos.
AppExpert AppExpert in Borland C++ biedt verder onder meer een optie om niet het gebruikelijke Document/View model te gebruiken.
Het aantal uiteindelijk gegenereerde en geimporteerde bestanden kan oplopen tot een stuk of 45, waaronder wel veel kleine bitmaps. Helaas wordt er geen ReadMe.txt bij gegenereerd, zodat in het Project Manager Window wel te zien is wat er gegenereerd is, maar niet waarom. Dit is voor nieuwe gebruikers natuurlijk wel lastig. Tenslotte verloopt het compileren van de hulpbestanden niet goed bij het gebruik van lange bestandsnamen. Dit is nogal frustrerend, aangezien wel expliciet voor de optie ‘lange bestandsnamen’ kan worden gekozen. Dit is te wijten aan het aanroepen van de oude Microsoft help compiler. Natuurlijk kan dit wel opgelost worden, maar gegenereerde code hoort gewoon in één keer volledig foutloos te compileren.
Uitzet Algemeen Indien een applicatie is opgezet met AppWizard of AppExpert, kan voor het implementeren van de applicatie-specifieke functionaliteit de hulp ingeroepen worden van een geavanceerd gereedschap als ClassWizard of ClassExpert. Hiermee kunnen dan onder meer eenvoudig de klasse gegevens worden bekeken, gewijzigd en uitgebreid.
Deze gereedschappen betekenen een enorme vereenvoudiging voor de implementatie, die veelal te herleiden is tot de ruime ondersteuning voor het doorverwijzen van object boodschappen naar klasse eigenschappen en methoden en het eenvoudig onderscheppen van hierarchisch hoger gedefinieerde virtuele functies.
Het gebruik van deze gereedschappen wordt pas echt een zegen indien OLE functionaliteit moet worden geimplementeerd. De ontwikkelaar wordt v rijwel geheel afgeschermd van de OLE rompslomp, zoals het bijhouden van het Object Definition Language bestand, en kan normaal gesproken volstaan met het definieren van de bloot te stellen methoden en eigenschappen.
ClassWizard Interactie met ClassWizard vindt plaats via een modale dialoog box die uit vijf tabbladen bestaat, getiteld Message Maps, Member Variables, OLE Automation, OLE Events en Class Info.
Met ClassWizard kunnen niet alleen volledig nieuwe klassen worden afgeleid van een uitgebreide reeks basisklassen, maar tevens kunnen klassen worden gegenereerd op basis van OLE Type Libraries, waarin interface methoden kenbaar worden gemaakt. Op deze manier kunnen eenvoudig andere applicaties, zoals bijvoorbeeld Microsoft Excel, worden aangestuurd door te genereren C++ klasse. De OLE Control ondersteuning in ClassWizard is in principe identiek aan die voor OLE Automation.
Tenslotte is er nog de WizardBar, het kleine broertje van ClassWizard, dat zich altijd bovenaan de broncode bestanden bevindt. Hiermee kunnen sneller object boodschappen doorverwezen worden naar klasse methoden, wat een veel voorkomende actie is. Grootste beperking van de WizardBar is wel dat het een onderdeel is van het bronbestand en niet van het project, zodat het bijvoorbeeld niet mogelijk is om een andere klasse te selecteren.
ClassExpert In tegenstelling tot ClassWizard is de functionaliteit van ClassExpert volledig geintegreerd met de daarbij behorende broncode. Het bestaat uit een edit window waarvan het bovenste deel is ingeruimd voor een overzicht van in het project gedefinieerde klassen en de daarop toepasbare methoden. Dit werkt bijzonder prettig.
ClassExpert houdt eigenlijk het midden tussen de uitgebreidere ClassWizard en de veel beperktere WizardBar in Visual C++. De integratie van deze Expert is ech ter grandioos. Via de rechter muisknop kan zo bijvoorbeeld heel eenvoudig OLE Automation methoden en eigenschappen worden toegevoegd zonder dat overgeschakeld moet worden naar een modale dialoog, waardoor de broncode tijdelijk onbereikbaar wordt.
Samenvatting
Conclusie
De twee besproken C++ ontwikkelomgevingen, Visual C++ 4.0 en Borland C++ 5.0, worden
geleverd met enorme applicatie raamwerken, MFC en OWL, die object-georienteerde
abstracties bieden over de meest relevante delen van de Windows API’s. Deze
funderingen worden vervolgens benut door de in de ontwikkelomgeving geintegreerde
hulpgereedschappen, Wizards en Experts, om het gebruik van deze raamwerken te
vereenvoudigen en het niet-creatieve deel van de uit te voeren taken te automatiseren,
zoals het opzetten van standaard projecten en het afvangen van object boodschappen.
Tussen de ontwikkelomgevingen zélf zijn er wel enige uiteen lopende tendenzen waar te
nemen. De Visual C++ omgeving kent een enorm aantal configuratiemogelijkheden, die wel als
typisch Microsoft mogen worden aangemerkt: full-screen, docking en customizable windows en
toolbars overal. De gebruiker heeft volledige controle over de interface. De meer sobere
Borland C++ omgeving is een andere richting ingeslagen; de omgeving zélf, en daarmee de
bereikbare functionaliteit, is volledig aanpasbaar geworden. Bovendien heeft Borland C++
met de integratie van Java een mooie troef in handen.
Wat nu te kiezen? Beginners zijn beter af met Visual C++, omdat er meer zorg is besteed
aan de documentatie en het meer en betere tutorials biedt. Indien het belangrijk is dat
16-bit applicaties geintegreerd ontwikkeld moeten kunnen worden, dan is Borland C++ weer
een betere keuze. Bovendien kan MFC code gecompileerd worden in Borland C++, wat niet vice
versa geldt. Aan de andere kant wordt MFC steeds meer besc
houwd als het standaard C++
applicatie raamwerk. Enzovoorts. De één verdient een extra plusje hier, de ander een
extra plusje daar.
Op punten
Functionaliteit : Visual C++ | Borland C++
Database toegang : J | J
Database rapportage : J | J
Client/server mogelijkheden : J | J
Koppeling naar andere talen : Assembly, C | Assembly, C;
Java
OLE koppeling : J | J
Object gericht : J | J
Bedieningsgemak *** : **
Visueel programmeren | J/N : J/N
Compileren | J : J
Uitgebreidheid | *** : ***
Werkgemak | *** : **
32-bit | J : J
16-bit versie verkrijgbaar | Apart bijgevoegd
Geintegreerd
Installatie generator : ** | ***
Potentiele snelheid applicaties : **** | ****
Leerbaarheid : *** | **
Geschiktheid voor beginners : ** | *
Geschiktheid voor gevorderden : *** | ***
Geschiktheid grote applicaties : *** | ***
Meningen
Wat vinden anderen eigenlijk? Microsoft of Borland? OWL of MFC? Deze vragen circuleren
met grote regelmaat in de nieuwsgroepen die gewijd zijn aan MFC en OWL. Iedere posting
veroorzaakt steevast een aanzienlijke thread, veel reacties dus.
Men lijkt het er wel over eens te zijn dat beide IDE’s zeer acceptabel zijn. Over het
te gebruiken applicatie raamwerk verschillen de meningen nogal, wat niet geheel toevallig
enigzins samenhangt met de nieuwsgroep waarin het artikel gepost wordt. De trend lijkt er
echter wel te zijn dat in het geval van een reeds gemaakte keuze er geen enkele aanleiding
is om over te schakelen. Mo
et de keuze nog worden gemaakt, dan zou voor MFC gekozen kunnen
worden omdat dit nu eenmaal de industrie standaard lijkt te zijn geworden. OWL geniet bij
anderen echter weer de voorkeur.
Er zijn wel enkele regelmatig terugkerende elementen waar te nemen in de reacties op
het
dilemma. Zo wordt dikwijls de persoonlijke voorkeur als doorslaggevende factor
benadrukt. Een ander argument werd onlangs aldus verwoord: "You'll hear a lot of
strong arguments for one development tool or the other. But in the end, I find that it's
the developer that makes more of a difference than any particular feature or advantage of
a tool."