Skillnad mellan versioner av "Kap 14 Windowsprogrammering (54)"

Från Mathonline
Hoppa till: navigering, sök
m
m
 
(21 mellanliggande versioner av samma användare visas inte)
Rad 45: Rad 45:
 
<big>
 
<big>
 
* &nbsp; &nbsp; För att kunna rita i formen, använder vi oss av verktyg som finns i ritmetoden [[Om metoden OnPaint()|<b><span style="color:blue">OnPaint()</span></b>]].
 
* &nbsp; &nbsp; För att kunna rita i formen, använder vi oss av verktyg som finns i ritmetoden [[Om metoden OnPaint()|<b><span style="color:blue">OnPaint()</span></b>]].
 +
 
* &nbsp; &nbsp; Metoden <b>OnPaint()</b> är definierad i klassen <b>Form</b> som vi <i>ärver</i> i vår form <b>Form1</b>.
 
* &nbsp; &nbsp; Metoden <b>OnPaint()</b> är definierad i klassen <b>Form</b> som vi <i>ärver</i> i vår form <b>Form1</b>.
* &nbsp; &nbsp; För att kunna använda verktygen i ritmetoden [[Om metoden OnPaint()|<b><span style="color:blue">OnPaint()</span></b>]], måste vi <i>överskugga (override)</i> den.
+
 
 +
* &nbsp; &nbsp; Att använda en metods huvud som är definierad i en superklass och modifiera helt eller
 +
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; delvis dess funktionalitet i subklassen, kallas i objektorienterad programmering (OOP) för
 +
 
 +
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <b>polymorfism</b> (en metod med många gestalter).
 +
 
 +
* &nbsp; &nbsp; För att kunna använda ritverktygen i metoden [[Kap_14_Windowsprogrammering_(54)#Metoden_OnPaint.28.29_till_projektet_Draw|<b><span style="color:blue">OnPaint()</span></b>]], måste vi <i>överskugga (override)</i> den.
 +
 
 
* &nbsp; &nbsp; Att <i>överskugga (override)</i> en metod betyder att ta dess huvud och definiera om dess kropp:
 
* &nbsp; &nbsp; Att <i>överskugga (override)</i> en metod betyder att ta dess huvud och definiera om dess kropp:
 
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Man tar över metodens namn samt parametrar (huvud) och modifierar dess funktionalitet (kropp).
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Man tar över metodens namn samt parametrar (huvud) och modifierar dess funktionalitet (kropp).
  
* &nbsp; &nbsp; Koncepten <i>överskuggning (override)</i> och <i>arv (inheritance)</i> kommer vi att lära oss i
+
* &nbsp; &nbsp; Koncepten <i>arv (inheritance)</i>, <i>polymorfism</i> och <i>överskuggning (override)</i> kommer vi att lära oss  
 
+
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i kursen [http://mathonline.se/Systemutv_Inb_Syst_Inneh_Struktur.pdf <b><span style="color:red">Systemutveckling för inbyggda system</span></b>].
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <b>Kap 2 Objektorienterad programmering (OOP)</b>.
+
 
</big>
 
</big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Metoden <span style="color:blue">OnPaint()</span></span></b> =
+
= <b><span style="color:#931136">Metoden <span style="color:blue">OnPaint()</span> till projektet Draw</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
==== <b><span style="color:#931136">Högerklicka i Solution Explorer-fönstret på Form1.cs och välj View Code</span></b> ====
+
=== <b><span style="color:#931136">OBS! OnPaint() är ingen händelsemetod. Därför skriv eller klistra in koden bara:</span></b> ===
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: OnPaint.jpg]]</div>
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: OnPaint.jpg]]</div>
 
</div>
 
</div>
  
  
== <b><span style="color:#931136">Fullständiga instruktioner till detta projekt finns i [http://mathonline.se/Boken%20Programmering%20i%20C%20och%20Cpp.pdf <span style="color:blue">kursboken</span>], sid 434-436.</span></b> ==
+
= <b><span style="color:#931136">Fullständiga instruktioner till detta projekt finns i [http://mathonline.se/Boken%20Programmering%20i%20C%20och%20Cpp.pdf <span style="color:blue">kursboken</span>], sid 434-437.</span></b> =
  
+++
 
  
= <b><span style="color:#931136">14.8 &nbsp; Gränssnitt mot kalendern</span></b> =
+
= <b><span style="color:#931136">14.11 &nbsp; Bågar och vinklar</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
=== <b><span style="color:#931136">Projektet DeliveryDate med kontrollen DateTimePricker</span></b> ===
+
=== <b><span style="color:#931136">Projektet Arcs</span></b> ===
<big>
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Arcs.jpg]]</div>
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: DeliveryDatea.jpg]]</div>
+
 
+
Kontrollen DateTimePricker är ett gränssnitt mot aktuell kalender.
+
 
+
När ett beställningsdatum väljs i kalendern ska ett leveransdatum visas. Regler:
+
 
+
1) Leveransdatum ska i regel ligga 2 dagar efter beställningsdatum.
+
 
+
2) Söndagar kan inte levereras, dvs: Ligger en söndag mellan leverans- och
+
 
+
&nbsp;&nbsp;&nbsp; beställningsdatum, ska leveranstiden vara 3 dagar.
+
 
+
3) När formen laddas, ska dagens datum vara markerad och visas i kalendern.
+
 
+
4) Kalendern ska innehålla datum maximalt ett år efter dagens datum.
+
</big>
+
 
</div>
 
</div>
  
  
<big><big><big>Dessa regler är implementerade i koderna nedan:</big></big></big>
+
= <b><span style="color:#931136">Ny typ av grafisk applikation</span></b> =
 
+
 
