Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Dispose Interface » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen Dispose Interface
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Dispose Interface Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zur Zeit programmiere ich C#; dabei soll ich das Dispose Interface nutzen. Ich weiß aber nicht, was man damit machen kann. Konkret: Was kann man damit in der folgenden Aufgabe machen:
Legen Sie ein neues Consolen-Projekt an und entwerfen Sie Klassen, um einen
(Mini)Zoo zu repräsentieren.
• Entwerfen Sie eine Basisklasse Tier mit wichtigen Eigenschaften, die jedes
Tier in einem Zoo hat.
• Leiten Sie Klassen für Vögel, Fleischfresser und Pferde mit speziellen Eigenschaften
ab.
• Entwerfen Sie weiterhin eine Klasse Zoo, die alle Tiere in einem Zoo enthält,
welche hinzufügen oder löschen kann.
• Implementieren Sie das Interface Dispose und testen Sie es, wenn Sie Tiere
löschen.
10.01.2015 16:37 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

IDisposable dient dazu, dass ein Objekt Speicher freigibt, bevor es die Referenz auf das Objekt löscht. Ein Beispiel sind Bitmaps: wenn du einer PictureBox immer neue Bilder gibst, ohne vorher mit pictureBox.Image.Dispose() aufzuräumen, ist schnell der Speicher voll.

Bezieht sich das Dispose in deiner Aufgabe jetzt auf den Zoo oder auf die Tiere verwirrt ?

__________________
Syntax Highlighting fürs Board (Link)
10.01.2015 16:45 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich weiß auch nicht, wie das gemeint ist. Nehmen wir an es bezieht sich auf Tiere, wie würde ich dann Dispose ansetzen. Mein bisheriger Ansatz ohne Dispose ist:


code:
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.Linq; 
using System.Text; 
using System.Threading.Tasks;
 using System.Collections; 
using System.Collections.Generic;  
namespace A025 
{     
class Program     
{         static void Main(string[] args)
         {              Tier tier1 = new Tier("Löwe", 300);
             Tier tier2 = new Tier("Puma", 250);     
        Tier tier3 = new Pferde("Esel", 150, true); 
            Tier tier4 = new Voegel("Kolibri", 1, true);   
          Zoo zoo = new Zoo(); 
            zoo.hinzu(tier1); 
            zoo.hinzu(tier2); 
            zoo.hinzu(tier3); 
            zoo.hinzu(tier4); 
            Console.WriteLine(zoo);
             zoo.hinweg(tier4);
             Console.WriteLine(zoo);
           }     }       

class Zoo
     {
         ArrayList a = new ArrayList();
         public ArrayList hinzu(Tier tier) 
        {             this.a.Add(tier);
             return a;         }
         public ArrayList hinweg(Tier tier)
         {             this.a.Remove(tier); 
            return a;         }

          public override string ToString()
         {
             foreach (Tier t in a) 
            { 
                Console.WriteLine(t.Name + " heißt es bei Gewicht " + t.Gewicht);
             }
             return "";
          }
     }

         class Pferde : Tier
         {
             bool zuchtfaehig;
             public Pferde(string name, int gewicht, bool zuchtfaehig)                 : base(name, gewicht)
             { 
                this.zuchtfaehig = zuchtfaehig;
             }
         }

           class Voegel : Tier
         { 
            bool flugfaehig;

             public Voegel(string name, int gewicht, bool flugfaehig)                 : base(name, gewicht) 
            {                 this.flugfaehig = flugfaehig;             }         }

         class Tier
         {
             string name;
             int gewicht;

             public Tier(string name, int gewicht) 
            {                 this.name = name; 
                this.gewicht = gewicht;             }
              // property 
            public string Name
             {                 get { return this.name; } 
                set { this.name = value; }             }   

           // property             public int Gewicht
             {                 get { return this.gewicht; }
                 set { this.gewicht = value; }
             }
         }
     }


10.01.2015 17:20 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ein paar allgemeine Dinge zum Code:
  • ArrayList ist veraltet, nimm eine generische Liste (List<Tier>)
  • ob der Zoo beim hinzufügen die ganze Liste zurückgeben muss, oder einfach void, darüber kann man streiten. Aber du solltest die Liste auch abfragen können, ohne ein Tier hinzuzufügen
  • ein ToString, das auf die Console schreibt und einen leeren String zurückgibt?
  • Den usings nach nutzst du VisualStudio. Wie schaffst du es da, den Text so schlecht zu formatieren, das macht VisualStudio doch automatisch für dich?


Wenn das Tier Disposable ist, kannst du den Speicher für den Namen freigeben:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
class Tier : IDisposable //implementiere Interface
{
	string name;
	int gewicht;

	public Tier(string name, int gewicht)
	{
		this.name = name; 
		this.gewicht = gewicht;
	}
	// property 
	public string Name
	{ get { return this.name; } set { this.name = value; } } 

	// property             
	public int Gewicht
	{ get { return this.gewicht; } set { this.gewicht = value; } }
	
	public void Dispose() { //implementiere Methode aus 
		name = null;
	}
}


__________________
Syntax Highlighting fürs Board (Link)
10.01.2015 17:42 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Informatiker Board » Themengebiete » Praktische Informatik » Dispose Interface