JAVA - kloetje.nl

advertisement
JAVA - edX - Introduction to programming with Java
JAVA
REPRESENTATION OF PROGRAMS
source code
datgene dat je als java code intypt
machine code is datgene dat over is als de source code gecompileert is naar machine code. Dat gebeurt door een
compiler. Er moeten dus meerdere compilers zijn, voor elke source-code-taal een.
JVM
= Java Virtual Machine Code
JRE
= Java runtime Envirement = ( JVM + class libraries )
JDK
= Java Development Kit = (compilatie + source code + JVM + class libraries)
WORA
= Write Once, Run Anywhere
Interpreter
programma's moeten vertaald worden naar machine taal
PROGRAMMAS, PROCESSEN & CONVENTIES
program
Een "programma" is de opname van de berekening, het is tekst dat dienst doet als instructies voor de
computer. Een programma is een string, een reeks van characters en kan daardoor als data gezien worden
(Static view). Het kan ook als invoer dienen voor een ander programma en dan weer de tekst doorgeven
als output. Dat doet een compiler. Het is gerelateerd aan applicatie en algoritme.
applicatie
of app, als we spreken van een specifiek programma dat iets aparts doet.
algoritme
als een specifiek strategie gevolgd wordt om een probleem op te lossen. Hetzelfde algoritme kan in
meerdere en verschillende programmeertalen gebruikt worden.
compiler
is een programma dat de source code verwerkt en object code als output heeft. Daardoor kan het op de
harde schijf opgeslagen worden. Omdat we weten hoe strings in binary vorm opgeslagen kunnen worden
kunnen we deze vorm opslaan.
process
is een programma dat uitgevoerd wordt, in een programma lopen een of meerdere processen als het wordt
uitgevoerd. Dat noemt men de Dynamic view van een programma, zijn de instructies.
constructor
is eigenlijk een creatie en declaratie in een opdracht. Is een bepaald soort methode om van een klasse
een object te maken. Bv: Klassenaam objectnaam = new Klassenaam();
implementati invoeren
e
initialisatie
is het toewijzen van een waarde aan een variabele
Conventies
Klassenamen beginnen altijd met een hoofdletter.
Objectnamen, variabelen, attributen en methoden beginnen altijd met een kleine letter
In de Constructor naam staat de Klassenaam die ook weer met een hoofdletter begint.
Bij lange namen gebruik camelcase en geen underscores.
Camelcase is een hoofdletter in de naam gebruiken als er normaal een nieuw woord zou beginnen, bv:
voorbeeldVanCamelcase
Namen van CONSTANTEN worden weergegeven in hoofdletters.
Geen gereserveerde Java woorden gebruiken voor klasses, methoden of variabelen.
NULL
geeft aan dat er wel gedeclareerd is maar nog geen waarde aan een object is toegekend.
Achter een methode moet altijd (); staan ook bij een constructor (want dat is ook een methode)
PROGRAMMEREN - BASIS
starten met bibliotheek opvragen
import verkiezingen.Stemmachine;
de klasse aanmaken, geeft
toegang aan
Deze moet er altijd in staan !!
public class Voorbeeld1{
declaratie ve stringvariabele
public static void main(String[] args){
String uitslag;
Pagina 1 van 10
JAVA - edX - Introduction to programming with Java
declaratie ve variabele van het
type Stemmachine en heeft de
naam machine1
Stemmachine machine1;
aanmaken (constrcutor)
machine1 = new Stemmachine();
declareren en aanmaken in één
regel (constrcutor)
Stemmachine machine1 = new Stemmachnie();
De methode zetAan() van het
object machine oproepen
machine1.zetAan();
De methode stem() aanroepen van
object machine en gelijk vullen
met een string
machine1.stem("Wouter Bos");
uitslag = machine.geefUitslagPerPartij();
De inhoud van de variabele uitslag
wordt als waarde geprint op een
nieuwe regel. System.out > print
naar een message box.
System.out.println(uitslag);
sluiten main
sluiten class
}
}
declareren
aangeven welk type variabele je gaat gebruiken en welke naam deze hebben.
maken
Het aanmaken van nieuwe variabelen met new.
declareren én maken
in 1 regel declareren en aanmaken van een variabele.
initialiseren
het toewijzen van een bepaalde waarden aan je variabelen.
methode aanroep
object.methodenaam(parameterlijst);
Achter een methode aanroep moet altijd () gebruikt worden !!!!
methode aanroep is als volgt:
bv: public void stem(String naam)
1. public > eerst hoe de toegang is public of pricate
2. void > geeft aan wat de terugkeerwaarde is, bij void is er geen terugkeerwaarde
3. stem > is de naam van de methode
4. (String naam) > zijn de parameters van de methode
package
Een package bestaat uit een groep klassen die op de een of andere manier bij elkaar horen.
this
Voor een gegeven object is this een referentie naar zichzelf. Een attribuut is tijdelik onzichtbaar in een
methode waar een formele parameterdezelfde naam heeft als het attribuut, door this te gebruiken wordt
het attribuut toegankelijk.
Constructor
is een speciaal soort methode om een object te maken van een klasse, denk aan ()!!
aanroep
new Klassennaam(parameterlijst);
de aanroep levert een instantie van klasse op: een object
voorbeeld:
Kandidaat arjan;
arjan = new Kandidaat("Arjan Kok", "Breda");
een klassenaam begint altijd met een hoofdletter en het is gebruikelijk om geen underscores te gebruiken.
Pagina 2 van 10
JAVA - edX - Introduction to programming with Java
Opbouw JAVA programma in 5 stappen (stap 1 en 3 hoeft niet altijd aanwezig te zijn)
packagedeclaratie
en importopdrachten
klasse creatie
en declaratie
(en eventueel
attribuut
declaraties)
package naampackage;
import packagenaam.klassenaam.enumNaam;
/** documentatie
* hier komt de tekst en uitleg over het programma
* zodat het duidelijk en leesbaar is voor andere programmeurs
*/
public class VoorbeeldClass1
{
private String attribuut1;
methodedefinitie(s)
voorbeelden
public int add(int a, int b) {
System.out .println("De som is
: "+ (a+b));
return (a+b);
}
public boolean testAttribuut1(String x) {
return (x.equals(attribuut1));
}
public boolean setAttribuut1(String oud, String nw) {
if (testAttribuut1(oud))
{
attribuut1 = nw;
klasse
definitie
System.out .println(canDrive);
return true;
}
else return false;
}
}
public static void main(String[] args) {
VoorbeeldClass1 myVoorbeeldClass1 = new VoorbeeldClass1();
public Rekening(String naam, int nummer){
this.naam = naam;
this.nummer = nummer;
}
methode main
constructor >
constructor >
hier verwijzen
naam en nr naar
de attributen vd
nieuwe rekening,
zonder this.
Zouden ze naar de
waarden vd
parameters
constructor >
wat doen >
Calculator myCalculator = new Calculator();
myCalculator.add(5, 7);
object.methodenaam(parameterlijst);
// je hoeft niet alle gemaakte methoden op te roepen in de main, ze kunnen ook voor
een subklasse gemaakt zijn.
}
afsluiten
}
VERGELIJKINGEN
Er zijn 2 soorten variabelen, het type bepaald de manier van werken:
Primitief type
Referentie type
ARITHMETIC OPERATORS
Operator
gebruik van operatoren als + of *, zie arithmetic/rekenkundige operators
het aanroepen van een methode
(rekenkundige)
eigen
Description
+
optellen
Addition operator - Adds operands on both sides of the operator
-
aftrekken
Subtraction operator - Subtracts the right hand operand from the left hand operand
*
keer
Multiplication operator - Multiplies operands on both sides of the operator
/
delen
Division operator - Divides the left hand operand by the right hand operand
Pagina 3 van 10
JAVA - edX - Introduction to programming with Java
%
rest bij deling
++
1 ophogen
Modulus operator - Divides the left hand operand by the right hand operand and returns
remainder
Increment operator - Increases the value of operand by 1
--
1 verlagen
Decrement operator - Decreases the value of operand by 1
RELATIONAL OPERATORS bij vergelijken van primitieve typen, geeft TRUE of FALSE
Operator
eigen
Description
==
gelijk aan
!=
ongelijk aan
>
groter dan
<
kleiner dan
Checks if the values of the two operands are equal or not, if yes then the condition
becomes true.
Checks if the values of the two operands are equal or not, if values are not equal then
the condition becomes true
Checks if the value of the left operand is greater than the value of the right operand, if
yes then the condition becomes true.
Checks if the value of the left operand is less than the value of the right operand, if yes
then the condition becomes true.
Checks if the value of the left operand is greater than or equal to the value of the right
operand, if yes then the condition becomes true.
Checks if the value of the left operand is less than or equal to the value of the right
operand, if yes then the condition becomes true.
>=
<=
groter of gelijk
aan
kleiner of gelijk
aan
LOGICAL OPERATORS
Operator
(logische)
eigen
Description
&&
en
AND Operator. If both boolean operands are true, the condition becomes true
||
of
OR Operator. If any of the boolean operands is true, the condition becomes true
niet in
NOT Operator. Reverses the value of a boolean operand.
volgorde
als ze alle drie in een expressie gebruikt worden, krijgt ! Voorrang, daarna && en als
laatste ||
!
! > && > ||
ASSIGNMENT OPERATOR
Operator
=
Description
toewijzen / wordt
Simple assignment operator. It assigns values from right side operands to left side
operand
INCREMENT X
Operator
(toewijzen)
eigen
(een variabele "ophogen" kan met …. X +=1;)
eigen
Description
x += 1;
optellen
Addition - Adds c++ > tel 1 bij c op
x -= 2;
aftrekken
Subtract - Subtracts
x *= 3;
keer
Multiply
x /= 4;
delen
Divide
rest bij deling
Modulus
x %= 5;
c-- > trek 1 van c af
EXPRESSIONS AND OPERATIONS
als…dan
if ([voorwaarde]) { [conditie als waar]; } else { [conditie als onwaar]; } de else
hoort bij de dichtstbijzijnde if tenzij het duidelijk anders wordt aangegeven door gebuik van haakjes.
als…dan in een
regel (ternary)
stel :
int fuelLevel = 3;
char canDrive = (fuelLevel > 0) ? 'Y' : 'N';
System.out.println(canDrive);
resultaat:
repeat
Het resultaat hier wordt Y, hier wordt de als…dan lus in een regel verwerkt bij het
declareren van de variabele.
while ([voorwaarde boolean]) { [conditie als waar/statements]; }
herhalen tot een doel is bereikt, expressed met Boolean
repeat met
teller
for ([variabele]; [voorwaarde]; [update statement])
{[wat moet je doen];}
hetzelfde blijven (mbv een teller) doen tot een teller een een bepaalde waarde heeft. Het update statement
wordt na de for loop uitgevoerd en niet ervoor, dus na hetgeen je moet doen als het waar is.
switch
statement
voorbeeld:
int keuze = 2;
switch (keuze) {
case 1: System.out .prtintln("je keuze was 1");
break;
case 2: System.out .prtintln("je keuze was 2, echt waar");
break;
Pagina 4 van 10
JAVA - edX - Introduction to programming with Java
default: System.out .prtintln("je hebt niet gekozen");
break;
}
Hier wordt de regel "je keuze was 2, echt waar" weergegeven. De break heb je nodig om uit het switch
statement te gaan nadat er voldaan is aan de conditie. Zonder de break zal Java door blijven gaan met
zoeken of er voldaan wordt aan een van de conditie en neit meer stoppen. Default wprdt gegeven als er
geen waarde voldoet aan de waardewn die bij case zijn opgegeven.
expressie
Een expressie is een constante (final) of een andere variabele of een resultaat methodeaanroep of een
combinatie van deze met opratoren.
ARRAYLIST
Wordt gebruikt om aan een reeks objecten van een bepaalde klasse te kunnen refereren, er mogen geen primitieve types
instaan, dus geen integers of doubles.
ArrayList<Schelp> schelpen = new ArrayList<Schelp>();
add (T element) toevoegen element van type T, het element moet wel al gecreëert zijn.
creatie en toevoegen kan in één regel:
bv: verzameling.add(new Kandidaat("Femke", "Amsterdam"));
get(int i): T
size(): int
for-each
of: verzameling.add(naamKand) als de variabele naamKand al eerder gedeclareerd
en creeert was.
levert het i-de element (start vanaf 0)
geeft het aantal elementen in de lijst, begint met 1 (het aantal van een array is altijd <
dan de size en nooit <=)
for (type naam: lijst){ // doe iets}
Laat iets gebeuren, doen voor elke van de elementen in de arraylist.
bv: for (Kandidaat k: kandidaten){ aantalStemmen =
aantalStemmen+k.getAaantalStemmen();}
hierin is type = Kandidaat
naam = k
>> een variabele
lijst = kandidaten
For-each is gemaakt om de hele verzamleing te onderzoeken.
ARRAYS
kenmerken
begint altijd met 0 als eerste plek, dus 0, 1, 2, 3, 4, ………, n
Een array kan van waarden verschillende typen bevatten, maar in één array hebben alle waarden hetzelfde
type.
Een array kan verschillende lengtes hebben, maar als de lengte van een array is vastgesteld kan deze niet
meer worden gewijzigd, zonder de opgeslagen elementen te verliezen. Bij het aanmaken van een array
wordt de lengte van de array al bepaald.
De elementen van een array kunnen via indices benaderd worden.
Een array naam met een index kan gebruikt worden zoals een integer variabele gebruikt wordt.
length()
declareren
aangeven welk
type en welke
naam .
maken
a[2]
gebruikt length() om het aantal attributen in een array te bepalen, zodra de array
gemaakt is, ligt deze waarde vast en kan hij niet meer gewijzigd worden.
staat hier voor de 2e index uit de array, dus 0, 1, 2 > het 3e element in de array
Pagina 5 van 10
JAVA - edX - Introduction to programming with Java
maken en
declareren
er zijn de
volgende
mogelijkheden en
de rode worden
het vaakste
gebruikt.
anArrayOfXxxx
is hier de naam
van de array. Bv
int[] staat voor
het type van de
elementen.
initialisatie
Gebeurt als volgt voor bv een numeriek array: a = new int[5]; Deze array heeft een maximale lengte
van 5 elementen. Is het toewijzen van de waarden aan een variabele of array.
Alles in een
keer
Kan in een regel als volgt voor bv een numeriek array: int[] a = new int[4]; Deze array heeft een
lengte van 4 elementen en de Indices gaan van 0 t/m 3. a[0] is hier het eerste element en a[3] het
laatste.
toewijzen van
Een array naam met een index kan gebruikt worden zoals een integer variabele gebruikt
waarden aan
wordt. Bv:
elementen
maken, declareren én toewijzen (initialiseren) van de elementen kan ook in één regel gebeuren, op de
volgende wijze: int[] a = {2, 0, 1, 5}; Het gebruik van het keyword new is nu niet nodig.
kenmerken
Een String is niet hetzelfde als een Char array. Je kunt wel een String naar een Char array conventeren en
vise versa.
Een element van een array kan zelf ook weer een array zijn. Dat wordt een bi-dimensionale array of
multi-dimensionale array genoemd.
Conclusie
Bij de declaratie wordt de lengte van de array vastgesteld en kan niet meer worden gewijzigd. Alle
elementen zijn van hetzelfde type en de elementen zelf kunnen ook weer uit een of meerdere arrays
bestaan.
ARRAYLIST
Wordt gebruikt om aan een reeks objecten van een bepaalde klasse te kunnen refereren, er mogen geen primitieve types
instaan, dus geen integers of doubles. Is een klasse om een verzamleing mee weer te geven, de objecten in deze
verzameling moeten allemaal van het zelfde soort zijn en bestaat dus uit een serie data elementen.
size()
gebruikt size() om het aantal elementen op te vragen.
ArrayList<T> ArrayList<Schelp> schelpen = new ArrayList<Schelp>();
add (T element) toevoegen element van type T, het element moet wel al gecreëert zijn.
creatie en toevoegen kan in één regel:
bv: verzameling.add(new Kandidaat("Femke", "Amsterdam"));
of: verzameling.add(naamKand) als de variabele naamKand al eerder gedeclareerd
en creeert was.
levert het i-de element (start vanaf 0)
get(int i): T
size(): int
for-each
geeft het aantal elementen in de lijst, begint met 1 (het aantal van een array is altijd <
dan de size en nooit <=)
for (type naam: lijst){ opdrachten; }
Laat iets gebeuren, doen voor elke van de elementen in de arraylist.
bv:
for (Kandidaat k: kandidaten){
aantalStemmen = aantalStemmen + k.getAaantalStemmen();
}
hierin is type = Kandidaat
naam = k
>> een variabele
lijst = kandidaten
For-each is gemaakt om de hele verzamleing te onderzoeken.
ARRAYS, ARRAYLIST & FOR LOOPS
For Loop
voert een statement uit in een bepaalde volgorde, bv het veranderen van de waarden van de elementen in
een array, dit noemt men Map:
Pagina 6 van 10
JAVA - edX - Introduction to programming with Java
Enhanced For Om door een array heen te lopen met een loop vanaf index 0 tot en met het einde van de array is zo
Loop
algemeen dat daar een speciale For Loop voor is gemaakt. De Enhanced For Loop, hier wordt de variabele
elem gebruikt. De betekenis van dit stukje codering is gelijk aan de codering van optie 1 en optie 2. Dit
noemt men Reduce:
Mapreduce
MapReduce kan in korte tijd veel data verwerken doordat het een grote taak opsplitst in deeltaken. Die
deeltaken worden over meerdere computers verdeeld. Wordt veel gebruikt bij Big Data.
DATA
Flip Flop
Bit
kan maar 2 waarden hebben, 0 of 1. Kan 1 bit aan informatie opslaan. 1 flip flop = 1 booleon. Alles kan
terug gebracht worden naar 0 en 1
1 flip flop
Byte
is 8 bits, java gebruikt een unicode mapping van 16 bits. Heeft 256 combinaties (2 tot de macht 8) bv
getallen van 0 t/m 255
nibble
Een nibble is een groepje van 4 bits
DATATYPEN
Datatype:
integer
type
Omschrijving
byte
bestaan uit 8 bits en geven de getallen -128 tot 127
short
bestaan uit 16 bits en geven de getallen -32768 tot 32767
int
bestaan uit 32 bits en geven de getallen meer dan 2 biljoen
long
bestaan uit 64 bits en geven de getallen meer dan 2 biljoen
float
plus en min
Primitieve
datatypen
single-prcecision 32-bit EEE 754 floating point. Is een datatype dat nummers met
decimalen (floating point number) opslaat in JAVA en gebruikt 32 bits.
double
double-prcecision 64-bit EEE 754 floating point. Is een datatype dat nummers met
decimalen opslaat in JAVA en gebruikt 64 bits. Altijd gebruiken !!
10101010b=170 en 01010101=85 horen bij elkaar > 85 + 170 = 255 geven een plus en min getal, min
wordt aangegeven met een b achter de 8 bits codering
boolean
voor true of false, als er geen waarde is toegewezen is het altijd false.
char
vertegenwoordigd een enkelvoudig teken / single character'met single quotes insluiten
integers
byte
short
int > wordt het vaakste gebruikt
long
reals
float
double > wordt het vaakste gebruikt
Referentie
datatypen
String
een string is een reeks tekens achter elkaar. Een string is eigenlijk ook een object. Een
string is immutable, niet veranderbaar, je maakt of een nieuw object of je wijst naar het
object waar de string al instaat. Met equals kun je strings vergelijken.
Java klassen
KLASSEN, OBJECT en VARIABELEN schematisch weergeven
schematisch
weergeven
variabelen (rechte
hoeken)
object (ronde
hoeken)
Pagina 7 van 10
JAVA - edX - Introduction to programming with Java
de string "rood" in de variabele is eigenlijk ook weer een object. Dit zou ook aangegeven kunnen worden als
een "apart" object met ronde hoeken. Indien dit voorkomt op tentamen wordt daarin aangegeven op welke
manier dit in deze schema's weergegeven moet worden.
klassediagram
Een klasse is een beschrijving van gelijksoortige objecten. De klasse beschrijft:
klassenaam
over welke soort objecten gaat het
attributen
welke gegevens beheerd worden
types
wat voor gegevens het zijn
methoden
welk gedrag kan worden vertoond
Heeft altijd dezelfde naam als de klasse. Hoe een instantie wordt gemaakt, altijd
maken. In de constructor staat altijd een waarde voor alle attributen, op die manier
krijgen ze een beginwaarde.
final en/of static
als bij een declaratie van een attribuut static en/of final staat, dan is het een klasse
attribuut. En moet het onderstreept weergegeven worden in het klassediagram.
KLASSE
Definitie van
een klasse
[package declaratie]
importopdrachten
toegang class klassenaam [extends klassenaam] {
attribuutdeclaraties
constructordefinities
methodedefinities
}
Data Hiding: Attributen zijn niet direct toegankelijk maar alleen maar opvraagbaar via methoden. Get is
opvragen en Set is wegschrijven cq wijzigen
Overerving:
GUI GEBRUIKERSINTERFACES
property
Jframe
Tonen ve
Frame
defaultCloseOpera moet ALTIJD gelijk zijn aan EXIT/EXIT_ON_CLOSE: zorgt ervoor dat bij het
tion
venster/frame gesloten wordt, de applicatie ook stopt.
title
Altijd invullen, geeft de titel van het fram aan.
ContentPanel >
moet op "Absolute Layout / (absoluut)" staan, dan kun je achteraf het scherm nog van
Layout
positie veranderen.
Op de volgende manier kunnen we een venster genaamd BasiFrame laten zien op het scherm:
public class BasisMain {
public static void main(String[] args) {
BasisFrame gui = new BasisFrame();
gui.setVisible(true);
Pagina 8 van 10
JAVA - edX - Introduction to programming with Java
}
}
Eerst wordt het scherm gedeclareerd en aangemaakt, daarna moeten we nog vertellen dat we het scherm
willen laten zien. Daar zijn dus 2 aparte classes voor nodig, bv BasisFrame en BasisMain.
GUI ARCHITECTUUR
interfacelaag
is een laag met klassen die de communicatie met de gebruiker verzorgen (bv Frame en het aanroepen van
dat frame), hoe ziet het eruit.
domainlaag
is de laag met klassen die het deel van de werkelijkheid modelleren.
architectuur
Objecten van een GUI kunnen gebruik maken van object(en) uit de domeinlaag
Objecten uit de domeinlaag mogen nooit gebruik maken van objecten uit de GUI-laag
Door de architectuur in lagen zijn domeinklassen en GUI-klassen ontkoppeld: bij dezelfde
domeinlaag kunnen meerdere GUI’s gemaakt worden
Aandachtspu
nten bij
werken met
GUI
GUI bevat vaak een attribuut dat verwijst naar een object uit de domeinlaag
Visuele componenten moeten waarden krijgen via domeinobjecten: meestal in methode mijnInit()
Events moeten afgehandeld worden
Ingevoerde of geselecteerde waarde moet gelezen worden: getText(), getSelectedItem() of
getSelectedIndex(). Let op alle velden die je uitleest zijn strings.
Gelezen waarden zijn Strings (getallen ook!!); vaak is conversie nodig
In interfacelaag moet niet gerekend worden. Voor een GUI moeten altijd 2 klassen gemaakt worden, een
voor de opbouw van het scherm en een voor het aanroepen van dat scherm. De GUI doet alleen het
grafische deel, geen ectra functionaliteit hier toevoegen en niet laten rekenen.
GUI & PACKAGES
Lagen in
aparte
packages
de verantwoordelijkheid van Klassen zijn klein, een GUI-klasse is alleen verantwoordelijkheid voor de visuele componenten.
De verantwoordelijkheid van een methode mag nooit groter zijn dan een enkele taak.
Pagina 9 van 10
JAVA - edX - Introduction to programming with Java
Aandachtspu
nten bij het
werken met
een GUI
GUI bevat vaak een attribuut dat verwijst naar een object uit de domeinlaag
Visuele componenten moeten waarden krijgen via domeinobjecten: meestal in methode mijnInit()
Events moeten afgehandeld worden
Ingevoerde of geselecteerde waarde moet gelezen worden: getText(), getSelectedItem() of
getSelectedIndex()
Gelezen waarden zijn Strings (getallen ook!!); vaak is conversie nodig
Voorbeeld
van een GUI
VARIABELEN
variabelen
samenvatting:
Pagina 10 van 10
Download