> For the complete documentation index, see [llms.txt](https://coursepress.gitbook.io/1dv024/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coursepress.gitbook.io/1dv024/ovningsuppgifter/del-1/statisk-addition.md).

# Statisk addition

{% hint style="info" %}
[repo](https://github.com/1dv024/exercise-static-adding), [lösningsförslag](https://github.com/1dv024/exercise-solution-proposals/tree/master/exercise-static-adding)
{% endhint %}

## Uppgift

Komplettera det ofullständiga projektet ”StaticAdding” med den statiska klassen `MyMath` så att metoden `Main` kan kompileras och exekveras utan problem.

Klassen `MyMath` ska ha två statiska metoder, som båda ska heta `Add` men ha olika parameterlistor och därmed olika signaturer. Den ena metoden ska returnera summan av två heltal av typen `int`, och den andra metoden ska returnera summan av två flyttal av typen `double`.

Metoden `Main` i klassen `Program` får du inte ändra på något sätt. Koden ska oförändrad kunna använda de statiska metoderna i klassen `MyMath` som du ska implementera (skriva).

<div align="left"><img src="/files/-LHI2V3sVUodCd7lSsCy" alt="Figur 1. Klassdiagram över den statiska klassen MyMath med två statiska metoder."></div>

**Program.cs**

```csharp
using System;

namespace StaticAdding
{
    /// <summary>
    /// Represents the main place where the program starts the execution.
    /// </summary>
    class Program
    {
        /// <summary>
        /// The starting point of the application.
        /// </summary>
        static void Main(string[] args)
        {
            // Which static method is called?
            int sum = MyMath.Add(123, 456);
            Console.WriteLine($"Summan är: {sum}\n");

            // Which static method is called?
            double anotherSum = MyMath.Add(9.87, 6.54);
            Console.WriteLine($"Summan är: {anotherSum}\n");

            // Which static method is called?
            Console.WriteLine("Summan är: {0}\n", MyMath.Add(123, 6.54));
        }
    }
}
```

Fundera lite över vilken av de två statiska metoderna som kommer att anropas av de olika satserna. Vad är det som bestämmer det? Jo, typen som argumenten är av. Nog med ledtrådar…

## Mål

Efter att ha gjort övningsuppgiften ska du känna till:

* Allmänt om metoder i kurslitteraturen, kapitel 4, främst under rubrikerna ”*Calling a Method*” och ”*Declaring a Method*”.
* Överlagring av metoder i kurslitteraturen, kapitel 4, under rubriken ”*Method Overloading*”.
* Statiska metoder behandlas i kurslitteraturen, kapitel 5, under underrubriken ”*Static Methods*”. Online-hjälpen ”*Static Classes and Static Class Members (C# Programming Guide)*”, <http://msdn.microsoft.com/en-us/library/79b3xss3.aspx> får komplettera.

## Tips

Läs om:

* variabler i kurslitteraturen, kapitel 1, under rubriken ”*Working with Variables*”.
* olika typer av data i kurslitteraturen, kapitel 2, under rubriken ”*Fundamental Numeric Types*”.
* enkla aritmetiska operatorer i kurslitteraturen, kapitel 3, under rubriken ”*Operators*”.

Genom att läsa online-dokumentationen kan du lista ut hur du ska skriva för att ett flyttal ska presenteras med en decimals onoggrannhet. Men det kan vara lite snårigt att hitta så här har du ett hett tips för att skriva en variabel av typen `double` med namnet `myFloatingPointNumber`: `Console.WriteLine($"{myFloatingPointNumber:f1}");`.
