JAVA: een platformonafhankelijke taal - PowerPoint PPT Presentation

java een platformonafhankelijke taal n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
JAVA: een platformonafhankelijke taal PowerPoint Presentation
Download Presentation
JAVA: een platformonafhankelijke taal

play fullscreen
1 / 129
JAVA: een platformonafhankelijke taal
106 Views
Download Presentation
darius-mcdonald
Download Presentation

JAVA: een platformonafhankelijke taal

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. JAVA: een platformonafhankelijke taal Voordelen: • Eén keer het programma schrijven • Eén keer het programma compileren • Het programma op om het even welke computer uitvoeren

  2. Hoe ? Hello.java Compiler Hello.class (byte code) Interpreter Interpreter Interpreter Windows Linux MacOs

  3. Het Java platform Hello.class Java Platform= Java API + Java Virtual Machine Operating System + Hardware

  4. De Java API • Basiscomponenten: numbers, strings, dates, files, threads,… • AWT-Swing • JDBC • Networking • RMI • Servlets – JSP • XML • …

  5. De java software (1.4.0) Ontwikkelaar Java 2 Standaard Edition SDK Compiler API JVM Java 2 Standaard Edition Docs (apart downloaden) Gebruiker Java 2 Standaard Edition JRE API JVM www.java.sun.com

  6. Een programma schrijven Teksteditor NotePad TextPad … www.textpad.com Ontwikkelomgeving Forte (www.java.sun.com) Jbuilder (www.borland.com) VisualAge for Age (www.ibm.com)

  7. Eerste programma public class Hello { public static void main(String[] args) { /* dit is mijn eerste programma */ System.out.println("Goeiemorgen,"); // tekst tonen System.out.println("Goeiemorgen"); } }

  8. Primitieve datatypes • Gehele getallen • byte: -128 … 127 • short: -32.768 … 32.767 • int: –2.147.483.648 … 2.147.483.647 • long: -9.223.372.036.854.775.808 … 9.223.372.036.854.775.807 • Getallen met decimalen • float: 2-128 … 2127 precies tot 6 à 7 decimalen • double: 2-1024 … 21023 precies tot 15 à 16 decimalen • Andere types • char: één teken in Unicode standaard (2 bytes) • boolean: true of false

  9. De naam van een variabele • moet met een letter beginnen • mag geen gereserveerd woord uit Java zijn • iedere variabele binnen een bepaald bereik moet een unieke naam hebben • afspraak in de java wereld: • naam van een variabele begint met een kleine letter • ieder woord na het eerste woord begint met een hoofdletter (bv. aantalSuksPerDoos)

  10. Lokale variabelen public class Hello { public static void main(String[] args) { int aantalKinderen; char geslacht; double wedde,weddeVanMijnVrouw; boolean autoVerzekeringBetaald; } } // merk op: lokale variabelen hebben geen beginwaarde // de initialisatie kan echter bij de declaratie gebeuren

  11. Constante waarden 'M' het karakter M "Hallo" de string Hallo 1 de integer waarde 1 1L de long waarde 1 2478.79 de double waarde 2478.79 2478.79F de float waarde 2478.79

  12. Constanten in een programma public class Hello { public static void main(String[] args) { final double EUROKOERS=40.3399; //zie const in C++ final double CMINCH; double aantal=10.0; CMINCH=2.54; aantalcm=aantal; double aantalinch=aantalcm/CMINCH; System.out.println(aantalinch); } }

  13. Typeconversie:van klein naar groot public class Hello { public static void main(String[] args) { long grootGetal,grootstGetal; int kleinGetal,kleinstgetal; kleinGetal=5; grootGetal=kleinGetal; grootstGetal=10L; kleinstGetal=(int)grootstGetal; } }

  14. Rekenkundige bewerkingen Bewerking Betekenis + optellen - aftrekken * vermenigvuldigen / delen % restbepaling (kan ook op double)

  15. Rekenkundige bewerkingen public class Hello { public static void main(String[] args) { final double CMINCH; int aantalInch=10; double aantalCm; CMINCH=2.54; aantalCm=CMINCH*aantalInch;/* automatische typeconversie */ System.out.println(aantalCm); } }

  16. Verkorte bewerkingen Bewerking Betekenis var+=waarde var=var+waarde var-=waarde var=var-waarde var*=waarde var=var*waarde var/=waarde var=var/waarde var%=waarde var=var%waarde

  17. Voorbeeld:++ public class Hello { public static void main(String[] args) { int kinderen=0; System.out.println(kinderen++); System.out.println(kinderen); System.out.println(++kinderen); } } Resultaat: 0 1 2

  18. Vergelijkingsbewerkingen Bewerking == != > < >= <= Betekenis Gelijk aan Verschillend van Groter dan Kleiner dan Groter dan of gelijk aan Kleiner dan of gelijk aan

  19. Logische bewerkingen Bewerking && || ! Betekenis en (and) of (or) niet (not)

  20. if(1) if (voorwaarde) { … // opdrachten die worden uitgevoerd als // voorwaarde==true } if (voorwaarde) { … } else { … // opdrachten die worden uitgevoerd als // voorwaarde==false }

  21. if(2) public class Hello { public static void main(String[] args) { double temperatuur=5.0; if (temperatuur<=0.0) { System.out.println("Het vriest"); } else { System.out.println("Het vriest niet"); } } }

  22. De ? operator voorwaarde ? resultaatAlsTrue:resultaatAlsFalse public class Hello { public static void main(String[] args) { double temperatuur=5.0; System.out.println(temperatuur <=0.0?"Het vriest":"Het vriest niet"); } }

  23. switch(1) switch (integerwaarde) { … case mogelijkheid n: … break; … default: … }

  24. switch(2) Oefening Schrijf een programma dat gebruik maakt van switch en aan de hand van een integer de naam van een dag in de week (maandag, dinsdag of woensdag) toont, of de tekst weekend voor een zaterdag of zondag. In andere gevallen moet de tekst andere dag worden getoond. Test uw programma

  25. while public class Hello { public static void main(String[] args) { int teller=1; while (teller<=5) System.out.println(teller++); } }

  26. do … while public class Hello { public static void main(String[] args) { int teller=1; do System.out.println(teller++); while (teller<=5); } }

  27. for public class Hello { public static void main(String[] args) { for(int teller=1;teller<=5;teller++) System.out.println(teller); } }

  28. Referentievariabelen • Het type String • Is een class, geen primitief type !!! • Een String variabele is een reference naar een String object • Voorbeeld • TheVoice : merk op dat de String zanger immutable is • Met StringBuffer kan je het object wel wijzigen • Merk tevens de + operatie op

  29. Een programma met String en+ public class TheVoice { public static void main(String[] args) { String voornaam="Eddy"; String familienaam="Wallyvis"; String zanger=voornaam+' '+familienaam; int rangnr=1; zanger=zanger+' '+rangnr; System.out.println(zanger); } }

  30. De Tekens in een String public class TheVoice2 { public static void main(String[] args) { String zanger="Eddy Wallyvis"; for (int teller=0;teller<zanger.length();teller++) System.out.println(zanger.charAt(teller)); } }

  31. String variabelen en == public class Horses { public static void main(String[] args) { String horse="Wilkena Z"; String zh="Wilkena"; zh+=" Z"; String mamaCesar=horse; System.out.println(horse==zh); System.out.println(horse==mamaCesar); } }

  32. String objecten zijn immutable public class TheVoice3 { public static void main(String[] args) { String bv="Eddy Wallyvis"; bv="Wendy weet van Wanten"; bv=bv.toUpperCase(); System.out.println(bv.toLowerCase()); } }

  33. Methodes van String public class Horses2 { public static void main(String[] args) { String horse="Karim des Charpres"; System.out.println(horse.substring(6)); System.out.println(horse.substring(6,8)); System.out.println(horse.lastIndexOf(‘r’)); System.out.println(horse.indexOf("r")); System.out.println(horse.startsWith("Ka")); System.out.println(horse.indexOf(‘C’)); System.out.println(horse.endsWith("res")); System.out.println(horse.toUpperCase()); System.out.println(horse.toLowerCase()); System.out.println(horse.replace(‘ ‘,’_’)); } }

  34. Conversie tussen Strings en primitieve varaiabelen • Van primitieve variabelen naar Strings: double temperatuur=5.0; String tekst=String.valueOf(getal); • Van Strings naar primitieve variabelen String tekst="5.0"; double temperatatuur=Double.parseDouble(tekst); String tekst="7"; int getal=Integer.parseInt(tekst);

  35. Lezen van toetsenbord import java.io.*; public class LeesToetsenbord { public static void main(String[] args) throws IOException {   BufferedReader toetsenbord = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Geef uw naam"); String naam; naam = toetsenbord.readLine(); System.out.println("U bent "+naam); System.out.println("Aantal kinderen:"); String skinderen; skinderen=toetsenbord.readLine(); int kinderen=Integer.parseInt(skinderen); System.out.println("kindergeld :"+kinderen*4000);} }

  36. StringBuffer • StringBuffer objecten zijn mutable public class StrBr { public static void main(String[] args) { StringBuffer leeg=new StringBuffer(); System.out.println(leeg.length()+":"+leeg.capacity()); // default=16 StringBuffer horse=new StringBuffer("Karim"); System.out.println(horse.length()+":"+horse.capacity()); naam.insert(6," des Charpres"); naam.append(", klasse Midden"); naan.delete(6,19); //van 6 tot 18 System.out.println(naam); } }

  37. StringBuffer • Tekens kunnen gelezen en gewijzigd worden: • Lezen: charAt(positie); Schrijven: setCharAt(positie,teken) public class StrbTekens { public static void main(String[] args) { StringBuffer naam=new StringBuffer("germaine_de_coeur_brisee"); for(int teller=0;teller<naam.length();teller++) if (naam.charAt(teller)==‘_’) naam.setCharAt(teller,’ ‘); System.out.println(naam); } }

  38. Arrays • Een variabele declareren die naar een array kan verwijzen: double kwartaalVerkoop[]; //leeg • Een array maken en er met een variabele naar verwijzen: kwartaalVerkoop=new double[4]; 4 mag ook een var. zijn • Kombinatie van de twee acties: double kwartaalVerkoop=new double[4]; • Twee vormen van declaraties: • double kwartaalVerkoop[], totaleVerkoop; //1 array • double[] kwartaalVerkoop, totaleVerkoop; //2 array’s

  39. Aantal elementen van een array public class AantalEl { public static void main(String[] args) { double kwartaalVerkoop[]=new double[4]; System.out.println(kwartaalVerkoop.length); } }// length is hier per uitz. geen method, maar een property

  40. Array initializer public class ArrInit { public static void main(String[] args) {int dagenPerMaand[]={31,28,31,30,31,30,31,31,30,31,30,31};} } 0 1 2 3 4 5 6 7 8 9 10 11

  41. Array elementen Wat is het resultaat van volgend programma? public class ArrEl { public static void main(String[] args) { double kwartaalVerkoop[]=new double[4]; for (int tel=0;tel<kwartaalVerkoop.length;tel++) System.out.println(kwartaalVerkoop[tel]); } }

  42. 2D-arrays Wat is het resultaat van volgend programma? public class TweedArr { public static void main(String[] args) { char vierOp1Rij[][]=new char[6][7]; for (int rij=0;rij<vierOP1Rij.length;rij++) for(int kolom=0;kolom<vierOp1Rij[0].length;kolom++) vierOp1Rij[rij][kolom]=‘ ‘; } }

  43. Objecten, classes • Een object stelt een echt-wereld object voor (bankrekening, televisie, klant) • Object heeft eigenschappen (properties) en handelingen (methods) • Class is prototype van soortgelijke objecten • Class beschrijft properties en methods van soortgelijke objecten • De naam van een class moet met een letter beginnen • Mag geen gereserveerd woord uit Java zijn • Iedere class binnen een bepaald bereik moet een unieke naam hebben • Afspraak: • Naam van een class begint met een hoofdletter • Ieder woord na het eerste woord begint met een hoofdletter

  44. Voorbeeldklasse • Class Rekening: • Properties:rekeningNR,saldo,houder • Methods:storten,afhalen • Subclasses • ZichtRekening • Properties:maxKrediet • Methods:afhalen,overschrijven • SpaarRekening • Properties:aangroeiIntrest • Methods:afhalen,overschrijven • HuwelijksRekening • Methods:storten (met maximum) (overriding) • Java kent alleen single inheritance(= een klasse kan maar een base klasse hebben, geen multiple inheritance zoals C++, alhoewel …

  45. Een base en afgeleide klassen • Eén publieke class per source file • public class Rekening {…} • public class ZichtRekening extends Rekening {…} • public class SpaarRekening extends Rekening {…} • public class HuwelijksRekening extends Rekening {…}

  46. Objecten en object variabelen Voorbeeld public class Bankprog { public static void main(String[] args) { Rekening mijnRekening=new Rekening(); Rekening onzeRekeningen[]=new Rekening[10]; for(int tel=0;tel<onzeRekeningen.length,tel++) onzeRekeningen[tel]=new Rekening();} }

  47. Object variabelen en null public class BankProg { public static void main(String[] args) { Rekening mijnRekening=null; if (mijnRekening==null) System.out.println("niet verbonden"); else System.out.println("verbonden"); mijnRekening=new Rekening(); if (mijnRekening==null) //starten garbage collection System.out.println("niet verbonden"); else System.out.println("verbonden"); } }

  48. Property-waarden bijhouden • Per property een variabele in de class declareren • Ieder object van de class krijgt zijn eigen variabelen • De variabelen private declareren (encapsulation) • Class code kan ze wijzigen • Buitenwereld kan ze niet wijzigen • Variabelen van een class krijgen een beginwaarde

  49. Property-waarden invullen en ophalen • setXxx() routine in de class • Om de private variabele in te vullen door de buitenwereld • De routine public declareren zodat de buitenwereld de routine kan aanspreken • Parameter van setXxx() routine is invulwaarde property • Routine kontroleert parameter op geldige waarde • getXxx() routine in de class • Zodat de buitenwereld de routine kan aanspreken • De routine public declareren zodat de buitenwereld de routine kan aanspreken • Resultaat van getXxx() routine is de waarde property

  50. Property-waarden invullen en ophalen Public class BankProg { public static void main(String[] args) { Rekening groteRekening=new Rekening(); Rekening kleineRekening=new Rekening(); groteRekening.setSaldo(100000.0); kleineRekening.setSaldo(500.0); System.out.println(groteRekening.getSaldo()); System.out.println(kleineRekening.getSaldo()); } }