+
= <b><span style="color:#931136">Kod bakom DateTimePricker</span></b> =
+
<div class="ovnC">
+
<big>
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Koden_DateTimeP.jpg]]</div>
+
</big>
+
</div>
+
 
+
 
+
= <b><span style="color:#931136">Kod bakom formen</span></b> =
+
<div class="ovnC">
+
<big>
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Koden_Form.jpg]]</div>
+
</big>
+
</div>
+
 
+
 
+
== <b><span style="color:#931136">Fullständiga instruktioner till detta projektet DeliveryDate finns i [http://mathonline.se/Boken%20Programmering%20i%20C%20och%20Cpp.pdf <span style="color:blue">kursboken</span>], sid 428-429.</span></b> ==
+
 
+
 
+
= <b><span style="color:#931136">14.9 &nbsp; En räntekalkylator med multiline TextBox</span></b> =
+
<div class="ovnE">
+
=== <b><span style="color:#931136">Projektet TaxCalculator</span></b> ===
+
<big>
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: TaxCalculator.jpg]]</div>
+
</big>
+
</div>
+
 
+
 
+
= <b><span style="color:#931136">Kontroller</span></b> =
+
 
<div class="ovnA">
 
<div class="ovnA">
 
<big>
 
<big>
Fyra Labels <math> \qquad </math> Tre TextBoxar
+
* &nbsp; &nbsp; Inget interaktivt gränssnitt. Inga kontroller.  
 
+
* &nbsp; &nbsp; Vi vill <b>rita</b> bågar och vinklarna ovan <b>i formen</b>.
En Button <math> \qquad\;\;\, </math> Kontrollen bredvid Antal år en <b><span style="color:red">NumericUpDown</span></b>.
+
* &nbsp; &nbsp; OBS! <b>Undvik</b> att (dubbel)klicka på formen!
 
+
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Har du gjort det av misstag, stäng projektet och börja om!
Den stora TextBoxen under Årliga saldon har egenskapen &nbsp;<b><span style="color:red">Multiline: True</span></b>.
+
 
+
De andra små TextBoxarna ovan har egenskapen <math> \qquad\quad </math> <b>Multiline: False</b>.
+
 
</big>
 
</big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Klassen Form1 till projektet TaxCalculator</span></b> =
+
= <b><span style="color:#931136">Metoden <span style="color:blue">OnPaint()</span> till projektet Arcs</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: TaxCalculator_Form1.jpg]]</div>
+
=== <b><span style="color:#931136">OBS! Undvik att (dubbel)klicka på formen!</span></b> ===
 +
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: OnPaint_Arcs.jpg]]</div>
 
</div>
 
</div>
  
  
== <b><span style="color:#931136">Fullständiga instruktioner till detta projekt finns i [http://mathonline.se/Boken%20Programmering%20i%20C%20och%20Cpp.pdf <span style="color:blue">kursboken</span>], sid 430-433.</span></b> ==
+
= <b><span style="color:#931136">Fullständiga instruktioner till detta projekt finns i [http://mathonline.se/Boken%20Programmering%20i%20C%20och%20Cpp.pdf <span style="color:blue">kursboken</span>], sid 438-439.</span></b> =
  
 
<br><br>
 
<br><br>

Nuvarande version från 19 december 2023 kl. 22.00

Ons 20 dec, kl 9-12


        <<  Agenda          Genomgång 54          Övningar 54          Innehåll & struktur          Nästa lektion  >>      


Kap 14   Windowsprogrammering (forts.)

14.10   Geometriska figurer

Projektet Draw

Draw.jpg


Ny typ av grafisk applikation

  •     Inget interaktivt gränssnitt. Inga kontroller.
  •     Applikationen liknar snarare ett ritprogram.
  •     Vi vill rita geometriska figurerna ovan i formen.
  •     OBS! Undvik att (dubbel)klicka på formen!

          Har du gjort det av misstag, stäng projektet och börja om!


Formens koordinatsystem

FormKoord.jpg


Att rita i formen

  •     För att kunna rita i formen, använder vi oss av verktyg som finns i ritmetoden OnPaint().
  •     Metoden OnPaint() är definierad i klassen Form som vi ärver i vår form Form1.
  •     Att använda en metods huvud som är definierad i en superklass och modifiera helt eller

          delvis dess funktionalitet i subklassen, kallas i objektorienterad programmering (OOP) för

          polymorfism (en metod med många gestalter).

  •     För att kunna använda ritverktygen i metoden OnPaint(), måste vi överskugga (override) den.
  •     Att överskugga (override) en metod betyder att ta dess huvud och definiera om dess kropp:

          Man tar över metodens namn samt parametrar (huvud) och modifierar dess funktionalitet (kropp).

  •     Koncepten arv (inheritance), polymorfism och överskuggning (override) kommer vi att lära oss

          i kursen Systemutveckling för inbyggda system.


Metoden OnPaint() till projektet Draw

OBS! OnPaint() är ingen händelsemetod. Därför skriv eller klistra in koden bara:

OnPaint.jpg


Fullständiga instruktioner till detta projekt finns i kursboken, sid 434-437.

14.11   Bågar och vinklar

Projektet Arcs

Arcs.jpg


Ny typ av grafisk applikation

  •     Inget interaktivt gränssnitt. Inga kontroller.
  •     Vi vill rita bågar och vinklarna ovan i formen.
  •     OBS! Undvik att (dubbel)klicka på formen!

          Har du gjort det av misstag, stäng projektet och börja om!


Metoden OnPaint() till projektet Arcs

OBS! Undvik att (dubbel)klicka på formen!

OnPaint Arcs.jpg


Fullständiga instruktioner till detta projekt finns i kursboken, sid 438-439.



Gå vidare till:        när du är klar med denna genomgång.












Copyright © 2023. All Rights Reserved.