Entwickler-Ecke
Sonstiges (.NET) - Objekt Broker
Domi2k8 - Mi 23.12.09 02:01
Titel: Objekt Broker
Hier zunächst die Angabe:
Hey Leute... Ich stehe vor einem Problem das ich ohne meinem Professor gar nicht hätte
Also: Ich bin seit Freitag durch eine Grippe verhindert und kann dadurch nicht in die Schule...
Wir nehmen gerade den Stoff der Objekt orientieren Programmierung durch ich habe durch meine Grippe
den Teil des "Objekt Broker" nicht mitbekommen...
Die Aufgabe "Das Selbe und das Gleiche" habe ich bereits gelöst dafür gibt es auch gleich den Source Code von mir.
Ich will nicht das mir jemand den/die/das Obejkt Broker (ich hab echt 0 Plan was das sein soll) Programmiert sondern ich hätte
gerne eine hilfe damit ich verstehe wie ich von der Klassenmethode
(wie ich mich erkundigt habe wird sie so deklariert( public static void(etc.) "Klassenname"(Parameter)...
Auf das Dictionary zugreifen kann bzw wie ich das erstellen kann beim Kapitel Dictionary (falls es das gab...) war ich leider nicht da...
Wurde uns anscheinend erst am Montag beigebracht. Ich hoffe ihr könnt mir iwie helfen hier erstmal einpaar infos zu mir.
Ich gehe in die 2. Klasse einer HTL (Höheren Technischen Lehranstalt) für EDV & Organisation
Lerne seit der 1. Klasse C# (Projektorientiert) und seit Ende September dieses Jahres C# (Objektorientiert) und C.
Mein Projekt in als Projekt ist unten zum Download bereit.
Ich entschuldige mich schoneinmal dafür das wir die Setter und Getter selbst programmieren müssen und nicht einfach die Propertiers verwenden dürfen...
Person.cs
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: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130:
| using System; using System.Collections.Generic; using System.Text;
namespace dSudGPerson { class Person { private string nName;
private string vName;
private string telNr;
public Person(string vName, string nName, string telNr) { SetNName(nName); SetVName(vName); SetTelNr(telNr); }
public void SetNName(string nName) { this.nName = nName; } public string GetNName() { return nName; }
public void SetVName(string vName) { this.vName = vName; } public string GetVName() { return vName; }
public void SetTelNr(string telNr) { this.telNr = telNr; } public string GetTelNr() { return telNr; }
public bool Equals(Person person) { string nName = person.GetNName().ToUpper(); if (this.nName.ToUpper() == nName) { return true; } else { return false; } }
public override string ToString() { return "Personendaten: "+ vName + ", " + nName + ", " + telNr + "."; } } } |
Habe dazu noch einen einfachen Tester erstellt:
Test.cs
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: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104:
| using System; using System.Collections.Generic; using System.Text; using dSudGPerson;
namespace dSudGTest { class Test { static void Main(string[] args) { Person a = new Person("hans", "peter", "0654 5456441"); Person b = new Person("hans", "peter", "0643 5675315"); Person c = new Person("günter", "jakob", "0657 5375155"); Person d = new Person("günter", "JAKOB", "0672 3158s75"); Person e = new Person("franz", "Josef", "0341 3242154"); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Personenvorstellung:"); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Person a = " + a); Console.WriteLine("Person b = " + b); Console.WriteLine("Person c = " + c); Console.WriteLine("Person d = " + d); Console.WriteLine("Person e = " + e); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Personenvergleich..."); Console.WriteLine("...zwischen a und b"); Check(a, b); Console.WriteLine("...zwischen c und d"); Check(c, d); Console.WriteLine("...zwischen b und c"); Check(b, c); Console.WriteLine("...zwischen d und e"); Check(d, e); Console.WriteLine("...zwischen a und e"); Check(a, e); }
public static void Check(Person a, Person b) { Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Person 1: " + a); Console.WriteLine("Person 2: " + b); if (a.Equals(b)) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Gleichheit gegeben"); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Gleichheit nicht gegeben"); } Console.ForegroundColor = ConsoleColor.White; } } } |
Download:
Moderiert von
Narses: Archiv als Anhang hochgeladen.
Ich wäre echt auch noch interessiert wie ihr meinen Programmierstil haltet.
Vielen Dank schoneinmal für eure Hilfe.
Domi
danielf - Mi 23.12.09 11:15
Hallo Domi,
zu erst mal zu deinem Programmierstil:
Das mit den Gettern-Settern tut den Augen schon weh :) Aber das weißt du ja selber. Dir Variablen/Membernamen gefallen mir auch nicht - sind aber ja auch vorgegeben. Kommentar sind schön überall vorhanden. Allerdings sind die Methoden toString und equals nicht schön überschrieben. Strings sollte man nicht mit dem + Operator verbinden, sondern mit concat, StringBuilder oder string.Format. Ich würde dir in deinem Fall zu letzterem raten. Die Equals-Methode ist auch sehr unschön. Zum einen hat die Klasse string bereits eine Funktion um Strings zu vergleichen mit oder ohne Beachtung der Groß/Kleinschreibung. Darüberhinaus vergleicht dein Equals nur den Nachnamen, d.h. Stefanie Müller und Daniel Müller sind gleich. Deshalb mein Vorschlag gebe direkt die Auswertung einer Bedingung zurück, die den Vornamen und den Nachnamen CaseInsensetiv überprüft. Sprich etwas if (b.equals(true)) return true; else return false ist nicht wirklich sinnvoll und leserlich :D
Ahja da fällt mir noch auf Gleichheit != Selbe und bei der Equals überprüfst du den Namen string gleich mal auf das Gleiche :) Verwende einfach immer die equals Methode. Wenn sie für ein Objekt nicht implementiert ist, verhält sie sich ja eh wie == ;)
Zum Objekt-Broker:
In der Aufgabe steht ja beschrieben was du machen sollst:
1) Sperre den Konstruktor (das macht man indem man in privat macht)
2) Erstelle eine create Methode (da es keine Instanzen gibt muss sie statisch erreichbar sein)
3) Überprüfe ob das Dictionary bereits den Namen beinhaltet (Dictionary hat eine Funktion dafür)
Ggf Exepction werfen
4) Speichere in einem Dictionary die Namen die über die create Methode erstellt wurden.
Das wars ja schon :) Hoff das hilf dir.
Viel Spaß und Gruß
Daniel
Christian S. - Mi 23.12.09 12:27
Hallo,
bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den
Richtlinien [
http://www.entwickler-ecke.de/richtlinien.html]:
| 1.2 Beiträge: |
| Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...] |
Einfach oben bei Deinem ersten Beitrag auf

