Klassenbibliotheken: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
 
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
  
 
Wie man eine Klassenbibliothek erstellt, möchte ich mittels VisualStudio 2008 Express Edition (diese Version ist kostenlos) anschaulich erläutern.<br/>
 
Wie man eine Klassenbibliothek erstellt, möchte ich mittels VisualStudio 2008 Express Edition (diese Version ist kostenlos) anschaulich erläutern.<br/>
Vorraussetzung ist das Vorhandensein eines geöffneten Projekts, hier eine Konsolenanwendung mit dem Namen ''ClassLibTest''(Abb.1).<br/>
+
Vorraussetzung ist das Vorhandensein eines geöffneten Projekts, hier eine Konsolenanwendung mit dem Namen ''ClassLibTest'' (Abb.1).<br/>
 +
Natürlich ist es auch möglich, nur eine Klassenbibliothek zu erstellen und zu kompilieren (das Ergebnis ist immer eine DLL-Datei), aber wir wollen sie ja auch testen.<br/>
 +
Deshalb die Konsolenanwendung.<br/>  
 
<br/>
 
<br/>
 
  [[Bild:Libbild1.jpg]]<br/>
 
  [[Bild:Libbild1.jpg]]<br/>
Zeile 11: Zeile 13:
  
  
Zuerst markieren wir im Projektmappen-Explorer die Projektmappe namens ''Klassenbibliothek'' mit der rechten Maustaste, klicken auf ''Hinzufügen'' und danach auf ''Neues Projekt'' (Abb.2).<br/>
+
*Zuerst markieren wir im Projektmappen-Explorer die Projektmappe namens ''ClassLibTest'' mit der rechten Maustaste, klicken auf ''Hinzufügen'' und danach auf ''Neues Projekt'' (Abb.2).<br/>
 
<br/>
 
<br/>
 
  [[Bild:Libbild2.jpg]]<br/>
 
  [[Bild:Libbild2.jpg]]<br/>
Zeile 17: Zeile 19:
  
  
 +
*Nun erweitern wir unsere Projektmappe mit dem Projekttyp ''Klassenbibliothek'' mit dem Namen ''ClassLibrary1'', wie in Abbildung 3.<br/>
 +
<br/>
 +
[[Bild:Libbild3.jpg]]<br/>
 +
''(Abb.3)
 +
 +
 +
*Unser Projektmappen-Explorer sollte danach wie in Abb.4 aussehen. Wir haben erfolgreich eine Klassenbibliothek hinzugefügt.<br/>
 +
<br/>
 +
[[Bild:Libbild4.jpg]]<br/>
 +
''(Abb.4)
 +
 +
==Verknüpfung mit dem Projekt ''ClassLibTest''==
 +
 +
 +
Nun müssen wir unserem Projekt ''ClassLibTest'' auch bekanntgeben, dass es mit einer Klassenbibliothek namens ''ClassLibrary1'' zusammen arbeiten soll, denn von alleine käme es nie auf solch eine Idee.<br/>
 +
Das heißt, wir müssen einen ''Verweis'' hinzufügen.
 +
 +
*Wir suchen also den Knotenpunkt unseres Projektes ''ClassLibTest'' und öffnen das Kontextmenü mit der rechten Maustaste wie in Abbildung 5.<br/>
 +
<br/>
 +
[[Bild:Libbild5.jpg]]<br/>
 +
''(Abb.5)
 +
 +
 +
*Dort wählen wir die Option Verweis hinzufügen und erhalten folgendes Fenster, in dem wir den Reiter Projekte anklicken (Abb.6):<br/>
 +
<br/>
 +
[[Bild:Libbild6.jpg]]<br/>
 +
''(Abb.6)
 +
 +
 +
*Dort sollte sich die Klassenbibliothek befinden, die wir auswählen und das Ganze mit ''OK'' schließen.
 +
*Im Verzeichnis ''Verweise'' unseres Projektes ''ClassLibTest'' sollte nun die Klassenbibliothek ''ClassLibrary1'' stehen, wie in Abb.7.<br/>
 +
<br/>
 +
[[Bild:Libbild7.jpg]]<br/>
 +
''(Abb.7)
 +
 +
 +
*Zum Schluss legen wir das Projekt ''ClassLibTest'' noch als Startprojekt fest, wie es Abb.8 zeigt.<br/>
 +
<br/>
 +
[[Bild:Libbild8.jpg]]<br/>
 +
''(Abb.8)
 +
 +
 +
----
 +
<br/><br/>
 +
Um nun mit Objekten der Klassen von ''ClassLibrary1'' arbeiten zu können, ist die vollständige Angabe notwendig. ''Namespace.Klasse objekt = new Namespace.Klasse();''.<br/>
 +
 +
'''Ein Beispiel:'''
 +
<code=CSharp>
 +
ClassLibrary1.Class1 myObjekt = new ClassLibrary1.Class1();
 +
</Code=CSharp>
 +
 +
Eine Alternative zu dieser Variante, die auf Dauer sehr schreibaufwändig ist, zeigen die nächsten beiden Abbildungen (9 und 10).<br/>
 +
Durch Bekanntgabe des ''Namespace'' der Klassenbibliothek, welches sich vereinbarungsgemäß genau so nennt (''ClassLibrary1''), umgehen wir diesen Mehraufwand:<br/>
 +
<br/>
 +
[[Bild:Libbild9.jpg]]<br/>
 +
''(Abb.9, eine Klasse in der Klassenbibliothek ClassLibrary1)''
 +
 +
 +
 +
[[Bild:Libbild10.jpg]]<br/>
 +
''(Abb.10, eine Klasse in unserem aktuellen Projekt ClassLibTest)''
 +
 +
Wenn man diesen Code nun compiliert und ausführt erhält man folgende Ausgabe:<br/>
 +
 +
