Autor Beitrag
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1265
Erhaltene Danke: 174

Windows 10 x64 Home Premium
C# (Visual Studio Preview)
BeitragVerfasst: Di 21.12.21 18:50 
user profile iconOldCat hat folgendes geschrieben Zum zitierten Posting springen:
Was genau macht: return new UserInputs() { Number1 = number1, Number2 = number2, Operator = op };? Gibt es eine neu erstellte Klasse zurück? Oder was macht es?

Vielleicht ein bisschen einfacher verständlich:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
var result = new UserInputs();
result.Number1 = number1;
result.Number2 = number2;
result.Operator = op;
return result;

Das ist das gleiche wie:

ausblenden C#-Quelltext
1:
return new UserInputs() { Number1 = number1, Number2 = number2, Operator = op };					

Nur die Schreibweise ist eine Andere.

Ich persönlich mag die Schreibweise von Th69 lieber, weil die IDE dann "vergessene" Properties vorschlagen kann und alles mMn. etwas übersichtlicher ist.
Allerdings würde ich es umbrechen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
return new UserInputs()
{
    Number1 = number1,
    Number2 = number2,
    Operator = op
};

Auch das ist wieder das gleiche, nur anders formatiert.

Und noch eine Ergänzung:

user profile iconOldCat hat folgendes geschrieben Zum zitierten Posting springen:
Darunter schreibt Th69 eine UserInputs Klasse, die nur Felder definiert:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public class UserInputs
{
    public double Number1; { get; set; }
    public double Number2; { get; set; }
    public int Operator; { get; set; }
}

Das sind keine Felder sondern Properties (oder auf Deutsch "Eigenschaften").
Der Unterschied mag bei der Nutzung ziemlich irrelevant aussehen, ist technisch und für spätere Themen aber sehr wichtig und dahinter versteckt sich noch sehr viel mehr.
Wenn Du den Unterschied noch nicht kennst/verstehst, ist das erst mal nicht so wild, aber zumindest die Namen sollten passen, dann findest Du auch im Internet viel mehr.

Außerdem stimmt dein Code nicht, der würde so nicht kompilieren:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public class UserInputs
{
    public double Number1; { get; set; } // Falsch
    public double Number2 { get; set; } // Richtig
}


Das wären Felder oder Klassenvariablen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public class UserInputs
{
    public double Number1;
    public double Number2;
    public int Operator;
}


Und das sind Properties:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public class UserInputs
{
    public double Number1 { get; set; }
    public double Number2 { get; set; }
    public int Operator { get; set; }
}

Für diesen Beitrag haben gedankt: OldCat
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Di 21.12.21 22:51 
In dem Buch, das @OldCat da vor sich hat, ist das ganze sehr wahrscheinlich als "Attribute" zusammengefasst. Woraus sich schließen lässt, das der Autor des Buches aus der Java-Ecke stammt, das eben nur Attribute kennt, keine Properties und keine "richtigen" Getter/Setter, wie sie in C# definiert sind.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1265
Erhaltene Danke: 174

Windows 10 x64 Home Premium
C# (Visual Studio Preview)
BeitragVerfasst: Mi 22.12.21 09:48 
Joa, die Vermutung passt auch zu den Aufgaben, die hier gezeigt sind.
Für's OOP-Verständnis ist das nicht so wild, aber für C# reicht das nicht aus.
OldCat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 77

Win 10 Pro x64
C# (VS 2019), (VS 2022)
BeitragVerfasst: Fr 07.01.22 10:42 
Grüße in die Runde :beer:

Wollte mich nur zwischendurch hier mal melden. Hatte ja erzählt, ich habe mir ein Buch für lau gekauft, und arbeite das gerade durch. Bin noch nicht beim OOP Bereich angekommen, sondern lerne noch Grundlagen der Grundlagen (aus der Sicht des Buches), wie Dictionaries, Tupel, geschachtelte Schleifen, wie beispielsweise for-for oder foreach-for, und was man damit machen kann ...

Es wird noch ne Zeit dauern, bis ich meine neue Version des Taschenrechners präsentiere. Aktuell habe ich das Gefühl, ich habe noch viel zu lernen bis es so weit ist ...

Melde mich bald wieder.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4601
Erhaltene Danke: 956


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 07.01.22 12:00 
Zitat:
Aktuell habe ich das Gefühl, ich habe noch viel zu lernen bis es so weit ist ...

Eigentlich hast du ja einen halbwegs funktionierenden Taschenrechner ;) Funktional also ok aber strukturell verbesserungswürdig und wir haben versucht dir die Strukturmöglichkeiten des OOP nahezubringen.

