Difference between revisions of "CSharp Classes"

From Teknologisk videncenter
Jump to: navigation, search
Line 88: Line 88:
  
 
Ole har nu fået foedselsdag juleaften 1995 og når vi vil udskrive hans alder, sker det ved at kalde metoden beregnAlder() på bruger1. Da det er en metode (funktion) vi kalder skal der sættes en parentes efter metodenavnet.  
 
Ole har nu fået foedselsdag juleaften 1995 og når vi vil udskrive hans alder, sker det ved at kalde metoden beregnAlder() på bruger1. Da det er en metode (funktion) vi kalder skal der sættes en parentes efter metodenavnet.  
 +
Du kan læse mere om CSharp og funktioner her [[CSharp functions]]
  
  

Revision as of 16:18, 9 April 2015

Simple class

Objekt orienteret programmering er en måde at samle sine data på, et objekt kunne f.eks. være en person eller en bil. Disse objekter beskrives i klasser.


Attributes

Attributter er de variable som fortæller noget om klassens objekter. Vi kunne forestille os klassen Person skulle indeholde oplysninger om Navn og Alder.

I CSharp ville klassen se sådan ud.

   class Person
   {
       public string navn;
       public int alder;
   }

Klassen Person indeholder altså variablen navn af type string og alder af typen int. Disse variable kaldes for klassens attributter.

Når vi skal anvende klassen Person foregår det på følgende måde

   Person bruger1;
   bruger1 = new Person();
   bruger1.navn = "Ole";
   bruger1.alder = 20;

Vi fortæller her at bruger1 er af typen Person, vi erklærer variablen bruger1. Efterfølgende initialisere vi bruger1 son en ny Person. Til sidst giver vi bruger1 navnet Ole og alderen 20.

Vi har nu samlet alle oplysninger om Ole i Objektet bruger1 af typen Person (Klasse). Objektet har Attributterne navn og alder. Vi siger at bruger1 er en instans af klassen Person og at klassen er blevet instantieret.

På samme måde kunne vi definere klassen bil. Klassen har attributterne fabrikat og ejer.

   class Bil
   {
       public string fabrikat;
       public Person ejer;
   }

Bemærk at fabrikat er af typen string mens ejer er af typen Person. Vi anvender altså Person som en type på lige fod med string, int og alle andre variabel typer.

Vi kan nu bruge de to klasser på følgende måde

   Person bruger1 = new Person();
   bruger1.navn = "Ole";
   bruger1.alder = 20;

   Bil farsBil;
   farsBil = new Bil();
   farsBil.fabrikat = "Volvo";
   farsBil.ejer = bruger1;

Bemærk hvordan Personen bruger1 indsættes som ejer i farsBil.

Hvis vi efterfølgende vil udskrive navnet på den Person som ejer farsBil kan vi skrive

   Console.WriteLine(farsBil.ejer.navn);

Bemærk hvordan vi med punktum arbejder os ned igennem klasserne, startende med farsBil af typen Bil. På farsBil vælger vi attributten ejer der er af typen Person. På ejer vælger vi attributten navn der er af typen string.


Methods

Mens attributter er statiske oplysninger om objektet kan man også lave metoder (funktioner) som udfører noget. I eksemplet Person havde vi attributten alder, men det er jo noget der hele tiden ændre sig. I stedet kan vi lave attributten foedselsdag og lave metoden beregnAlder som returnere den aktuelle alder ud fra datoen her og nu.

   class Person
   {
       public string navn;
       public DateTime foedselsdag;

       public int beregnAlder()
       {
           int alder;
           alder = DateTime.Now.Year - foedselsdag.Year;
           return alder;
       }
   }

Metoden beregn alder returnerer et resultat af typen int. Denne kan efterfølgende anvendes som vist

       Person bruger1 = new Person();
       bruger1.navn = "Ole";
       bruger1.foedselsdag = new DateTime(1995, 12, 24);
       Console.WriteLine(bruger1.beregnAlder());

Ole har nu fået foedselsdag juleaften 1995 og når vi vil udskrive hans alder, sker det ved at kalde metoden beregnAlder() på bruger1. Da det er en metode (funktion) vi kalder skal der sættes en parentes efter metodenavnet. Du kan læse mere om CSharp og funktioner her CSharp functions


Constructor

Properties

Inheritance