Projektzusammenarbeit intern.

Die Programmiersprache C# und Programmierung im .NET Framework/Mono
Antworten
canlot
Beiträge: 393
Registriert: Di Mär 08, 2011 11:01 pm
Wohnort: NRW

Projektzusammenarbeit intern.

Beitrag von canlot » Fr Jan 04, 2013 12:50 am

Hallo alle die Überschrift ist vielleicht ein wenig komisch aber ich versuche es so zu erklären.
Ich habe noch nie an großen Projekten gearbeitet außer in Php vielleicht.
Als das Problem ist folgendes: Ich habe einen einfachen win form Projekt erstellt und ich habe mehrere Dateien also Program.cs ist ja das Hauptprogramm und die MainForm.cs ist die Datei wo die Ereignisse stehen in der Klasse MainForm abgeleitet von der Klasse Form. Wie kann ich also wenn ein Ereignis auftritt die Daten aus dem Hauptprogramm abfragen also aus der Program.cs beziehungsweise wie machen die Entwickler das. Ich definiere die Klasse MainForm in dem Hauptprogramm:

Code: Alles auswählen

			
                        Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new MainForm());
Also noch mal wie kann ich das ganze zusammenarbeiten lassen und wie tut ihr es?
:edit Was ich noch vergessen habe ich arbeite mit SharpDevelop keine Lust auf das fette Microsoft Ding :shock: schlimm genug das ich mit C# entwickel :D
Unwissenheit ist ein Segen

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Projektzusammenarbeit intern.

Beitrag von Xin » Fr Jan 04, 2013 2:00 am

MainForm ist damit quasi das Hauptprogramm.
Programm.cs ist letztenendes nur der Teil des Programms, der das MainForm öffnet.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

canlot
Beiträge: 393
Registriert: Di Mär 08, 2011 11:01 pm
Wohnort: NRW

Re: Projektzusammenarbeit intern.

Beitrag von canlot » Fr Jan 04, 2013 3:17 am

Das ist mir schon bewusst. Die Frage ist die, wie können sie untereinander kommunizieren, Daten austauschen etc. ?
Unwissenheit ist ein Segen

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Projektzusammenarbeit intern.

Beitrag von cloidnerux » Fr Jan 04, 2013 10:28 am

Das ist mir schon bewusst. Die Frage ist die, wie können sie untereinander kommunizieren, Daten austauschen etc. ?
Ich habe bisher noch nie mit der Program.cs irgendwelche Daten ausgetauscht. Warum? Weil die program.cs absolut keinen Mehrwert hat als irgendeine andere Klasse/Datei.
Zudem ist es auch nicht vorgesehen:

Code: Alles auswählen

Application.Run(new MainForm());
Das ist die letzte ausgeführte Zeile Code in der program.cs und die Wartet bis sich die MainForm beendet. Da passiert sonst nichts.
Du musst schließlich bedenken, dass du hier mit einem GUI Programm arbeitest. Du willst deine Algorithmen mit deiner Oberfläche verbinden und nicht tausende Inerfaces definieren.
Wenn ich Code habe, der nicht in die MainForm gehört, lege ich eine neue Klasse und damit eine neue Datei an und implementiere dort alles was ich haben möchte und instanziere es in der MainForm.cs.
Du kannst aber auch deine Klassendefinition um Parameter erweitern:

Code: Alles auswählen

class MainForm(int myParameter) : Form
und dann in der program.cs

Code: Alles auswählen

Application.Run(new MainForm(myParameter));
Das dürfte so gehen, hab ich aber noch nie gemacht.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Projektzusammenarbeit intern.

Beitrag von Xin » Fr Jan 04, 2013 12:26 pm

canlot hat geschrieben:Das ist mir schon bewusst. Die Frage ist die, wie können sie untereinander kommunizieren, Daten austauschen etc. ?
Kurzfassung: Pack alles, was Du brauchst in die MainForm. Die Programm.cs ist nur eine Art vorgeschobene main-Funktion, die die MainForm startet.
Wofür brauchst Du die Kommunikation!?

Ansonsten kannst Du lediglich vor "Application.Run()" die MainForm mit Daten bestücken und CallBack-Funktionen bestimmen.
Aber wozu benötigst Du das?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

canlot
Beiträge: 393
Registriert: Di Mär 08, 2011 11:01 pm
Wohnort: NRW

Re: Projektzusammenarbeit intern.

Beitrag von canlot » Fr Jan 04, 2013 1:34 pm

Ok danke für die Antworten. In C/C++ hat man doch nur eine Hauptdatei wenn ich mich recht erinnere auch in GUI Anwendungen?
Unwissenheit ist ein Segen

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Projektzusammenarbeit intern.

Beitrag von cloidnerux » Fr Jan 04, 2013 1:51 pm

Ok danke für die Antworten. In C/C++ hat man doch nur eine Hauptdatei wenn ich mich recht erinnere auch in GUI Anwendungen?
Das hat damit nichts zu tun. Deine "Hauptdatei" existiert in dem Sinne nicht, sondern du brauchst einen Einstiegspunkt, der Punkt wo dein Programm anfangen soll. Das ist bei C/C++ die "main"-Funktion, wobei man das auch umstellen kann. In C/C++ arbeitet man dann in der Regel in der main-Funktion weiter und ruft seine Hauptkomponenten auf und macht, muss man aber nicht. Du kannst auch einfach eine Funktion aus einer anderen Datei aufrufen, die dann die Arbeit macht.
So wird es auch in C# mit WinForms gemacht. Hier aber aus dem Grund, um die GUI als eigenständige Klasse und nicht als Programm zu handhaben. Daher programmiert man seine Funktionalität auch in die MainForm hinein und kümmert sich nicht weiter um die program.cs
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Projektzusammenarbeit intern.

Beitrag von Xin » Fr Jan 04, 2013 3:46 pm

canlot hat geschrieben:Ok danke für die Antworten. In C/C++ hat man doch nur eine Hauptdatei wenn ich mich recht erinnere auch in GUI Anwendungen?
Das hier ist das Hauptprogramm für progtall, geschrieben in C++

Code: Alles auswählen

int main( int argc, char ** argv )
{
  unsigned int port = 8000;
  if( argc > 1 )
  {
    port = atoi( argv[1] );
  }

  XSD::CMS::Configuration config;
  
  HttpService http( port );
  http.serve( config );

  printf( "quit\n" );

  return 0;
}
Ob da jetzt http.serve(...) und jemand auf Ereignisse an einem TCP/IP-Port horcht steht oder Application.run(...) und das Programm auf Ereignisse des User wartet - so wirklich einen Unterschied macht das nicht, oder? ;-)
Die Action passiert jedenfalls nicht in main(), die wird in beiden Fällen nur gebraucht, um die Klasse aufzubauen, wo das eigentliche Programm abläuft.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten