Autor Beitrag
goose
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93



BeitragVerfasst: Di 03.04.07 03:08 
Hallo,

also vorweg .. ich fang mit C# erst an, hab zwar schon nen Buch gelesen usw. aber es hapert hier und da hauptsächlich an der Praxis.
Und hier kommen die Probleme :

Also, wie der Titel schon sagt, versuche ich eine Classe zu erstellen welche Flugzeugtypen verwaltet. Diese möchte ich speichern und laden können. Methoden Add und Delete kommen noch.
Worum es geht ist die kapselung.
Ich habe also eine Classe erstellt die sich passen AcTypeArchiv nennt. Darin geibts eine klasse für die einzelnen Flugzeugtypen die dann abgespeichert wird.
Das ganze sioeht derzeit so aus :

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
using System;
using System.Collections.Generic;
using System.Text;

namespace Aircrafts
{
    //
    // Class AcType Archiv
    //
    public class AcTypeArchiv
    {

        public class AcType
        {
            private int m_Number;
            public int Number
            {
                get { return m_Number; }
            }

            private string m_Type;
            public string Type
            {
                get { return m_Type; }
            }
            // ctor
            public AcType(string NewType, int NewNumber)
            {
                m_Type = NewType;
                m_Number = NewNumber + 1;
            }
        };


        private const string FILENAME = "AcTypes.dat";
        private List<AcType> m_AcTypeList = new List<AcType>();

        private int m_count = 0;
        public int Count
        {
            get { return m_AcTypeList.Count; }
        }
        //
        // ctor
        //
        public AcTypeArchiv()
        {
            ReadArchivFromFile();
        }
        //
        // Overrides
        //
        public override string ToString()
        {
            return "AcTypeArchivClass";
        }
        //
        // Archiv einlesen
        //
        private void ReadArchivFromFile()
        {
            // ToDo -> Archiv aus File einlesen !
            
            m_AcTypeList.Add(new AcType("S-340", Count));
            m_AcTypeList.Add(new AcType("AN-12", Count));
            m_AcTypeList.Add(new AcType("AN-26", Count));
        }
        //
        // AC Hinzufügen
        //
        public void AddAcTyp(string NewAcTyp)
        {
            m_AcTypeList.Add(new AcType(NewAcTyp, Count));
        }
        // 
        // Alle AC's ausgeben ??
        //
        public System.Collections.IEnumerator GetEnumerator()
        {
            foreach (AcType a in m_AcTypeList)
                yield return a;
        }
    };
}


Ich hoffe das ist vom Ansatz her wenigstens richtig ?
Wenn nicht bitte ich schon hier um Hilfe.

Um was es aber geht ist die kleine Helferklasse "AcType".
Von der kann ich überall im Programm instanzen ableiten, aber das soll nicht so sein !
Wenn ich die aber private mache dann funktioniert das mit dem Enumerator nicht mehr ???
Hmm, was mach ich da ?
Übrigens der Enumerator soll auch einer sein weil da später mal noch mehr daten hinzukommen !!

Könnt Ihr mir mal helfen ?

Danke
Matthias
ambig
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Sa 02.06.07 03:11 
hallo goose,

entweder musst du es so lassen wie es jetzt ist, und die klasse öffentlich bereitstellen, oder dein enumerator muss etwas anderes zurückgeben als objekte dieser klasse. beispielsweise könntest du eine Schnittstelle erstellen, die AcType implementiert und nur diese zurückgeben. damit hättest du die rückgabe des enumerators von der konkreten hilfsklasse entkoppelt.
goose Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93



BeitragVerfasst: Sa 02.06.07 06:21 
Hallo,

also verstanden habe ich das mit dem Interface jetzt noch nicht so wirklich.
Wie würdest Du das denn machen ?

Zum anderen ist es ja so das nur ich an dem Programm arbeite und weiß das das nur eine Hilfsklasse ist von der ich keine Instanzen brauche.
Also sollte es ja auch nicht schlimm sein wenn das geht.

Das Problem ist nur das ich mit einem Bekanten zusammen Programmieren will und der weiß das nicht unbedingt.
Deswegen wäre es interessant zu wissen wie man sowas umsetzen kann ?

Matthias
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 02.06.07 11:24 
user profile icongoose hat folgendes geschrieben:
Um was es aber geht ist die kleine Helferklasse "AcType".
Von der kann ich überall im Programm instanzen ableiten, aber das soll nicht so sein !
Das ist doch dasselbe Problem wie Du hier schon hattest (nur mit anderen Klassen, also dasselbe in grün): www.c-sharp-forum.de/viewtopic.php?t=71917

Ich schließe daher hier mal.

Sollte ich mich irren, bitte auf den Link in der "Thema geschlossen"-Box klicken und den Thread ans Team melden.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.