Avatar billede maxmuldjord Nybegynder
18. december 2004 - 14:00 Der er 40 kommentarer og
1 løsning

ToString metode

Hej

Jeg er til en afveksling "lidt" forvirret, jeg skal i nedenstående i klassen Manager lave en ToString metode der udskriver managerens navn, afd. og løn. Jeg har lidt svært ved at se hvorfor det skulle være en ToString, opgaven forekommer mig lidt mærkeligt formuleret men det er da sandsynligt det er mig der er galt på den. Men hvordan kunne det se ud? Det er vel bare at lave en Console.WriteLine eller hvad? Mit "skelet" kommer her ;

using System;

namespace Employees
{
   
    class Employee
    {
        private string Name;
        private int Salary;

        public string name
        {
            get {return name;}
            set {name = value;}
        }
        public int salary
        {
            get{ return salary;}
            set {salary = value;}
       
        }
        public Employee (string Name, int Salary)
        {
        string name = Name;
        int salary = Salary;
        }
      }
    }
class Manager : Employee
{
private string department;


}

class Tester
{
        [STAThread]
        static void Main(string[] args)
        {
            //
            // TODO: Add code to start application here
            //
        }
    }
Avatar billede kalp Novice
18. december 2004 - 14:33 #1
public String toString()
{
String tekst;

tekst +=  Name;
tekst +=  Salary;
tekst +=  ANDET???;

return tekst;

}

det du mener?
Avatar billede kalp Novice
18. december 2004 - 14:35 #2
public String toString()
{
String tekst;

tekst +=  Name;
tekst +=  Salary;
tekst +=  department;

return tekst;

}


så kan du kalde metoden og udskrive den sådan

Console.WriteLine(reference.toString());

kan også være jeg ikke har forstået problemet
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 14:38 #3
Måske, jeg ved ikke helt hvad min lærer mener, opgaven er lidt underligt formuleret, jeg prøver lige hvad jeg kan finde ud af. Men den brokker sig over denne: class Manager : Employee , det fatter jeg ikke rigtigt.
Avatar billede kalp Novice
18. december 2004 - 14:39 #4
skal det være en indre klasse? din Manager?

din toString skal bare sende en String retur hvor alt den information din lærer har bedt om bliver sendt med
Avatar billede kalp Novice
18. december 2004 - 14:40 #5
for hvis ja og hvis den skal skrives som i Java så ville jeg ikke skrive den sådan der
Avatar billede kalp Novice
18. december 2004 - 14:40 #6
prøv med

class ManagerEmployee
{
private string department;


}
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 14:43 #7
Jeg skal have klassen Manager til at arve fra klassen Employee
Avatar billede roenving Novice
18. december 2004 - 14:44 #8
-- og du skal vel:

using System;

namespace Employees
{
   
    class Employee
    {
        private string Name;
        private int Salary;

        public string name
        {
            get {return Name;}
            set {Name = value;}
        }
        public int salary
        {
            get{ return Salary;}
            set {Salary = value;}
       
        }
        public Employee (string Name, int Salary)
        {
        string name = Name;
        int salary = Salary;
        }
public String toString()
{
String tekst = "";

tekst +=  Name + "\n";
tekst +=  Salary + "\n";
tekst +=  department;

return tekst;

}

      }
    }
class Manager : Employee
{
private string department;


}

class Tester
{
        [STAThread]
        static void Main(string[] args)
        {
            //
            // TODO: Add code to start application here
            //
        }
    }
Avatar billede kalp Novice
18. december 2004 - 14:44 #9
okay ved ikke hvordan det gøres i c# desværre... med mindre det også hedder
Manager extends Empleyee
Avatar billede kalp Novice
18. december 2004 - 14:45 #10
men min toString metode som du bad om burde virke
Avatar billede roenving Novice
18. december 2004 - 14:47 #11
C#s måde at arve på er ganske som maxmuldjord viser : Employee !-)
Avatar billede roenving Novice
18. december 2004 - 14:48 #12
>>kalp

Jeg tvivler på at den virker, for det burde give en fejl at forsøge at konkatenere null med en tekstværdi ...
Avatar billede kalp Novice
18. december 2004 - 14:50 #13
det rigtigt nok... men jeg sjuskede også lidt med mellemrum i tingene... men skulle egentlig også bare illustere hvad hans lærer mente hans skulle lave..

