Avatar billede HobbyUdvikleren Nybegynder
02. september 2013 - 23:22 Der er 7 kommentarer og
1 løsning

Object orienteret programmering

Jeg har et generelt spørgsmål Om skabelsen af relationer mellem klasser. F.eks. har jeg

Skole kan have 1:m Elever
Elever kan have 1:m Fag
Fag kan have 1:m Lærer

Såfremt jeg har forstået det korrekt, skal jeg oprette tre klasser. Hver klasse skal have en egenskab til det den referer til. Dvs.

public class Skole
{
public string Navn{ get; set; }
public Elev Elev { get; set; }

}
public class Elev
{
public string Navn{ get; set; }
public Fag Fag { get; set; }

}
public class Fag
{
public string Navn{ get; set; }
public Lærer Lærer { get; set; }
}
public class Lærer
{
public string Navn{ get; set; }
}


Når jeg initiere et objekt af Skole, skal jeg deri også initiere et objekt af Elev og deri et object Fag osv. ?

Skal man også lave en Collection i klasserne med henblik på at kunne går den anden vej?

Ummidelbart lyder det af meget arbejde,så jeg tror jeg har misforstået noget eller hva?

Håber I kan hjælpe.
Avatar billede arne_v Ekspert
03. september 2013 - 00:24 #1
skole-elev er 1:M men elev-fag maa da vaere M:M

du skal have en single instans paa 1 siden og en collection paa M siden
Avatar billede HobbyUdvikleren Nybegynder
03. september 2013 - 09:31 #2
Hej Arne

Tak for kommentaren. Min spørgsmål er så hvis jeg initiere et objekt af skole, skal deri lave en Collection hvor jeg initierer objekter af elever og for hver elev lave en Collection hvor jeg initierer objekter af fag.

Med andre ord, når jeg initiere et objekt, som har et andet objekt i sig, som har et andet objekt i sig osv., synes jeg det er meget arbejde hver gang man f.eks. skal lave et objekt af skole, da der afledt skal laves objekter af andre klasser.

Giver det mening?
Avatar billede kalp Novice
03. september 2013 - 11:28 #3
Sådan er det jo bare.
En elev som lige er startet på en skole har, som udgangspunkt ingen fag før de bliver tildelt eleven.
Nuvel at man i disse dage får tildelt en "grundpakke" af fag og så kan de resterende tilpasses, men så ligger disse i forvejen klar og lige til at tildele eleven.

Hvis man tager din kode og skriver den som du prøver på (dvs. med dine relationer).

men jeg tror det du prøvede at skrive er noget lignende følgende:


public class School
{
    #region Fields

    private List<Student> _students;

    #endregion

    #region C'tors

    public School(string name) { Name = name; }

    #endregion

    #region Instance Properties

    public string Name { get; set; }

    public List<Student> Students
    {
        get { return _students ?? (_students = new List<Student>()); }
    }

    #endregion

    #region Instance Methods

    public void AddStudent(Student student) { Students.Add(student); }

    #endregion
}

public class Student
{
    #region Fields

    private List<Subject> _subjects;

    #endregion

    #region C'tors

    public Student(string name) { Name = name; }

    #endregion

    #region Instance Properties

    public string Name { get; set; }

    public List<Subject> Subjects
    {
        get { return _subjects ?? (_subjects = new List<Subject>()); }
    }

    #endregion

    #region Instance Methods

    public void AddSubject(Subject subject) { Subjects.Add(subject); }

    #endregion
}

public class Subject
{
    #region Fields

    private List<Teacher> _teachers;

    #endregion

    #region C'tors

    public Subject(string name) { Name = name; }

    #endregion

    #region Instance Properties

    public string Name { get; set; }

    public List<Teacher> Teachers
    {
        get { return _teachers ?? (_teachers = new List<Teacher>()); }
    }

    #endregion

    #region Instance Methods

    public void AddTeacher(Teacher teacher) { Teachers.Add(teacher); }

    #endregion
}

public class Teacher
{
    #region C'tors

    public Teacher(string name) { Name = name; }

    #endregion

    #region Instance Properties

    public string Name { get; set; }

    #endregion
}
Avatar billede arne_v Ekspert
04. september 2013 - 04:26 #4
En skole er en kompleks struktur som kraever lidt arbejde at saette op.

I virkeligheden og i en objekt model.
Avatar billede HobbyUdvikleren Nybegynder
05. september 2013 - 06:29 #5
Mange tak for jeres input. I forbindelse med point, skal I skrive et svar, så jeg kan give dem (Hvis jeg har forstået det rigtigt).
Avatar billede kalp Novice
05. september 2013 - 11:47 #6
Det er forstået korrekt:)
Et svar fra mig
Avatar billede kalp Novice
05. september 2013 - 17:04 #7
Arne jeg opretter et spørgsmål i aften med point til dig. Nemmere når jeg sidder ved en pc:)
Avatar billede kalp Novice
09. september 2013 - 09:56 #8
Er ikke så aktiv herinde, men min hukommelse svigter selvfølgelig ikke.

Arne http://www.eksperten.dk/spm/985404
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

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