Interface ?


Reverent

Erfahrenes Mitglied
#1
Hallo Leute,
Zitat von cosmo
Ein bissel. Er meint Du sollst den Code für die Verbindung nicht überall einfach reinklatschen.
Stell Dir vor die Verbindung ändert sich. Ergo musst Du auch allen anderen Klassen aktualisieren.
Brauchst Du aber nicht wenn Du das in einer Klasse implementierst.
Wenn Du diese Klasse immer wieder instanzierst erzeugst das sowieso einen Overhead.
Versuch die Klasse überall verfügbar zu machen, nachdem sie instanziert wurde.
Das kannst via Referenz oder Interface lösen,
welche(s) Du deinen Klassen im Konstuktor oder via Property übergeben kannst.
Ok via Referenz habe ich verstanden, über den Konstruktor, oder.
Aber was ist ein Interface?
Bitte um Erklärung!
Bis Dann
 

NRFi

Erfahrenes Mitglied
#2
Hi,

zum Thema Interface gibt es sicher einige gute Tutorials im Netz. Und zu diesem Thema würd ich dir raten, auch sowas mal durchzulesen, weil das schon mächtig und sinnvoll ist. Mit eigenen Worten mal so für 2 min. erklären ist doof.

Mal etwas über OOP (hoffe mal, dass da auch Interfaces behandelt werden):

http://www.tutorials.de/tutorials27333.html

http://www.tutorials.de/tutorials27366.html

http://www.tutorials.de/tutorials27415.html

hf & gl ;)


PS: Interfaces sind halt Objekte, die aber keine Funktions/Properties-Implementierungen, sondern nur die Funktions/Properties-Köpfe beinhalten.

also zb.
Code:
public interface blub
{
     string GetBlaBlub(int index);  //Funktionskopf

     string BlaBlub //Property, was get und set enthalten MUSS
     { 
          get;
          set;
     }
}
wenn du das jetzt auf deine Klasse legst, also
Code:
public class tralala : blub
{

}
musst du dadrin noch die Methode GetBlaBlub und das Property BlaBlub einbauen, also

Code:
public class tralala : blub
{
     string GetBlaBlub(int index)  //Funktion
     {
        //deine Implementation
     }

     string BlaBlub //Property, was get und set enthalten MUSS
     { 
          get { return... }
          set { ....=value}
     }
}
Du MUSST dann die festgelegten Funktionen eines eingebauten Interfaces in der jeweiligen Klasse übernehmen, ob du da was einbaust(Implementation), ist deine Sache.
Jetzt kannst du zb, wenn du von dem tralala-Objekt eine Collection hast, so vorgehen:

Code:
foreach(blub obj in _oSortedListWithMixedObjects.Values)
{
      obj.BlaBlub = "du bist ein Interface-Property";
}
Gerade bei PluginProgrammierungen benutzt man Interfaces immer, aber genauso bei mehreschichtige Anwendungen usw.

Und wenn du dir jetzt noch ein Tutorial dazu anschaust, wirste das ganze auch verstehen :) :) :)

hf & gl

NRF
 
#3
Reverent hat gesagt.:
Aber was ist ein Interface?
Bitte um Erklärung!
Bis Dann
Was soll den das jetzt?
Nimm es mir nicht übel, aber Du solltest Dich über die grundlegenden Elemente
von C# schon SELBER erstmal schlau machen, bevor Du Du postest.
Wenn Du dann ein Frage dazu hast ist es vollkommen ok.
Aber wir sind doch keine Hilfsschule oder ähnliches. :rolleyes:
Hier wird gefälligst konstruktiv über Lösungen und Verständnisprobleme und diskutiert.
Und gewöhn dich endlich mal an die Suchfunktion.

Ich find NRFi hats zwar gut gemeint,
aber das hättest auch alles selber in erfahrung bringen können. :rolleyes:

@Topic:
In den Beispielel oben werden in dem Interface, Propertys
und Metoden/Funktionen der Klasse verfügbar gemacht.
Das währe jetzt die richtige Interfacevariante innerhalb der Klasse:
Code:
bool MyNamespace.IMainForm.ActivatePlayCounter {
	set{ tmrPlayCount.Enabled = value; }
}
 
#4
Hallo!

Aber wir sind doch keine Hilfsschule oder ähnliches.
Jetzt mach aber mal halb lang!
Was hast du denn für ein Problem damit dein "riesiges" Wissen preiszugeben? Du verteilst deine "Weisheiten" doch sonst auch wo du kannst
;-)

Wenn du die Frage des OP erklären kannst, solltest du besser darum bemüht sein eine "fachlich fundierte" Antwort abzugeben als hier Leute einfach so fertig zu machen. Dein Ton geht mir ehrlich gesagt schon eine ganze Weile auf den Wecker...

Gruß Tom
 

NRFi

