Artificiële Intelligentie gebruikersgroep


Het eerste Java-programma

"Hello, World!"

Java is een zgn. object-geöriënteerde taal, dat wil zeggen dat er gewerkt wordt met objecten die je opdrachten kunt geven of vragen kunt stellen. Zo'n object is altijd één exemplaar (een instance) uit een bepaalde categorie (class of klasse) van objecten. Hierdoor hoeven we niet ieder object afzonderlijk te programmeren; als we voor de hele klasse specificeren hoe bepaalde opdrachten moeten worden uitgevoerd, kan ieder object uit die klasse deze opdrachten uitvoeren.

Om verschillende redenen kan het voorkomen dat we eigenlijk maar één object van een bepaalde soort nodig hebben om bepaalde opdrachten uit te voeren. In dat geval is het gebruikelijk om de opdracht aan de klasse zelf geven, en niet eerst een objekt van die klasse aan te maken om onze opdrachten uit te voeren. Aanvankelijk zullen we vooral hiervan voorbeelden tegenkomen. Maar de kracht van object-geöriënteerd programmeren zit 'm juist in het feit dat we met meerdere objecten van dezelfde klasse kunnen werken, en dit zal dan ook steeds meer het geval zijn naarmate we verder komen.

Omdat alle begin moeilijk is, houden we het eerste programma zo simpel mogelijk. Het print alleen de tekst "Hello, World!" op het computerscherm, en ziet er als volgt uit:


/*
    Hello.java
    Prints "Hello, World!"
*/

public class Hello
{
    public static void main( String[] args )
    {
        System.out.println( "Hello, World!" );
    }
}

Toelichting

Het gedeelte tussen /* en */ is kommentaar. Het verdient aanbeveling om programma's waar nodig van commentaar te voorzien. De cruciale term hier is waar nodig: te veel commentaar is net zo irritant als te weinig. Voor iemand die begrijpt waar het programma over gaat en de programmeertaal beheerst, zal goed gestruktureerde programmacode grotendeels voor zichzelf spreken. In dit geval geven we slechts de naam en een globale beschrijving van wat het doet.

Na het kommentaar staat de eigenlijke programmacode, waarin we een nieuwe klasse van objecten beschrijven. Met de uitdrukking public class Hello { } geven we aan dat onze klasse "Hello" heet en voor iedereen toegankelijk (public) moet zijn. Tussen de accolades komen dan de opdrachten te staan die de objecten uit deze klasse moeten kunnen uitvoeren en de gegevens die ze daarvoor nodig hebben. Merk op dat we het programma overzichtelijker hebben gemaakt door de accolades op afzonderlijke regels te zetten, en dat wat er tussen staat in te laten springen.

Onze "Hello"-klasse hoeft slechts één opdracht te kunnen uitvoeren, nl. main() { }. Dit betekent dat hij als een zelfstandig programma opgestart moet kunnen worden, en dan de opdrachten tussen de accolades moet uitvoeren. Ook hier hebben we weer struktuur aangebracht met nieuwe regels en inspringen.

De uitdrukking String[] args tussen de haakjes achter main betekent dat ons programma bij het opstarten gegevens of aanwijzingen van buiten mee kan krijgen; we maken van deze mogelijkheid echter geen gebruik. Vóór main() staan ook enkele belangrijke dingen. Allereerst weer public, waarmee we er voor zorgen dat de opdracht main() van buiten de klasse kan komen. Dit is essentieel omdat het programma zichzelf niet kan opstarten, dat moet van buiten af gebeuren. Daarna staat static, dat er voor zorgt dat de opdracht main() door de klasse zelf wordt uitgevoerd, en niet door een specifiek object uit die klasse. Daarover is hierboven al gesproken: omdat Hello het programma is, zullen we in ons programma nooit meerdere objecten uit die klasse nodig hebben; we geven de opdracht dus aan de klasse zelf. Het woordje void tenslotte geeft aan dat we van main() geen antwoord willen hebben, bv. over hoe het gegaan is.

En dan komen we eindelijk toe aan wat het programma moet doen als het wordt opgestart. En dat is verbazend weinig: het enige wat er gebeurt is dat er een opdracht wordt gegeven aan een andere klasse! Die klasse is System.out, het standaard uitvoerkanaal van onze computer. Meestal zal dat het scherm zijn. En omdat een computer maar één standaard uitvoerkanaal kan hebben, wordt de opdracht weer aan een klasse gegeven i.p.v. aan een specifiek object.

De opdracht die wordt gegeven is println(), m.a.w. "druk een regel af met de gegevens die ik meegeef". En die gegevens staan tussen de haakjes: de tekst "Hello, World!", waarbij de aanhalingstekens aangeven dat hier een letterlijke tekst bedoeld wordt. Let tot slot nog even op de syntax: we geven een opdracht aan een klasse door de klasse-naam, gevolgd door een punt, daarna de opdracht (met tussen haakjes de voor het uitvoeren benodigde informatie), en als afsluiting een puntkomma.

We zullen van dit standaardprogramma eerst een applet-versie gaan maken. Daarna gaan we "Hello, world!" gebruiken als uitgangspunt voor ons eigen programma.

GV 21-02-2003

Terug naar AIgg Java workshop "TaalExperiment"