Presentation is loading. Please wait.

Presentation is loading. Please wait.

Openen en Opslaan class Tekst : Form { } TextBox invoer; void lees (string naam) { } void schrijf (string naam) { } StreamReadersr = new StreamReader (naam);

Similar presentations


Presentation on theme: "Openen en Opslaan class Tekst : Form { } TextBox invoer; void lees (string naam) { } void schrijf (string naam) { } StreamReadersr = new StreamReader (naam);"— Presentation transcript:

1 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;

2 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

3 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

4 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 ;

5 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

6 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

7 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

8 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 ( );

9 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

10 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

11 Figuur 32 Stream FileStream Memory Stream Network Stream Buffered Stream GZip Stream Crypto Stream TextReader StreamReader StringReader BinaryReader XmlReader Object store decorator (Filenaam,FileMode) ( ) (Socket) (Stream, int) (Stream, CompressionMode) (Stream, CryptoStreamMode) (Stream) (Filenaam) (String) (Stream).Create(…) (Stream, Encoding) (wat de constructor nodig heeft) statische methode die het constructie-werk doet

12 Encoding: char naar byte nASCII ●1 byte per char, <128 nUnicode ●2 bytes per char aäAα 4161 3F 4161E4B100 03 nBigEndianUnicode ●2 bytes, grote eerst 4161E4B100 03 nLatin-1 (iso-8859-1) ●1 byte per char, <256 4161E4 3F nUTF8 ●1/2/3 bytes per char 4161A4B1C3CE header FEFF FE EFBBBF

13 Encoding

14 Hoofdstuk 11.1 Algoritmen: Console-applicaties

15 Console applicatie static void Main ( ) class Hallo { } { } Console. WriteLine("Hallo " + naam + "!" ); statische methodestatische methoden Console. WriteLine("Wat is je naam?"); string naam = Console. ReadLine( );

16 class Console static void WriteLine( string s ) class Console { } { } Console. Out. WriteLine( s ); static string ReadLine( ) { } return Console. In. ReadLine( ); TextReader In { get; } TextWriter Out { get; }

17 class TextReader abstract string ReadLine( ) ; class TextReader { } string ReadToEnd( ) { } string resultaat, regel; return resultaat; regel = this.ReadLine( ); while (regel != null) { } resultaat += regel + "\n" ; regel = this.ReadLine( ); TextReader StreamReader StringReader abstract

18 class TextReader abstract string ReadLine( ) ; class TextReader { } string ReadToEnd( ) { } string resultaat, regel; return resultaat; while (regel != null) { } resultaat += regel + "\n" ; regel = this.ReadLine( ); ( (regel = this.ReadLine()) != null ) en meteen testen regel = this.ReadLine( ); toekennen

19 Commandline programma $>date Fri Oct 29, 11:30 $> ls aap.txt hallo.doc prog.cs $> grep void prog.cs prog.cs, line 6: void Main() prog.cs, line 10: void teken() $>ls > files.txt $> parameters voor het programma output redirection

20 Voorbeeld file-processor nlaat alle regels van de files zien waarin het gegeven patroon voorkomt n(met filenaam en regelnummer) grep patroon file1 file2... Unix-commando