Ich befinde mich in einer Klassenbibliothek
  
  
 +
'''Wichtig:''' Wenn man mit Objekten von [[Klasse|Klassen]] einer Klassenbibliothek arbeiten möchte ist darauf zu achten,<br/>
 +
dass sämtliche Elemente (Variable, Methoden, u.s.w.) public deklariert werden - private, oder internal deklarierte Elemente sind nicht sichtbar.<br/>
 +
Ohne Zugriffsmodifizierer ist, eine Methode zum Beispiel, als internal anzusehen.
 +
Das Gleiche gilt natürlich auch für Klassen.<br/>
 +
Desweiteren wird eine Klassenbibliothek '''nicht''' in eine Startdatei (EXE) 'reinkompiliert'. Sie ist eine Extradatei (DLL) und muss bei späterer<br/>
 +
Nutzung des fertigen Programmes im selben Ordner liegen, wie die Startdatei.
  
  
  
  
{{In Arbeit}}
+
[[Kategorie:CSharp]]
 +
[[Kategorie:.NET Framework]]

Aktuelle Version vom 20. November 2009, 18:43 Uhr

Definition:

Eine Klassenbibliothek ist eine Sammlung von Programmelementen, die völlig selbstständig sind. Sie eignet sich zur Wiederverwendung, wird in eine DLL-Datei kompiliert und ist nicht eigenstartfähig.

Erstellen:

Wie man eine Klassenbibliothek erstellt, möchte ich mittels VisualStudio 2008 Express Edition (diese Version ist kostenlos) anschaulich erläutern.
Vorraussetzung ist das Vorhandensein eines geöffneten Projekts, hier eine Konsolenanwendung mit dem Namen ClassLibTest (Abb.1).
Natürlich ist es auch möglich, nur eine Klassenbibliothek zu erstellen und zu kompilieren (das Ergebnis ist immer eine DLL-Datei), aber wir wollen sie ja auch testen.
Deshalb die Konsolenanwendung.

Libbild1.jpg
(Abb.1)


  • Zuerst markieren wir im Projektmappen-Explorer die Projektmappe namens ClassLibTest mit der rechten Maustaste, klicken auf Hinzufügen und danach auf Neues Projekt (Abb.2).


Libbild2.jpg
(Abb.2)


  • Nun erweitern wir unsere Projektmappe mit dem Projekttyp Klassenbibliothek mit dem Namen ClassLibrary1, wie in Abbildung 3.


Libbild3.jpg
(Abb.3)


  • Unser Projektmappen-Explorer sollte danach wie in Abb.4 aussehen. Wir haben erfolgreich eine Klassenbibliothek hinzugefügt.


Libbild4.jpg
(Abb.4)

Verknüpfung mit dem Projekt ClassLibTest

Nun müssen wir unserem Projekt ClassLibTest auch bekanntgeben, dass es mit einer Klassenbibliothek namens ClassLibrary1 zusammen arbeiten soll, denn von alleine käme es nie auf solch eine Idee.
Das heißt, wir müssen einen Verweis hinzufügen.

  • Wir suchen also den Knotenpunkt unseres Projektes ClassLibTest und öffnen das Kontextmenü mit der rechten Maustaste wie in Abbildung 5.


Libbild5.jpg
(Abb.5)


  • Dort wählen wir die Option Verweis hinzufügen und erhalten folgendes Fenster, in dem wir den Reiter Projekte anklicken (Abb.6):


Libbild6.jpg
(Abb.6)


  • Dort sollte sich die Klassenbibliothek befinden, die wir auswählen und das Ganze mit OK schließen.
  • Im Verzeichnis Verweise unseres Projektes ClassLibTest sollte nun die Klassenbibliothek ClassLibrary1 stehen, wie in Abb.7.


Libbild7.jpg
(Abb.7)


  • Zum Schluss legen wir das Projekt ClassLibTest noch als Startprojekt fest, wie es Abb.8 zeigt.


Libbild8.jpg
(Abb.8)





Um nun mit Objekten der Klassen von ClassLibrary1 arbeiten zu können, ist die vollständige Angabe notwendig. Namespace.Klasse objekt = new Namespace.Klasse();.

Ein Beispiel: <code=CSharp> ClassLibrary1.Class1 myObjekt = new ClassLibrary1.Class1(); </Code=CSharp>

Eine Alternative zu dieser Variante, die auf Dauer sehr schreibaufwändig ist, zeigen die nächsten beiden Abbildungen (9 und 10).
Durch Bekanntgabe des Namespace der Klassenbibliothek, welches sich vereinbarungsgemäß genau so nennt (ClassLibrary1), umgehen wir diesen Mehraufwand:

Libbild9.jpg
(Abb.9, eine Klasse in der Klassenbibliothek ClassLibrary1)


Libbild10.jpg
(Abb.10, eine Klasse in unserem aktuellen Projekt ClassLibTest)

Wenn man diesen Code nun compiliert und ausführt erhält man folgende Ausgabe:

Ich befinde mich in einer Klassenbibliothek


Wichtig: Wenn man mit Objekten von Klassen einer Klassenbibliothek arbeiten möchte ist darauf zu achten,
dass sämtliche Elemente (Variable, Methoden, u.s.w.) public deklariert werden - private, oder internal deklarierte Elemente sind nicht sichtbar.
Ohne Zugriffsmodifizierer ist, eine Methode zum Beispiel, als internal anzusehen. Das Gleiche gilt natürlich auch für Klassen.
Desweiteren wird eine Klassenbibliothek nicht in eine Startdatei (EXE) 'reinkompiliert'. Sie ist eine Extradatei (DLL) und muss bei späterer
Nutzung des fertigen Programmes im selben Ordner liegen, wie die Startdatei.