Autor Beitrag
sonyfuchs
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 29.10.12 13:43 
Guten Tag,
ich bin neu in dem Forum. Ich bin Student der elektrotechnischen Fakultät in der Fachhochschule Düsseldorf, und versuche mich momentan an einigen Übungen in C#. Diese sind bei uns kein Pflichtprogramm und deswegen, gibt es bei uns weder Hilfe noch Lösungen. Verzeiht mir wenn meine Problemstelung eher Pipifax ist im Vergleich zu dem was hier sonst beredet wird, aber aller Anfang ist schwer und ich hoffe, dass mir hier geholfen wird.
Als erstes sollten wir uns an der Übung im Anhang versuchen. Die ersten beiden Aufgabenstellungen hab ich verstanden und mit ein bischen rescherche hoffentlich richtig niedergetippt. bei der dritten aufgabe jedoch versteh ich entweder die Aufgabenstellung oder den Sinn von C# nicht richtig. Blickt jemand durch was da passieren soll? hier mein code.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Uebung
{
    public class Artikel
    {
        private string _Artikelnummer;
        private string _Name;
        private decimal _Preis;
        private double _Packvolumen;
        private double _Gewicht;

        public Artikel(string Artikelnummer, string Name, decimal Preis, double Packvolumen, double Gewicht)
        {
            this._Artikelnummer = Artikelnummer;
            this._Name = Name;
            this._Preis = Preis;
            this._Packvolumen = Packvolumen;
            this._Gewicht = Gewicht;
        }
        
    }
    public class Katalog
    {
        public List<Artikel> Artikelliste = new List<Artikel>();
        
        public Katalog()
        {
            Artikel Artikel1 = new Artikel("52218""DVD \"Evil Dead\""9.99M, 2.03.0);
            Artikel Artikel2 = new Artikel("51889""DVD \"Big Fish\""9.99M, 2.03.0);
            Artikel Artikel3 = new Artikel("5199""DVD \"Halloween\""10.99M, 2.03.0);
            Artikel Artikel4 = new Artikel("53462""DVD \"Kramer gegen Kramer\""7.99M, 2.03.0);
            Artikel Artikel5 = new Artikel("59284""DVD \"Blade Runner\""9.99M, 2.03.0);
            Artikel Artikel6 = new Artikel("69284""BlueRay \"Blade Runner\""14.99M, 2.03.0);
            Artikel Artikel7 = new Artikel("64362""BlueRay \"Kramer gegen Kramer\""12.99M, 2.03.0);
            Artikel Artikel8 = new Artikel("67883""BlueRay \"GhostBusters\""11.99M, 2.03.0);
            Artikel Artikel9 = new Artikel("88624""PC Spiel \"Civilization\""49.95M, 6.05.0);
            Artikel Artikel10 = new Artikel("29846""Toast"1.29M, 10.04.0);
            Artikel Artikel11 = new Artikel("23688""Gurken"1.19M, 5.08.0);
            Artikel Artikel12 = new Artikel("26241""Salami"0.79M, 1.01.0);
            Artikelliste.Add(Artikel1);
            Artikelliste.Add(Artikel2);
            Artikelliste.Add(Artikel3);
            Artikelliste.Add(Artikel4);
            Artikelliste.Add(Artikel5);
            Artikelliste.Add(Artikel6);
            Artikelliste.Add(Artikel7);
            Artikelliste.Add(Artikel8);
            Artikelliste.Add(Artikel9);
            Artikelliste.Add(Artikel10);
            Artikelliste.Add(Artikel11);
            Artikelliste.Add(Artikel12);
        }
    }
    public class Warenkorb
    {
        List<string> NichtbekannteArtikelnummern = new List<string>();
        List<Artikel> GeorderteArtikel = new List<Artikel>();
        string _BestellteArtikel;
        string _UnbekannteArtikelnummern;
        string _PacketArt;
        double _Porto;
    }
    public class Versandhaus
    {
        public Warenkorb WarenkorbErstellen(List<string> Artikelnummern)
        {
            
        }

    }
}


