Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Van domeinklasse tot implementatie
PROS2 Les 11 Programmeren en Software Engineering 2.
Hoofdstuk 10.2 Rekenmachine-casus.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 2 Hallo, C# !.
Bestanden Hoofdstuk 18 Hoofdstuk 18.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 8 Objecten en klassen.
Consoletoepassing Variabelen Klassen
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Visual Basic.NETPag.1 Hoofdstuk 10 - Grafische User Interface : Deel 2 Inleiding Menus ListBoxes ComboBoxes Multiple Document Interface (MDI) Windows.
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Les 7 Multiple Document Interface Programmeren met Visual Basic Karl Moens.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
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,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
Reader en Writer Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter BinaryWriter.
Gelijkheid van Strings static bool Gelijk( string s, string t) { } int m = s.Length; int n = t.Length; for (i=0; i
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.
Opbouw van het Netwerk void Lees (string filenaam ) { while ( (regel=sr.ReadLine()) != null ) { string [] r = regel.Split(" ", StringSplitOptions.RemoveEmpty.
1 februari Web concepts formulieren. 2 File i/o (input) $filename = “FILE_IO.CSV” ;// naam van het bestand $filesize = filesize( $filename )
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
Bestanden Lezen Schrijven Afbeeldingen. Bestandstypen.txt.png eigen.
GUI & classes Een Gui in een class steken en het object gebruiken.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Windows applicatieontwikkeling
Game Object Structuren
Aanroep van een methode voert opdrachten uit in de body daarvan
Lezen en schrijven van tekst
2e Deeltentamen Nagekeken werk ligt voor in de zaal (alfabetisch op achternaam) Neem het even mee, de uitwerking wordt in het college besproken Discussies.
Voortborduren op eerder gedaan werk
Reader en Writer leest en schrijft bytes leest string en char
Hoofdstuk 9.2 Strings.
string versus char string char klasse primitief type
Letterfrequentie turven
Windows-applicatie using System.Windows.Forms; using System.Drawing;
vandaag èn vrijdag deadline maandag 12 dec.
Publieksvraag // schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo . Freq(’e’,
Lezen en schrijven van tekst
Gameprogrammeren: Tiles in Tick Tick
Tinpro015b-les5 Invoer en Uitvoer.
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
OOS Object geOrienteerd Software-ontwerp - 5
Arjan Egges & Paul Bergervoet
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Libraries, Platform Games
Practicum: schets-editor
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Gameprogrammeren: Interfaces
Arjan Egges Paul Bergervoet Wouter van Toll
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Tiles en File I/O in Tick Tick
Implementatie Zoekboom
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Software Development fundamentals
Transcript van de presentatie:

Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen

Voorbeeld: Tekst-Editor Multiple Document Interface Open/Save: standaard- dialoog Zoek/Vervang: eigen dialoog files lezen en schrijven

Multiple Document Interface MDI- container MDI- child MDI- children

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

Multiple Document Interface menu-regel bevat items van de parent èn children

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;

Dialogen voeren

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

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;

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

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

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;

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

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

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

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 }

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 ;

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

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

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 ;

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

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

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

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

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

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

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

Encoding