Avatar billede soax Nybegynder
09. oktober 2005 - 13:43 Der er 19 kommentarer og
1 løsning

Skift til en anden class

jeg skal lave et programm hvor jeg skal vælge mellem 2 klasser

den ene klasse hedder "indtet" og den anden hedder "udgift"

i starten er programmet skal man vælge hvad man vil skifte til... og det er det jeg ikke kan få til at virke!
Avatar billede arne_v Ekspert
09. oktober 2005 - 13:56 #1
vil du bare bruge en simpel if og 2 constructor kald eller vil du loade dem
via reflection ?
Avatar billede soax Nybegynder
09. oktober 2005 - 13:57 #2
lad os bare holde det til en simpel if! :-D
Avatar billede arne_v Ekspert
09. oktober 2005 - 14:00 #3
if(valg == "udgift")
{
  o = new Udgift();
}
else
{
  o = new Indtaegt();
}

hvor o enten er af typen object eller af typen en fælles basis klasse for
Udgift og Indtaegt
Avatar billede soax Nybegynder
09. oktober 2005 - 14:07 #4
hmm det forstår jeg ikke lige... min kode ser sådan her ud

using System;

namespace ConsoleApplication1
{
   
    class Class1
    {
       
        static void Main()
        {
           
            string valg;
           
            Console.WriteLine("Vil du veksle fra Krone til Euro tryk : k\nVil du veksle fra Euro til Krone tryk : e");
            valg = Console.ReadLine();
           
            if(valg == "k")
            {
                = new Udgift();
            }
            else
            {
                = new Indtaegt();
            }
            Console.ReadLine();
           
           
        }
    }

    class DkToEu
    {
           
       
        static void DkToEu1()
        {
            string krone, euro;
            decimal krone1, euro1, result;
           
            Console.WriteLine("indtast dit antal Kroner:");
            krone = Console.ReadLine();
            krone1 = Decimal.Parse(krone);
            Console.WriteLine("indtast kursen på Euro:");
            euro = Console.ReadLine();
            euro1 = Decimal.Parse(euro);


       
       
       
        }

       

   
   
   
   
    }




}
Avatar billede arne_v Ekspert
09. oktober 2005 - 14:09 #5
Jeg kan godt lave et eksempel på det der som virker.

Foretrækker du en klasse løsning eller kan du nøjes med en simpel metode løsning ?
Avatar billede soax Nybegynder
09. oktober 2005 - 14:20 #6
altså de skal køre i 2 forskellige class's...
Avatar billede arne_v Ekspert
09. oktober 2005 - 14:21 #7
5 minutter
Avatar billede arne_v Ekspert
09. oktober 2005 - 14:31 #8
using System;

public abstract class Converter
{
    protected decimal v1;
    protected decimal v2;
    public void Convert()
    {
        Console.Write(Prompt1);
        v1 = decimal.Parse(Console.ReadLine());
        Console.Write(Prompt2);
        v2 = decimal.Parse(Console.ReadLine());
        Console.WriteLine("Svaret er " + Calc());
    }
    public abstract decimal Calc();
    public abstract string Prompt1
    {
        get;
    }
    public abstract string Prompt2
    {
        get;
    }
}

public class KronerToEuro : Converter
{
    public override decimal Calc()
    {
        return v1/v2;
    }
    public override string Prompt1
    {
        get
        {
            return "Indtast antal kroner: ";
        }
    }
    public override string Prompt2
    {
        get
        {
            return "Indtast Euro kurs: ";
        }
    }
     
}

public class EuroToKroner : Converter
{
    public override decimal Calc()
    {
        return v1*v2;
    }
    public override string Prompt1
    {
        get
        {
            return "Indtast antal Euro: ";
        }
    }
    public override string Prompt2
    {
        get
        {
            return "Indtast Euro kurs: ";
        }
    }
     
}

class MainClass
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Vil du veksle fra Krone til Euro tryk : k");
        Console.WriteLine("Vil du veksle fra Euro til Krone tryk : e");
        string valg = Console.ReadLine();
        Converter c;
        if(valg == "k")
        {
            c = new KronerToEuro();
        }
        else
        {
            c = new EuroToKroner();
        }
        c.Convert();
    }
}
Avatar billede arne_v Ekspert
09. oktober 2005 - 14:31 #9
så er der masser af klasser !
Avatar billede soax Nybegynder
09. oktober 2005 - 14:33 #10
hehe okay... det prøver jeg så
Avatar billede soax Nybegynder
09. oktober 2005 - 15:07 #11
jeg forstår ikke dine kode.... jeg skal bare skifte mellem de to klasser

