Saturday, April 1, 2006

Java tutorial - Bouwstenen

Intro|Basics|Elementen|Bouwstenen|Datatypen|Operatoren|Toegangscontrole|Draaiboek|Foutenafhandeling|Objecten|Uitvoeren

Grammatica van de Java code

Leestekens (lexical tokens)

Hieronder vallen benamingen (identifiers), sleutelwoorden (keywords), waarden (literals), operatoren (operators), witruimte (white space) en commentaren (comments). Het is een kunst om op basis hiervan een goede Java applicatie te kunnen schrijven.

Terug naar boven

Benamingen (identifiers)

In de Java code kun je de klassen, variabelen en methoden een (herkenbare) naam geven, zodat je ze elke keer eenvoudig kunt aanroepen. Deze namen worden benamingen genoemd.

Deze benamingen mogen alle letters en cijfers bevatten en bepaalde leestekens, zoals de underscore (_) en valuta symbolen (€, $, £, ¥, etc). Gereserveerde leestekens die onder operatoren vallen zijn vanzelfsprekend niet toegestaan in benamingen.

Er is slechts één voorwaarde: de benamingen mogen niet beginnen met een cijfer. Correcte benamingen zijn:

Auto, alfaRomeo156, $_1000, _één_auto

Ongeldige benamingen zijn:

156sportWagon, een-auto, Merk/Type, gewicht:kilo

Het gebruik van hoofdletters is ook erg belangrijk: alléén de benamingen van de klassen en de constructeur methoden mogen met een hoofdletter beginnen (het is dus niet verplicht, maar wel semantisch correct!). De benamingen van de variabelen en de methoden mogen niet met een hoofdletter beginnen (het is wel mogelijk, maar niet semantisch correct!). Wel kun je hoofdletters gebruiken om de leesbaarheid te bevorderen door van elk deelwoord de eerste letter een hoofdletter te maken. Dit noemen we CamelCase (kamelentoestand .. ). Bijvoorbeeld een variabele dat het merk en type van een auto moet voorstellen kun je autoMerkType noemen. Uiteraard kun je ook bijvoorbeeld auto_merk_type gebruiken, echter CamelCase is sneller te typen en prettiger te lezen.

Let wel, Java is hoofdlettergevoelig, dus de benamingen Auto en auto slaan op verschillende elementen!

Terug naar boven

Sleutelwoorden (keywords)

De sleutelwoorden zijn gereserveerde benamingen die dus niet gebruikt mogen worden om een klasse, variabele of methode te benoemen. Dit zou anders resulteren in compilatie fouten (problemen tijdens het omvormen van de Java code naar bytecode). De sleutelwoorden van Java in alfabetische volgorde zijn:

abstract, assert, boolean, break, byte, case, catch, char, class, continue, default, do, double, else, enum, extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while

Van de sleutelwoorden hierboven zijn strictfp, assert en enum kleine uitzonderingen. De eerste kwam pas sinds Java 1.2 in het pakket terecht, de tweede sinds Java 1.4 en de derde sinds Java 1.5, dus in de oudere versies zou je deze nog wel als een benaming kunnen gebruiken, maar dit is uiteraard af te raden. Java 1.2 en nieuwer wordt overigens ook wel Java 2 genoemd. Java 1.5 wordt ook wel Java 5.0 genoemd.

Naast dit allemaal zijn er ook nog twee gereserveerde benamingen die geen sleutelwoord-functie hebben, maar toch niet als een benaming gebruikt mogen worden, namelijk:

const, goto

Dit zijn sleutelwoorden die in veel andere programmeertalen worden gebruikt, maar niet in Java. Deze sleutelwoorden zijn gereserveerd om de eventuele verwarringen bij de programmeurs te voorkomen.

Tot slot zijn er ook nog drie gereserveerde waarden (literals) die als een sleutelwoord worden aangegeven. In de volgorde van "waar", "onwaar" en "leeg" zijn deze:

true, false, null

Diverse sleutelwoorden worden gespreid in alle volgende hoofdstukken uitgelegd: Datatypen, Operatoren, Toegangscontrole, Draaiboek, Foutenafhandeling en Objecten.

Terug naar boven

Waarden (literals)

Een waarde geeft de inhoud van een variabele aan. Dit kan van alles zijn: cijfers, karakters, booleanse waarden of willekeurige combinaties hiervan. Je kunt zelfs objecten in een variabele stoppen, het gaat hier dan om instanties in een referentie-variabele. Daarnaast is er ook de waarde null dat aangeeft dat een referentie-variabele leeg is (wel gedeclareerd, maar nog niet geinstantieerd).

// De variabele "jouwAuto" wordt gedeclareerd, echter deze is nog leeg.
String jouwAuto;

