Modulariteit
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.
Net als in andere talen is werken in één bestand met broncode prima, totdat je programma te groot wordt of je onderdelen in meerdere programma's wilt gebruiken. Bijvoorbeeld omdat je een handige procedure hebt geschreven die een bestand opent en error handling doet. Dat is in veel programma's bruikbaar en wil je niet steeds opnieuw schrijven.
In Turbo Pascal is een oplossing te vinden met units. Een unit is een apart bronbestand waarin je procedures, functies, types en variabelen zet die je in meerdere programma’s wilt gebruiken. Een beetje zoals een library in C.
De structuur ziet er zo uit:
Unit MijnUnit;
Interface
Procedure ZegHallo;
Implementation
Procedure ZegHallo;
Begin
Writeln('Hallo vanuit een unit!');
End;
End.
Het bestand krijgt de naam MijnUnit.pas. Als je het compileert, maakt Turbo Pascal er een MIJNUNIT.TPU van: een Turbo Pascal Unit.
Het belangrijkste idee is de scheiding tussen interface en implementation: In het Interface-gedeelte zet je alles wat je "openstelt" voor de buitenwereld: de namen van procedures, functies, variabelen, types. In het Implementation-gedeelte staat de eigenlijke code.
Gebruikers van de unit zien alleen de interface en hoeven de details erachter niet te kennen.
Gebruik van een unit:
Program TestUnit;
Uses
MijnUnit;
Begin
ZegHallo;
End.
Naast de genoemde voordelen van herbruikbaarheid zit hier een ander concept in, dat ook bekend is van object oriented programmeren, OOP: encapsulatie, dat wat niet in de interface staat, blijft privé.
Units zijn daarmee vergelijkbaar met bijvoorbeeld in C: header files, .h- en .c-bestanden om functies te scheiden. Ook talen als Rust en Python hebben dit soort constructies.
Dit proces lijkt op het samenvoegen van verschillende modules die tot object-files zijn gecompileerd en via de linker worden samengevoegd, maar de route via units is veel eleganter. Hier neemt Pascal al het detail knoeiwerk voor zijn rekening, maar belangrijker: voor de programmeur is dit veel overzichtelijker.
Ik herinner me uit mijn opleiding bedrijfsinformatica dat we wachtrijsimulaties bouwden in Pascal. Via een unit die daarvoor geschreven was kreeg je in feite een uitbreiding op de taal, waardoor je de simulatie kon schrijven in termen die daarvoor relevant zijn, bijvoorbeeld AddToQueue. Zodat je programma leesbaar was op het niveau van de simulatie, terwijl het probleemloos compileerde via Pascal.
Gerelateerd
Errors en IOResult
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.
Nieuwe problemen met oude systemen
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.
Bestanden in DOS
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.
De diepte in met functies en procedures
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.
Gestructureerde data
Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.
