Gå til indholdet

N205 Simpel klasse (Person)

Du skal skabe en tom konsol app med en klasse Person med følgende medlemmer:

  • Et offentlig string felt kaldet Fornavn
  • Et offentlig string felt kaldet Efternavn
  • Et offentlig int felt kaldet Fødselsår
  • En offentlig metode FuldtNavn() som returnerer Fornavn + ” ” + Efternavn
  • En offentlig metode Alder() der beregner en estimeret alder ud fra fødselsår
  • En default constructor som sætter Fornavn og Efternavn til ””
  • En custom constructor som initialiserer alle felter

Brug klassen i programmet ved at skabe 2-3 objekter med new, og test at metoderne virker.

Ekstra: Serialisering

Prøv at serialisere og deserialisere til JSON med System.Text.Json.JsonSerializer.Serialize og System.Text.Json.JsonSerializer.Deserialize - se løsning.

Klik for at se et forslag til en løsning
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Json.Serialization.Metadata;
using System.Text.Unicode;

Person p1 = new Person();
p1.Efternavn = "cronberg";
p1.Fornavn = "mathias";
p1.Fødselsår = 2006;
Console.WriteLine(p1.FuldtNavn());
Console.WriteLine(p1.EstimeretAlder());

Person p2 = new Person("mikkel", "cronberg", 2006);
Console.WriteLine(p2.FuldtNavn());
Console.WriteLine(p2.EstimeretAlder());

// Ekstra
// Medtag felter og sørg for at ØÆÅ håndteres korrekt i JSON
var options = new JsonSerializerOptions
{
    IncludeFields = true,
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.Latin1Supplement),
    TypeInfoResolver = new DefaultJsonTypeInfoResolver()
};

// Serialisering
string json = JsonSerializer.Serialize(p2, options);
Console.WriteLine(json);

// Fra string
Person? p3 = JsonSerializer.Deserialize<Person>(json, options);

class Person
{
    public string Fornavn;
    public string Efternavn;
    public int Fødselsår;

    public string FuldtNavn()
    {
        return $"{Fornavn} {Efternavn}";
    }

    public int EstimeretAlder()
    {
        int år = DateTime.Now.Year;
        return år - this.Fødselsår;
    }

    // Default constructor
    public Person()
    {
        this.Fornavn = "";
        this.Efternavn = "";
    }

    // Custom constructor
    public Person(string fornavn, string efternavn, int fødselsår)
    {
        this.Fødselsår = fødselsår;
        this.Fornavn = fornavn;
        this.Efternavn = efternavn;
    }
}