C# Aufgabe - ( Konstruktor , Klasse )

...komplette Frage anzeigen

2 Antworten

KAFFEE!!! Mein Hirn fühlt sich an, wie weichgespült, also habe Mitleid mit mir;) Also in Main musst du erst einmal aus der Klasse ein Objekt erzeugen. Ich bin eigentlich ein CPPler also, ich weiß nicht ob es da Unterschiede in der Syntax gibt:

AMeasurementA Herzversagen;

oder

AMeasurementA Herzversagen = new AMeasurementA();

Allerdings, sehe ich das deine Objektattribute public sind, sie sollten private sein. Zudem warum hast du zwar für jedes Attribut einen eigenen Getter, aber für alle zusammen nur einen Setter?

KAFFEE!!

Zufallsgenerator: http://www.c-sharpcorner.com/UploadFile/mahesh/RandomNumber11232005010428AM/RandomNumber.aspx

Danke für deine Interesse und Antwort ,

ich hab es erst jetzt gemerkt , dass ich die Objektattribute als public deklariert habe.

kann man die Getter zusammen bringen und wie ?

Außerdem habe ich da keine Setter , wo sehst du sowas überhaupt :) Objekte hab ich erzeugt , wie von uns verlangt ist muss ma 3 Objekte erstellen und das hab ich gemacht .

wie komme ich da dann weiter ?

0
@ByRoN23
kann man die Getter zusammen bringen und wie ? 

Die Frage ist mehr warum? Jedes Attribut sollte seinen eigenen Setter und bezogen auf C++ auch eigenen Getter haben. Und ich dachte Getter gibt es bei C# nicht?! Jedenfalls ist es bei C++ so, das man an die Attribute eines Objektes nur - egal ob lesen oder schreiben - über die Methode rankommt. Anfänglich fand ich das ganze Objektzeugs schrecklich verwirrend, denn ich bin ein prozeduales Schwein, musst du wissen. Mein Dozent hat das mal gesagt;)

 public AMeasurementA (int ApulsA, int AsystolischerBlutdruckA, int AdiastolischerBlutdruckA, DateTime AzeitpunktA) 
    {
        this.ApulsA = ApulsA;
        this.AsystolischerBlutdruckA = AsystolischerBlutdruckA;
        this.AdiastolischerBlutdruckA = AdiastolischerBlutdruckA;
        this.AzeitpunktA = AzeitpunktA;

    }

Also das sieht für mich sehr nach einem Setter aus^^ Und wie gesagt, einer der gleich alle vier Attribute versorgt.


Die Praktik, C# mit Java zu mischen ist wahnsinn. Sag das deinen Prof ruhig. Vielleicht gibt es parallen, aber genau da ist das Problem. Nur ein kleiner Unterschied im Syntax und du suchst Stunde um Stunde, bis du bemerkst das das ganze schon richtig wahr, aber es fehlte ein ^. Glaub mir, es ist schon schlimm genug, zwischen ISO C++ und C++/CLI sich die Unterschiede zu merken und Brücken zu bauen. Ich hasse dich, CLI, warum kannst du nicht wie ISO C++ sein?


Welche IDE nutzt du? Also Visual Studio oder so? Pass bei Visual Studio 2010 auf, wenn du Klassen erzeugst. Nutzt du dafür nicht denn Assistenten, sondern machst das händisch, kannst du tausendmal denn header einbinden, dieser blöde Compiler von VS sieht das Teil dann nicht:P

0
@Chippo78
public AMeasurementA (int ApulsA, int AsystolischerBlutdruckA, int AdiastolischerBlutdruckA, DateTime AzeitpunktA) 
{
    this.ApulsA = ApulsA;
    this.AsystolischerBlutdruckA = AsystolischerBlutdruckA;
    this.AdiastolischerBlutdruckA = AdiastolischerBlutdruckA;
    this.AzeitpunktA = AzeitpunktA;

}

hier hab ich den Konstruktor erstellt.

Ob es bei C# Getter und Setter geben , wäre meine Antwort ja. da ich mich mit Java nicht beschäftigt habe , weiss ich net ob mein Prof die Angewöhnheit vom Java hat.

ich nutze wie du es sagst Visual Studio 2010 Pro . :))

