Java C++ nVeilig nMachine- onafhankelijk nVeel libraries, ook voor Internet-I/O Snel Native executables Libraries optimaal voor specifiek OS.

Slides:



Advertisements
Verwante presentaties
Het ontwerpen van een klasse
Advertisements

Het type int Tekenen met Java operatoren
Klassen en objecten.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
Inleidend probleem Data structuur (hiërarchie van classes)
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Hoofdstuk 8 Objecten en klassen.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Oefeningen Hoofdstuk 3.
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
Deel I: Programmeertaal C 6. Arrays en Pointers
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
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;
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
JAVA: een platformonafhankelijke taal
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
De laatste essentiele dingen.  Classes ◦ Syntax ◦ Constructors & Destructors  Header & Source Files ◦ Waar gebruiken we dit voor  Compiler Theorie.
Studiehouding Ergens verstand van krijgen kost tijd… Uren die je alleen in je boeken doorbrengt maken het verschil. Er is niets mis met onafhankelijkheid.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Eerste deeltentamen nNagekeken werk ligt voor in de zaal nNeem je eigen werk mee: in het college wordt het besproken nVragen over de beoordeling: in de.
1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Loops en errors Array's Random try catch for loop while loop do while loop.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
GUI & classes Een Gui in een class steken en het object gebruiken.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
18 Februari 2013 Where friends have access to your privates!
Objectgeoriënteerd Programmeren (2)
Aanroep van een methode voert opdrachten uit in de body daarvan
Pointers, arrays & dynamische geheugen
Gameprogrammeren: Objecten en geheugen
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Char en String
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Basis Gameprogrammeren
Tinpro015b-les5 Invoer en Uitvoer.
C++ • C++ als een verbetering van C • Abstracte datatypen met classes • Constructoren en destructoren • Subklassen • binding van functies 1.
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
OOS Object geOrienteerd Software-ontwerp - 5
Tinpro015b-les6 Templates.
Arjan Egges & Paul Bergervoet
Tinpro015b-les4 Klassen.
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Arjan Egges Paul Bergervoet Wouter van Toll
Exceptions Exception:
Gameprogrammeren: Arrays
Transcript van de presentatie:

Java C++ nVeilig nMachine- onafhankelijk nVeel libraries, ook voor Internet-I/O Snel Native executables Libraries 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 nIedere klasse in een aparte file n Klasse-headers in één file n Klasse-implementaties (vaak) in andere file. java. cc. h. cpp Unix Windows. c. h

Importeren van libraries nLibrary-klassen import java.io.* ; #include n Eigen 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 n“Java heeft geen pointers” nJava heeft alleen maar pointers n In C++ kun je objecten direct declareren n òf er een pointer naar laten wijzen nIn C++ kun je rare dingen doen met pointers nJava’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 Java 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 nArray is een object nlength is opvraagbaar nGrenzen gecontroleerd n Array-elementen los n Lengte niet opgeslagen n Live dangerously n Via een pointer of direct n 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 nApart object-type nLengte is bekend nNiet meer wijzigbaar n Character array n Zero-terminated n Wel wijzigbaar concat maakt nieuw object aan strcat 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<argc...) verwerk (argv[i]) return 0; } char **argv alternatieve notatie

Geheugenbeheer Ding d; d = new Ding(); d Ding *d; d = new Ding(); delete d; Garbage wordt automatisch opgeruimd Garbage 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 short int long float double short int long float double unsigned char unsigned short unsigned int unsigned long char byte booleanint

Boolean nVergelijk-operatoren leveren false of true nLogische operatoren en if/while-opdracht krijgen False of True n Vergelijk-operatoren leveren false/true, maar die zijn conver- teerbaar naar 0/1 n Logische operatoren en if/while-opdracht interpreteren u0 als false uandersals 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)... typering geeft bescherming

Typering nint 0 nboolean False npointer null nchar ‘\0’ n 0 n NULL n ‘\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 nWat operatoren zoals + doen, hangt af van het type van de operanden beide int: int-optelling; als één double is, converteert de andere je kunt zelf operatoren herdefiniëren voor andere typen als éé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 je mag zelfs herdefiniëren:... ==......[...]... =

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 nMethoden zijn altijd virtual n Gewone methoden: keus wordt door de compiler gemaakt n 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.*; // Collection, Scanner,... 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”, “w”); fprintf (f, “hoi”);

En verder... nSubklassen extends Interfaces implements nProtectie upublic, private per variabele/methode upackage nExceptions nUniversele klasse Object n Subklassen met multiple inheritance n Protectie upublic:, private: per groepje var/meth ufriend n Exceptions ? n Templates