Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdJulius de Coninck Laatst gewijzigd meer dan 9 jaar geleden
1
Gelijkheid van Strings static bool Gelijk( string s, string t) { } int m = s.Length; int n = t.Length; for (i=0; i<m && i<n; i++) { } char c = s[i]; char d= t[i]; if (c!=d) return false; return m==n;
2
Gelijkheid van Strings static bool Equals( string s, string t) { } int m = s.Length; int n = t.Length; for (i=0; i<m && i<n; i++) { } char c = s[i]; char d= t[i]; if (c!=d) return false; return m==n; class String { } this.Length; this[i];
3
Publieksvraag: Ordenen van Strings bool Equals( string t ) { // true als alle letters hetzelfde zijn } class String { } { } int Compare( string t ) // 0 als this en t hetzelfde zijn // positief als this alfabetisch voor t komt // negatief als this alfabetisch na t komt
4
Gelijkheid van Strings bool Equals ( string t) { } int m = this.Length; int n = t.Length; for (i=0; i<m && i<n; i++) { } char c = this[i]; char d= t[i]; if (c!=d) return false; return m==n; class String { }
5
Ordenen van Strings bool Equals ( string t) { } int m = this.Length; int n = t.Length; for (i=0; i<m && i<n; i++) { } char c = this[i]; char d= t[i]; if (c!=d) return false; return m==n; class String { } Compareint c - d ; m - n ;
6
Hoofdstuk 10.2 Rekenmachine- casus
7
Voorbeeld: Rekenmachine
8
Twee aspecten: nUser-interface nWerking class Calculator : Form class Processor
9
Rekenmachine: User-interface Label TableLayoutPanel Calculator ( ) { } paneel = new TableLayoutPanel( ); this.Controls.Add( paneel ); Button for (int t=0; t<16; t++) { } Button knop = new Button(); paneel.Controls.Add( knop ); Buttons zijn ondergeschikt aan het paneel
10
User-interface Calculator ( ) { } paneel = new TableLayoutPanel( ); this.Controls.Add( paneel ); for (int t=0; t<16; t++) { Button knop = new Button(); paneel.Controls.Add( knop ); Buttons zijn ondergeschikt aan het paneel } knop.Text = "789/456*123+0C=-"[t].ToString(); knop.Dock = DockStyle.Fill; knop.Click += this.klik; knop.KeyPress += this.toets; knop.Resize += this.groei; paneel.Columncount = 4; for (int t=0; t<4; t++) paneel.ColumnStyles.Add(...25%... );
11
Opbouw klasse Calculator class Calculator : Form { Calculator ( ) { result = new Label( ); result.TextAlign = ContentAlignment.MiddleRight; // en de rest van de Userinterface-opbouw proc = new Processor ( ); } Label result; TableLayoutPanel paneel; Processor proc; membervariabelen ook nodig in EventHandlers
12
Calculator Event-handlers class Calculator : Form { void klik (object obj, EA ea) { } Label result; Processor proc; void toets(object obj, KPEA kpea ) { } void groei(object obj, EA ea ) { } verwerk( kpea.KeyChar ); verwerk( ((Button) obj). Text[0] ); Control c = (Control) obj; c.Font = new Font("Tahoma", h); int h = c.Height / 2; if (c==result) h = c.Height/3;
13
Calculator Event-handlers class Calculator : Form { void verwerk (char c) { Label result; Processor proc; } if (c=='C')proc.Schoon(); else if (c=='=')proc.Reken(); else if (c>='0'&&c<='9')proc.Cijfer(c–'0'); elseproc.Operatie(c); result. Text ( );proc. Scherm
14
Opbouw klasse Proc class Proc { void Schoon ( ) {... } void Reken ( ) {... } void Cijfer (int n) {... } void Operatie (char c){... } Processor ( ){ this. Schoon(); } wat kan een Processor? wat is een Processor? long Scherm;
15
Wat is een Processor? nwaarde op het scherm schermwaarde wordt tienmaal zo groot plus cijfer er lijkt niets te gebeuren... nhuidige waarde nvorige waarde nlaatst gebruikte operator 3737293348
16
Opbouw klasse Processor class Processor { void Schoon ( ) {... } void Reken ( ) {... } void Cijfer (int n) {... } void Operatie (char c){... } Processor ( ){ this. Schoon(); } long Scherm; long waarde, vorige; char op; wat kan een Processor? wat is een Processor?
17
Processor methode cijfer class Processor { void Cijfer (int n) { } long scherm, waarde, vorige; char op; waarde = 10*waarde + n; scherm = waarde;
18
Processor methode reken class Processor { void Reken ( ) { } long scherm, waarde, vorige; char op; if (op=='+') if (op=='–') if (op=='*') if (op=='/') scherm = vorige; waarde = 0; vorige += waarde; vorige –= waarde; vorige *= waarde; vorige /= waarde;
19
Proc’s methode operatie class Processor { void Operatie (char c) { } long scherm, waarde, vorige; char op; op = c; this. reken ( ); void Schoon ( ) {waarde = 0; vorige = 0; scherm = 0; op = } '+';
20
Testen van een reeks mogelijke waarden if (x==1) else if (x==2) else if (x==3) else if (x==4) else if (x==5) else if (x==6) else if (x==7) else this.een(); this.twee(); this.drie(); this.vier(); this.vijf(); this.zes(); this.zeven(); this.meer(); case 1: case 2: case 3: case 4: case 5: case 6: case 7: default: switch (x) { } break;
21
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen
22
Voorbeeld: Tekst-Editor Multiple Document Interface Open/Save: standaard- dialoog Zoek/Vervang: eigen dialoog files lezen en schrijven
23
Multiple Document Interface MDI- container MDI- child MDI- children
24
MDI-container en -children class Hoofdscherm : Formclass Tekst : Form { } { } Hoofdscherm ( ) Tekst ( ) { } { } menu.DropDownItems.Add ("Nieuw", null, this.nieuw ); void nieuw (object o, EA ea ) { } this.IsMdiContainer = true; menu = new ToolStripMenuItem("File"); Tekst t = new Tekst(); t.Show ( ); t.MdiParent = this; TextBox invoer; Label status; invoer = new TextBox(); status = new Label(); invoer.TextChanged += anders; void anders (object o, EA ea ) { } status.Text = invoer.Text.Length.ToString();
25
Multiple Document Interface menu-regel bevat items van de parent èn children
26
MDI-container en -children class Hoofdscherm : Formclass Tekst : Form { } { } Hoofdscherm ( )Tekst ( ) { } { } menu.DropDownItems.Add ("Nieuw", null, this.nieuw ); this.IsMdiContainer = true; menu = new ToolStripMenuItem("File"); MenuStrip strip = new MenuStrip ( ); strip.Items.Add(menu); this.MainMenuStrip = strip; menu.DropDownItems.Add ("Open", null, this.openen ); menu = new ToolStripMenuItem("File"); MenuStrip strip = new MenuStrip ( ); strip.Items.Add(menu); strip.Visible = false;
27
Dialogen voeren
29
class Hoofdscherm : Formclass Tekst : Form { } { } void openen (obj o, EA ea ) { } { } OpenFileDialog d = new OpenFileDialog(); void zoeken (obj o, EA ea ) d.ShowDialog()if ( ==DialogResult.OK ) { } Tekst t = new Tekst(); t.MdiParent = this; t.Show(); t.lees();d.FileName ZoekDialoog d = new ZoekDialoog(); d.ShowDialog() ==DialogResult.OK ) { } if ( TextBox invoer; invoer.Select(pos, int pos = alles.IndexOf(zk); string alles = invoer.Text; string zk = d.Zoek.Text; zk.Length); d.Filter = "Teksten|*.txt";
30
ZoekDialoog class ZoekDialoog : Form { } ZoekDialoog ( ) { } Zoek = new TextBox(); Zoek.Location=...;...Add(Zoek); public TextBox Zoek; ok = new Button(); ok.Text="OK"; ok.Location=...;...Add(ok); cc = new Button(); cc.Text="Cancel"; cc.Location=...;...Add(cc); ok.Click += this.positief; void positief (obj o, EA ea ) { } this.DialogResult = DialogResult.OK; this.Close ( ); this.CancelButton = cc; this.AcceptButton = ok; reageert ook op ESC sluit automatisch reageert ook op Enter private Button ok, cc;
31
Openen en Opslaan class Hoofdscherm : Formclass Tekst : Form { } { } void openen (obj o, EA ea ) { } OpenFileDialog d = new OpenFileDialog(); d.ShowDialog()if ( ==DialogResult.OK ) { } TextBox invoer; d.Filter = "Teksten|*.txt"; void opslaanAls (obj o, EA ea ) { } SaveFileDialog d = new SaveFileDialog(); d.ShowDialog()if ( ==DialogResult.OK ) { } d.Filter = "Teksten|*.txt";
32
Openen en Opslaan class Hoofdscherm : Formclass Tekst : Form { } { } void openen (obj o, EA ea ) { } OpenFileDialog d = new OpenFileDialog(); d.ShowDialog()if ( ==DialogResult.OK ) { } Tekst t = new Tekst(); t.MdiParent = this; t.Show(); t.lees();d.FileName TextBox invoer; d.Filter = "Teksten|*.txt"; void opslaanAls (obj o, EA ea ) { } SaveFileDialog d = new SaveFileDialog(); d.ShowDialog()if ( ==DialogResult.OK ) { } this.schrijf( d.FileName ); d.Filter = "Teksten|*.txt"; void lees (string naam) {...... } void schrijf (string naam) {...... }
33
Openen en Opslaan class Tekst : Form { } TextBox invoer; void lees (string naam) { } void schrijf (string naam) { } StreamReadersr = new StreamReader (naam); sr. ReadToEnd ( )this.invoer.Text =; sr. Close ( ) ; StreamWritersw = new StreamWriter (naam); sw. Write () ;this.invoer.Text sw. Close ( ) ; this.Text = naam;
34
Klassen om files te lezen en te schrijven Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter BinaryWriter XmlWriter TextReader StreamReader StringReader BinaryReader XmlReader Object store decorator
35
Klassen om files te lezen en te schrijven Stream FileStream MemoryStream NetworkStream StreamWriterStreamReader leest en schrijft bytes leest string en char schrijft string en char leest/schrijft een file leest/schrijft het geheugen leest/schrijft het netwerk
36
Methoden van Stream Stream FileStream MemoryStream NetworkStream FileStream fs; fs = new FileStream ("test", FileMode.Open ); FileMode.Create FileMode.Append fs.ReadByte( )int b =; levert getal tussen 0...255 of –1 als er niets meer is byte [ ] ruimte = new byte[100]; fs.Read ( ruimte, 100 ) int n =; class FileStream { } int Read (byte[] doel, int max) { } for (int t=0; t<max; t++) { } int b = this.ReadByte(); if (b==–1) return t; doel[t] =b ; (byte) return max;
37
Methoden van Stream Stream FileStream MemoryStream NetworkStream class FileStream { } int Read (byte[] doel, int max) { } for (int t=0; t<max; t++) { } int b = this.ReadByte(); if (b==–1) return t; doel[t] =b ; (byte) return max; Stream int ReadByte ( ) virtual { /* leeg */ } class FileStream : Stream { } override int ReadByte ( ) { return............... }
38
Methoden van Stream Stream FileStream MemoryStream NetworkStream class FileStream { } int Read (byte[] doel, int max) { } for (int t=0; t<max; t++) { } int b = this.ReadByte(); if (b==–1) return t; doel[t] =b ; (byte) return max; Stream int ReadByte ( ) virtual { /* leeg */ } class FileStream : Stream { } override int ReadByte ( ) { return............... } abstract ;
39
Abstracte methode/klasse Stream FileStream MemoryStream NetworkStream nAbstracte methode: methode zonder body nAbstracte klasse: bevat abstracte methode ●kun je geen new object van maken ●alleen bedoeld als superklasse Brush SolidBrush HatchBrush
40
Abstracte methode/klasse Stream FileStream MemoryStream NetworkStream nAbstracte methode: methode zonder body nAbstracte klasse: bevat abstracte methode ●kun je geen new object van maken ●alleen bedoeld als superklasse MotorVoertuig PersonenAuto VrachtWagen
41
Methoden van Stream Stream FileStream MemoryStream NetworkStream class FileStream { } int Read (byte[] doel, int max) { } for (int t=0; t<max; t++) { } int b = this.ReadByte(); if (b==–1) return t; doel[t] =b ; (byte) return max; Stream int ReadByte ( )virtual class FileStream : Stream { } override int ReadByte ( ) { return............... } abstract ;
42
Decorator Streams Stream FileStream MemoryStream NetworkStream Stream str; BufferedStream GZipStream CryptoStream store decorator str = new FileStream ( "test", FileMode.Create ); GZipStream klein; klein = new GZipStream ( str ) ; klein.Write( mijnByteArray ); geef het onderliggende store-medium "in beheer" CryptoStream geheim; geheim = new CryptoStream ( klein ) ; je kunt decorators combineren
43
Reader en Writer Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter TextReader StreamReader StringReader Object store decorator leest en schrijft bytes leest string en char schrijft string en char vanuit een Stream vanuit een String
44
Reader en Writer Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter TextReader StreamReader StringReader Object store decorator leest en schrijft bytes leest string en char schrijft string en char Stream str; str = new FileStream ( "test.txt", FileMode.Open ); TextReader lezer; lezer = new StreamReader ( str ); string s; s = lezer. ReadToEnd ( );
45
Reader en Writer Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter TextReader StreamReader StringReader Object store decorator leest en schrijft bytes leest string en char schrijft string en char Stream str; str = new FileStream ( "test.txt", FileMode.Open ); TextReader lezer; lezer = new StreamReader ( str ); string s; s = lezer. ReadToEnd ( ); lezer = new StreamReader ( "test.txt" ); convenience-methode
46
Reader en Writer Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter BinaryWriter XmlWriter TextReader StreamReader StringReader BinaryReader XmlReader Object store decorator leest en schrijft bytes leest string en char schrijft string en char leest int en double leest XML-teksten
47
Encoding: char naar byte nASCII ●1 byte per char, <128 nUnicode ●2 bytes per char aäAα 41613F 4161E4B100 03 nBigEndianUnicode ●2 bytes, grote eerst 4161E4B100 03 nLatin-1 (iso-8859-1) ●1 byte per char, <256 4161E43F nUTF8 ●1/2/3 bytes per char 4161A4B1C3CE header FEFF FE EFBBBF
48
Encoding
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.