Aan het werk met Java Lieven Smits
Aan het werk met Java
Platformonafhankelijk programmeren
Aan het werk met Java Lieven Smits
1 Inleiding
• Programmeren• Java als programmeertaal• Java als programmeeromgeving• Handboek• Oefeningen• De werkomgeving op school• Installatie op je eigen pc• Een werkend programma
Aan het werk met Java Lieven Smits
vertaalde machinecode
editor MijnProgramma.java
broncode
compiler
MijnProgramma.classJVM
programmeur
gebruiker
Aan het werk met Java Lieven Smits
1.5 Handboek
http://hoger.deboeck.com/titres/ 120802_1/aan-het-werk-met-java.html
Aan het werk met Java Lieven Smits
2 Objectgeoriënteerd programmeren
• Abstractie• Klassen en objecten• Attributen en gegevenstypes• Methodes• Constructoren• Statische attributen en methodes• Primitieve gegevenstypes• Referentietypes
Aan het werk met Java Lieven Smits
2.1 Abstractie
Aan het werk met Java Lieven Smits
2.3 Attribuut: primitieve types
type doel geheugen extreme waarden
byte geheel getal 1 byte -128; +127
short geheel getal 2 bytes -32 768; +32 767
int geheel getal 4 bytes -2 147 483 648;
+2 147 483 647
long geheel getal 8 bytes -9 223 372 036 854 775 808;
+9 223 372 036 854 775 807
float vlottende komma 4 bytes +/- 2-128; +/-2127
double vlottende komma 8 bytes +/- 2-1024; +/-21023
char alfabetisch karakter 2 bytes –
boolean logische waarde 1 byte waar of onwaar
Aan het werk met Java Lieven Smits
student1
?
2.5 Constructoren
Aan het werk met Java Lieven Smits
student1
familienaamvoornaam
??
2.5 Constructoren
Aan het werk met Java Lieven Smits
2.6 Statische attributen en methodes
code van statische methode
code van normale methode
code van constructor
objectattribuut (niet statisch) neen ja ja
klassenattribuut (statisch) ja ja ja
objectmethode (niet statisch)
neen ja ja
klassenmethode (statisch) ja ja ja
constructor op naam ja ja ja
constructor via this neen neen ja
Aan het werk met Java Lieven Smits
getal
2.7 Primitief type
Aan het werk met Java Lieven Smits
3 Basisconstructies
• Opdrachten
• Veranderlijken
• Toekenningen
• Bewerkingen
• Invoer/uitvoer
• Uitdrukkingen
• Normaal verloop van een programma
Aan het werk met Java Lieven Smits
3.4 Bewerkingenbewerking gebruik betekenis
>> uitdr >> getal verschuif de bits van uitdr zoveel plaatsen naar rechts als getal aangeeft
<< uitdr << getal verschuif de bits van uitdr zoveel plaatsen naar links als getal aangeeft
>> uitdr >>> getal verschuif de bits van uitdr zoveel plaatsen naar rechts als getal aangeeft; hou geen rekening met het teken
& u1 & u2 bereken bit per bit een logische EN tussen de bits van u1 en u2
| u1 | u2 bereken bit per bit een logische (niet-exclusieve) OF tussen de bits van u1 en u2
^ u1 ^ u2 bereken bit per bit een exclusieve OF tussen de bits van u1 en u2
~ ~uitdr bereken bit per bit de logische ontkenning (NIET) van de bits van uitdr
Aan het werk met Java Lieven Smits
3.6 Uitdrukkinguitdrukking waarde
x 1
-x -1
+x 1
x+x 2
x%x 0
x-15 -14
x=3 3
x/2 0
x/2.0 0.5
x+1 4
x=x+1 4
“Ja”+“va” Java
Aan het werk met Java Lieven Smits
4 Controlestructuren
• Voorwaardelijke opdrachten en uitdrukkingen
• Lusopdrachten• Recursieve aanroep van methodes
Aan het werk met Java Lieven Smits
4.1 Voorwaarden
• Vergelijken van twee uitdrukkingen
• Logische bewerkingen
• Algemene vorm
• Voorwaardelijke uitdrukking
• Keuzeopdracht
Aan het werk met Java Lieven Smits
bewerking betekenis
== is gelijk aan
!= is verschillend van
< is strikt kleiner dan
> is strikt groter dan
<= is kleiner dan of gelijk aan
>= is groter dan of gelijk aan
Vergelijkingen
Aan het werk met Java Lieven Smits
Logische bewerkingen
bewerking lees betekenis
&& en is waar als beide leden waar zijn
|| of is waar als minstens een van beide leden waar is
! niet keert de betekenis van het rechterlid om – waar wordt onwaar, onwaar wordt waar
Aan het werk met Java Lieven Smits
Volgorde der bewerkingen
groep bewerkingstekens
unaire operatoren + - !
vermenigvuldiging * /
optelling, concatenatie + -
ongelijkheid < > <= >=
gelijkheid == !=
en &&
of ||
toekenning =
Aan het werk met Java Lieven Smits
4.2 Lusopdrachten
• De while-opdracht
• Genestelde lussen
• Rijen
• De for-opdracht
• De do-opdracht
• Iteraties en lusopdrachten afbreken; labels
• De afgekorte for-opdracht (‘for each’)
Aan het werk met Java Lieven Smits
start
einde
<voorwaarde>voldaan?
voer <reeks1> uit
voer <reeks2> uit
neenja
Aan het werk met Java Lieven Smits
start
einde
<voorwaarde>voldaan?
<opdrachten>
neen
ja
Aan het werk met Java Lieven Smits
int[] score
17
score[0]
13
score[1]
20
score[2]
11
score[3]
13
score[4]
Aan het werk met Java Lieven Smits
start
einde
neen
ja <voorwaarde>voldaan?
voer <opdrachten> uit
Aan het werk met Java Lieven Smits
start
einde
neen
ja
<opdrachten voor>
<opdrachten na>
<voorwaarde>voldaan?
Aan het werk met Java Lieven Smits
4.3 Recursie
• Voorbeeld
• Definitie
• Vervanging van een enkelvoudige recursie door een lusopdracht
Aan het werk met Java Lieven Smits
5 Overerving
• Subtypes
• Overerving van attributen en methodes
• Onderdrukken van methodes
• Abstracte klassen en methodes
• Interfaces
• De klasse Object, stamouder van alle anderen
Aan het werk met Java Lieven Smits
Object
Bestaande klasse
Zelfgemaakte klasse
String MijnKlasse1Number
Short MijnKlasse3MijnKlasse2
extends
Legende:
Aan het werk met Java Lieven Smits
6 Pakketten, afscherming en groepering
1. Gebruik van pakketten
2. Tekst
3. Invoer/uitvoer
4. Toegang
Aan het werk met Java Lieven Smits
6.1 Gebruik van pakketten
• De klassenbibliotheek van de JRE• import• package
Aan het werk met Java Lieven Smits
6.2 Werken met tekst
• String en StringBuffer• Methodes van de klasse String• Methodes van de klasse StringBuffer
Aan het werk met Java Lieven Smits
6.3 Invoer/uitvoer
• Sequentiële en willekeurige toegang
• Bytes en characters
• Bestanden
• Geheugenstromen
Aan het werk met Java Lieven Smits
6.3 Invoer/uitvoerexpressie betekenis
abc alleen de streng “abc”
a[bc] de letter a gevolgd door de letter b of c
[A-Z] een hoofdletter
a? de letter a of de lege streng
a* een opeenvolging van letters a of de lege streng
a+ een opeenvolging van letters a
[A-Z] [a-zA-Z]* een hoofdletter, eventueel gevolgd door een willekeurig aantal letters
. een willekeurig teken
[0-9] [0-9] [0-9]? twee of drie cijfers
Aan het werk met Java Lieven Smits
tekstverwerker
database engine
gegevensbank
tekstbestandtekstbestand
Aan het werk met Java Lieven Smits
6.4 Toegang• Toegangsniveaus van attributen en
methodes
• Toegangsniveaus van klassen en interfaces
• Inwendige klassen– Statische inwendige klassen– Gewone inwendige klassen– Anonieme klassen
• Scope, visibility, lifetime, access
Aan het werk met Java Lieven Smits
6.4 Toegangcharacter stream byte stream
invoer Reader InputStream
uitvoer Writer OutputStream
character stream byte stream
invoer BufferedReader BufferedInputStream
uitvoer BufferedWriter BufferedOutputStream
Aan het werk met Java Lieven Smits
6.4 Toegangcharacter stream byte stream gebruik
DataOutputStream numerieke gegevens (en eventueel ook tekst) in bestanden opslaan
DataInputStream dezelfde bestanden terug lezen
ObjectOutputStream objecten (instanties van klassen) in bestanden opslaan
ObjectInputStream dezelfde bestanden terug lezen
LineNumberReader LineNumberInputStream regelnummers van een invoerstroom tellen en bijhouden
PushbackReader PushbackInputStream eerste letter bekijken vóór de eigenlijke lezing ervan
SequenceInputStream verschillende bytestromen achter elkaar plaatsen alsof het slechts één continue invoerstroom betrof
Aan het werk met Java Lieven Smits
6.4 Toegang
character stream byte stream
invoer CharArrayReader, StringReader ByteArrayInputStream
uitvoer CharArrayWriter, StringWriter ByteArrayOutputStream
Aan het werk met Java Lieven Smits
6.5 Toegangsbeperking
niveau sleutelwoord betekenis
publiek public toegankelijk voor alle andere klassen
beschermd protected toegankelijk voor subtypes van de huidige klasse en voor klassen binnen hetzelfde pakket
pakket (geen) toegankelijk voor klassen binnen hetzelfde pakket
privé private alleen toegankelijk binnen de huidige klasse
Aan het werk met Java Lieven Smits
7 Kwaliteit
• Exceptions• Commentaar en documentatie• Levenscyclus systeemontwikkeling• Domeinklassen• Architectuur• Design patterns• Unit testing• Asserties
Aan het werk met Java Lieven Smits
7.3 De documentatiegenerator Javadoc
tag betekenis
@author gaat vooraf aan de naam van de auteur van een klasse of een onderdeel
@version geeft het versienummer en/of de datum, meestal alleen van een hele klasse
@exception signaleert dat een methode een bepaald type exception kan genereren, en wat daarvan de interpretatie is
@throws synoniem van @exception
@param gevolgd door de naam van een parameter, documenteert de betekenis van een methodeparameter. Nauw verwant hiermee is @return
@return legt de teruggeefwaarde van een methode uit
@see verwijst naar de documentatie van een andere klasse of een ander klasseonderdeel
Aan het werk met Java Lieven Smits
persoon
klant bestelling
7.5 Domeinklassen
Aan het werk met Java Lieven Smits
7.5 Domeinklassen
Aan het werk met Java Lieven Smits
7.5 Domeinklassen
Aan het werk met Java Lieven Smits
gui frontend
database
backofficedomein
7.6 Architectuur
Aan het werk met Java Lieven Smits
7.7 Moduletest met JUnitmethodenaam de test is geslaagd als …
assertEquals de twee parameters gelijke inhoud hebben (zelfs als het verschillende objecten zijn)
assertNotEquals
de twee parameters geen gelijke inhoud hebben
assertSame de twee parameters objecten zijn met hetzelfde adres in het geheugen (dus niet alleen dezelfde inhoud)
assertNotSame de twee parameters verschillende objecten zijn
assertTrue de gegeven logische waarde false is
assertFalse de gegeven logische waarde true is
assertNull de gegeven objectreferentie null is (niet naar een object verwijst)
assertNotNull de gegeven referentie naar een bestaand object verwijst
fail nooit geslaagd – gelijkwaardig met assertTrue(false)
Aan het werk met Java Lieven Smits
8 Bijzondere technieken
• Annotaties
• Abstracte gegevenstypes
• Generische gegevenstypes
• Collections
Aan het werk met Java Lieven Smits
Object 2
Object 3
Object 4
Object 1
Object 5
Object 2
Object 3
Object 4
Object 1
Object 5
aanwijzer aanwijzer
push
8.2 Abstract gegevenstype ‘stack’
Aan het werk met Java Lieven Smits
Collection Map
QueueList
SortedSet
Set SortedMap
8.4 Collections
Aan het werk met Java Lieven Smits
1 432
remove() add()
element()
8.4 Collections: wachtlijn
Aan het werk met Java Lieven Smits
9 Webtoepassingen
• Servers, browsers, HTTP en HTML
• Servlets
• JSP
• Sessies
Aan het werk met Java Lieven Smits
browser webserver
verzoek
antwoord
9.1 Servers, browsers en HTTP
Aan het werk met Java Lieven Smits
9.2 Levenscyclus van een servlet
Aan het werk met Java Lieven Smits
10 Grafische interfaces
• Swing-componenten• Layout management• Event handling• Menus• Graphics• Applets• MVC• Tabellen en bomen
Aan het werk met Java Lieven Smits
xy
Horizontaal (x)
Verti
caal
(y)
10.2 Component: coördinaten
Aan het werk met Java Lieven Smits
java.lang.Object
Bestaande klasse
Zelfgemaakte klasse
java.awt.Component
java.awt.Container
java.awt.Window
MijnVenster
extends
Legende:
java.awt.Frame
javax.swing.JFrame
10.2 Component: overerving
Aan het werk met Java Lieven Smits
gebruiker
run return
openklik toetsselect
klaar sluit klaarklaarklaar
klaar
klassieke,lineairetoepassing
gebeurtenis-gestuurdetoepassing
10.4 Event-driven programming
Aan het werk met Java Lieven Smits
Model
ControllerView
vraag toestand
meld wijziging
gebruikershandeling
bepaal/verandersamenstelling
wijzig toestand
10.7 Model/View/Controller
Aan het werk met Java Lieven Smits
financiën
uitgaveninkomsten
arbeid kapitaal wonen vervoerkleding diversen
verkoopwerkgever huur klima gas+elek
10.8 Boomstructuur
Aan het werk met Java Lieven Smits
11 Beans
• Herbruikbare componenten: rolverdeling• Gebruik van een bestaande bean• Het bestandsformaat jar• Zelf een bean ontwikkelen
– Properties– Events– Bound properties– Constrained properties
• BeanInfo
Aan het werk met Java Lieven Smits
12 Parallel programmeren
• Begrippen
• Timers
• Animatie
• Threads
• Prioriteit en activering
• Synchronisatie
Aan het werk met Java Lieven Smits
straal
X
Y
x1 x0 x2
y1
y0
y2
straal x cos(hoek)
straal x sin(hoek)
hoek
Aan het werk met Java Lieven Smits
uitvoerbaar
tijd van sleep omof einde van andere reden
sleepof andere reden
start
systeembeslissing yield
einde van runactiefdood
inactiefnieuw geblokkeerd
Aan het werk met Java Lieven Smits
uitvoerbaar
synchronized
tijd van sleep omof einde van andere reden
sleepof andere reden
start
systeembeslissing yield
einde van run geblokkeerdop objectactiefdood
krijg sleutel
inactiefnieuw geblokkeerd
Aan het werk met Java Lieven Smits
uitvoerbaar
synchronized
tijd van sleep omof einde van andere reden
sleepof andere reden
start
systeembeslissing yield
einde van run geblokkeerdop objectactiefdood
krijg sleutel
inactiefnieuw geblokkeerd
wachtkamer
wait
notifynotifyAll
Aan het werk met Java Lieven Smits
13 Databases
• SQL
• Java Database Connectivity
• Gegevens opvragen
• Gegevens wijzigen
• Transacties
• Gevorderde technieken
• Hibernate
Aan het werk met Java Lieven Smits
14 Gedistribueerd programmeren
• Algemene probleemstelling
• Webservices
• Call by value en call by reference
• Enterprise JavaBeans
• Spring
Aan het werk met Java Lieven Smits
presentatie
zakelijke logica
gegevensopslag
Aan het werk met Java Lieven Smits
presentatie zakelijke logica opslag
gedistribueerdepresentatie
presentatieop afstand
gedistribueerdelogica
opslagop afstand
gedistribueerdeopslag
Aan het werk met Java Lieven Smits
RekenServerImpl implements RekenServer
public int bereken(int param)
ClientKlasse
...int resultaat = bereken(17);...
RPC-infrastructuur
(eventueel metClientKlasseSkelet)
RekenServerStub implements RekenServer
public int bereken(int param)
netwerkcommunicatie(afgeschermd van programmeur)
gewone methodeaanroep in server-JVMgewone methodeaanroep in client-JVM
Aan het werk met Java Lieven Smits
stateful bean: sessie
1
stateful bean: sessie
2
client 1
client 2
14.4 EJB – stateful beans
Aan het werk met Java Lieven Smits
client 1
client 2client 3
pool van stateless beans
14.4 EJB – stateless beans
Aan het werk met Java Lieven Smits
15 Java op de GSM
• De beperkingen van Java Micro Edition
• Installatie van de programmeeromgeving
• Voorbeeldprogramma
• Installatie op de GSM
• Een spel
Aan het werk met Java Lieven Smits
15.3 Toestanden van een MIDlet
active
paused
destroyed
Aan het werk met Java Lieven Smits
INIT TERM1 RESULTTERM2
cijfercijfer
bewerkingcijfer gelijkteken
wis
15.3 De rekenmachine
Top Related