Java C++ zVeilig zMachine- onafhankelijk zVeel libraries, ook voor Internet-I/O zSnel zNative executables zLibraries optimaal voor specifiek OS.

Slides:



Advertisements
Verwante presentaties

Advertisements

Algoritmen en Datastructuren
Internationale marketing
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Operatoren, Arrays, Command-line tools.
Opschoning PC.
Digitale tools: SlideShare
Real-Time Systems (RTSYST) Week C++ concurrent programmeren C++ heeft sinds C++11 een standaard library voor concurrent programmeren. Alternatieve.
Hoofdstuk 8: Recursie.
H15 – Waarde leveren door ketenmanagement
Programmeren in Java met BlueJ
Van domeinklasse tot implementatie
Inleiding programmeren in C++ Life Science & Technology 19 januari Universiteit Leiden.
COSTA Common Set of Tools for Assimilation of Data OpenDA/COSTA voor operationele modellen en kalibratie rivier toepassingen Nils van Velzen Simona gebruikersdag.
MagentaPurpleTeal PinkOrangeBlue LimeBrown RedGreen Introductie C# /.NET
Hoofdstuk 10.2 Rekenmachine-casus.
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Greenfoot Workshop Bobby - Snake.
Woensdag 23 april 2003 Het virtuele loket EYES e-loket
National Institute For Space Research SRON-EO strategie, NL gebruikersgemeenschap, Radboud Koop, 24 sept 2004 Page 1 SRON EO strategie – NL gebruikersgemeenschap.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
Doctoraal voorlichting 2002 Computer Architectuur & Parallelle Systemen groep Andy Pimentel.
MLA Using wildcards University Library click = next.
Inleidend probleem Data structuur (hiërarchie van classes)
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
OHT 16.1 De Pelsmacker, Geuens & Van den Bergh, Marketingcommunicatie, vierde editie © Pearson Education 2011 Persoonlijke verkoop In dit hoofdstuk zul.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 6.
GESPRG Les 8 Gestructureerd programmeren in C. 101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een.
GESPRG Les 12 Gestructureerd programmeren in C. 152 Huiswerk Uitwerking void reverse(int a[], int n) { int first = 0, last = n - 1; while (first < last)
Opg.1a: substring } String substring(int a) { int t; for (t=a; t
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
WxHaskell part II Martijn Schrage (speciale versie van de slides, met screenshots toegevoegd als pictures)
Eerste deeltoets Uitwerking. Resultaten Gemiddeld: 6,01 Tips voor de volgende keer: – Werk in klad uit, schrijf duidelijk – Oefenen met loops en tellertjes.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
C++ handboek : C++ Leen Ameraal 6e druk academic service.
Bluetooth Communicatie tussen computer en Brick Computer zet de connectie op, Brick wacht Enkel communicatie van de Brick naar de computer Lejos API: NXTConnecion.
CONTROLESTRUCTUREN (DEEL 2)
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Homcom Ledenvergadering 17/12/2012. Google – Wat ? et/article/detail/ /2012/12/16/Google -goeroe-Vreemd-hoe-slecht-internet-wordt-
Bibliotheek Wageningen UR Rethinking the library Dick van Zaane.
Algoritmiek Java GUIs, AWT en Swing API Overzicht te bestuderen stof, voorbeeldtentamen Hoorcollege 15 - Ma. 11 dec L.M. Bosveld-de Smet.
Woensdagochtend presentaties 2012/2013 Woensdag 24 oktober 2012 Google Services.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
Visual Basic.Net - Overzicht
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 4.
KPRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology Les 2 sheet 1 Wat gaan we doen:  Een (vaste) melodie.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Hoofdstuk 9 Objecten en klassen.
Hoofdstuk 13.6 File-I/O. Files n40 verschillende klassen in library java.io Exceptions niet meegeteld... nMethodes voor het plegen van Input en Output.
Arrays.
Smartphone. Smartphone Onderwerpen: Functies van een smartphone Software van een smartphone Applications.
We zijn toch allemaal zoekende?
Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.
Plan Coordination by Revision in Collective Agent Based Systems Adriaan ter Mors en Gijsbert Deelder Plan Coordination by Revision in Collective.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 7 onze.
The beast has been released! 4 arcade-style games Interviews with famous people in the game industry Develop browsers games for any device (phone, tablet,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Information Literacy FNP Marja Duizendstraal 2 September, 2008.
De Hiërachie van Internet
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Arrays en pointers lichtkrant op het ARM bordje.
Datacommunicatie en netwerken
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Webwinkel in het D-cluster van de opleiding Logistiek Ad van Kooten – docent ERP toepassingen  Pract. 1.
Oracle KIS PIS Java (Cobol) VIS (.net) ERP (SAP)
Transcript van de presentatie:

Java C++ zVeilig zMachine- onafhankelijk zVeel libraries, ook voor Internet-I/O zSnel zNative executables zLibraries optimaal voor specifiek OS

Methoden int fac (int x) { } int r=1; for (int n=1; n<x; n++); r *= n; return r; int fac (int x) { } int r=1; for (int n=1; n<x; n++); r *= n; return r; methode- header lokale variabele controle- structuren gekke operatoren methode- resultaat

Klassen class Demo { } int waarde; void vergroot (int a) { waarde *= a; } int huidig () { return waarde; } class Demo { }; int waarde; void vergroot (int a); int huidig (); void vergroot (int a) int huidig () { return waarde; } void Demo::vergroot (int a) { waarde *= a; } int Demo::huidig () klasse-header klasse-implementatie

Verdeling over files zIedere klasse in een aparte file z Klasse-headers in één file z Klasse-implementaties in een andere file. java. cc. h. cpp Unix Windows. c. h

Importeren van libraries zLibrary-klassen import java.io.* ;#include zEigen klassen #include “hallo.h”

Functies double sqrt (double x) { double y = 1.0; while (x*x!=y) y = (x+y/x)/2; return y; } double sqrt(double x); static double sqrt (double x) { double y = 1.0; while (x*x!=y) y = (x+y/x)/2; return y; } kunnen “los” staan moeten in een klasse class Math { }

Declaraties int k, n; Size p; new Size (); w h p k n int k, n; Size * p; p = new Size (); Size s; w h s pointer van objecten p =

Gebruik van pointers k = 6; p. w = 7; w h p k n k = 6; (*p). w = 7; s. w = 8; w h s p -> h = 9; p. h = 9;

Pointers z“Java heeft geen pointers” zJava heeft alleen maar pointers z In C++ kun je objecten direct declareren z òf er een pointer naar laten wijzen zIn C++ kun je rare dingen doen met pointers zJava’s pointers zijn “veilig”

Gebruik van pointers p = new Size(); w h q w h s p q = p; r = & s ; r adres van

Gebruik van pointers int k, n; p k n q int *p, *q, *r; p = new int; q = & n; r a r = & a[5]; r ++ ; *q = 7; 7 *r = 13;

Pointer arithmetic int *p; p = & a[x]; p++; p += 5; *p = 13; array-grenzen kunnen niet worden gecontroleerd zJava heeft geen pointer-arithmetic

Arrays int [ ] p; p = new int [5]; p length int p [ ]; p = new int [5]; p int a[3]; a int * p; uitwisselbare notaties moet een constante zijn

Arrays zArray is een object zlength is opvraagbaar zGrenzen gecontroleerd z Array-elementen los z Lengte niet opgeslagen z Live dangerously z Via een pointer of direct z Pointers en arrays uitwisselbaar

Array als parameter int som (int [ ] a) { int totaal = 0; for ( int n=0 ; n < a.length ; n++ ) totaal += a[n]; return totaal; } int som (int a[ ], int lengte) { int totaal = 0; for ( int n=0 ; n < lengte ; n++ ) totaal += a[n]; return totaal; } int *a aparte parameter alternatieve notatie

Strings String s; s = “aap”; ss ‘a’ ‘p’ 3 ‘a’ ‘p’ 0 char *s; s = “aap”; String t; t = s.substring(1); char *t; t = s+1; t ‘a’ ‘p’ 2 t

Strings zApart object-type zLengte is bekend zNiet meer wijzigbaar z Character array z Zero-terminated z Wel wijzigbaar zconcat maakt nieuw object aan zstrcat wijzigt bestaande string

Strings String s; s = “aap”; s s ‘a’ ‘p’ 3 char *s; s = new char[10]; strcpy (s, “aap”); s = s.concat (“je”); strcat (s, “je”); ‘a’ ‘p’ 5 ‘j’ ‘e’ ‘a’ ‘p’ 0 ‘j’ ‘e’ ‘a’ ‘p’ 0 zorg voor voldoende ruimte!

De functie main void main(String [] args) { if (...) System.exit (1); for (i... i<args.length...) verwerk (args[i]) } int main(int argc, char * argv [] ) { if (...) return 1; for (i... i<c...) verwerk (argv[i]) return 0; } char **argv alternatieve notatie

Geheugenbeheer Ding d; d = new Ding(); d Ding d; d = new Ding(); delete d; zGarbage wordt automatisch opgeruimd zGarbage zelf opruimen! (anders loopt het geheugen vol)

Constructor class Ding { int x; int [] p; Ding() { x = 0; p = new int[5]; } class Ding { int x; int [] p; Ding(); } Ding::Ding() { x = 0; p = new int[5]; } Ding::~Ding() { delete p; } ~Ding(); constructor: initialisatie object-var. destructor: “finalisatie” object-var.

Primitieve types void int long float double int long float double short unsigned char unsigned short unsigned int unsigned long char byte booleanint

Boolean zVergelijk-operatoren leveren False of True zLogische operatoren en if/while-opdracht krijgen False of True z Vergelijk-operatoren leveren 0 of 1 z Logische operatoren en if/while-opdracht interpreteren y0 als false yandersals true < <= == != && || !

Gebruik van boolean if (n==0) x = 1000; else x = 1/n; if (n==0) x = 1000; else x = 1/n; if (n=0) x = 1000; else x = 1/n; if (n=0) x = 1000; else x = 1/n; je merkt niet dat het geen echte boolean is fout gedetecteerd door compiler toegestaan maar waarschijnlijk niet de bedoeling...

Gebruik van boolean if (0<x && x<10)... if (0 < x < 10)... je merkt niet dat het geen echte boolean is fout gedetecteerd door compiler toegestaan maar waarschijnlijk niet de bedoeling... if (0 < x < 10)... ztypering geeft bescherming

Typering zint 0 zboolean False zpointer null zchar ‘\0’ z 0 z NULL z ‘\0’ if (p == null)... if (s.charAt(0) != ‘\0’)... if ( ! p )... if ( *s )... uitwisselbaar met 0 zonder cast converteerbaar

Voorbeeld void strcpy(char *doel, char *bron) { while (*bron) *doel++ = *bron++ ; *doel = 0; } void strcat(char *doel, char *bron) { while (*doel) doel++; while (*bron) *doel++ = *bron++ ; *doel = 0; } char * char *res = doel; return res; char *res = doel; return res;

Operator overloading zWat operatoren zoals + doen, hangt af van het type van de operanden zbeide int: int-optelling; als één double is, converteert de andere zje kunt zelf operatoren herdefiniëren voor andere typen zals één String is, converteert de andere (objecten: dmv toString)

Voorbeeld class Punt { int x, y; }; Punt operator+ (Punt a, Punt b) { return new Punt ( a.x+b.x, a.y+b.y); } moet twee parameters hebben zje mag zelfs herdefiniëren: y... ==... y...[...] y... =... y...++

Subklassen class Twee { int x, y; int som() { return x+y; } } class Drie extends Twee { int z; int som() { return super.som() + z; } } class Twee { int x, y; int som(); } class Drie : public Twee { int z; int som(); } int Twee::som () { return x+y; } int Drie::som () { return Twee::som() + z }

Virtual functions Twee t = new Twee(1,2); Drie d = new Drie(4,5,6); x = t. som (); // wordt 3 y = d. som (); // wordt 15 t = d; z = t. som (); // 9 of 15 ? if (y==z) print(“altijd”); else print(“nooit”); Twee t = new Twee(1,2); Drie d = new Drie(4,5,6); x = t -> som (); y = d -> som (); t = d; z = t -> som (); if (y==z) print(“som is virtual ”); else print(“som is gewoon”); dat mag!

Virtual functions zMethoden zijn altijd virtual z Gewone methoden: keus wordt door de compiler gemaakt z Virtual methoden: keus wordt run-time gemaakt adhv objecttype (iets) efficiënter nodig voor truc met herdefinitie à la paint class Twee { int x, y; virtual int som(); }

Libraries import java.lang.*; // String, Math, Thread,... import java.io.*; // File... import java.util.*; // Vector, Stringtokenizer,... import java.awt.*; // Frame, Button,... import java.net.*; // Image, AudioClip, URL #include // niet standaard // machine-specifiek // (zelfs compiler-specifiek) #include

Input / Output C++ stijl import java.io.*;#include ; System.out.println(“hoi”);cout << “hoi” ; System.out.println(“n:”+n);cout << “n:” << n ; c = System.in.read( );cin >> c; FileWriter f; f = new FileWriter(“aap”); f.println(“hoi”); ofstream f; f = new ofstream(“aap”); f << “hoi” ;

Input / Output C stijl import java.io.*;#include ; System.out.println(“hoi”);printf ( “hoi” ); System.out.println(“n:”+n);printf ( “n: %d”, n ); c = System.in.read( );c = getchar (stdin); FileWriter f; f = new FileWriter(“aap”); f.println(“hoi”); FILE *f; f = fopen(“aap”, “r”); fprintf (f, “hoi”);

En verder... zSubklassen extends Interfaces implements zProtectie public, private, protected per variabele/methode zExceptions zUniversele klasse Object z Subklassen met multiple inheritance z Protectie ypublic:, private: per groepje var/meth yfriend z Exceptions ? z Templates