45
Openen en Opslaan class Tekst : Form { } TextBox invoer; void lees (string naam) { } void schrijf (string naam) { } StreamReade r sr = new StreamReader (naam); sr . ReadToEnd ( ) this.invoer.Te xt = ; sr . Close ( ) ; StreamWrite r sw = new StreamWriter (naam); sw . Write ( ) ; this.invoer. Text sw . Close ( ) ; this.Text = naam; this.Text = naam;

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

Embed Size (px)

Citation preview

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

Openen en Opslaanclass Tekst : Form{

}

TextBox invoer;

void lees (string naam){

}void schrijf (string naam){

}

StreamReader

sr = new StreamReader (naam);sr . ReadToEnd ( )

this.invoer.Text =

;

sr . Close ( ) ;

StreamWriter

sw = new StreamWriter (naam);sw . Write (

) ;this.invoer.Text

sw . Close ( ) ;

this.Text = naam;

this.Text = naam;

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

Klassen om fileste lezen en te schrijven

Stream

FileStream

MemoryStream

NetworkStream

BufferedStream

GZipStream

CryptoStream

TextWriter

StreamWriter

StringWriter

BinaryWriter

XmlWriter

TextReader

StreamReader

StringReader

BinaryReader

XmlReader

Object

store

deco

rato

r

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

Klassen om fileste lezen en te schrijven

Stream

FileStream

MemoryStream

NetworkStream

StreamWriterStreamReader

leest en schrijftbytes

leest string en char

schrijftstring en char

leest/schrijft een file

leest/schrijft het geheugen

leest/schrijft het netwerk

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

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

;

abstract

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

Abstracte methode/klasse

Stream

FileStream

MemoryStream

NetworkStream

Abstracte methode:methode zonder body

Abstracte klasse:bevat abstracte methode●kun je geen new

object van maken●alleen bedoeld als

superklasse

Brush

SolidBrush

HatchBrush

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

Decorator Streams

Stream

FileStream

MemoryStream

NetworkStream

Stream str;

BufferedStream

GZipStream

CryptoStream

store

deco

rato

r

str = new FileStream ( "test", FileMode.Create );

GZipStream klein;

klein = new GZipStream ( str ) ;klein.Write( mijnByteArray );

geef hetonderliggendestore-medium

"in beheer"

CryptoStream geheim;geheim = new CryptoStream ( klein ) ;

je kuntdecoratorscombineren

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

Reader en Writer

Stream

FileStream

MemoryStream

NetworkStream

BufferedStream

GZipStream

CryptoStream

TextWriter

StreamWriter

StringWriter

TextReader

StreamReader

StringReader

Object

store

deco

rato

r

leest en schrijftbytes

leest string en char

schrijftstring en char

vanuit een Stream

vanuit een String

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

Reader en Writer

Stream

FileStream

MemoryStream

NetworkStream

BufferedStream

GZipStream

CryptoStream

TextWriter

StreamWriter

StringWriter

TextReader

StreamReader

StringReader

Object

store

deco

rato

r

leest en schrijftbytes

leest string en char

schrijftstring en char

Stream str;str = new FileStream ( "test.txt", FileMode.Open );

TextReader lezer;lezer = new StreamReader ( str );

string s;s = lezer . ReadToEnd ( );

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

Reader en Writer

Stream

FileStream

MemoryStream

NetworkStream

BufferedStream

GZipStream

CryptoStream

TextWriter

StreamWriter

StringWriter

TextReader

StreamReader

StringReader

Object

store

deco

rato

r

leest en schrijftbytes

leest string en char

schrijftstring 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

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

Reader en Writer

Stream

FileStream

MemoryStream

NetworkStream

BufferedStream

GZipStream

CryptoStream

TextWriter

StreamWriter

StringWriter

BinaryWriter

XmlWriter

TextReader

StreamReader

StringReader

BinaryReader

XmlReader

Object

store

deco

rato

r

leest en schrijftbytes

leest string en char

schrijftstring en char

leest int en double

leest XML-teksten

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

Figuur 32

Stream

FileStream

MemoryStream

NetworkStream

BufferedStream

GZipStream

CryptoStream

TextReader

StreamReader

StringReader

BinaryReader

XmlReader

Object

store

deco

rato

r

(Filenaam,FileMode)

( )

(Socket)

(Stream, int)

(Stream, CompressionMode)

(Stream, CryptoStreamMode)

(Stream)

(Filenaam)

(String)

(Stream)

.Create(…)

(Stream, Encoding)

(wat de constructor nodig heeft)

statische methodedie het constructie-werk doet

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

Encoding: char naar byte

ASCII● 1 byte per char, <128

Unicode● 2 bytes per char

a äA α

41 61 3F 3F

41 61 E4 B10000 00 03

BigEndianUnicode● 2 bytes, grote eerst 41 61 E4 B10000 00 03

Latin-1 (iso-8859-1)● 1 byte per char, <256 41 61 E4 3F

UTF8● 1/2/3 bytes

per char41 61 A4 B1C3 CE

header

FEFF

FFFE

EFBBBF

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

Encoding

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

Hoofdstuk 11.1

Algoritmen:Console-applicaties

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

Console applicatie

static void Main ( )

class Hallo{

}

{

}

Console . WriteLine("Hallo " + naam + "!" );

statische methodestatische methoden

Console . WriteLine("Wat is je naam?");string naam = Console . ReadLine( );

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

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

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

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

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

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 meteentestenregel =

this.ReadLine( );

toekennen

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

Commandline programma