// De variabele "mijnAuto" wordt gedeclareerd en gevuld met "Alfa Romeo".
String mijnAuto = "Alfa Romeo";

// Laat de inhoud van deze variabelen zien:
System.out.println(jouwAuto); // Dit levert de waarde null op.
System.out.println(mijnAuto); // Dit levert de waarde Alfa Romeo op.

De soorten variabelen die geen objecten maar wel cijfers, karakters of booleanse waarden kunnen bevatten, staan in het hoofdstuk Datatypen uitgelegd.

Terug naar boven

Operatoren (operators)

Wanneer je een beetje goed hebt opgelet tijdens de reken- of wiskundelessen, dan weet je dat onder andere optel-, aftrek-, vermenigvuldig- en deeltekens onder operatoren vallen. Met operatoren kun je dus bepaalde rekenkundige danwel objectmatige handelingen uitvoeren met de variabelen danwel objecten.

De betekenis van verschillende operatoren worden uitvoerig behandeld in het hoofdstuk Operatoren.

Terug naar boven

Witruimte (white space)

De witruimte omvat onder andere spaties, tabs en enters. De spaties zijn noodzakelijk om de leestekens van elkaar te scheiden. De tabs zijn erg handig om de code leesbaar te houden door middel van inspringen op de juiste plaatsen. De enters zijn tevens erg handig om de code leesbaar te houden. Horizontaal scrollen is namelijk veel irritanter dan verticaal scrollen. Een goede leesbaarheid betekent meteen ook een snelle interpretatie en een goede onderhoudbaarheid.

Hoeveel witruimte je ook in de code zal toepassen, de code wordt er niet langzamer van. De compiler negeert de "overbodige" witruimte en perst de Java code gewoon bij elkaar in bytecode die prima leesbaar is voor de machines.

Terug naar boven

Commentaren (comments)

De commentaren zijn stukjes documentatie tussen de code door. Dat kan erg handig zijn om snel inzicht te kunnen krijgen wat de variabelen en de methoden "ook alweer" doen. Ook kan dit een voordeel zijn wanneer je de code van iemand anders probeert te doorgronden. Er zijn drie verschillende soorten commentaren:

/**
 * Dit is een Javadoc commentaar.
 *
 * Deze klasse maakt auto's aan. Wanneer je geen invoer parameters opgeeft,
 * dan wordt er automatisch een standaard auto gemaakt. Je kan ook een auto
 * merk/type opgeven als invoer parameter, dan wordt er een auto gemaakt
 * voldoend aan de merk/type.
 * <p>
 * Deze auto's kunnen starten, stoppen, gasgeven, schakelen en remmen. Je
 * kunt er ook individuen laten instappen en uitstappen. En je kunt ook het
 * verbruik, de snelheid en het aantal vrije zitplaatsen opvragen.
 * @author BalusC
 * @version 1.0
 */
public class Auto {

    // Dit is een een-regelige commentaar.

    // De eigenschappen die voor de hele klasse gelden.
    public static int aantalAutos = 0;

    /* Dit is een meer-regelige commentaar.
     *
     * Deze constructeur maakt automatisch een standaard auto aan en laat
     * de totale hoeveelheid auto's met 1 toenemen.
     */
    public Auto() {
        maakAuto();
        aantalAutos++;
    }

    /* Een meer-regelige commentaar kan ook hele blokken code uitschakelen.
    public Auto(String merkType) {
        autoMerkType = merkType;
        maakAuto();
        aantalAutos++;
    }*/

}

Een Javadoc commentaar begint met een /** en eindigt met */. Het is de bedoeling om daarin "nette" commentaar te plaatsen, want deze kan worden gebruikt door het Javadoc Tool om automatisch een nette HTML documentatie van de code te maken. Van Sun's eigen Java SE staat deze hier.

De een-regelige commentaar begint met een // en wordt vaak tussen de code door gebruikt als een beknopte uitleg van de functie van de variabelen en de methoden. In regel staat deze commentaar direct bovenaan de variabelen en de methoden. Sommige mensen plaatsen de een-regelige commentaar ook weleens aan het einde van een regel.

De meer-regelige commentaar begint met /* en eindigt met */ en wordt vaak gebruikt om bepaalde blokken code te "outcommenten" (uitschakelen), wat erg handig kan zijn bij het testen en debuggen.

Net als witruimte worden de commentaren ook volledig door de compiler genegeerd en dat levert dus geen performanceverlies op of iets dergelijks.

Terug naar boven


In het volgende hoofdstuk worden de verschillende soorten variabelen die verschillende soorten waarden mogen/moeten bevatten uitgelegd: Datatypen.

Copyright - Niets van deze pagina mag worden overgenomen zonder uitdrukkelijke toestemming.

(C) April 2006, BalusC

No comments: