Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 12:11

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



schnittstellen implementieren c#

Discussion on schnittstellen implementieren c# within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
taliaa's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 918
Received Thanks: 98
schnittstellen implementieren c#

Hey ,
ich hab mal ne frage und zwar hab ich:
Quote:
interface IGemeinde{

string name{get;}
}
Quote:
interface Ikreisfreigemeinde : IGemeinde
{
}

Quote:
class Gemeinde : IGemeinde{
private string _name
public string name{get{return _name;}}
}
jetzt hab ich eine unterklasse
Quote:
class KreisfreieGemeinde : Gemeinde,IKreisfreieGemeinde
{
private string _name;
public string name
{
get { return _name; }
}
public KreisfreieGemeinde(string name)
: base(name)
{
if (string.IsNullOrEmpty(name))
throw new Exception("kein name zugewiesen");
_name = name;
}

public override bool Equals(object obj)
{
KreisfreieGemeinde g = obj as KreisfreieGemeinde;
return g != null && base.Equals(obj)
&& this._name.Equals(g._name);

}

public override int GetHashCode()
{
return base.GetHashCode() ;
}

public override string ToString()
{
return base.ToString() ;
}


}
wenn ich in kreisfremdegemeinde jetzt base aufrufen will, wer wird adressiert ?Gemeinde oder die Ikreisfremdegemeinde?

Wieso muss ich nochmal private und public string name definieren,wird doch von der oberklasse geerbt?

Und wenn ich nur die Schnittstelle implementiere, kann ich den konstruktor über : base(name) nichtmehr aufrufen

über hilfe wäre ich froh!
Ps: über rechtschreibfehler soll hinweggesehen werden ,das sollte nur grob dargestellt werden, Das programm funktioniert atm auch so bekomme nur die warnung:
Quote:
Warnung 2 'Daten.KreisangehörigeGemeinde.name' blendet den vererbten Member 'Daten.Gemeinde.name' aus. Verwenden Sie das new-Schlüsselwort, wenn das Ausblenden vorgesehen war.
taliaa is offline  
Old 05/22/2014, 23:24   #2


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Mit base würdest du in diesem konkreten Fall die Klasse Gemeinde ansprechen.

Weißt du eigentlich, wann man ein Interface einsetzt und wann es Sinn macht, ein solches zu definieren? Dein Code ist unübersichtlich und ergibt für mich keinen Sinn.

Erkläre bitte mal, was du erreichen willst und was die Klassen repräsentieren.

Properties in einem Interface sind auch nicht unbedingt sauber, wenn sie vermieden werden können.

Sinnvoll wäre in deinem Beispiel wohl eher eine Basisklasse Gemeinde die ein Feld / eine Eigenschaft Name besitzt. Nun kannst du Unterklassen definieren (beispielsweise KreisfreieGemeinde) die von Gemeinde erben. Dementsprechend wird das Feld / die Eigenschaft Name mit übernommen.

Ein Interface setzt man ein, wenn es um eine Funktion geht. Beispielsweise wenn ich die Klassen Auto, Handy und Notebook hätte (mal ganz trivial) würde ich ein Interface IChargable (Funktion void Charge()) definieren, das jede Klasse implementiert und für sich selbst definiert. So könnte ich Instanzen von allen 3 Klassen mit Charge ansprechen, ohne zu wissen um welche Klasse es sich handelt.

Code:
IChargable someinterface = new Handy();
someinterface.Charge(); // -> Handy.Charge()

someinterface = new Auto();
someinterface.Charge(); // -> Auto.Charge()
Mostey is offline  
Old 05/23/2014, 09:04   #3
 
taliaa's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 918
Received Thanks: 98
Danke für die Antwort.
Die interfaces sind vorgegeben und ich muss jedes implementieren. Da würde es für mich am meisten sinn machen wenn ich z.b die Klasse Gemeinde das Interface Igemeinde implementieren lass usw.
Jedoch muss ich auch den Base Konstruktor aufrufen da es so vorgegebn ist:

Schnittstellen können keine Konstruktoren vorgeben. Benutzen Sie daher bitte die folgenden Köpfe für Ihre Konstruktoren:

public Gemeinde(string name)
public KreisangehörigeGemeinde(string name, string landkreis) : base(name)
public KreisfreieGemeinde(string name) : base(name)

Es gibt Klassen Die Gemeinden und übergreifend Orte und ihre straßen(mit länge) beschreiben sollen. Aus einer mdb datei (datenbank) sollen vorhandene Orte/gemeinde gelesen werden und im einem Fenster soll der kürzeste weg zw. zwei orten berechnet werden (grob formuliert).Funktionen kommen ungefähr gar nicht vor aber wie gesagt ich muss interfaces implementieren.
Falls es dir was hilft könnte ich dir meinen Quellcode mal zusenden

mfg
taliaa is offline  
Old 05/23/2014, 11:22   #4


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Alles klar, das ändert natürlich einiges. Wenn du Schnittstellen implementieren musst, würde ich die Eigenschaft Name im Interface definieren:

Code:
public interface IGemeinde
{
    string Name { get; set; }
}
und in der Klasse, die IGemeinde implementiert müsstest du diese Eigenschaft eben selbst noch einmal definieren:

Code:
public class KreisGemeinde : IGemeinde
{
    public string Name { get; set; }
}
Sieht zwar gleich aus, ist es aber nicht. Im Interface steckt die Deklaration, in der implementierenden Klasse die Definition.

Meiner Meinung nach, ist eine abstrakte Klasse hier vorzuziehen. Wenn du keine Funktionalität hast und nur mit Eigenschaften arbeitest, ist das vernünftig und du sparst dir sogar noch Schreibarbeit, da du in der erbenden Klasse nichts mehr machen musst.

Code:
public class Gemeinde
{
    public string Name { get; set; }
    
    public Gemeinde(string name)
    {
        Name = name;
    }
}

public class KreisGemeinde : Gemeinde
{
    public KreisGemeinde(string name)
          : base(name)
    { }
}
Das ist natürlich nur ein Faktor, hinzu kommen noch gewisse andere wie zum Beispiel die Standardimplementation. So etwas gibt es beim Interface nicht.

Mehr dazu:
Mostey is offline  
Reply


Similar Threads Similar Threads
25€ PSC oder MB Belohnung, Mysql-Schnittstellen-Problem
06/11/2013 - Metin2 Private Server - 1 Replies
Hey Leute, Ich arbeite seit 2 Wochen ununterbrochen an einer Lösung meines Problems. Ich habe 4 Foren durchkramt und komme nicht wirklich weiter. Scheinbar funzt meine Schnittstelle bzw die Questliberweiterung einfach nicht. Er schreibt nix in die DB und fragt auch nix ab. Er wirft mir nur unbegreifliche Errors aus in die Cores, womit ich garnix anfangen kann, weil es in den besagten Zeilen oft garnichts gibt !. Hier nur mal ein kleiner Auschnitt von heute.
Schnittstellen für E Gold möglich?
12/12/2011 - Main - 6 Replies
Eine Frage gibt es Schnittstellen für E Gold?
Rüstungen implementieren
11/28/2010 - Metin2 Private Server - 5 Replies
Hi @ all! Wollte mal fragen, ob mir jemand sagen kann wie man Rüstungen implementiert, bzw. ob es irgendwo einen Client gibt, mit dem man neue Rüstungen downloaden kann...? lg stefan
NEED HELP via TV5 Quest implementieren!
04/29/2010 - Metin2 Private Server - 0 Replies
Hallo, ich brauche hilfe beim implementieren dieser Quest: quest npc_shop_equip begin state start begin when 9002.click."Einkaufen" begin say_title("Händler:") say("") say("Ah, ein weiterer Kunde!") say("Auch du wirst innerhalb")
Map implementieren
03/01/2010 - Metin2 Private Server - 3 Replies
Hallo ich hab vor einigen tagen nach den ordner pfad der burgen gefragt diesen habe ich nun gefunden ich habe versucht NPC's auf zu stellen aber leider kam immer eine Fehlermeldung dc 0:unimplemented (iwie so aber auf jeden fall "unimplemented") nun wollte ich fragen ob man die irgendwie implementieren kann so dass ich npcs aufstellen kann Die THX-Geilen bekommen auch eins MfG Nixodas



All times are GMT +1. The time now is 12:14.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.