Aan het werk met JavaLieven Smits Aan het werk met Java Platformonafhankelijk programmeren.

Post on 14-Jun-2015

216 views 0 download

Transcript of Aan het werk met JavaLieven Smits Aan het werk met Java Platformonafhankelijk programmeren.

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