oder

klicken und den Titel ändern. Danke Dir!
Viele Grüße,
Christian
Kha - Mi 23.12.09 17:53
danielf hat schon gute Hinweise für die zweite Aufgabe geliefert, mit seinem ersten Teil bin ich aber nicht ganz einverstanden :D .
danielf hat folgendes geschrieben : |
| Strings sollte man nicht mit dem + Operator verbinden, sondern mit concat, StringBuilder oder string.Format. |
Format ist meistens hübscher, ok, aber a) wird hier schon Concat emittiert und b) dürfte StringBuilder in diesem Fall langsamer sein. Wenn es um Performance geht, ist der Code so also optimal.
danielf hat folgendes geschrieben : |
| Darüberhinaus vergleicht dein Equals nur den Nachnamen, d.h. Stefanie Müller und Daniel Müller sind gleich. |
Wie gefordert ... ;)
danielf hat folgendes geschrieben : |
| Ahja da fällt mir noch auf Gleichheit != Selbe und bei der Equals überprüfst du den Namen string gleich mal auf das Gleiche :) |
Das hab ich nicht wirklich verstanden :gruebel: .
danielf hat folgendes geschrieben : |
| Verwende einfach immer die equals Methode. |
Wir sind hier doch nicht bei Java :P . Die Designer von C# haben sich schon etwas gedacht, als sie == überladbar gemacht haben, allem voran Lesbarkeit.
Die Überladbarkeit ist auch der Grund, weshalb == nicht unbedingt nur auf Identität überprüft - sicher ist da nur
object.ReferenceEquals.
Domi2k8 - Fr 25.12.09 16:52
Vielen dank für eure Hilfe
Problem gelöst ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!