using System;

namespace ConsoleApplication1
{
   
    class Class1
    {
       
        static void Main()
        {
           
            string valg;
           
            Console.WriteLine("Vil du veksle fra Krone til Euro tryk : k\nVil du veksle fra Euro til Krone tryk : e");
            valg = Console.ReadLine();
           
            if(valg == "k")
            {
                DkToEu = new DkToEu();
            }
            else
            {
                EuToDk = new EuToDk();
            }
           

            //Console.ReadLine();
           
           
        }
    }

    class DkToEu

    {
           
       
        static void DkToEu1()
        {
            string krone, euro;
            decimal krone1, euro1, result;
           
            Console.WriteLine("indtast dit antal Kroner:");
            krone = Console.ReadLine();
            krone1 = Decimal.Parse(krone);
            Console.WriteLine("indtast kursen på Euro:");
            euro = Console.ReadLine();
            euro1 = Decimal.Parse(euro);
        }

    }

    class EuToDk
    {
   
        static void EuToDk1()
        {
            string krone, euro;
            decimal krone1, euro1, result;
           
            Console.WriteLine("indtast dit antal Euro:");
            krone = Console.ReadLine();
            krone1 = Decimal.Parse(krone);
            Console.WriteLine("indtast kursen på Euro:");
            euro = Console.ReadLine();
            euro1 = Decimal.Parse(euro);
       
       
        }
    }


}
Avatar billede arne_v Ekspert
09. oktober 2005 - 15:35 #12
det er også næsten det samme som min kode gør, men min kode har bare en fælles
basis klasse

ellers kan jeg ikke se nogen pointe i at bruge klasser til det
Avatar billede soax Nybegynder
09. oktober 2005 - 15:37 #13
nej okay...problem er bare at jeg ikke kan gennemskue din kode, så go er jeg ikke til C#
Avatar billede arne_v Ekspert
09. oktober 2005 - 15:39 #14
måska vil du bare:

            if(valg == "k")
            {
                DkToEu.DkToEu1();
            }
            else
            {
                EuToDk.EuToDk1();
            }
Avatar billede soax Nybegynder
09. oktober 2005 - 15:50 #15
An object reference is required for the nonstatic field, method, or property??

using System;

namespace ConsoleApplication1
{
   
    class Class1
    {
       
        static void Main()
        {
           
            string valg;
           
            Console.WriteLine("Vil du veksle fra Krone til Euro tryk : k\nVil du veksle fra Euro til Krone tryk : e");
            valg = Console.ReadLine();
           
            if(valg == "k")
            {
                DkToEu.DkToEu1();
            }
            else
            {
                EuToDk.EuToDk1();
            }
           

            //Console.ReadLine();
           
           
        }
    }

    class DkToEu

    {
           
       
        public void DkToEu1()
        {
            string krone, euro;
            decimal krone1, euro1, result;
           
            Console.WriteLine("indtast dit antal Kroner:");
            krone = Console.ReadLine();
            krone1 = Decimal.Parse(krone);
            Console.WriteLine("indtast kursen på Euro:");
            euro = Console.ReadLine();
            euro1 = Decimal.Parse(euro);
            result =
            Console.WriteLine("Resultatet er: {0}Euro", result);
       
        }

    }

    class EuToDk
    {
   
        public void EuToDk1()
        {
            string krone, euro;
            decimal krone1, euro1, result;
           
            Console.WriteLine("indtast dit antal Euro:");
            krone = Console.ReadLine();
            krone1 = Decimal.Parse(krone);
            Console.WriteLine("indtast kursen på Euro:");
            euro = Console.ReadLine();
            euro1 = Decimal.Parse(euro);
            result =
            Console.WriteLine("Resultatet er: {0}Kroner", result);
           
        }
    }


}
Avatar billede arne_v Ekspert
09. oktober 2005 - 15:51 #16
du har fjernet static på dine 2 metoder

hvis min kode skal virke så skal du have den på igen
Avatar billede soax Nybegynder
09. oktober 2005 - 15:55 #17
jah men så begynder den at sige "is inaccessible due to its protection level"
Avatar billede arne_v Ekspert
09. oktober 2005 - 16:06 #18
sæt en public foran både klasse og metode
Avatar billede soax Nybegynder
09. oktober 2005 - 16:08 #19
hey så virker det!

mange tak!! :-D
Avatar billede arne_v Ekspert
09. oktober 2005 - 16:15 #20
så ligger jeg et svar

men prøv alligevel at kig lidt på mit første eksempel - der mange relevante ting i det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester