3 oder mehrere Schichtenarchitektur - abstract, virtual, static

10/11/2009 - 20:35 von Markus Fischer | Report spam
Hallo Michael, Frank,

Ich könnte dir sicher ein paar gute Bücher über Softwarearchitektur und
-Design empfehlen, die ich gelesen habe, aber keines davon ist speziell
für C#, und viele davon waren auch nicht deutsch. Du müsstest vielleicht
ein wenig konkreter sein, wo du derzeit stehst und was du suchst.



Danke für das Angebot, das ich gerne annehme.


Was mir nicht ganz klar ist,
wann nehme ich abstract?
wann nehme ich virtual?
Wie gehe ich bei der Planung an die Thematik heran.
Das Beispiel verwendet relativ komplexe Utilities,
die schwer nachzuvollziehen sind. (Optimierter Code)
Deshalb die Frage, ob es für den Einstieg was einfacheres gibt.

public abstract class BaseIdentifier : IIdentifier
{
private Guid guid;

Eine abstrakte Klasse darf nicht instanziiert werden.
Eine abstrakte Klasse darf abstrakte Methoden und Accessoren enthalten.





public static Bitmap AdjustBitmapMaxSize(Bitmap bitmap, Size maxSize) {
return AdjustBitmapMaxSize(bitmap, maxSize, false);
}

public virtual Image FindByFileName(string fileName) {
return this.Find(i => string.Equals(i.FileName, fileName,
StringComparison.InvariantCultureIgnoreCase));
}

public class BaseIdentifierCollection<T> : List<T> where T : class,
IIdentifier {

public virtual T FindByGuid(Guid guid) {
return this.Find(i => i.Guid == guid);
}
}

Grüße Markus
 

Lesen sie die antworten

#1 Michael v. Fondern
15/11/2009 - 18:51 | Warnen spam
Hallo Markus,
Was mir nicht ganz klar ist,
wann nehme ich abstract?
wann nehme ich virtual?
Wie gehe ich bei der Planung an die Thematik heran.
Das Beispiel verwendet relativ komplexe Utilities,
die schwer nachzuvollziehen sind. (Optimierter Code)



Ich kann zwar nicht ganz nachvollziehen, von welchem Beispiel du redest,
aber wenn du die korrekte Verwendung von abstract / virtual in
Verbindung mit Vererbung verstehen willst, würde ich dir empfehlen, dir
das "Template Method Patttern" bzw. zu deutsch das Muster
"Schablonenmethode" mal genauer anzusehen. Das stammt aus dem Buch von
Gamma et al., aber in dem Buch von Judith Bishop, nachdem du gefragt
hattest, ist es natürlich auch enthalten. Oder hier:

http://de.wikipedia.org/wiki/Schablonenmethode

Das Beispiel in der Wikipedia ist in C++: dort, wo du in
C++

"virtual void methode(...) = 0;" schreibst,

würdest du in C# "abstract" verwenden. Dort, wo du in C++

virtual void methode(...){
// Default-Implementierung
};

schreibst, würdest du in C# stattdessen "virtual" verwenden.


Grüße

- Michael -

Ähnliche fragen