String tekst skal lige sættes ligmed noget...

tekst = "";

ellers kan den jo ikke forlænges;)
Avatar billede roenving Novice
18. december 2004 - 15:02 #14
-- og i initieringen er det vel også de private variabler, som skal sættes:

        public Employee (string name, int salary)
        {
        string Name = name;
        int Salary = salary;
        }
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 15:05 #15
hmmm - min opgave er formuleret således;

lav en klasse Employee med attributterne name og salary. Lav en klasse Manager som arver fra Employee. tilføj en instansvariable department af typen string. Tilføj en metode ToString der udskriver: managerens navn, afd. og løn. Lav en klasse Executive der arver fra Manager. Tilføj en metode ToString der udskriver teksetn Executive , managerens navn, afd. og løn. Lav et testprogram der tester klasserne og deres metoder.

Jeg forstår at jeg skal lave min
public String toString()
{
String tekst = "";

tekst +=  Name + "\n";
tekst +=  Salary + "\n";
tekst +=  department;

return tekst;

i klassen Manager ud fra ovenstående tekst eller hvad? Jeg syntes ikke det er helt gennemskueligt. Og hvorfor brokker den sig over min class Manager : Employee, det kan jeg ikke greje
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 15:06 #16
ok roenving du har nok noget der, skal lige spise så vender jeg frygteligt tilbage

8>)
Avatar billede kalp Novice
18. december 2004 - 15:08 #17
du kan skrive din toString metode sidst i koden
Avatar billede roenving Novice
18. december 2004 - 15:31 #18
-- og jeg kom da også i tanke om, at du jo ikke skal erklære variablerne i initieringen, da det jo så vil være private for den metode, så:

        public Employee (string name, int salary)
        {
        Name = name;
        Salary = salary;
        }
Avatar billede ranglen Nybegynder
18. december 2004 - 15:42 #19
Din Manager nedarver Employee, som har en constructor, så den skal du vel huske at kalde fra Manager's constructor..

class Manager{
  public Manager(string Name, int Salary) : base(Name, Salary){
  }
  ...
Avatar billede kalp Novice
18. december 2004 - 15:50 #20
ranglen:

hvis nu han ikke kalder constructoren.. den med parametre.. bliver der så ikke automatisk kaldt en tom constructor? (som i java?:o)) ved det.. mig og mit java! hehe
Avatar billede ranglen Nybegynder
18. december 2004 - 15:53 #21
nej, hvis man selv laver en constructor, bliver der ikke oprettet en default
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 17:13 #22
ok, jeg har nu førsøgt nedenstående men den brokker sig stadigvæk :

D:\Dokumenter\Visual Studio Projects\Employees\Class1.cs(29): The type or namespace name 'Employee' could not be found (are you missing a using directive or an assembly reference?)



using System;

namespace Employees
{
   
    class Employee
    {
        private string Name = "Max";
        private int Salary= 100;

        public string name
        {
            get {return name;}
            set {name = value;}
        }
        public int salary
        {
            get{ return salary;}
            set {salary = value;}
       
        }
        public Employee (string Name, int Salary)
        {
        string name = Name;
        int salary = Salary;
        }
      }
    }
class Manager : Employee
{
    private string department;
    public Manager(string Name, int Salary ):base (Name, Salary)
    {

        Console.WriteLine("Name");
    }

}

class Tester
{
        [STAThread]
        static void Main(string[] args)
        {
            Manager m = new Manager ();
            Console.ReadLine();
        }
    }
Avatar billede arne_v Ekspert
18. december 2004 - 17:15 #23
Enten skal du flytte Manager lassen ind i Employees namespacet eller
så skal du:

class Manager : Employees.Employee
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 17:32 #24
Hej Arne

Kan du venligst forklare hvorfor jeg har manager uden for namespacet+ hvad har jeg gjort galt?

Når jeg går sådan class Manager : Employees.Employee så brokker den sig over:

Manager m = new Manager ();

