Announcement

Collapse
No announcement yet.

Properties, statische Variablen und eine Dateifrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Ja, die Datei oder die Klasse kenne ich auch schon, allerdings ist das ganze ja eher Firmenorientiert oder?
    Es ist einfach eine standardisierte simple Lösung des Problems. Es neu zu erfinden ist in jedem mir vorstellbaren Context unnötig.

    Naja, letztlich hast du ja wohl Recht aber eigentlich macht es ja auch keinen Unterschied oder?
    Du hast hier eine ganze Reihe reiner Stilfragen gestellt. Funktional machen die Sachen alle keinen Unterschied. Es geht um Stilfragen heißt um Lesbarkeit und alles was von Lesbarkeit abhängt. Natürlich kannst du auch alles anders lösen solange es funktioniert. Automatische Properties sind nur ein Angebot die musst du nicht benutzen. Auch Properties überhaupt sind nur ein Angebot man kann auch alles ohne lösen. Jemand der auch C# beherrscht und mit deinem Code arbeiten muss könnte dann deiner Gesundheit aber abträglich sein.

    Dafür müsste man dann ja z.B eine Struktur erstellen oder nicht?
    Ein struct ist was für Spezialfälle. Wir sind hier im objektorientierten Sprachbereich, alles ist Klasse. Es ist völlig normal Probleme durch Klassen zu lösen. Die zu meiden ist keine Form von Optimierung oder so. Und wenn du Anforderungen an deine Liste hast die die vorhandene List Klasse nicht erfüllt implementiere deine eigene bzw. leite von List ab und implementiere die Funktionalität die du brauchst.

    Ist zwar so ne winzige Kleinigkeit aber das verbraucht ja auch bestimmt ein wenig mehr Ressourcen, wenn man immer public string, int usw. schreibt. (schätze ich)
    Nein. Das kompiliert immer zum selben Bytecode. Auch hier sollte man die am leichtesten lesbare Variante wählen und die meisten Entwickler (inklusive mir) halten einzeilige Variablendeklarationen (also Sichtbarkeit Typ Name = Defaultwert Semikolon) für am lesbarsten.
    public sollte sowas aber nicht sein. Variablen sind was Klasseninternes. Wenn du Infos veröffentlichen willst nimm Properties.

    Zu deinem Buchwunsch fällt mir gerade nichts wirklich passendes ein. Wenn es um Patterns geht setzen eigentlich alle ein gewisse Festigkeit des Grundlagenwissens voraus. Mein Gefühl sagt mir gerade das dir etwas aus der Ecke nicht helfen würde. Für ein Beispiel schau mal hier. Wenn dir was eher allgemeines liegt das nicht unbedingt was mit .Net und C# zu tun hat sondern das Pattern Problem allgemein löst gibt es ein paar, leider ältere, Einsteiger Bücher aus der "Head First" Reihe von O'Reilly. Die sollte man aber mal probelesen. Der Stil ist leicht nervig und nichts jedermanns Sache.
    Zuletzt editiert von Ralf Jansen; 12.06.2014, 00:13.

    Comment


    • #17
      @Ralf Jansen
      Hmm okay, naja das war ja auch eigentlich erst einmal nur als Beispiel gedacht, also das mit den Propertys.
      Ich hätte jetzt nicht gedacht, das dass so ne Rolle spielt.

      Dann werde ich wohl die AssemblyInfo.cs nehmen.
      Danke für den Tipp, letztlich ist das ja auch sowieso für mich nicht so wichtig.

      Das mit der Kategorie war wohl auch irgendwie ein kleiner Reinfall, da habe ich ehrlich gesagt nicht mal an Propertys gesagt aber das ist ja auch wohl eine einfachere Lösung.

      Danke auf jeden Fall für die Ratschläge und für die doch sehr schnellen Antworten.
      Ich will irgendwie auch immer alles direkt ordentlich machen, wobei das ja auch wohl Ansichtssache ist.

      Der Link funktioniert bei mir leider nicht, also da steht "Content not found".

      @fanderelf

      Danke für das keline Beispiel, leider denke ich noch nicht so richtig an Propertys.
      Müsste man da dann nicht noch eine Variable erstellen oder wird das mit diesem "Automatic Property" auch automatisch eine erstellt, sodass ich dann nachher nur noch die Referenz benutzen muss?
      Also Thema.Titel z.B?

      Zu 2) Also wäre das Stichwort für die Trennung von Logik und GUI nicht nur MVC sondern eher Databinding oder ASP.Net wobei das ja für Websiten ist oder, also das eher nicht.
      Ist es da mit C++ dasselbe oder gibt es da was anderes?
      Für die Erstellung von Websiten bzw. dynamischen Websiten würde ich auch eher zu PHP greifen, natürlich mit in Verbindung mit HTML und CSS.
      Mit Webdesign kenne ich mich sogar besser aus, als mit der Desktop-Entwicklung aber auch da leider nicht so richtig OOP.
      Habt ihr da vielleicht mal nen Link oder ein Stichwort für mich, also für die Desktop-Entwicklung jetzt?
      Gerne auch wie schon im Thread gesagt ein Buch.

      Keine Ahnung was ich mir da genau angucken soll aber sind die nicht alle (ungefähr) gleich?
      Ich kann mir da halt vor allem nichts mit dieser "Übersetzungsschicht" vorstellen und würde mir sowas gerne einfach mal anschauen, bzw. das ganze dahinter verstehen.

      Naja, ich denke auch das war es dann wirklich.
      Außerdem gehört das ja auch nicht mehr hier so richtig rein oder?

      Trotzdem noch einmal danke an euch beide.
      Zuletzt editiert von Threin; 12.06.2014, 00:13.

      Comment


      • #18
        Den Link hab ich korrigiert.

        Comment


        • #19
          Zu 1.: Ganz genau. Intern legt der Compiler vermutlich trotzdem ein Feld an indem er Deinen Wert ablegt. Genauso wie Du es im Beispiel oben gemacht hast. Typischerweise benutzt man aber einfach nur die Property. Gerne auch intern in der Klasse selbst. Da muss man nicht unbedingt das Feld benutzen.

          Zu 2.: Ich gehe davon aus dass mit der "Übersetzungsschicht" den Controller meinst. Im Prinzip ist das eigentlich trivial was der macht. Das klingt in den Büchern viel hochtrabender als was eigentlich dahinter steckt. Im Prinzip macht der Controller nichts anderes die Kommunikation zwischen Deinem Modell und der UI.

          Beispiel:

          Der Einfachkeit wegen lasse ich mal die Interfaces zur Abstraktion weg. Ich benutze das Model von oben wieder und möchte einen View bauen mit dem ich die Kategorien eines Themas bearbeiten kann.

          [highlight=c#]

          ///////////
          // Model //
          ///////////
          public class Kategorie
          {
          public string Titel { get; set; }
          public string Thema { get; set; }
          }

          public class Thema
          {
          public string Titel { get; set; }
          public string Beschreibung { get; set; }

          public IList<Kategorie> Kategorien { get; set; }
          }

          ////////////////
          // Controller //
          ////////////////
          public class ThemenKategorieController
          {
          private Thema thema;

          public ThemenKategorieController(IKnowTheCurrentThema currentThema)
          {
          this.thema = currentThema.Thema; // Holt das aktiv ausgwählte Thema aus einem anderen Bereich der Anwendung - z.B. einer Liste von Themen
          }

          public ThemenKategorieView View { get; set; }

          public void Init()
          {
          View.UpdateKategorien(this.thema.Kategorien);
          }

          public void AddKategorie(string kategorieTitel)
          {
          this.thema.Kategorien.Add(new Kategorie() { Titel = kategorieTitel });
          View.UpdateKategorien(this.thema.Kategorien);
          }

          public void DeleteKategorie(string kategorieTitel)
          {
          var kategorieToDelete = this.thema.Kategorien.FirstOrDefault(x => x.Titel == kategorieTitel);

          if(kategorieToDelete != null)
          {
          this.thema.Kategorien.Remove(kategorieToDelete);
          View.UpdateKategorien(this.thema.Kategorien);
          }
          }
          }

          //////////
          // View //
          //////////

          // Bitte beachten dass der View Code fiktiv ist.
          // Das sieht in jedem Framework etwas anders aus
          public class ThemenKategorieView
          {
          private ThemenKategorieController controller;

          public ThemenKategorieView(ThemenKategorieController controller)
          {
          this.controller = controller;
          this.controller.View = this;
          this.controller.Init();
          }

          // Funktion die ausgeführt wird wenn man auf den Add Button clickt
          // Also von der View zum Controller
          public void OnAddClick()
          {
          var kategorieTitel = textBoxKategorieTitel.Text; // Eine Textbox in der der Titel der Kategorie eingegeben werden kann
          controller.AddKategorie(kategorieTitel);
          }

          // Funktion die ausgeführt wird wenn man auf den Delete Button clickt
          public void OnDeleteClick()
          {
          var kategorieToDelete = kategorieList.SelectedItem.Text; // Eine Liste in der ich vom gewählten Item den Text hole
          controller.DeleteKategorie(kategorieToDelete);
          }

          // Vom Controller zur View
          public void UpdateKategorien(IEnumerable<Kategorie> kategorien)
          {
          kategorieList.Clear(); // das löscht alle Einträge aus der Liste in der UI
          foreach(var titel in kategorien.Select(x => x.Titel))
          {
          kategorieList.Items.Add(titel); // fügt einen Eintrag in die Liste im UI hinzu
          }
          }
          }
          [/highlight]

          So ungefähr könnte das Aussehen. Bitte bedenke dass ich das einfach so runtergetippt habe keine Garantie für Syntax und funktionsfähigkeit, aber ich hoffe das Prinzip wird klar Wie Du am Ende siehst ist der Code im View ziemlich dumm. Im Prinzip zieht man damit den Code aus der View in einen Controller um ihn z.B. per Unit Test testen zu können. An dieser Stelle kannst Du natürlich noch viel mehr Spielereien einbauen. Du kannst z.B. in Dein Model auch Events einbauen die eine Nachricht werfen sobald sich Dein Model ändert. Der Controller würde sich an die Events hängen und die UI updaten. Am Ende ist es, wie vorher schon gesagt, nichts anderes als DataBinding zu Fuß.

          Falls Du mit dem Gedanken spielst in Windows Rich Client Desktop Anwendungen programmieren zu wollen würde Dir heutzutage vermutlich jeder zu WPF raten. Zu Büchern habe ich leider keine Ahnung. Die meisten finde ich gerade an der Ecke relativ unbrauchbar, weil es eher Kompendien als tatsächliche Lehrbücher sind. Oft wird dort alles bis ins kleinste Fitzelchen erklärt, obwohl man doch eigentlich erstmal nur damit starten möchte. Ich würde mich eher im Internet nach Tutorials umziehen und das Kompendium als Nachschlagewerk immer neben mir liegen haben.
          Wichtiger ist eigentlich sich ein konkretes Ziel zu definieren wie es am Ende aussehen soll, damit man sich nicht in den Spielereien des Frameworks verzettelt.
          Zuletzt editiert von fanderlf; 12.06.2014, 08:32.

          Comment


          • #20
            Hey,

            brauch man für das genannte Beispiel für MVC keine Referenz oder ist das schon eine Referenz?

            Code:
            private Thema thema;
            müsste das dann nicht eigentlich so sein oder ist das dasselbe?

            Code:
            Thema thema = new Thema();
            Zudem hätte ich noch ne Frage:

            Naja, man merkt ja wohl das ich noch nicht alles kann. Vielleicht sind ein paar Sachen auch noch Grundlagenwissen, keine Ahnung.
            Ich habe da schon ein paar Sachen gemacht aber eher wenig Objektorientiert und wenn dann eher wenig. Leider habe ich ja auch keinen, der meine Sachen checken könnte (falls das überhaupt jemand machen will ). Zudem bietet sich mir auch grad die Möglichkeit eines Studiums aber ich bin mir nicht sicher, ob ich das machen soll oder lieber ne Ausbildung zum Fachinformatiker, natürlich dann FI-AE und nicht Systemintegration.
            Elektrotechnik wäre vielleicht auch nicht ganz uninteressant.

            Das hier ist ja auch ein lambada-Ausdruck oder?
            Code:
            x => x.Titel == kategorieTitel
            Leider kenne ich mich damit auch nicht aus, genauso wie mit Schnittstellen (eher wenig), dieses "using" (nicht Namensraum), weiß ich auch nicht warum man das benutzt und mit "var" habe ich auch fast noch nie gearbeitet aber das war doch das, wo der Compiler dann nachher selbst den Typ bestimmt oder?
            Generell gibt es da bei mir vielleicht auch noch ein bisschen Übearbeitungsbedarf".

            Ein Anfängerbuch wäre aber glaube ich auch nichts mehr für mich, der totale Einsteiger bin ich nämlich auch nicht.

            Vielleicht wäre ein Buch vielleicht doch nicht so schlecht aber kennt jemand hier ein gutes, was vielleicht auch ein wenig weiter geht?
            Einiges kenne ich ja auch doch schon nur halt nicht das oben genante und naja, Objektorientierung halt nicht.

            Comment


            • #21
              Das ist ausdrücklich nicht böse gemeint: Doch, ein Anfängerbuch ist genau das Richtige für Dich.

              Probier's doch für den Anfang mit .NET Book Zero.

              Comment


              • #22
                Lambda nicht Lambada Lambada ist was anderes.

                Ich würde auch sagen fang mal Dich an bestimmte Themen selbst zu wagen, sonst kommen wir hier vom 100. in 1000. ohne wirkliches Ziel. Ob Studium oder Fachinformatiker musst Du selbst entscheiden. Gerade in der freien Wirtschaft in der IT-Branche läuft sehr viel über Eigeninitiative. Das was man dort braucht lernt man tatsächlich nur über Praxiserfahrung. Allerdings vermittelt Dir das Studium auch einige theoretische Grundlagen die beim Verständnis helfen und öffnen Dir vermutlich auch die Tor zu mehr potentiellen Jobs. Allerdings halte ich persönlich nicht viel von Firmen die auf einen Studienabschluss pochen - gerade in der IT-Branche.

                Ich kann Dir nur noch den Tip geben, dass Du Dich von diesen ganzen Patterns, Frameworks und Programmiersprachen nicht verrückt machen lassen darfst und dass man nicht sofort alles verstehen muss. Gehe einfach davon aus dass Du das alles mit der Zeit verstehen wirst und das durchaus ein paar Jahre dauern kann. IT ist und bleibt ein ewiges lernen. Ich arbeite jetzt gute 10 Jahre in der IT-Branche und mir wird eigentlich jeden Tag mehr bewusst was ich nicht weiß *lach*

                Auf jeden Fall solltest Du Dir, falls Du die Möglichkeit dazu hast, jemanden suchen der Erfahrung im Programmieren hat und Dir regelmäßig Feedback gibt. Du darfst natürlich auch uns hier im Forum weiter mit Fragen löchern, aber es wäre schön wenn die Fragen etwas konkreter zu einem Thema wären und nicht immer so 20 Fragen in einem Thread. Du darfst auch gerne mehrere Threads eröffnen mit jeweils ein bis zwei Fragen aus einem Themengebiet. Ich denke dann wirst Du auch bessere Antworten bekommen, weil man nicht 30 Minuten braucht um alle Frage die Du gestellt hast zu beantworten

                Du kannst auch mal schauen ob es nicht bei Dir in der Nähe z.B. eine .Net Usergroup gibt. Dort sind meist sehr interessierte Menschen die auch hilfsbereit sind. Dort kannst Du Dich auch mündlich mit anderen austauschen und bist nicht mehr ganz allein mit Deinen Problemen

                Comment


                • #23
                  Hehe, hier antworten die meisten ja echt ganz schön schnell und auch früh.
                  Ich hatte auch schon überlegt, ob ich ich morgens mal reinschauen soll, habe mich dann aber doch umentschieden, naja .. ist ja auch egal.

                  @luker: Keine Sorge ich sagte ja schon, das dass wohl so ist.

                  @Fanderelf
                  Ich meinte auch übrigens Lambda, nicht Lambada, das ist ja ein Tanz oder nicht oder war das dass mit den mathematischen Funktionen?^^

                  Gerade deswegen, wegen der Eigeninitiative wollte ich mich ja mit der Programmierung beschäftigen, weil ich auch schon in nem Gespräch danach gefragt wurde.

                  Naja, die Frameworks machen mich ehrlich gesagt ein wenig verrückt aber die die Programmiersprachen nicht. Ich habe mir schon einige angeguckt, zwar einige auch nur ganz grob aber bis jetzt gefallen mir C++ und C# am besten. Zudem finde ich PHP ja noch gut, wobei PHP ja auch keine Programmiersprache ist.

                  Naja, leider kenne ich keinen, der wirklich ahnung hat, wobei es da doch wohl einen gibt aber der hat sowenig Zeit und ich kenne ihn auch eher nur indirekt, von daher gibt es da niemanden.

                  Eine .Net Usergroup gibt es hier leider nicht, es gibt wohl so einen Hackertreff oder Hackerspace, keine Ahnung. Sowas in der Richtung ist es aber.

                  Eine Frage hätte ich aber doch noch. Ist das denn jetzt dasselbe?

                  Code:
                  private Thema thema;
                  Code:
                  Thema thema = new Thema();
                  Wie wäre es denn mit diesem Buch, hat auch recht gute Bewertungen.
                  http://www.amazon.de/Visual-2012-Spr...sual+C%23+2012

                  wobei das auf mycsharp nicht so hoch gewertet wird

                  Ja, mehr wollte ich auch echt nicht. Ich habe ja auch schon gesagt, das dass hier nicht mehr hinpasst.

                  Comment


                  • #24
                    wobei PHP ja auch keine Programmiersprache ist.
                    Aha, was dann?

                    http://de.wikipedia.org/wiki/PHP
                    Christian

                    Comment


                    • #25
                      [highlight=c#]
                      private Thema thema; // wert von thema ist null - Scope ist privat

                      Thema thema = new Thema(); // wert von thema ist eine neue Instanz von Thema - Scope ist privat
                      [/highlight]

                      Verstehe mich bitte nicht falsch. Ich denke jeder hier beantwortet Deine Fragen gerne, sonst wären wir nicht hier Und ich wollte Dich auch nicht vergraulen. Aber so 20 Fragen in einem Thread direkt hintereinander sind nur schwer zu beantworten, weil es einfach viel ist. Ich kann Dich aber auch verstehen, dass einen das am Anfang erschlägt. Mir ging es genauso und ich habe auch hier so eine Art Mentor gefunden. Ich und mit Sicherheit auch der Rest werden Dir auf jeden Fall helfen weiter zu kommen.

                      Comment


                      • #26
                        Originally posted by Christian Marquardt View Post
                        naja, laut Wikipedia ist es eine "Scriptsprache", wenn man dann allerdings auf Scriptsprache geht, steht da "Scriptsprachen sind Programmiersprachen ... ".
                        Von daher würde es doch dann eigentlich "Scriptsprache" heißen oder?

                        Das ist ja auch eigentlich hier nicht das Thema und

                        @fanderelf

                        Ja, das war es jetzt auch mit diesem Thread, wobei ich ja eigentlich noch ein gutes & umfangreiches Buch suche. Ich hatte mir damals mal das Visual C# 2008 geholt aber das hatte nicht grad viel Umfang und die Sachen waren eher nicht so gut erklärt, das fande ich zumindest, weswegen ich ja diesemal sicher gehen will. Du hast mich auch nicht vergrault, von daher ist alles in Ordnung oder meintest du jetzt eher erschreckt?

                        Das Visual C# 2012 scheint ja hier leider keiner zu kennen und ich wollte hier auch nicht immer ne Frage aufmachen.

                        Danke auf jeden Fall noch einmal an euch drei, vor allem an dich fanderelf.

                        Comment


                        • #27
                          Es gibt Compiler- und Interpretersprachen. Beides sind Programmiersprachen

                          Das Visual C# 2012 scheint ja hier leider keiner zu kennen und ich wollte hier auch nicht immer ne Frage aufmachen.
                          ??? ->http://entwickler-forum.de/forumdisp...ET-und-Windows
                          Christian

                          Comment


                          • #28
                            hmm, wenn man so im Internet liest gibt es da anscheinend viele verschiedene Meinungen aber okay.

                            Ich meinte auch das Buch und nicht das Visual Studio 2012
                            http://www.amazon.de/Visual-2012-Spr...sual+C%23+2012

                            oder war das so gemeint, das ich da ne Frage stellen kann.
                            Zuletzt editiert von Threin; 13.06.2014, 20:11.

                            Comment


                            • #29
                              hmm, wenn man so im Internet liest gibt es da anscheinend viele verschiedene Meinungen aber okay.
                              Ja, ich würde mich dann an deiner Stelle auch an Leuten orientieren, die meinen PHP, PERL, PYTHON uvm. sind keine Programmiersprachen. Wahrscheinlich sind das die, die dann in HTML und CSS progammieren

                              Ich glaube, hier ist dann alles gesagt....
                              Zuletzt editiert von Christian Marquardt; 14.06.2014, 14:26.
                              Christian

                              Comment


                              • #30
                                Die Bücher dieser Reihe finde ich relativ gut und vor allem unterhaltsam: http://www.amazon.de/C-von-Kopf-bis-...ds=c%23+lernen

                                Schaut etwas ungewöhnlich aus, aber ich denke man lernt dort besser als in einem langweiligen Referenzbuch

                                Comment

                                Working...
                                X