De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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.

Verwante presentaties


Presentatie over: "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."— Transcript van de presentatie:

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

28

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


Download ppt "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."

Verwante presentaties


Ads door Google