0
@ByRoN23

Ob es bei C# Getter und Setter geben , wäre meine Antwort ja.

Dann wäre deine Antwort falsch. Tatsächlich gibt es "Eigenschaften", die diese Aufgabe viel eleganter übernehmen.

weiss ich net ob mein Prof die Angewöhnheit vom Java hat.

Hat er.

ich nutze wie du es sagst Visual Studio 2010 Pro .

Für so ein Programm? Reist du auch immer mit einem Flugzeugträger in die Ferien? ;)

0
// Diese Objekte halten die Informationen
// zu den Messwerten.
public class Messwert
{
    #region Eigenschaften
    public int Wert {get; protected set;}
    public DateTime Zeit {get; protected set;}
    #endregion

    #region Konstruktor
    public Messwert (int wert, DateTime zeit)
    {
        Wert = wert;
        Zeit = zeit;
    }
    #endregion

    #region Ausgabe
    public void PrintValues()
    {
        Console.WriteLine("Datum:\t{0:d}\nWert:\t{1:#,##0}", Zeit, Wert);
    }
    #endregion
}

// Dat ist unser öffentlich-statisches 
// Konsolending.
public class MesswertGeber
{
    // Pesudo-Zufallsgenerator mit einigermaßen zufälliger Initialisierung
    static Random rnd = new Random(DateTime.Now.Milliseconds);

    public static int Main(string[] args)
    {
        // Kleinster zu erreichender Messwert
        int minWert = 0;
        // Größter zu erreichender Messwert
        int maxWert = 60;

        // So viele Werte wollen wir erfassen
        int erforderlichAnzahlMesswerte = 3;

        // Liste erstellen
        List<Messwert> messwertListe = new List<Messwert>();

        // Messwerte aufnehmen
        while (messwertListe.Count < erforderlichAnzahlMesswerte)
        {
            messwertListe.Add(GibsMir(minWert, maxWert));
        }

        // jede Messwert auf der Konsole anzeigen
        foreach(Messwert messwert in messwertListe)
        {
            Console.WriteLine("Aktueller Messwert");
            messwert.PrintValues();
        }

        // Mach nich wech das Ding! Sonst werd ich sauer!
        Console.ReadLine();
    }

    // Gibt, wie zu erwarten, einen Messwert zurück.
    private static Messwert GibsMir(int minWert, int maxWert)
    {
        // Hau raus den Mist!   
        return new Messwert(rnd.Next(MinWert, MaxWert), DateTime.Now);
    }
}

Und, bitte, richte deinem Java-Aushilfslehrer aus, dass er euch nicht solchen Unfug beibringen soll!

"Get-Methoden" gibt es in C# nicht. Und zwar gilt das bereits seit 2001. Insofern wäre es sehr zweckdienlich, wenn er sich nun, nach fast 12 Jahren, mal wieder ein Buch leistet oder einfach mal ins Internet schaut. Die "Get-Methoden" heißen seit der Version 0.8 "Eigenschaften".

Kann man aus deiner Bemerkung ableiten das der Dozent C# mit Java gemischt hat und von daher die Getter und Setter kommen?

    #region Eigenschaften
    public int Wert {get; protected set;}
    public DateTime Zeit {get; protected set;}
    #endregion

Also die Attribute sind gewissermaßen alle public, aber Schreibrecht sind eingeschränkt? Verstehe ich das richtig?


Entschuldige wenn ich dich löchre, ich bin ja zu C++ verdammt wurden, aber es interessiert mich wirklich:)

PS.: Java mit C++ zu mischen macht mein Dozent auch gern. Aber bei ihm ist es nicht Dummheit, sondern Wahnsinn;) Er kam irgendwann auf die krude Idee, Einsteins Relativitätstheorie zu wieder legen und über Lichtgeschwindigkeit zu kommen. Wenn er zweimal die Woche hier aufschlägt, dann kümmert er sich um mich (Softwareentwickler), um zwei Strippenzi... Netzwerker, zwei IT-Kaufleute, 5 Javaisten über so ein Ferndozenten-Programm. Über Lichtgeschwindigkeit ist er noch nicht gekommen, aber hat zu mindestens schon einen Schlaganfall erlitten...:P