der er ingen overload, nok en af mine sædvanlige fejl
Avatar billede arne_v Ekspert
18. december 2004 - 18:04 #25
Fordi den } som afslutter namespacet ligger over klassen !
Avatar billede arne_v Ekspert
18. december 2004 - 18:04 #26
Manager klassen har ikke en cosntructor uden argumenter - kun en med 2 argumenter
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 18:18 #27
Ok > Fordi den } som afslutter namespacet ligger over klassen ! < den er jeg med på nu. Har du evt et bud på hvordan jeg laver den Tostring? Jeg skal jo både have den til at tage Name og Salary fra min Employee klasse samtidig med department fra min manager klasse. Skal jeg evt. sætte disse 3 ting til en værdi? Altså Name = "Max" f.eks. ?
Avatar billede roenving Novice
18. december 2004 - 18:23 #28
Hvis du arver fra Employee-klassen, arver du også Name og Salary !-)
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 18:26 #29
Ja men burde jeg så sætte dem til en værdi for at kunne bruge dem?
Avatar billede arne_v Ekspert
18. december 2004 - 18:26 #30
det her eksempel virker:

using System;

namespace Employees
{
    public class Employee
    {
        private string name;
        private int salary;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public int Salary
        {
            get{ return salary;}
            set {salary = value;}
        }
       
        public Employee (string name, int salary)
        {
            this.name = name;
            this.salary = salary;
        }
       
        public override string ToString()
        {
            return (name + " " + salary);
        }
    }

    class Manager : Employee
    {
        private string department;
       
        public Manager(string name, int salary, string department) : base(name, salary)
        {
            this.department = department;
        }
       
        public override string ToString()
        {
            return (base.ToString() + " " + department);
        }
    }
}

class Tester
{
    [STAThread]
    public static void Main(string[] args)
    {
        Employees.Manager m = new Employees.Manager("Max", 250000, "IT");
        Console.WriteLine(m);
        Console.ReadLine();
    }
}
Avatar billede arne_v Ekspert
18. december 2004 - 18:26 #31
Jeg har lavet ToString i både Employee og Manager.
Avatar billede arne_v Ekspert
18. december 2004 - 18:27 #32
Jeg har rettet constructorerne så de gemme ri instans variable fremfor i lokale variable.

(vigtigt !)
Avatar billede arne_v Ekspert
18. december 2004 - 18:28 #33
Og så har jeg rettet properties til - de så også forkerte ud.
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 18:41 #34
tak, så lærte jeg noget igen, så er det bare om jeg kan huske det. svar?
Avatar billede arne_v Ekspert
18. december 2004 - 20:25 #35
Og et par bemærninger:
  - i C# hedder det ToString ikke toString (det hedder toString i Java)
  - i C# skal man angive override når man overrider en klasse fra en
    basis klasse (og ToString er i Object)
Avatar billede arne_v Ekspert
18. december 2004 - 20:25 #36
og et svar
Avatar billede maxmuldjord Nybegynder
18. december 2004 - 21:10 #37
Tak igen Arne!
Avatar billede arcanex Nybegynder
28. december 2004 - 23:06 #38
Lige som et sidespg. MaxMuldjord, men er det en uddannelse du er ved at tage ? og hvis ja hvilken ? :) Troede ikke der var nogle der undervidste i et så "nyt" sprog i DK :)
Avatar billede arne_v Ekspert
28. december 2004 - 23:11 #39
Hvis man kigger på den voldsomme stigning i antallet af C# spørgsmål gennem 2004,
så må der være en hel del steder man er startet på at undervise i C#.
Avatar billede maxmuldjord Nybegynder
29. december 2004 - 16:31 #40
Ja det er en datamatiker uddannelse, jeg tager den som fjernundervisning men som det fremgår er vores lærer ikke så god til at behandle spørgsmål. Det er meget irriterende når man sidder med et problem at man ikke kan få svar men så har vi jo Arne og tak for det! Vores lærer tager det for en selvfølge at man kan programmering i forvejen selvom det tydeligt fremgår af kursusmaterialet at det ikke er en forusætning. Jeg kan ikke anbefale Fuga som jeg anvender da det hele er meget dårligt organiseret hvis man da kan tale om at der en form for organisation. Hvis du vil vide mere er du velkommen til at kontakte mig.

Arne, jeg vender tilbage når jeg kommer hjem fra Polen, rigtigt godt nytår!
Avatar billede arcanex Nybegynder
30. december 2004 - 21:49 #41
Okay, ja det lyder ellers spændene med fjernundervisning. Det tror jeg, at jeg vil undersøge lidt nærmere. Godt nytår!
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