Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Programmeren in Java W. Oele
4 september 2015
W. Oele Programmeren in Java
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Even voorstellen
Naam: Wessel Oele(39) Email:
[email protected] Website: http://med.hro.nl/oelew
W. Oele Programmeren in Java
Paradigma’s
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Programmeren in Java
Kop van Zuid Rotterdam, 3 juni 2007
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Overzicht van modules programmeren in Java
In totaal 4 modules programmeren (eerste jaar) Bij elkaar 8 studiepunten waard. Mis de boot dus niet!
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Tinpro01-1: Programmeren in Java 1 Inhoud: Korte introductie in programmeertalen en paradigma’s De taal Java Wat is programmeren? Sourcecode, bytecode en binaries Compilers Elementaire taalconstructies Methodes Arrays
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Programmeren in Java 2 Inhoud: Classes en objecten Class deriving Overloading Polymorphisme Method overriding Abstract classes Interfaces E.v.a.
W. Oele Programmeren in Java
Inhoud
Paradigma’s
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Programmeren in Java 3
Inhoud: Gedeeltelijke herhaling programmeren 1 en 2 Werken met de Java API: G.u.i.’s Exception handling Concurrency Synchronization
W. Oele Programmeren in Java
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Programmeren in Java 4
Inhoud: Introductie datastructuren List (single & double linked) Queue Stack Hash-table Tree
W. Oele Programmeren in Java
Paradigma’s
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Overzicht Jaar 1: Java basis Java objectori¨entatie Java toepassen datastructuren Jaar 2: design patterns (ontwerpen) theoretische informatica functioneel programmeren 1 functioneel programmeren 2
W. Oele Programmeren in Java
Paradigma’s
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Programmeren in Java 1
Modulecode: Tinpro01-1 Beheerder: W. Oele Leermiddelen: Modulewijzer (http://med.hro.nl/oelew) Boek: Schaum’s outlines Boek: Introduction to Java programming Software: Java Development Kit (JDK), http://www.javasoft.com Eventueel: Editors zoals Emacs, VI(M), notepad++ of andere Hersenen Houding
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Toetsing
Practicumopdrachten Opdrachten geven recht op deelname aan het tentamen Dienen in de les getoond te worden bij docent of assistent Alle opgaven dienen te zijn goedgekeurd, voordat aan het tentamen mag worden deelgenomen
Schriftelijk tentamen aan het eind van deze module Tijdsduur: 90 minuten Gesloten boek Op papier
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Deze les
Korte introductie in programmeertalen en paradigma’s De taal Java Wat is programmeren? Sourcecode, bytecode en binaries Compilers Een eerste programma
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Programmeertalen
http://en.wikipedia.org/wiki/List_of_programming_ languages http://www.tiobe.com/index.php/content/paperinfo/ tpci/index.html
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Programmeertalen COMBINATORISCHE LOGICA
1930 CHURCH−TURING these
LAMBDA−CALCULUS
TURINGMACHINE 1940
ASSEMBLERTALEN
1950
FLOW−MATIC FORTRAN ALGOL 60
COBOL
1960
LISP
BASIC SIMULA
PL1 ALGOL68 1970
FORTRAN IV
PROLOG
PASCAL C FP
MODULA
FORTRAN 77 ADA
1980
SMALLTALK OBERON
ML
C++
SCHEME
EIFFEL QBASIC 1990
MIRANDA
DELPHI
BABEL:
VBASIC FORTRAN 90 SGML FORTRAN 95
ADA 95
HTML
JAVA
VMRL
C# JAVA5.0
XML 2000
VBASIC.NET IMPERATIEF
W. Oele Programmeren in Java
OBJECT−GEORIENTEERD
HASKELL
CLEAN GUILE
LEDA
HASKELL98 FUNCTIONEEL
LOGISCH
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Geschiedenis
Jaren ’30: wiskundige basis moderne computers
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Geschiedenis
Jaren ’30: wiskundige basis moderne computers Jaren ’50: eerste low level assemblertalen
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Geschiedenis
Jaren ’30: wiskundige basis moderne computers Jaren ’50: eerste low level assemblertalen Jaren ’60: nette wiskundige basis voor ontwerp programmeertalen
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Geschiedenis
Jaren ’30: wiskundige basis moderne computers Jaren ’50: eerste low level assemblertalen Jaren ’60: nette wiskundige basis voor ontwerp programmeertalen Jaren ’80: Programmeertaal C (1980→ unix) en C++ (1986)
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Geschiedenis
Jaren ’30: wiskundige basis moderne computers Jaren ’50: eerste low level assemblertalen Jaren ’60: nette wiskundige basis voor ontwerp programmeertalen Jaren ’80: Programmeertaal C (1980→ unix) en C++ (1986) Jaren ’90: Java Jaren ’90→nu: diverse hybride talen (imperatief/functioneel)
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Paradigma’s
Programmeertalen zijn gebaseerd op een bepaalde gedachte: Imperatieve talen (fortran, Pascal, C, C++, Java) Declaratieve talen (Haskell, Prolog, Gofer) Objectgeori¨enteerde talen (Smalltalk, Object Pascal, C++, Java)
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Imperatieve talen Uit het Latijn: imperare=bevelen Een programma bestaat uit een aantal bevelen/instructies/commando’s Druk iets af op het scherm lees iets van de gebruiker (invoer) Reken iets uit Schrijf antwoord naar het het scherm enzovoorts
Voorbeelden: Fortran, C, C++, Pascal, Java, Basic, APL, C#, J#, e.v.a. Bij imperatieve programmeertalen vertel je de computer van stap tot stap wat deze moet doen. W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Declaratieve talen
Programma = verzameling declaraties: omstandigheden, beschrijvingen, condities, waarheden, functies, relaties, etc. Wordt gewoonlijk uitgevoerd (ge¨ınterpreteerd) door een speciaal daarvoor geschreven programma: de interpreter. Veelal gebaseerd op een bepaalde wetenschappelijke discipline Logica: Prolog Lambda calculus: Haskell
Voornamelijk gebruikt in het wetenschappelijk onderzoek
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Voorbeeld: Prolog We vertellen aan de computer: Een weg heeft een begin en een einde Je kunt over een weg rijden en lopen Er ligt een weg tussen: Hogeschool en Eendrachtsplein Eendrachtsplein en centraal station Centraal station en Hofplein
We vragen aan de computer of je van de hogeschool naar het Hofplein kunt lopen. . . Antwoord van de computer: ”yes!” Kun je lopen over het centraal station? Antwoord: ”no!” W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Objectgeori¨enteerde talen Gedachte: Deel een programma op in losse modules, zgn. objecten Objecten: Functioneren zoveel mogelijk op zichzelf Nemen ieder een klein stukje van de functionaliteit voor hun rekening Vormen in combinatie met elkaar een programma Kunnen hergebruikt worden in andere programma’s Voorbeelden: Smalltalk, Object Pascal, C++, Java
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Java
Enkele eigenschappen van deze taal: Ontwikkeld in 1993 door Sun Microsystems Wordt gezien als de opvolger van C++(1986) Zowel imperatief als objectgeori¨enteerd Platform onafhankelijk, draait op Unix, Linux, MacOs, Windows, Android, e.a.
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Java leren
1
2
Begrijpen dat ´e´en programma uit meerdere legostenen (objecten) bestaat Tirpro01: programma’ s maken die uit ´e´en legosteen bestaan leren wat er in ´e´en legosteen allemaal kan en wat niet
3
Tirpro02 en verder: leren werken met meerdere legostenen
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Source, compiler, binary Source, sourcecode of broncode: Tekstbestand met daarin de door de programmeur bedachte programmeercode Eindigt op .java, bijvoorbeeld: App.java Betekent voor een computer niets Wordt door een programmeur bewerkt met een editor, voorbeelden: Jedit, Emacs, Vi e.v.a. broncode
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Voorbeeld broncode
import javax.swing.*; public class App { public static void main(String[] args) { System.out.println("Hello world..."); } }
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
source, compiler, binary Compiler: Een programma dat sourcecode ”vertaalt” naar een uitvoerbaar bestand (binary), bijv. App.exe Platformafhankelijk Verschillende compilers voor Unix, Linux, Mac en Windows
Taalafhankelijk Verschillende compilers voor Java, C, Basic, enz.
broncode → compiler
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
source, compiler, binary
Binary: Uitvoerbaar bestand=programma In Windows: App.exe Ontstaat na compilatie, derhalve platformafhankelijk Kan door mensen niet of zeer moeilijk gelezen worden broncode → compiler → binary
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Algemeen model
broncode → compiler → binary In Java werkt dit net iets anders. . .
W. Oele Programmeren in Java
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Java, bytecode en virtuele machine Hoe kan Java platformonafhankelijk zijn als compilers en binaries platformafhankelijk zijn? Antwoord: Java compilers vertalen de source niet naar binaries, maar naar bytecode Bytecode: is door mensen niet of zeer moeilijk leesbaar zit in een bestand dat eindigt op .class, bijv. App.class
broncode → compiler → bytecode
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Java, bytecode en virtuele machine Bytecode wordt op een computer uitgevoerd door een virtuele machine Virtuele machine: Programma dat Java bytecode leest en vertaalt naar instructies die de computer begrijpt Platform afhankelijk Speciale versie is ingebouwd in browsers, hierdoor kunnen Java programma’s in browsers draaien broncode → compiler → bytecode
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Andere talen en Java Java C, C++, Pascal broncode ↓ compiler ↓ binary ↓ programma in uitvoering
W. Oele Programmeren in Java
broncode ↓ compiler ↓ bytecode ↓ virtuele machine ↓ programma in uitvoering
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Benodigdheden voor het werken met Java Java virtuele machine Staat bekend als de Java Runtime Environment (JRE) Gratis downloaden van http://www.Javasoft.com
Java compiler Staat bekend als de Java Development Kit (JDK) Gratis downloaden van http://www.Javasoft.com Bevat natuurlijk ook de JRE Deze moet je dus hebben!
Editor Jedit danwel het zeer uitgebreide Emacs of iets anders (notepad?!?)
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste Java programma: App.java
import javax.swing.*; public class App { public static void main(String[] args) { System.out.println("Hello world..."); } }
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Het statement
Ieder Java programma bestaat uit statements Een statement: is een instructie die de computer uitvoert eindigt altijd met een ; is hoofdletter gevoelig (evenals al het andere) voorbeelden: System.out.println(); x=x+1-y; Object x=new Object(x,6,this);
W. Oele Programmeren in Java
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Statements in broncode
Een statement in ons programma:
System.out.println("Hello, world...");
Wat doet dit?
W. Oele Programmeren in Java
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Statements in methodes statements worden niet zomaar lukraak in een .java bestand neergezet grote aantallen statements bundelen in een methode Een methode: public static void main(String[] args) { statement 1; statement 2; ..... }
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Andere methodes public void print_een_hoop() { statement 1; statement 2; ..... } public void doe_iets() { statement 1; statement 2; ..... } W. Oele Programmeren in Java
Paradigma’s
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
De main methode
wordt automatisch uitgevoerd aan het begin van het programma per programma precies ´e´en main methode public static void main(String[] args) { statement 1; statement 2; ..... }
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Methodes in een klasse stoppen we niet lukraak in een bestand worden ondergebracht in een klasse een klasse: public class App { methode 1 { .....statements..... } methode 2 { .....statements..... } } W. Oele Programmeren in Java
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een klasse heeft een naam naam is gelijk aan de naam van het java bestand hoofdletter gevoelig
Voorbeeld: App.java: public class App { ........ ....... }
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Ons programma tot nu toe import javax.swing.*; public class App { public static void main(String[] args) { System.out.println("Hello world..."); } } Hoe weet die computer wat System.out.println("Hello world..."); betekent? W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Het import statement
In veel programma’s gebruiken we iedere keer weer een aantal basiscommando’ s Iets printen op het scherm Invoer van het toetsenbord inlezen Het scherm schoonvegen ...
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Het import statement Veel gebruikte commando’s heeft men ondergebracht in bibliotheken: Bestanden vol veelgebruikte programmeercode Zitten uiteraard in de JDK Met het import statement haal je in ´e´en keer zo’ n bibliotheek binnen in je programma In ons geval worden alle bibliotheken uit het pakket javax.swing geladen in het programma: import javax.swing.*;
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Ons programma compleet
import javax.swing.*; public class App { public static void main(String[] args) { System.out.println("Hello world..."); } }
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Structuur van ons programma import statements import javax.swing.*; class declaratie public class App { main methode public static void main(String[] args) { programma statements. . . } } W. Oele Programmeren in Java
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Structuur van grotere programma’ s
class a ........
class c ........
class b ..........
class d ........
W. Oele Programmeren in Java
class e main methode
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Voorlopig
leren werken met programma’ s met ´e´en class leren wat er in een class allemaal mag en wat niet class main methode { nog een hoop te leren. . . }
W. Oele Programmeren in Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Compileren
Hoe een programma te compileren? In een shell (of in Windows: de dos prompt) typen we: wessel@slak:~$javac App.java De computer geeft terug: wessel@slak:~$ Dit betekent: compilatie geslaagd! (principe: geen nieuws = goed nieuws)
W. Oele Programmeren in Java
Introductie
Overzicht modules
Deze module
Inhoud
Het programma uitvoeren
Als het compileren goed ging typen we: wessel@slak:~$java App De computer geeft nu: wessel@slak:~$hello, world
W. Oele Programmeren in Java
Paradigma’s
Java
Een eerste programma
Introductie
Overzicht modules
Deze module
Inhoud
Paradigma’s
Java
Een eerste programma
Huiswerk
Lezen uit Schaum: alles tot 1.12 Downloaden en installeren JDK Maken en in de practicumles volgende week laten zien: opdracht 1 op mijn site Leer zo snel mogelijk werken met een editor
W. Oele Programmeren in Java