Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdGeert van der Velde Laatst gewijzigd meer dan 6 jaar geleden
1
2e Deeltentamen Nagekeken werk ligt voor in de zaal (alfabetisch op achternaam) Neem het even mee, de uitwerking wordt in het college besproken Discussies over de antwoorden: in de pauze Je mag het werk behouden
2
1. class A : B { C D; } B is een A A heeft een C
C is een A, en dus ook een B A erft een C van B 123456 ACBBAB BADDCA CBACBD DDCADC
3
2. value is de waarde die de property...
heeft in de get-minimethode krijgt in de get-minimethode heeft in de set-minimethode krijgt in de set-minimethode 123456 ACBBAB BADDCA CBACBD DDCADC
4
3. K p = null wel niet prop gebruiken member veranderen
meegeven methoden aanroepen toekennen vergelijken toekennen meegeven 123456 ACBBAB BADDCA CBACBD DDCADC
5
4. array bound exception treedt op als... index niet numeriek
array geheel nog niet geinitialiseerd index te groot array ergens niet geinitialiseerd 123456 ACBBAB BADDCA CBACBD DDCADC
6
5. int[,,]a = new int[2,3,4]; heeft ruimte voor... 3 getallen
verschilt per dimensie 123456 ACBBAB BADDCA CBACBD DDCADC
7
6. Wat fout in Quotes moet weg in a[t]=='x'
bool Bevat( char[] a, char x) { for (int t=0; y<a.Length; t++) if (a[t]=='x') return true; return false } 6. Wat fout in Quotes moet weg in a[t]=='x' Array a niet new aangemaakt accolades rond for-body ontbreken else voor return false ontbreekt 123456 ACBBAB BADDCA CBACBD DDCADC
8
7. parameter van Thread-constructor
door Start... aangeroepen methode steeds opnieuw aangeroepen methode onderhandengenomen object steeds opnieuw o.h.g. object 123456 ACBBAB BADDCA CBACBD DDCADC
9
8. opvragen van char in string door s[i]
dit kan omdat... ToCharArray wordt aangeroepen Klasse string definieert indexer String is immutable IndexOf wordt aangeroepen 123456 ACBBAB BADDCA CBACBD DDCADC
10
9. Wat fout in herhaling gaat te lang door werkt niet als e==0
int Macht( int x, int e) { int res = 1; for (int t=1; t<=e; t++) x *= res; return res; } 9. Wat fout in herhaling gaat te lang door werkt niet als e==0 werkt niet als x==1 uitkomst is altijd 1 123456 ACBBAB BADDCA CBACBD DDCADC
11
10. Klasse Object erft methodes van alle klasses
is enige klasse zonder superklasse is subklasse van alle klasses is type van null object 123456 ACBBAB BADDCA CBACBD DDCADC
12
11. Invalidate effect: forceert Paint-event (en dat roept Paint-event-handler aan, en dat tekent het plaatje opnieuw) gebruiken als: je de member-variabelen aanpast die invloed hebben op het plaatje
13
12. x = int.Parse(s); exception opvangen exception voorkomen
try { x = int.Parse(s); } catch (Exception e) { x = 0; } x = 1; for (int t=0; t<s.Length; t++) if (s[t]<'0' || s[t]>'9') x = 0; if (x==1) x = int.Parse(s);
14
12. class / struct class: variabele bevat verwijzing struct: variabele bevat het object zelf struct gebruiken voor kleine objecten
15
14. virtual / override gebruiken: als je in een subklasse een method uit de superklase opnieuw definieert (virtual in superklasse, override in subklasse) zo niet: na declaratie SuperKl x = new SubKl(); en aanroep x . m(); wordt de methode van SuperKl aangeroepen
16
15. HoofdKlein char HoofdKlein(char x) { if (x>='A' && x<='Z')
return (char)(x-'A'+'a'); else return x; }
17
17. String . Replace/EndsWith
class String { string Replace(char a, char b) { string res; for (int t=0; t<this.Length; t++) if (this[t]==a) res += b; else res += this[t] return res; } bool EndsWith(string s) { int sl = s.Length, tl = this.Length; if (sl>tl) return false; for (int t=0; t<s.Length; t++) if (s[t]!=this[t+tl-sl]) return false; return true; } }
18
18. Turven int [ ] turf = new int [100]; int max = 0; turf [
s . Length ] ++; if (s.Length>max) max = s.Length; for (int t=1; t<=max; t++) { Console.Write( t + ": " ); for (int a=0; a<turf[t]; a++) Console.Write('*'); Console.Write("\n" ); }
19
Reader en Writer leest en schrijft bytes leest string en char
schrijft string en char Object Stream TextReader TextWriter FileStream StreamReader StreamWriter store MemoryStream StringReader StringWriter NetworkStream BinaryReader BinaryWriter XmlReader XmlWriter BufferedStream leest XML-teksten leest int en double decorator GZipStream CryptoStream
20
statische methode die het constructie-werk doet
Figuur 32 (wat de constructor nodig heeft) Object Stream TextReader (Stream) (Filenaam ,FileMode) FileStream StreamReader (Filenaam) (Stream, Encoding) store Memory Stream StringReader ( ) (String) Network Stream BinaryReader (Socket) (Stream) XmlReader .Create(…) Buffered Stream (Stream, int) decorator GZip Stream statische methode die het constructie-werk doet (Stream, CompressionMode) Crypto Stream (Stream, CryptoStreamMode)
21
Encoding: char naar byte
header A a ä α ASCII 1 byte per char, <128 41 61 3F 3F Unicode 2 bytes per char FE FF 41 00 61 00 E4 00 B1 03 BigEndianUnicode 2 bytes, grote eerst FF FE 00 41 00 61 00 E4 03 B1 Latin-1 (iso ) 1 byte per char, <256 41 61 E4 3F UTF8 1/2/3 bytes per char EF BB BF 41 61 C3 A4 CE B1
22
Encoding
23
Implementaties van Collections
ICollection LinkedList Queue Stack IList List ISet HashSet SortedSet IDictionary SortedList Sorted Dictionary
24
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 ; type expr in naam foreach ( ) opdracht
25
Algoritmen: Console-applicaties
Hoofdstuk 11.1 Algoritmen: Console-applicaties
26
Console applicatie statische methode statische methoden class Hallo {
static void Main ( ) { Console . WriteLine("Wat is je naam?"); string naam = Console . ReadLine( ); Console . WriteLine("Hallo " + naam + "!" ); } }
27
class Console class Console { TextReader In { get; }
TextWriter Out { get; } static void WriteLine( string s ) { Console . Out . WriteLine( s ); } static string ReadLine( ) { return Console . In . ReadLine( ); } }
28
class TextReader abstract class TextReader { string ReadToEnd( ) {
StreamReader string resultaat, regel; regel = this.ReadLine( ); StringReader while (regel != null) { resultaat += regel + "\n" ; regel = this.ReadLine( ); } return resultaat; } abstract string ReadLine( ) ; }
29
class TextReader class TextReader toekennen { string ReadToEnd( ) {
en meteen testen string resultaat, regel; regel = this.ReadLine( ); while (regel != null) ( (regel = this.ReadLine()) != null ) { resultaat += regel + "\n" ; regel = this.ReadLine( ); } return resultaat; } abstract string ReadLine( ) ; }
30
Commandline programma
$> date parameters voor het programma parameters voor het programma 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 $> output redirection
31
Voorbeeld file-processor
grep patroon file1 file2 ... Unix-commando laat alle regels van de files zien waarin het gegeven patroon voorkomt (met filenaam en regelnummer)
32
Grep: main class Grep { static void Main ( string [ ] params ) {
if (params.Length==0) Console.WriteLine("Usage: Grep patroon file ..."); else for (int t=1; t<params.Length; t++) Grep.bewerk( params[0], params[t] ); }
33
Grep: bewerk static void bewerk (String pat, String naam) {
TextReader reader; String regel; try { if (naam=="") reader = Console.In; else reader = new StreamReader (naam); while ( for (int n=1; ( regel=reader.ReadLine() ) != null ; n++ ) if ( regel . Contains (pat) ) Console.WriteLine( naam + n + regel ); } catch (Exception e) { Console.WriteLine(naam + e); }
34
Practicum: schets-editor
MDI- Container Menu SchetsWin Tools SchetsControl Akties
35
Tool kiezen class SchetsWin : Form SchetsControl sc; {
MenuStrip strip; ISchetsTool huidig; void maakTools( ICollection<ISchTool> tools ) { foreach (ISchetsTool tool in tools) { RadioButton r = new RadioButton(); r.Text = tool.ToString(); r.Tag = tool; r.Click += this.klikTool; } } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } }
36
Tool gebruiken class SchetsWin interface ISchetsTool : Form
SchetsControl sc; { MenuStrip strip; ISchetsTool huidig; { SchetsWin ( ) void MuisVast( { sc = new SchetsControl ( ); SchetsControl s, sc.MousePress += this.muis; } Point p); void muis ( object o, MEA mea) { huidig.MuisVast( sc, mea.Location) } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } } }
37
Tool gebruiken class SchetsWin interface ISchetsTool anonieme methode
: Form SchetsControl sc; { MenuStrip strip; ISchetsTool huidig; { SchetsWin ( ) void MuisVast( { sc = new SchetsControl ( ); SchetsControl s, sc.MousePress += ( object o, MEA mea) => Point p); anonieme methode { huidig.MuisVast( sc, mea.Location); } } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } } }
38
Schets-tools (1) 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) ;
39
Schets-tools (2) abstract class StartpuntTool : ISchetsTool { }
Point startpunt ; Brush kwast ; virtual void MuisVast ( SchetsControl s, Point p) { startpunt = p; } virtual void MuisLos ( SchetsControl s, Point p) { kwast = new SolidBrush( s.Penkleur ); } abstract void MuisDrag ( SchetsControl s, Point p) ; abstract void Letter ( SchetsControl s, Point p) ;
40
Schets-tools (3) class TekstTool : StartpuntTool { }
ISchetsTool 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) { }
41
Schets-tools (4) abstract class TweepuntTool : StartpuntTool { }
TekstTool Tweepunt Tool ISchetsTool Startpunt Tool abstract class TweepuntTool : StartpuntTool { } override void MuisDrag ( SchetsControl s, Point p) { } Graphics g = s . CreateGraphics(); this . Bezig (g, startpunt, p); override void MuisLos ( SchetsControl s, Point p) { Graphics g = s . MaakBitmapGraphics(); this . Compleet (g, startpunt, p); } abstract void Bezig (Graphics g, Point p1, Point p2) ; virtual void Compleet (Graphics g, Point p1, Point p2) { this . Bezig (g, p1, p2); }
42
Schets-tools (5) class RechthoekTool : TweepuntTool { }
TekstTool Tool Startpunt Tool Tweepunt Tool Rechthoek 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)) ); }
43
Schets-tools (6) class VolRechthoekTool : RechthoekTool { }
TekstTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class VolRechthoekTool : RechthoekTool { } override void Compleet ( Graphics g, Point p1, Point p2 ) { } g . FillRectangle(kwast, Punten2Rechthoek(p1,p2) );
44
Schets-tools (7) class LijnTool : TweepuntTool { }
TekstTool LijnTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class LijnTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } g . DrawLine( MaakPen(kwast,3), p1, p2 );
45
Schets-tools (8) class PenTool : LijnTool { }
TekstTool LijnTool PenTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class PenTool : LijnTool { } override void MuisDrag ( SchetsControl s, Point p ) { } this . MuisLos (s, p); this . MuisVast (s, p);
46
Schets-tools (9) class GumTool : PenTool { }
TekstTool LijnTool PenTool GumTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class GumTool : PenTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } g . DrawLine( MaakPen(Brushes.White,7), p1, p2 );
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.