Moderiert von user profile iconKha: C#-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 29.10.12 14:05 
Was ist denn die Aufgabestellung?
sonyfuchs Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 29.10.12 14:14 
steht im anhang
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 29.10.12 14:21 
In der Aufgabe wird von Eigenschaften gesprochen du hast aber Felder erzeugt. Du sollst vermutlich echte Properties erstellen. Dann ergibt sich zumindest für c und d das hier berechnete Properties (nur ein getter) gemeint sind die du im jeweiligen getter aus der NichtBekannteArtikelnummern berechnen kannst.
sonyfuchs Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 29.10.12 15:28 
ah, ok. aber die ersten beiden aufgaben sehen richtig aus?
eigenschaften sind die terme mit den gettern?
da bin ich nämlich n bischen verwirt und weiß nicht wie das aussehen soll.
ich würd das ungefähr nach dem schema machen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
string Warenkorb
{
 get{
     return public List<string>NichtbekannteArtikenNummern= new List<Artikel>();
}
}


oder versteh ich das falsch?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 29.10.12 15:48 
Zitat:
ah, ok. aber die ersten beiden aufgaben sehen richtig aus?


So genau habe ich da nicht drauf geschaut. Denke schon. In der Artikel Klasse könntest du die Felder durch Properties ersetzen so wie wir das gerade auch in der 3.ten Aufgabe machen. Da sist aber für die Funktionsfähigkeit des Codes erst mal irrelevant.

Zitat:
eigenschaften sind die terme mit den gettern?


Ja. Setter oder getter oder beides ;)

Zitat:
oder versteh ich das falsch?


Sie dir das nochmal in der Doku an. Dort sind genügend Beispiel um das zu verstehen und das syntaktisch richtig hinzu bekommen.
sonyfuchs Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 30.10.12 07:29 
das scheint gar nicht so schwer zu sein. dann versteh ich wohl die aufgabenstellung nicht.
sind jetz 3 a-f getter?
und waren korb die eigenschaft? wenn ja von was?
also ich meine es soll ja ungefähr so aus sehen

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Typbezeichnung EigenschaftsName
{
get { get {
return _attribut;
}
set {
_attribut = value;
}
}


die punkte a- f stehen als _attribut.
aber was schreib ich in die erste zeile Typbezeichnung EigenschaftsName?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 30.10.12 11:00 
Hallo sonyfuchs :welcome:

in der Aufgabenstellung steht doch schon konkret der Eigenschaftenname sowie der Datentyp drin.

Generell sollte man in C# für öffentliche Member immer Eigenschaften benutzen. Der Einfachheit wegen kannst du die automatischen Eigenschaften benutzen (dann benötigst du keine eigene private Membervariable mehr):
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public string Artikelnummer
{
    get;
    set;
}

Gegenüber öffentlichen Feldern (Membervariablen) haben diese den Vorteil, daß man bei Bedarf den Getter und Setter ausprogrammieren kann, ohne die öffentliche Schnittstelle ändern zu müssen (d.h. der Rest des Programms kompiliert weiterhin korrekt).
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 30.10.12 11:05 
3 Eigenschaften deiner Warenkorb Klasse als Beispiel.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public class Warenkorb
{
    private List<string> _nichtbekannteArtikelnummern = new List<string>(); 
    public List<string> NichtbekannteArtikelnummern // kein setter da man ja de Listeninhalte ändern will, aber keine komplett andere Liste zuweisen können muss
    {
        get { return _nichtbekannteArtikelnummern; } 
    }

    public string UnbekannteArtikelnummern // berechnete Property aus nichtbekannteArtikelnummern
    {
        get { return string.Join("\n", _nichtbekannteArtikelnummern.ToArray()); }  / 
    }

    private double _porto;
    public double Porto  // normale Property nach klassischen Standardtemplate
    {
       get { return _porto;}
       set { _porto = value; }
    }
}


Man hätte die Eigenschaften auch anders darstellen könne. So ist aber hoffentlich am ersichtlichsten was da passiert. Dinge wie automatische Eigenschaften würden da die Funktionsweise nur verschleiern. Porto etc. könnte man mit den Angaben in deinen Aufgaben auch als als berechnete Property darstellen aber in der nächsten Aufgabe ist gewünscht das das eine andere Klasse machen soll und nicht diese. (Ich hasse solche Aufgabenstellungen wo man eigentlich alle bis zur letzten gelesen haben und verstanden haben muss um die vorherigen richtig lösen zu können.)