Erfahrenes Mitglied
#5
Ich finde hier mittlerweile kaum noch einen Thread hier, wo leute für geschriebenes von bestimmten zwei Leuten hier im Forum einen reingewürgt kriegen. Das kotzt mich hier echt schon an mittlerweile. Es sind NICHT alle so "schlau" wie ihr und es sitzen nicht ALLE die ganze zeit im Netz und wissen, wie sie sich immer zu verhalten haben, also bisschen mehr Freundlichkeit bitte. Das geht mir hier echt schon auf den Piss, habe selten so unfreundliche Antworten auf Threads gelesen, echt nicht.

Ok, hier muss man echt sagen, dass reverent es sich echt leicht gemacht hat, aber man kanns auch einfach mal drauf belassen, wenn sich schon jemand "erbarmt".

Das kommt hier schon alles mittlerweile echt arrogant rüber, von wegen ich bin der coolste und ihr seid alle dumm und das zeig ich euch jetzt auch.

So, das ist jetzt mal meine Meinung hier über gewisse Leute.
 
Zuletzt bearbeitet:

Norbert Eder

Erfahrenes Mitglied
#7
Um wieder ein wenig Konstruktivität hinein zu bekommen versuch ich mal eine einfache Beschreibung des Begriffes Interface.

Ein Interface (Schnittstelle) beschreibt einfach wie eine Klasse (welche das Interace später implementiert, also mit Logik befüllt) auszusehen hat. Es werden über das Interface Methoden vorgegeben, welche unbedingt ausprogrammiert werden müssen.

Wozu dient das ganze?
Du schreibst zb eine Software - nehmen wir als Beispiel Winamp, den kennt jeder. Winamp unterstützt Plugins. D.h. jeder der lustig ist, kann ein Plugin für den Winamp schreiben. Nun braucht diese Person Vorgaben. Wie muss das Plugin aussehen? Welche Methoden muss mein Plugin enthalten, damit Winamp mit meinem Plugin umgehen kann. Genau diese Vorgaben werden durch ein Interface beschrieben.
 
#8
:offtopic:
Thomas Darimont hat gesagt.:
Jetzt mach aber mal halb lang!
Was hast du denn für ein Problem damit dein riesiges Wissen preiszugeben? Du verteilst deine Weisheiten doch sonst auch wo du kannst
Ich find es einfach unverschämt einfach Grundlegende Infos zu einer Sache zu erwarten,
deren Name bekannt ist.
Er ist eindeutig VIEL ZU FAUL sich selber vorher mal zu informieren.
So siehts aus (!)


Thomas Darimont hat gesagt.:
Wenn du die Frage des OP erklären kannst, solltest du besser darum bemüht sein eine "fachlich fundierte" Antwort abzugeben als hier Leute einfach so fertig zu machen. Dein Ton geht mir ehrlich gesagt schon eine ganze Weile auf den Wecker...
Schau Dir sein [thread=215162]Programm[/thread] an.
Ich seh sehr wenig davon, dass die Vorschläge umgesetzt wurden, die wir gemacht haben.
Das kommt einem vor als sei alles für die Katz.
Ist es sowieso auch wenn er nicht anfängt,
sich mal was richtig durchzulesen und sich zu BEGRIFFEN im nachhinein,
selber zu informiert bevor er wieder dazu neue Fragen stellt.

Glaubt ihr echt ich hab mein ganzes Wissen nur aus dem Forum?
Das Forum hat mit die Möglichkeit gegeben mein grundlegendes Wissen zu den Dingen,
zu erweitern und die zusammenhänge zwischen denen zu erkennen.
Ich hab hier Dinge gelernt ohne deren Grundlagen ich wer weis wie lang gebaucht hätt, diese zu verstehen.
Ohne Selbststudium kann man das Programmieren absolut vergessen (!)

Meine Statements sind vielleicht hart, aber die Wahrheit.
Und ich würde nie jemand kritisieren wenn ich seine Art mitzuarbeiten nicht kenne. ;)

@NRFi: Wann, wie, wo, hab ich Dir jemals eine reingewürgt?
NRFi hat gesagt.:
Ok, hier muss man echt sagen, dass reverent es sich echt leicht gemacht hat, aber man kanns auch einfach mal drauf belassen, wenn sich schon jemand "erbarmt".
Denkst Du wirklich das das fäir denen gegenüber ist, die sich wirklich kümmern?
Hättest eher jemand helfen können der schon selber was herrausgefunden hat
und letztendlich noch eine kleine Verständnishilfe gebraucht hätte.

Mein Gott, ich entschuldige mich wenn ich beleidgend geworden sein sollte.
Und weise Die User in zukunkt auch nicht mehr darauf hin.
Ich poste dann einfach nicht und gut iss. :rolleyes:
 

chironex

Erfahrenes Mitglied
#9
Also, auch wenn cosmochaosmaker einen eher scharfen Ton angeschlagen hat, hat er schon recht. Das Forum ersetzt keine Schulung. Es soll lediglich Hilfe bei spezifischen Problemen geben. Wenn jemand nicht weiss, was ein Interface ist, braucht er kein Forum sondern eine Schulung oder ein Buch über OO.

