1 / 41

C# programmering

Grundlæggende Datanet. C# programmering. Per P. Madsen Afd. for Proceskontrol Institut for elektroniske systemer Aalborg Universitet. C# programmering 1. Del 1: Objekt-orienteret programmering og C# Intro. til OOP. Intro. til UML C# programstruktur. Typer, kontrolstrukturer.

maylin
Télécharger la présentation

C# programmering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grundlæggende Datanet C# programmering Per P. Madsen Afd. for Proceskontrol Institut for elektroniske systemer Aalborg Universitet Per Printz Madsen AAU

  2. C# programmering 1. • Del 1: Objekt-orienteret programmering og C# • Intro. til OOP. • Intro. til UML • C# programstruktur. • Typer, kontrolstrukturer. • Data og metoder. • .NET library Per Printz Madsen AAU

  3. Software udviklingsmetoder. Overordnet metode: • Fastlæg kravene til systemet: ’’Kravspesifikation’’ • Analyser omverdnen til systemet. ’’Usecase’’ • Beskriv strukturen af systemet. ’’Klassediagram’’ • Design systemet. Diverse beskrivelses former. • Programmer. Løbende test af enkelt dele. • Accept test. ’’Opfylder systemet kravspesifikationen?’’ Per Printz Madsen AAU

  4. Water-falls metoden Per Printz Madsen AAU

  5. Spiral-modellen spiral-modellen Per Printz Madsen AAU

  6. UML Unified Modeling Language • Standartiseret specifikations sporg til: • understøttelse af objektorienteret software udvikling. • beskrivelse af objektorienteret softwære. Per Printz Madsen AAU

  7. UML Unified Modeling Language • Functional Model • Viser funktionaliteten af systemet fra brugerens synspunkt. • Beskrivelsesform: Use Case Diagrammer. • Object Model • Viser strukturen og understrukturer af systemet ved hjælp af klasser, attributter, operationer og associationer. • Beskrivelsesform Class Diagramsmer. • Dynamic Model • Viser den interne adfær af systemet. • Beskrivelsesform Sequence Diagrammer, Activity Diagrammer og State Machine Diagrammer. Per Printz Madsen AAU

  8. Analyse fasen • Kik på brugen af systemet. Anvendelsesområdet. • Kik på den fysiske struktur. Hardwaren der anvendes. • Kik på problemets struktur. Problem området. Per Printz Madsen AAU

  9. Use Case diagram Per Printz Madsen AAU

  10. Aktivitets diagram for sæt parametre Per Printz Madsen AAU

  11. Design layout • Øjet kikker først øverst til højre. • Ved dialog husk Cancel/Annuller neders til venstre. • Ved brug af farver ha’ en veldefineret betydning. • Samme effekt af samme handling. Indlæs fil dialog Vælg fil Default.txt Hjælp Indlæs Annuller Per Printz Madsen AAU

  12. Deployment Diagram - Hvor skal de enkelte softvære det placeres? Per Printz Madsen AAU

  13. Klasse diagram - Strukturen af selve problemet. Per Printz Madsen AAU

  14. Design fasen • Sekvenser. Hvem kalder hvem. • Objekt tilstande. Adfær af objekterne. • Algoritme design. Per Printz Madsen AAU

  15. Sekvensdiagram Per Printz Madsen AAU

  16. Objekt tilstande Per Printz Madsen AAU

  17. Algoritmer • Pseudo kode • Aktivitetsdiagremmer. Fx for RegAlgo run. • Hent ny måleværdi og ny reference. • Beregn fejlen: E • Beregn outputtet: O = P*E + I*EI + D*(E-oldE) • Sæt status: EI= EI+E og oldE= E Per Printz Madsen AAU

  18. Objekt orienteret programmering Nu er både den statiske og dynamiske struktur på plads Så kan programmeringen begynde. Per Printz Madsen AAU

  19. C# (CSharp) Et objektorienteret programmeringssprog. Første version fra MicroSoft i 2001 Nyeste version er C# 2005 Per Printz Madsen AAU

  20. .NET arkitekturen filnavn.vb filnavn.cs filnavn.cpp Forskellige compilere Fx: csc JIT compiler Assemblies .dll eller .exe (CIL) Maskin kode Per Printz Madsen AAU

  21. C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her: "); string navn = Console.ReadLine(); Console.WriteLine("Hej igen - " + navn + ". Jeg er en meget arbejdsom medhjælp."); } } } Per Printz Madsen AAU

  22. C# program struktur. De eksisterende systemer der bruges. Navnet på dette system Komponet1(class) Data og kode Komponet2(class) Data og kode Komponet3(class) Data og kode Komponet4(class) Data og kode Per Printz Madsen AAU

  23. Using System; ...... Namespace ...... { classe komponentnavn1 { Data. metoder. } classe komponentnavn2 { Data. metoder. } class startkomponent { static void Main() { kode; } } } Per Printz Madsen AAU

  24. C#- overordnet • Alle programalgoritmer og data skal pakkes ind. – typisk i en klasse, dvs. ingen globale funktioner eller data. • Et eksekverbart program indeholder en metode Main() • applikationens startpunkt. • C# er case-sensitive. • C# har operator- og metodeoverloading. • Ingen multibel arv. • Alle klasser arver fra object • Garbage-collection Per Printz Madsen AAU

  25. Primitive datatyper Per Printz Madsen AAU

  26. Tilskrivninger int x = 0; float[] ya= new float[10]; double[] za= {1,2,3,4,5,6,7}; int[,,] x3a= new int[3,4,5]; String tal = "3,4E-4"; Boolean flag1 = true; uint stort_tal = 23456789; ya[0]= (float)za[6]; x3a[1,2,3]= (int)stort_tal; ya[1]= (float)System.Convert.ToDouble(tal); tal = "dette er en floatværdi: " + tal; za[3] = Math.PI * Math.Cos(ya[1]) - 3; Per Printz Madsen AAU

  27. using System; Namespace MyFirst { class eks1 { private static float a; private static int funk1(float ap) { int a; a = (int)ap; return a; } private int funk2(float ap) { return 2*(int)ap; } static void Main(string[] args) { int a = funk1(3.4f); Program p = new Program(); a=p.funk2((float)a); } } } Per Printz Madsen AAU

  28. Access Modifiers • Public: Fuld access. • Private: Kun access fra klassen selv. • Protected: Klassen selv og de klasser der arver fra denne klasse. • Internal: Kun access fre samme assembly (file). Per Printz Madsen AAU

  29. Beregninger • +, -, * , / og % (modulus) • De sædvanlige regler gælder: 2 + 3 * 4 = 2 + (3 * 4) = 14 • Math klassen indeholder statiske metoder: Cos, Sin, Tan, Exp, Log osv. • Divideres 2 heltal (byte,int, long,,) , så fås et heltal ud: 23 / 4 giver 5 • Divideres to tal, hvoraf det ene er et reelt tal, så fungerer alt som normalt • 23 % 4 giver 3, fordi ’4 går op i 23 5 gange med 3 til rest’ Per Printz Madsen AAU

  30. Kontrolstrukturen: if-else Relationer >, <, >=, <=, ==, != Type test is eks: ya is float[] Logiske ||, &&, ! eks:(x<=y) && (y< z) Bit vis logik &, |, ^, ~ if (x < y) { min = x; max = y; } else { min = y; max = x; } Per Printz Madsen AAU

  31. Kontrolstrukturen: switch-case int x= 4; switch (x) { case 1: Console.WriteLine("x=1"); break; case 2: case 3: Console.WriteLine("x= 2 eller 3"); break; default: Console.WriteLine("x er ikke lig 1,2 eller 3"); break; } Per Printz Madsen AAU

  32. Kontrolstrukturer: Loop double[] databuf = new double[5]; int i; for (i = 0; i < 5; i++) { databuf[i] = 0.0; } i=0; while (i<5) { databuf[i] = i = i+1; // i++; i+=1; } foreach (double x in databuf) { Console.WriteLine(x); } Per Printz Madsen AAU

  33. Input/output float b = 29; Console.WriteLine("a= {0,6:F2}",b); Console.WriteLine("a= {0,-6:X}", b); b = .678e2F; string str1 = string.Format("a= {0,7:F2}", b); string str2= "Lidt mere tekst: \t"; string str3 = @" \dir\src\flie.c"; Console.WriteLine(str2 + str1 + str3); • Format: • D Decinaltal. • E Exponent. • F Fixed point. • P Procent. • X Hex. a= 29,00 a= 1D Lidt mere tekst: a= 67,80 \dir\src\flie.c Per Printz Madsen AAU

  34. Skrivning til fil FileStream stream = new FileStream("udfil.txt", FileMode.Create); StreamWriter filoutput = new StreamWriter(stream); filoutput.WriteLine("a= {0,5:f2}", 5); filoutput.Flush(); filoutput.Close(); Filen: udfil.txt a= 5,00 Per Printz Madsen AAU

  35. Binær fil FileStream bstream= new FileStream("udfil.bin", FileMode.Create); BinaryWriter bfil = new BinaryWriter(bstream); BinaryReader bin = new BinaryReader(bstream); bfil.Write((double)b); bfil.Write((double)b + 1); bfil.Write((double)b + 2); bstream.Seek(0, SeekOrigin.Begin); Boolean eof = false; while (!eof) { try { Console.WriteLine("in værdi= {0,7:f2}",bin.ReadDouble()); } catch (EndOfStreamException) { eof = true; } } bfil.Close(); Per Printz Madsen AAU

  36. try-catch-throw static void ProcessString(string s) { if (s == null) { throw new Exception("ProcessString: - Parameter isnull\n"); } } //------------------------------------------------------- try { string s = null; ProcessString(null); } catch (Exception e) { Console.WriteLine("{0} \n-- Exception caught. --", e); } Per Printz Madsen AAU

  37. Udskrift ved fanget exception System.Exception: ProcessString: - Parameter is null at csharpEks.Program.ProcessString(String s) in C:\Documents and Settings\ppm\Dokumenter\Undervisning\Bila\csharpEks\Program.cs:line 62 at csharpEks.Program.Main(String[] args) in C:\Documents and Settings\ppm\Dokumenter\Undervisning\Bila\csharpEks\Program.cs:line 170 -- Exception caught. -- Per Printz Madsen AAU

  38. Eksempel: SimpelPlot Per Printz Madsen AAU

  39. Klassediagram Per Printz Madsen AAU

  40. Grafik. Skaf ’’Graphics’’ objektet for det du vil tegne på. Fx: Graphics g= grafBox.CreateGraphics(); Pen pen = new Pen(Color.Black,3); g.DrawLine(pen, 0, 0, 100, 100); 0,0 Per Printz Madsen AAU

  41. Grafik. Skal gentegnes når: Vindue flyttes, foran liggende vindue fjernes, osv. Løsning: Re-tegn hver gang der komme et Paint-event. private void plot_but_Click( object sender, EventArgs e) { PlotForm pwin = new PlotForm(); pwin.setfilname(filename); pwin.setData(databuf); pwin.Show(); } private void grafBox_Paint(object sender, PaintEventArgs e) { g = e.Graphics; pen= new Pen(gcolor,1); for (int i = 0; i < symboler.Count; i++) ((gsymbol) symboler[i]).plot(g, pen); } Per Printz Madsen AAU

More Related