Announcement

Collapse
No announcement yet.

C# lernen Grafische Oberflächen

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

  • C# lernen Grafische Oberflächen

    Hallo zusammen,
    ich versuche seit ein paar Wochen C# zu lernen und bin jetzt an einen Punkt angekommen an den es nur mit Theorie und kleinen Aufgaben einfach nicht mehr leicht verständlich ist.
    Ich lese immer wieder man soll sich beim programmieren ein Projekt überlegen und dann einfach losprogrammieren.

    Ich hab mit Excel und VBA eine Datenbank "programmiert" und wollte diese nun irgendwann mit c# nachbauen. In Moment lerne ich ja nur mit Konsolen-App - "Programmchen". Datentypen, Schleifen,Arrays ist auch noch alles nachvollziehbar. Jetzt bin ich an einem Punkt wo es um Interfaces, Enums, Delegaten geht. Jetzt fällt es mit langsam schwer alles nachzuvollziehen. Auch kann ich langsam schwer einschätzen wann ich welche Funktionen irgendwann nutzen muss.

    Zu meiner Frage:
    Wenn es langsam aus meiner Sicht schwerer wird mit dem Verständnis... weiter machen nach dem Motto "Augen zu und durch, es wird erst am Ende einen Sinn ergeben" oder sollte ich jetzt mein Basiswissen weiter festigen? Ich würde am liebsten mein Wissen mit grafischen Elementen wie Tabellen, Buttons festigen aber bis jetzt habe ich hier noch nichts gelernt und es wird ja immer komplexer.

    Ich habe zur Unterstützung zu meinen Internetrecherchen noch 3 bekannte Lern Bücher gekauft.

    - C# Programmieren für Einsteiger - Der leichte Weg zum C# Experten
    - Einstieg in C# mit Visual Studios 2019 - Ideal für Programmiereinsteiger
    - C#8 mit Visual Studios 2019 - Das umfassende Handbuch

    Vielleicht könnt ihr mir ein paar Tipps geben wie es jetzt am "Besten" weiter geht.

    Ich bin über jede Hilfe sehr dankbar.

    Gruß Dennis

  • #2
    Hallo,

    ich würde am Basiswissen fortfahren.
    Würdest du gleich Anwendungen mit grafischen Elementen, etc. machen wollen, so hab ich oft genug beobachtet dass dann "falsche Muster" sich angeeignet werden und von diesen wieder loszukommen ist schwierig.
    Leider gibt es für vernüftige GUIs keine einfachen Einstiegsbeispiele zum Nachbauen / Lernen, da diese -- wenn richtig gemacht -- ziemlich schnell "groß" werden.

    Es mag wirklich schwierig erscheinen die ganzen Punkte nachvollziehen zu können, wie du ja auch schreibst, aber das ist nunmal das Handwerkszeug für vernüftiges Programmieren und des gibt diese Konstrukte auch aus einem guten Grund: da sie für richtige Anwendungen einfach benötigt werden.

    Das Model-View-ViewModel (MVVM) Entwurfsmuster für WPF finde ich als Beispielanwendung ganz gut gemacht. Schau dir das einmal an. Zuerst die fertige Anwendung damit du siehst was rauskommen soll. Dann probiere sich nachzuprogrammieren. Geh dabei immer wieder einen Schritt zurück zu den Grundlagen, v.a. dann wenn du ein Konstrukt anfindest das dir noch zu wendig zusagt.
    So ist die Theorie nicht so trocken und die Praxis nicht ganz theoriefremdt.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Interfaces, Enums, Delegaten
      Zusätzlich: es gibt -zumindest bei eigener programmierter Software- kein "Muss" dieses oder jene syntaktische Werkzeug zu verwenden. Aber ab einer gewissen Menge an zu behandelnden Objekten / abzuarbeitenden Operationen /... machen diese Sinn. Interfaces z.B. wenn sich Teile eines Softwaresystems häufig ändern können, enums wenn man viele if-else oder switch...case Abfragen eleganter (und typsicherer) umgehen will (https://www.dotnetperls.com/switch-enum ), für Delegaten siehe z.B. http://zetcode.com/lang/csharp/delegates/
      Zuletzt editiert von Markus Lahr; 04.09.2020, 08:23.
      MfG
      Cheat-Sheets for Developers / Programming Quotes

      Comment


      • #4
        Die "beste" Weise wie man etwas lernt ist etwas sehr persönliches insofern können wir dir schlecht was raten was der "beste" Weg für dich ist. Wir können dich nur daran Teil haben lassen wie das Lernen so bei uns wahr und du kannst überlegen ob du dich da wiederfindest. Im Rückspiegel betrachtet habe ich die meisten Dinge mehrmals gelernt und tuhe das eigentlich heute immer noch. Insofern würde ich dir raten ein Problem zu suchen das dich motiviert zu lernen. Strukturierte abstrakte Vorgehensweisen haben möglicherweise den höchsten Lerneffekt wenn man denen den motiviert folgt tut man aber meist nicht. Lernmotivation ist wichtiger als Struktur (in der Selbstreflexion).

        Beispiel aus meiner Lehre (was aus der Ecke Handwerklich/Elektrotechnik) was hier vielleicht als Analogie passt. Nach dem ersten Lehrjahr hat die Methodik bei mir gewechselt wie man versucht hat mir was beizubringen. Erste Lehrjahr war dann so was wie n*Wochen Feilen, n*Wochen Heißbiegen etc. also abstrakt und unabhängig und die Ergebnis irgendwas zum wegwerfen.Ist das motivierend? Zweites Lehrjahr war dann ein integrativerer Ansatz. Am Ende stand immer was benutzbares (auch längerfristig). Egal ob ich die nötigen Fertigkeiten schon hatte oder nicht ich mußte die dann halt lernen (und wusste dann auch warum). Wenn zum Beispiel das Bohren der Frontplatte für die Netzteil dessen Innereien ich später noch zusammenlöten musste nicht perfekt war ich habe aber zumindest wieder mehr bezüglich dieser Themas gewusst. Da es sicherlich bei einem folgenden Projekt wieder nötig wird habe ich dann halt iterativ immer besser solche Dinge gelernt. Ist ein solches vorgehend motivierender? Ich würde sagen ja. Wenn es dir auch so geht dann such dir ein Problem wo du glaubst du brauchst es auch nachher und nimm nicht nur ein Wegwerf-Lehrstück. Sei dir bewusst es wird dann halt nicht perfekt sein das liegt aber in der Natur der Sache. Perfekt gibt es eh nicht. Und auch nach 30+ Jahren Programmiererfahrung würde ich heute Code von gestern mittlerweile vermutlich heute schon anders besser schreiben.

        Dir sollte auch bewusst sein das du hier dann auch eher nicht (oder nur) programmieren lernst sondern primär wie das UI Framework deiner Wahl funktioniert wenn du dir primär ein grafisches Problem suchst. Programmieren lernen tust du dann eher in der Programmierung hinter der UI. Aber Basiswissen dort anwenden hilft Basiswissen besser zu verstehen. Und es hilft auch besser zu verstehen was tatsächliches allgemeines Programmierwissen ist das ein gewissen Haltbarkeit hat und dich länger begleiten wird oder einfach nur ein spezielles Ding einer speziellen Programmiersprache auf einem speziellen Betriebssystem ist. Neben der Programmierung nimmt man immer sehr viel Spezialwissen spezieller System mit. Und nicht alles davon hat auch nur mittelfristigen Wert. Ist halt Programmiererschicksal.

        Comment


        • #5
          Danke für die Antworten. Ich habe die Basics jetzt erst mal komplett alle durchgebüffelt. Mir ist zwar immer noch nicht ganz klar wofür ich welche Schleifen oder Container verwende. Eines der aufgezählten Lehrbücher arbeitet mit WPF´s und erklärt alles noch einmal von der Pike auf und da ich ja zu mindestens alles schon mal gehört habe ist das "Verstehen" jetzt um einiges einfacher. Auch wird nach jedem Kapitel eine Aufgabe gestellt die immer das bis dahin angeeignete Wissen abfragt. Mit liegt das Lernen mit grafischen Oberflächen eher und so ist es für mich einfacher zu verstehen. Der Unterschied zwischen Public und Privat war so auch anhand einer Aufgabe recht anschaulich erklärt.

          Ich habe gestern einen Kran aus vier Panel erstellt und ihn über vier Tasten in verschiedene Richtungen laufen lassen. War doch sehr amüsant zu sehen wie viel Fehler doch in so einer kleinen Anwendung stecken können (Es war eine harte Nacht bis es funktioniert hat) .

          Danke nochmal dass ihr euch die Mühe gemacht habt auf meinen Post zu Antworten. Vielleicht wird aus mir ja auch noch ein Software Entwickler. Wär ja super wenn ich das Wissen auch im Beruf (Elektriker) anwenden kann. Einige Funktionen sind aus der SPS Programmierung tatsächlich wieder zu erkennen.

          Gruß Dennis

          Comment

          Working...
          X