Leider kommt es hier oft vor, dass jemand hier reinpostet und professionellen Support zum Nulltarif erwartet. Die meisten kommen hier auch nur her, wenn sie Probleme haben, helfen anderen aber genau null, bedanken sich nicht und setzen den Thread nicht mal auf erledigt. Das soll ja auch nicht der Sinn sein, oder? Dass da einem mal der Hut hochgeht kann ich schon verstehen und hat meiner Meinung nach nichts mit Arroganz zu tun. Außerdem sollte den hier beschriebenen beiden Personen durchaus auch mal Dankbarkeit ausgesprochen werden, denn ohne sie wäre das .Net-Forum wohl eher aufgeschmissen.
 

NRFi

Erfahrenes Mitglied
#10
gebe chironex natürlich auch recht,

mein posting war evtl etwas übertrieben, aber es ging mir nicht nur um diesen Thread, sondern ums allgemeine. was genau ich meine werde ich noch den leuten zuschicken, damit ich das hier nicht unbegründet lasse

@cosmochaosmaker, ich meinte nicht damit, dass du mich irgendwie angemacht hast, sonst hätte ich dir schon meine meinung gesagt. aber ich werd gerne beispiele bringen, wenn ich sie noch finden sollte.
 
#11
:offtopic:
NRFi hat gesagt.:
gebe chironex natürlich auch recht,

mein posting war evtl etwas übertrieben, aber es ging mir nicht nur um diesen Thread, sondern ums allgemeine. was genau ich meine werde ich noch den leuten zuschicken, damit ich das hier nicht unbegründet lasse
Schlechter Versuch :rolleyes:
NRFi hat gesagt.:
@cosmochaosmaker, ich meinte nicht damit, dass du mich irgendwie angemacht hast[...]
Pass mal auf,
dein Statement zum Thema war absolut überflüssig!
Hast ja nicht mal verstanden worum es mir ging,
weil Du dich sofort selber angegriffen gefühlt hattest
und nicht nur mich, sondern auch "jemand Anderes" gleich mit angemacht hast.
NRFi hat gesagt.:
Ich finde hier mittlerweile kaum noch einen Thread hier, wo leute für geschriebenes von bestimmten zwei Leuten hier im Forum einen reingewürgt kriegen.
NRFi hat gesagt.:
aber ich werd gerne beispiele bringen, wenn ich sie noch finden sollte.
Willst Du mir jetzt irgendwie drohen? :suspekt:
Ich wüsste nicht was sich da finden ließe.
Is ja echt lächerlich.

Vollgendes trifft den Punkt genau und ich frag mich, warum ich's nicht gleich so formuliert hab. :rolleyes:
Das hätte uns allen hier ne Menge sinnloses Gesülze erspaart.
chironex hat gesagt.:
Leider kommt es hier oft vor, dass jemand hier reinpostet und professionellen Support zum Nulltarif erwartet.
Manchen Leuten hier macht das posten auch Spaß,
nur leider geht das Gefühl und vor allem der Sinn dieser Community
durch solche Leute total verloren. :(
 

Norbert Eder

Erfahrenes Mitglied
#12
cosmochaosmaker hat gesagt.:
:offtopic:Schlechter Versuch :rolleyes:
Pass mal auf,
dein Statement zum Thema war absolut überflüssig!
Die ganze Diskussion is zumindest an diesem Ort überflüssig. Der Fragesteller will eine Lösung und keine Diskussion wo der eine Polizei spielt und der andere sich angepi**t fühlt. Machts euch das bitte per PN oder wie auch immer aus, aber net da. Ist echt kindisch ...
 

Reverent

Erfahrenes Mitglied
#13
Hallo Leute,
danke noch mal für die Erklärungen aber wie muss ich mir das bildlich Vorstellen?
Ich habe mich jetzt schon etwas eingelesen, aber der Groschen fällt noch nicht.
Hier also die Schichten:

Darstellungsschicht (UI UserInterface)
Verarbeitungsschicht (BusinessLogic)
Datensicherungsschicht (DAL Data Access Layer)
Datenmedium (z.B. eine Datenbank (MySQL))
(Ich hoffe die Begriffe stimmen)

Wo in der Kommunikation unter den Schichten finde ich jetzt das Interface?

Meine "jungfreuliche Vorstellung" ist, ich habe da mal ein kleines Projekt und für jede Schicht eine Klasse (ist vielleicht auch unsauber)
So und jetzt erzeuge ich ein Objekt von der Verarbeitungsschicht in der Darstellungsschicht um auf die Verarbeitungsklasse zu zugreifen.
Dann ein Objekt von der Datensicherungsschicht in der Verarbeitungsschicht.
Und dann das ganze Rückwerts also ein Objekt von der Verarbeitungsschicht in der Datensicherungsschicht u.s.w. .
So stelle ich mir die Kommunikation vor, aber ich weiß da gibt es noch was Besseres und vielleicht ist es ja so unsauber?

Weiß jemand gute Literatur oder kann mir das mal jemand "bildlich" Erklären.
Danke schon mal
 

Neue Beiträge