21 Grep: main class Grep if (params.Length==0) Console.WriteLine("Usage: java Grep pat file..."); else static void Main ( for (int t=1; t<params.Length; t++) Grep.bewerk( params[0], params[t] ); { } { )string [ ] params

22 Grep: bewerk static void bewerk (String pat, String naam) { regel=buffer.ReadLine() Console.WriteLine( naam if ( regel. Contains (pat) ) reader = new StreamReader (naam); TextReader reader; String regel; while ()( ) != null ; n++ for (int n=1; + n+ regel ); if (naam=="") reader = Console.In; else try { } catch (Exception e) { Console.WriteLine(naam + e); }

23 Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a; a = new List(); …a.Get(5)… a.Set(5,…); …a.Count… array: oject dat een rij waarden bevat, met speciale notaties List: array “ingepakt” in een klasse, met standaard notaties nInvoegen nAchtervoegen a.Insert(5,…); List a; a = new List (); a.Add(…); uitgebreide ……a[5]…… a[5] = ……;

24 Voorbeeld: array class Voorbeeld : Form { } Voorbeeld ( ) { } void klik(object o, AE ae) { } TextBox in; Button b; void teken(object o, PEA pea) { } in = new TextBox(); b = new Button(); b.Click += klik; this.Paint += teken; String s = in.Text; alles[n] = s; n++; this.Invalidate(); String [] alles; int n; alles = new String[100]; n = 0; for (int t=0; t<n; t++) { pea.Graphics.DrawString( alles[t],......, y ); y+=20; } int y = 50; if (n<100) { } List List alles; alles = new List ( ); alles.Add(s); alles[t] alles.Count;t++)

25 Varianten van List ICollectionIList ISet interface ICollection { void Add(Elem x); bool Remove(Elem x); bool Contains(Elem x); int Count { get; }; void Clear(); } interface IList : ICollection { Elem this[int n] { get; set; } ; int IndexOf(Elem x); void Insert(int n, Elem x); void RemoveAt(int n); } genummerd zonder dubbele

26 Voorbeeld: Collection class Voorbeeld : Form { } Voorbeeld ( ) { } void klik(object o, AE ae) { } TextBox in; Button b; void teken(object o, PEA pea) { } in = new TextBox(); b = new Button(); b.Click += klik; this.Paint += teken; String s = in.Text; alles[n] = s; n++; this.Invalidate(); alles = new String[100]; n = 0; for (int t=0; t<n; t++) { pea.Graphics.DrawString( alles[t],......, y ); y+=20; } int y = 50; List alles; alles = new List ( ); alles.Add(s); alles[t] alles.Count;t++) IList alles; ICollection alles; LinkedList

27 Hoe doorloop je een Collection? nList nCollection for (int t=0; t<alles.Count; t++) doeIetsMet( alles[t] ); foreach (String s in alles) doeIetsMet( s ); opdracht for)(expropdrachtexpr ;; Speciale syntax voor specifieke situatie met bepaalde klasse typeexprinnaamforeach()opdracht

28 Implementaties van Collections LinkedList Queue Stack List HashSet SortedSet SortedList Sorted Dictionary IList ISet IDictionary ICollection

29 Implementaties van Collections IEnumerable IEnumerator IComparator LinkedList Queue Stack List HashSet SortedSet SortedList Sorted Dictionary IList ISet IDictionary ICollection

30 Toepassing: schets-editor SchetsWin Tools Akties Menu MDI- Container SchetsControl

31 Schets: Klasse-ontwerp Control Form UserControl Hoofdscherm SchetsWin SchetsControl Schets ImageBitmap Button Base Button RadioButton SchetsEditor System.Windows.Forms System.Drawing Program Container Control ISchetsTool TekstTool LijnTool PenTool GumTool RechthTool VolRechthTool TweepuntTool Startpunt Tool

32 Member-variabelen class SchetsWinclass SchetsControlclass Schets : Form: UserControl { } { } { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; Schets schets; Color kleur; Bitmap bm;

33 Schoonmaakwerk doen class SchetsWinclass SchetsControlclass Schets : Form: UserControl { } { } { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; Schets schets; Color kleur; Bitmap bm; void teken(...PEA p) { } schets.Teken (p.Graphics); void Teken (Graphics g) { } gr.DrawImage (bm, 0, 0); void Schoon(...AE a) { } schets.Schoon(); void Schoon( ) { } this.Invalidate(); Graphics. FromImage(bm); Graphics g = g.FillRectangle (White,0,0,w,h); SchetsWin() { } sc = new SchetsControl(); this.maakAkties(); void maakAkties() { } Button b b.Text = "Clear"; b.Click += sc.Schoon; = new Button();

34 Tool kiezen class SchetsWin : Form { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; void klikTool ( object obj, AE ae ) { } huidig = obj. Tag(Button)() (ISchetsTool) void maakTools( { } ICollection tools) foreach (ISchetsTool tool in tools) { } RadioButton r = new RadioButton(); r.Text = tool.ToString(); r.Click += this.klikTool; r.Tag = tool;

35 Tool gebruiken class SchetsWin : Form { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; SchetsWin ( ) { } sc.MousePress += void klikTool ( object obj, AE ae ) { } huidig = obj. Tag(Button)() (ISchetsTool) sc = new SchetsControl ( ); this.muis; void muis ( object o, MEA mea) { } huidig.MuisVast( interface ISchetsTool { } void MuisVast( mea.Location) Point p); sc, SchetsControl s,

36 Tool gebruiken class SchetsWin : Form { } MenuStrip strip; SchetsControl sc; ISchetsTool huidig; SchetsWin ( ) { sc.MousePress += void klikTool ( object obj, AE ae ) { } huidig = obj. Tag(Button)() (ISchetsTool) sc = new SchetsControl ( ); ( object o, MEA mea) { } huidig.MuisVast( sc, mea.Location); interface ISchetsTool { } void MuisVast( Point p); SchetsControl s, } => anonieme methode

37 Schets-tools (1) ISchetsTool interface ISchetsTool { } void muisVast ( SchetsControl s, Point p) ; void muisLos ( SchetsControl s, Point p) ; void muisDrag ( Schetscontrol s, Point p ) ; void Letter ( SchetsControl s, char k) ;

38 Schets-tools (2) ISchetsTool Startpunt Tool abstract class StartpuntTool : ISchetsTool { } virtual void MuisVast ( SchetsControl s, Point p) {startpunt = p; } Point startpunt ; abstract void MuisDrag ( SchetsControl s, Point p) ; abstract void Letter ( SchetsControl s, Point p) ; virtual void MuisLos ( SchetsControl s, Point p) {kwast = new SolidBrush( s.Penkleur ); } Brush kwast ;

39 Schets-tools (3) ISchetsTool TekstTool Startpunt Tool class TekstTool : StartpuntTool { } override void Letter ( SchetsControl s, char c) { } Graphics g = s. MaakBitmapGraphics(); g. DrawString( c, kwast,..., startpunt ); startpunt.x += ……c….Width; override void MuisDrag ( SchetsControl s, Point p) { } override void MuisLos ( SchetsControl s, Point p) { }

40 Schets-tools (4) ISchetsTool TekstTool Tweepunt Tool Startpunt Tool abstract class TweepuntTool : StartpuntTool { } override void MuisDrag ( SchetsControl s, Point p) { } Graphics g = s. CreateGraphics(); this. Bezig (g, startpunt, p); abstract void Bezig (Graphics g, Point p1, Point p2) ; override void MuisLos ( SchetsControl s, Point p) { Graphics g = s. MaakBitmapGraphics(); this. Compleet (g, startpunt, p); } virtual void Compleet (Graphics g, Point p1, Point p2) { this. Bezig (g, p1, p2); }

41 Schets-tools (5) Tool Rechthoek Tool TekstTool Tweepunt Tool Startpunt Tool class RechthoekTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) g. DrawRectangle(kwast, Punten2Rechthoek(p1,p2) ); { } static Rectangle Punten2Rechthoek(Point p1, Point p2) { } return new Rectangle( new Point( Math.Min(p1.X,p2.X), Math.Min(p1.Y,p2.Y)) new Size ( Math.Abs(p1.X-p2.X), Math.Abs(p1.Y-p2.Y)) );

42 Schets-tools (6) Tool TekstTool Tweepunt Tool Startpunt Tool class VolRechthoekTool : RechthoekTool { } override void Compleet ( Graphics g, Point p1, Point p2 ) { } Rechthoek Tool VolRechth Tool g. FillRectangle(kwast, Punten2Rechthoek(p1,p2) );

43 Schets-tools (7) Tool LijnToolTekstTool Tweepunt Tool Startpunt Tool class LijnTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } g. DrawLine( MaakPen(kwast,3), p1, p2 ); Rechthoek Tool VolRechth Tool

44 Schets-tools (8) Tool LijnToolPenToolTekstTool Tweepunt Tool Startpunt Tool class PenTool : LijnTool { } override void MuisDrag ( SchetsControl s, Point p ) { } this. MuisLos (s, p); this. MuisVast (s, p); Rechthoek Tool VolRechth Tool

45 Schets-tools (9) Tool LijnTool PenToolGumTool TekstTool Tweepunt Tool Startpunt Tool class GumTool : PenTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } Rechthoek Tool VolRechth Tool g. DrawLine( MaakPen(Brushes.White,7), p1, p2 );


Download ppt "Openen en Opslaan class Tekst : Form { } TextBox invoer; void lees (string naam) { } void schrijf (string naam) { } StreamReadersr = new StreamReader (naam);"

Similar presentations


Ads by Google