Du wirst keinen Punkt erreichen an dem du soviel "Grundlagenwissen" angehäuft hast an dem du den ultimaten Taschenrechner schreiben wirst. Lernen endet nicht. Wenn ich jetzt einen schreiben müßte würde der den ich vielleicht nächstes Jahr schreibe schon wieder anders aussehen. Weil halt neues gelernt neue Erfahrung etc. Leider ist nicht garantiert das die Version des nächsten Jahres dann besser ist sonder einfach nur anders. Nun ja Leben ist hart oder wie man so sagt ;)

Worauf ich hinaus will. Während du Lektionen machst um die Grundlagen zu lernen versuche doch kurz zu überlegen ob du das Ergebnis dieser Lektion schon auf den Taschenrechner anwenden kannst und versuche das im Zweifel dann auch. Ich glaube ja immer noch das ins kalte Wasser schubsen und anwenden müssen (mit Hilfe) lehrreicher ist als Beispiellektionen nachturnen.

Zitat:
ich habe mir ein Buch für lau gekauft

Du bist hier in einem IT Forum insofern müssen wir hier auf logische Widersprüche hinweisen um unserer Natur zu entsprechen auch wenn wir natürlich das gesagte verstanden habe. "Für lau" und "gekauft" ist ein Widerspruch ;)

Für diesen Beitrag haben gedankt: Th69
OldCat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 77

Win 10 Pro x64
C# (VS 2019), (VS 2022)
BeitragVerfasst: Fr 07.01.22 15:55 
Zitat:
user profile iconRalf JansenDu bist hier in einem IT Forum insofern müssen wir hier auf logische Widersprüche hinweisen um unserer Natur zu entsprechen auch wenn wir natürlich das gesagte verstanden habe. "Für lau" und "gekauft" ist ein Widerspruch


:mrgreen: ... in der Tat! Jahrzehnte falsches deutsch gesprochen und nie bemerkt :gruebel: Zu meiner Verteidigung muss ich dazu sagen, meine Mutter, die mich dereinst großzog und auch ihr Umfeld, hat den Begriff immer dann verwendet, wenn der Preis nicht heiß (=teuer) war. Eben nur lau ...

Danke Dir :mrgreen:

Wenn ich alles an OOP durchgearbeitet habe, was ich über OOP wissen sollte, wird meine neue Version des Taschenrechners kommen. Jetzt dürfte sich zum Thema OOP bei mir noch nicht viel getan haben...
Denn das war ja das große Problem.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1265
Erhaltene Danke: 174

Windows 10 x64 Home Premium
C# (Visual Studio Preview)
BeitragVerfasst: Fr 07.01.22 16:18 
user profile iconOldCat hat folgendes geschrieben Zum zitierten Posting springen:
Aktuell habe ich das Gefühl, ich habe noch viel zu lernen bis es so weit ist ...

Willkommen beim Job :P
Das gehört dazu und hört auch nie auf.

Aber die Grundlagen sind wie eine Werkzeug-Sammlung, Du wirst die Erklärungen, wie man eine Stichsäge benutzt, nicht verstehen können, ohne zu wissen, was eine Stichsäge ist.
Bei der OOP ist es allerdings etwas komplizierter, da es hier keine Werkzeug-Sammlung ist, die man nur richtig benutzen muss, sondern eine besondere Art, ein Problem anzugehen und zu lösen.
Also auch wenn Du das Buch durch hast, vielleicht sogar mehrfach, wirst Du unter Umständen nicht automatisch das Gefühl haben "jetzt hab ich's begriffen", das wird dauern.

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Während du Lektionen machst um die Grundlagen zu lernen versuche doch kurz zu überlegen ob du das Ergebnis dieser Lektion schon auf den Taschenrechner anwenden kannst und versuche das im Zweifel dann auch.

Das ist der entscheidende Punkt - wenn Du (Ralf) das immer meinst, bei Buch vs. andere Möglichkeiten, dann haben wir uns nie widersprochen :D
Ein Buch am Stück lesen und direkt alles mit zu nehmen, was geht, das wird vermutlich nur den absoluten Ausnahme-Talenten gelingen - falls überhaupt möglich.

Stattdessen ist es wichtig, jede Aussage in diesem Buch immer parallel auf etwas Reales (z.B. ein parallel bestehendes Projekt) zu beziehen und ggf. umzusetzen.
Du verstehst die Möglichkeiten und die OOP nicht (nur), weil das Buch es so gut erklärt, sondern weil Du das Erklärte ausprobierst und veränderst oder dagegen arbeitest und fest stellst, dass und warum es keine gute Idee ist und so weiter. Oder anders gesagt: Mach es falsch, lies im Buch, wie man es richtig macht und versuche das dann umzusetzen.

Ich bevorzuge allerdings Bücher (gegenüber 99% der Video-Tutorials), weil hinter Büchern meist ein sehr aufwändiger Plan und viel Erfahrung steckt. Naja - und weil früher oder später (eher früher) nur noch geschriebene Quellen gut genug sind, um fortgeschrittene Themen zu lernen.