PS2: Verstehst du rein zu fällig auch was von C++?

0
@Chippo78

Hallo ,

vielen Dank für deine Interesse und Antwort :)

Mein Prof macht C# mit Java gemischt , weil wir auch später auch Java lernen werden. Ich hab nicht gewusst das get und set -Methoden bei C# nicht gab.

was ich falsch gemacht hab ist , die Attribute als public zu deklarieren. Verstehe eig kein C++ aber will auf jeden Fall dies auch lernen !!

Meine Frage war , wie ich die Klasse in Main Methode aufrufen kann

also ein Objekt mach ma ja mit dem Befehl

Klassname  Objektname = new Klassname();

da haben wir das Objekt erstellet in Main. Davon muss ich ja 3 Stück machen , jedoch mit verschieden Namen.

wie soll ichs dann weiter gehen ?

0
@Chippo78

Kann man aus deiner Bemerkung ableiten das der Dozent C# mit Java gemischt hat und von daher die Getter und Setter kommen?

Ja.

Also die Attribute sind gewissermaßen alle public, aber Schreibrecht sind eingeschränkt? Verstehe ich das richtig?

Ja, weil es die Anforderung so vorsieht.

In der IL sieht es dann übrigens ziemlich "Java-like" aus. :)

Java mit C++ zu mischen macht mein Dozent auch gern.

Das ist - nicht zuletzt wegen der enormen Ähnlichkeit - auch ein sehr belieber Volkssport. Allerdings ist das in der Lehre nicht nett. Ein bisschen mehr Konzentration und Vorbereitung sollte man auch von überbeschäftigten Professoren/Dozenten erwarten dürfen.

Verstehst du rein zu fällig auch was von C++?

Nur noch sehr bedingt. Ich persönlich habe vor ca. 12 Jahren mit C, C++ und Assembler aufgehört. Wir arbeiten nicht (mehr) so maschinennah; dafür sitzen uns die Kunden aber im Genick und wollen immer schneller immer bessere Ergebnisse haben. ;)

Er kam irgendwann auf die krude Idee, Einsteins Relativitätstheorie zu wieder legen und über Lichtgeschwindigkeit zu kommen.

Ich halte das prinzipiell auch nicht für so unglaublich krude. Wenn ich mich recht entsinne hat man sogar Teilchen nachgewiesen, die theoretisch schneller als das Licht sein könnten. ... also man streitet darum, ob man sie nachgewiesen haben kann, weil doch Einstein gesagt hat, dass das nicht ginge...

Aber wenn ich daran denke, dass vor 150 Jahren die Wissenschafts-Elite postulierte, dass Eisenbahn-Züge NIEMALS schneller als 32 Meilen/Stunde fahren können, weil anderenfalls sonst jeder Mitreisende zwangsläufig ersticken müsse; und wenn ich daran denke, dass noch vor 100 Jahren Elite-Wissenschaftler postulierten, dass man NIEMALS schneller als der Schall fliegen könne, mithin also die Schallgeschwindigkeit für alle Zeiten die absolute Geschwindigkeitsobergrenze sei, .... nun, auch Einstein war nur ein Mensch. Und auch Einstein wusste zwar viel, aber nicht alles. (Man beachte nur seine drollige "Universal-Konstante"...)

Wie auch immer: Vielleicht schafft er es ja noch vor dem nächsten Schlaganfall. Und falls nicht: Auch Stephen Hawking lässt sich durch kleine Behinderungen nicht abschrecken, die Welt mit immer neuen Theorien zu erfreuen. :)

0

Und, bitte, richte deinem Java-Aushilfslehrer aus, dass er euch nicht solchen Unfug beibringen soll! "Get-Methoden" gibt es in C# nicht. Und zwar gilt das bereits seit 2001. Insofern wäre es sehr zweckdienlich, wenn er sich nun, nach fast 12 Jahren, mal wieder ein Buch leistet oder einfach mal ins Internet schaut. Die "Get-Methoden" heißen seit der Version 0.8 "Eigenschaften".

+1 hierfuer!

und wenn ich koennte haette ich noch einen + fuer die antwort gegeben!

0

Was möchtest Du wissen?