$> dateFri Oct 29, 11:30

$> lsaap.txt hallo.doc prog.cs

$> grep void prog.csprog.cs, line 6: void Main()

prog.cs, line 10: void teken()

$> ls > files.txt

$>

parametersvoor het programma

parametersvoor het programma

output redirection

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

Voorbeeld file-processor

laat alle regels van de files zienwaarin het gegeven patroon voorkomt

(met filenaam en regelnummer)

grep patroon file1 file2 ...

Unix-commando

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

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

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

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); }

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

Array

Declaratie Creatie Opvragen Wijzigen Lengte

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

Invoegen Achtervoegen

a.Insert(5,…);

List<String> a;

a = new List<String>();

a.Add(…);

uitgebreide

……a[5]……

a[5] = ……;

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

Voorbeeld: arrayclass 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<String> alles;

alles = new List<String>( );

alles.Add(s);

alles[t]

alles.Count

;t++)

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

Varianten van List

ICollection IList

ISetinterface ICollection<Elem>{ void Add(Elem x); bool Remove(Elem x); bool Contains(Elem x); int Count { get; }; void Clear();}

interface IList<Elem> : ICollection<Elem>{ Elem this[int n] { get; set; } ; int IndexOf(Elem x); void Insert(int n, Elem x); void RemoveAt(int n);}

genummerd

zonder dubbele

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

Voorbeeld: Collectionclass 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<String> alles;

alles = new List <String>( );

alles.Add(s);

alles[t]

alles.Count

;t++)

IList<String> alles;

ICollection<String> alles;

LinkedList

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

Hoe doorloop je een Collection?

List

Collection

for (int t=0; t<alles.Count; t++) doeIetsMet( alles[t] );

foreach (String s in alles) doeIetsMet( s );

opdracht

for )( expr opdrachtexpr expr;;

Speciale syntax voorspecifieke situatie

met bepaalde klasse

type exprinnaam foreach ( ) opdracht

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

Implementaties van Collections

LinkedList

Queue

Stack

List

HashSet

SortedSet

SortedList

SortedDictionary

IList

ISet

IDictionary

ICollection

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

Implementaties van Collections

IEnumerable

IEnumerator

IComparator

LinkedList

Queue

Stack

List

HashSet

SortedSet

SortedList

SortedDictionary

IList

ISet

IDictionary

ICollection

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

Toepassing: schets-editor

SchetsWin

Tools

Akties

MenuMDI-Container

SchetsControl

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

Schets: Klasse-ontwerp

Control

Form

UserControl

Hoofdscherm

SchetsWin

SchetsControl

SchetsImage Bitmap

ButtonBase

Button

RadioButton

SchetsEditor

System.Windows.Forms

System.Drawing

Program

ContainerControl

ISchetsTool

TekstTool

LijnTool

PenTool

GumTool

RechthTool

VolRechthTool

TweepuntTool

StartpuntTool

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

Member-variabelenclass SchetsWin class

SchetsControlclass Schets

: Form : UserControl{

}

{

}

{

}

MenuStrip strip;SchetsControl sc;ISchetsTool huidig;

Schets schets;Color kleur;

Bitmap bm;

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

Schoonmaakwerk doenclass SchetsWin class

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

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

Tool kiezenclass SchetsWin

: Form{

}

MenuStrip strip;SchetsControl sc;

ISchetsTool huidig;

void klikTool ( object obj, AE ae ){

}

huidig = obj . Tag(Button

)( )(ISchetsTool)

void maakTools({

}

ICollection<ISchTool> tools

)foreach (ISchetsTool tool in tools){

}

RadioButton r = new RadioButton();r.Text = tool.ToString();

r.Click += this.klikTool;r.Tag = tool;

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

Tool gebruikenclass 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,

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

Tool gebruikenclass 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

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

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

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

Schets-tools (2)

ISchetsToolStartpunt

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 ;

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

Schets-tools (3)

ISchetsTool

TekstTool

StartpuntTool

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) { }

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

Schets-tools (4)

ISchetsTool

TekstTool

TweepuntTool

StartpuntTool

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); }

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

Schets-tools (5)

Tool RechthoekTool

TekstTool

TweepuntTool

StartpuntTool

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

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

Schets-tools (6)

Tool

TekstTool

TweepuntTool

StartpuntTool

class VolRechthoekTool : RechthoekTool {

}

override void Compleet ( Graphics g, Point p1, Point p2 ){

}

RechthoekTool

VolRechthTool

g . FillRectangle(kwast, Punten2Rechthoek(p1,p2) );

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

Schets-tools (7)

Tool

LijnToolTekstTool

TweepuntTool

StartpuntTool

class LijnTool : TweepuntTool {

}

override void Bezig ( Graphics g, Point p1, Point p2 ){

}

g . DrawLine( MaakPen(kwast,3), p1, p2 );

RechthoekTool

VolRechthTool

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

Schets-tools (8)

Tool

LijnTool PenToolTekstTool

TweepuntTool

StartpuntTool

class PenTool : LijnTool {

}

override void MuisDrag ( SchetsControl s, Point p ){

}

this . MuisLos (s, p);this . MuisVast (s, p);

RechthoekTool

VolRechthTool

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

Schets-tools (9)

Tool

LijnTool PenTool GumToolTekstTool

TweepuntTool

StartpuntTool

class GumTool : PenTool {

}

override void Bezig ( Graphics g, Point p1, Point p2 ){

}

RechthoekTool

VolRechthTool

g . DrawLine( MaakPen(Brushes.White,7), p1, p2 );