Avatar billede maxmuldjord Nybegynder
19. december 2004 - 15:11 Der er 10 kommentarer og
1 løsning

abstract klasse sammen med konkrete klasser

Nu skal jeg til det igen men jeg tænkte jeg lige ville hører sådan generelt hvor jeg placere hvad. Jeg skal lave en abstrakt klasse Worker samt 2 konkrete klasser HourlyWorker og SalariedWorker. Jeg skal have en simpel menu (det skal kun kører i konsollen) hvor jeg kan oprette HW og SW i et Worker array. Hvis det er en HW skal antal timer indtastes og løn beregnes. Nu kommer vi så til mit spørgsmål. Hvor i programmet placere jeg bedst de forskellige ting? Ville det være bedst at lave mine udskrifter samt indtastninger i main?
Avatar billede arne_v Ekspert
19. december 2004 - 15:30 #1
De kunne du sagtens. Indlæs data og opret objekt ved at kalde constructor.

Du kunne også lade en static metode i klassen selv gøre det.
Avatar billede maxmuldjord Nybegynder
19. december 2004 - 15:40 #2
Hej Arne

Hvormeget ville der være ide i at have i min Worker klasse som er abstract? Hvis jeg nu havde: public abstract void CalculateSalary() og så lavede en override public override void CalculateSalary()i mine 2 konkrete klasser med en Med en mulighed for indtastning i klasserne?
Avatar billede arne_v Ekspert
19. december 2004 - 15:45 #3
Det kan du sagtens.

Spørgsmålet om hvor indlæsning skal ske og dit klasse hiraki må stort set være
uafhængige.

Det eneste du skal sikre dig er at indlæsnings metoden ikke risikerer at blive
kaldt hvor det ikke er en god ide.
Avatar billede maxmuldjord Nybegynder
19. december 2004 - 15:52 #4
Jeg har nedenstående skelet indtil videre, hvis jeg nu ville have en Console.ReadLine i min main og man indtaster at man er HourlyWorker kn jeg så på en eller anden måde gå videre derfra?

using System;

namespace CalculateSalary
{
   
    abstract class Worker
    {
        public abstract void CalculateSalary();
    }
    class HourlyWorker : Worker
    {
        public override void CalculateSalary()
        {
            Console.WriteLine("Calculate salary for HourlyWorker");
        }
    }
    class SalariedWorker : Worker
    {
        public override void CalculateSalary()
        {
            Console.WriteLine("Calculate salary for SalariedWorker");
        }
    }
    class Tester
    {
        static void Main(string[] args)
        {
           
        }
    }
}
Avatar billede arne_v Ekspert
19. december 2004 - 16:18 #5
Worker[] staff = new Worker[10];
for(int i = 0; i < staff.Length; i++)
{
    Console.Write("Time lønnet (J/N) ? ");
    string hourly = Console.ReadLine();
    if(hourly == "Y" || hourly == "y")
    {
        staff[i] = new HourlyWorker();
    }
    else
    {
        staff[i] = new SalariedWorker();
    }
}
Avatar billede maxmuldjord Nybegynder
19. december 2004 - 16:32 #6
ahhh .. ok Arne, tak.

jeg forsøger lige hvad jeg kan komme igang med og vender tilbage.
Avatar billede jimgordon Nybegynder
22. december 2004 - 13:40 #7
Er det ikke et 'abstract method pattern', efter GoF principperne, der er anvendt der ?
Avatar billede arne_v Ekspert
22. december 2004 - 22:27 #8
CalculateSalary er en abstract method.

Det er ikke et GoF pattern.

(selvom GoF patterns bruger en del abstrakte metoder)
Avatar billede arne_v Ekspert
01. januar 2005 - 12:56 #9
OK ?
Avatar billede arne_v Ekspert
22. januar 2005 - 23:08 #10
??
Avatar billede maxmuldjord Nybegynder
23. januar 2005 - 06:52 #11
Det må du undskylde Arne Jeg så ikke du havde svaret.
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

IT-JOB

Politiets Efterretningstjeneste

Teamledere til PETs indhentningsafdeling

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Teamleder til AL Sydbanks GDPR & Tech Regulation i Aabenraa

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Djurslands Bank

IT-udvikler