Darf ich fragen welches Thema du genommen hattest ? Bzw. was für einen Inhalt deine Arbeit hatte ? Nur um mal etwas orientierung zu kriegen
Hallo zusammen
Ich bin derzeit nahezu am Ende meines Informatikstudiums angelangt um suche nun nach einem schönen interessanten Thema für meine Bachelorarbeit. Zurzeit führe ich für meine Firma ein Projekt durch welches sich hauptsächlich auf WPF und WCF stützt also für mich ein sehr interessantes Projekt.
Meine Bachelorarbeit KANN ( muss aber nicht ) auf diesem Projekt aufbauen. Ganz grob dazu :
Es handelt sich um 2 Frontend Anwendungen ( eines für Benutzer , eines zur Verwaltung ) welche beide ihre Daten von einem WCF Dienst beziehen. Beide Anwendungen werden per Click Once Deployment ausgeliefert.
Jetzt Frage ich mich allerdings was ich als Thema für meine Bachelorarbeit nehmen kann. Am liebsten wäre es mir natürlich wenn es sich diese auch ein bisschen mit WPF oder WCF beschäftigt. Aber wie schon gesagt kann es auch um etwas ganz anderes gehen.
Möglicherweise hat hier jemand Erfahrungen mit Diplom/Bachlorarbeiten und kann mir ein paar Hilfreiche Tipps oder ggf. sogar Themen vorschlagen, da ich derzeit ein bisschen ratlos bin. Mir wären auch schon Tipps hilfreich die mir dabei helfen ein Thema selbstständig zu finden.
Ich würde mal salopp sagen es basiert schlichtweg auf dem Observerpattern oder ? Oder war das gar nicht deine Frage ?
Kann man den jeweiligen Wert nicht auch einfach mittels LINQ suchen ?
Ich finds immer lustig wenn die Anrufen , wenn die nach meinen Daten Fragen gebe ich immer irgendwelche unrealistischen Sachen an 😃
Dann bräuchte ich noch Name und Anschrift :
Ja kein Problem , mein Namen ist "Silie" , Vorname "Peter"
Ich wohne in Urass 56662
wenn ich dann beim Datum 43.12. angebe kommen die langsamsten dann meistens dahinter 😄
Ich hör so ziemlich alles quer Beet außer Hip Hop und House oder so
also
Apocalyptica
Beatsteaks
Billy Talent
Coldplay
Ärzte
Falchion
Sonata Arctica
Shinedown
Shandmaul
uvvvvm.
Ich hab irgendwie so das Gefühl das du dir das Leben viel zu schwer machst irgendwie..
Ganz abstrakt würde ich es so machen , auch wenn ich jetzt leider nicht soviel Ahnung von Ver und Entschlüsselung habe.
interface CryptoAlgorithm
{
CryptoKey PrivateKey { get; set; }
CryptoKey PublicKey { get; set; }
void Encrypt();
void Decrypt();
}
Class CryptoKey
{
// Alles was für einen Key wichtig ist ...
}
Class MyPersonalCryptoAlgorithm : CryptoAlgorithm
{
// Logik für einen speziellen Algorithmus
}
Class Anwendungsfall
{
void main...
{
CryptoAlgorithm algo = new MyPersonalCryptoAlgorithm();
algo.PublicKey = ...;
algo.Encrypt();
}
}
Ist jetzt etwas hingerotzt aber so ist mein Verständnis vom StrategyPattern wie es vielleicht in dem Kontext einsetzbar ist ... wie ein Key aussieht weiß ich jetzt natürlich nicht aber das ist hier ja auch ersetzbar
Was für unterschiedliche Parameter hättest du denn ? Kannst du die nicht auch wieder abstrahieren ?
Was jedoch wie ich von vielen gehört habe den enormen nachteil haben soll das du mit den Dingern hier nicht ins internet kommst, bzw. diese dinger hierzulande nicht vertragsfähig sind
Du solltest schon etwas näher beschreiben wo genau dein Problem liegt oder an welcher Stelle du etwas nicht verstehst bzw. nicht weißt wie du etwas tun kannst
Stimme meinem vorredner vollkommen zu ... wenn dann so :
protected BaseClass()
{
Id = 0;
List = new List<T>();
}
protected BaseClass(string name) : this()
{
Name = name;
}
Zunächst unterscheide ich zwischen Instanz und Objekt.
die Begriffe Instanz und Objekt sind Synonyme und können an (fast) allen Stellen im Text ausgetauscht werden, ohne dass dadurch die Bedeutung geändert wird. Die Unterscheidung, die du beschreibst, ist die zwischen Klasse und Objekt(=Instanz) und nicht die zwischen Objekt und Instanz.
Hello
Ja mir ist es gestern im Bett auch nochmal aufgefallen, eigentlich habe ich mir sogar noch im selben Satz widersprochen da ich erst von Objekt und dann von Klasse gesprochen hab 😄
Was ich meinte war natürlich das die Klasse die eigentliche Hülle ist und die Instanz oder das Objekt die Ausprägung.
Also ich hoffe ich kann es einigermaßen verständlich und hoffentlich auch richtig erklären. Wenn ich unsinn erzähle so hoffe ich wird mich jemand anderes korrigieren aber es sieht aus meiner Sicher folgendermaßen aus.
Zunächst unterscheide ich zwischen Instanz und Objekt.
Objekt ist aus meiner Sicht eine formale Beschreibung von etwas. Sieh es als eine Art Bauanleitung für etwas. Das ist die Klasse die du schreibst , sie ist deine InstanzBauAnleitung
Eine Instanz hingegen ist die konkrete Ausprägung eines Objektes. Also quasi wie als wenn man das was auf der Bauanleitung steht gebaut hat.
Dein Beispiel :
ClassA Instanz = new ClassB();
Was in diesem Moment passiert, ist mMn. folgendes. Du instanzierst das Objekt ClassB und somit wird dieses auch genauso erzeugt wie in deiner Klasse ClassB beschrieben und nicht wie du meintest "kastriert". Das einzige was du jedoch machst ist, das du es in ein Referenzobjekt von ClassA zu packen, welche eine Elternklasse von ClassB darstellt.
D.h. nach außen hin wird sie lediglich als ClassA Objekt dargestellt jedoch ist sie intern immernoch ein Objekt vom Typ ClassB. Daher könntest du auch ohne weiteres mittels eines Casts Methoden aufrufen die nur in ClassB vorhanden sind. Das geht aber natürlich nur wenn sich in der Instanz auch wirklich ein Objekt vom Typ ClassB befindet.
((ClassB) Instanz).MeineMethodeDieNurInClassBIst
Ich hoffe das konnte deine Frage ein bisschen beantworten
Ich studiere seid 2 1/2 Jahren allgemeine Informatik und fange bald mit meiner Bachelor Arbeit an ( Hey gute Ideen für sowas sind mir sehr willkommen 😃 ). Danach werde ich vorraussichtlich auch noch den master dranhängen.
Nebenbei arbeite ich als Junior Softwareentwickler im .NET C# Bereich in einer Firma. Natürlich möchte ich genau das auch später weiter machen denn ich schreibe auch in meiner Freizeit gerne Programme.
Wie ich es in einer Vorlesung von vor ein paar Monaten mitbekommen habe kann man Spiele grundsätzlich nicht patentieren lassen. Genau dasselbe gilt für Software welche man ebenfalls nicht patentieren lassen kann.
Wenn du eine Software benutzt darfst du also grundsätzlich die idee des programms frei nachprogrammieren wie du willst, darfst aber natürlich nicht den sorucecode kopieren.
Wie das mit dem Namen aussieht weiß ich leider nicht so genau, aber ich könnte mir gut vorstellen das der Name geschützt ist.
Ich arbeite jetzt als studentischer Softwareentwickler im .NET Bereich seid anfang November und ich lerne immernoch jeden Tag etwas neues dazu. Meine Kollegen sind auch alle weiter als ich in dem Thema aber das ist auch ganz klar denn es ist noch kein Meister vom Himmel gefallen. Aber es geht ja auch primär darum das man etwas dazulernt und selbst merkt das man vorran kommt und es auch für eigene Zwecke einsetzen kann.
Bevor ich da angefangen hatte, dachte ich auch ich hätte viele Grundlagen auf dem Kasten was .NET angeht aber ich wurde doch eines besseren belehrt. Ich muss immernoch bei vielen Dingen sagen, dass ich das noch nicht kenne und nicht weiß wie man damit umgeht. Ich finde es sehr fordernd und ich mache auch noch einige Fehler aber wäre es das nicht wär es ja auch irgendwie langweilig
Danke das hat mir sehr weiter weitergeholfen 😃
Ich denke ich werde keine physikalischen Zufallswerte benötigen. Ich werde es nachher mal mit dem Random aus einer GUID probieren und ein paar verteilungen testen.
Hintergrund war übrigens das mischen eines Kartendecks welches natürlich jedes mal im idealfall anders gemischt wird.
Hallo zusammen.
Ich habe mich die letzten Tage mal ein wenig mit der erzeugung von Zufallszahlen beschäftigt und habe dabei öfters Beispiele auf Basis der Randomklasse gelesen.
Öfters wurde allerdings auch das Argument genannt das mit Hilfe von Random keine "echten" Zufallszahlen erzeugt werden. D.h. das sich die zufallszahlen auch auf unterschiedlichen Rechner schnell mal wiederholen.
Meine Frage wäre auf welcher Basis ihr einen Generator entwickeln würdet. Ich habe auch mal einen Implementiert und poste hier mal einen Teil. Haltet ihr es für Sinnvoll einen Generator auf Basis des Cryptosevices zu schreiben ? Habe ab und an mal gelesen das es langsamer sein soll als Random.
Auch das Snippet von Herbivore hier im Forum habe ich mir schon angesehen welches ja auch auf Random basiert. Man kann Random ja einen Seed geben und dort habe ich auch gesehen das man diesen z.B. mit einer GUID Füttern könnte. Meint ihr das das zuverlässig ist ?
/// <summary>
/// Generates a random number that lies between two indices
/// </summary>
/// <param name="min">Minimum random value</param>
/// <param name="max">Maximum random value</param>
/// <returns>A new random value</returns>
public static uint CreateRandomNumberInRange( uint min, uint max )
{
if ( max >= min )
{
uint a = max - min + 1;
uint zahl = CreateRandomNumber();
return ( zahl % a ) + min;
}
else
{
throw new ArgumentException( "Your minimum value mustn't be greater than your maximum value" );
}
}
/// <summary>
/// Generates a random UInt value
/// </summary>
/// <returns>A random UInt value</returns>
public static uint CreateRandomNumber()
{
var bytes = new byte[sizeof( uint )];
RNGCryptoServiceProvider gen = new RNGCryptoServiceProvider();
gen.GetBytes( bytes );
return BitConverter.ToUInt32( bytes, 0 );
}
Bin jetzt kein Experte in solchen Sachen aber vielleicht könntest du für das Label eine CSS Eigenschaft mit Padding setzen um den Textinhalt zu verschieben.
Soweit ich weiß muss man wenn man sich selbstständig gemacht hat auch immer nur soviele Steuern zahlen abhängig davon wieviel man verdient hat. D.h. du müsstest natürlich deine Produkte etwas teurer machen (z.B. die Mehrwertsteuer mit einbeziehen) weil du diese auch wieder abgeben musst.
Zum Thema selbstständigkeit musst du dich mal genauer informieren aber es hat auch noch ein paar Vorteile selbstständig zu sein. Ich denke es wäre die beste Lösung für dich
Die Frage kam auch grad in mir hoch :
Braucht man wirklich 4000 Datensätze auf einmal in einem Grid ? Möglicherweise gibt es an anderer Stelle noch Optimierungsansätze , z.B. Paging o.ä.
deine properties kannst du auch verkuerzen
Dann ist es aber nur compilierbar ab dem .NET Framework 3.0 ! Bitte beachten
public Modeltype(string Modellnummer, string Farbe, string Groesse, string Warengruppe, string Saison, string Bontext, double EK, string Qualitaet)
{
Modellnummer = _Modellnummer;
Farbe = _Farbe;
Groesse = _Groesse;
Warengruppe = _Warengruppe;
Saison = _Saison;
Bontext = _Bontext;
EK = _EK;
Qualitaet = _Qualitaet;
}
Allein das ergibt ja schon mal keinen Sinn
Am besten an der Stelle wo du den Wert überschreitest ( Warum auch immer du das tust denn du legst ja vorher schon einen maxwert fest) einen Try Catch Block drum herum legen welche die ArgumentException abfängt und dann behandeln.
Das fällt übrigens unter Grundlagen. Am besten du googlest mal nach dem Try Catch Pattern
Achso ok , ich dachte das würde man über AreSame() tun. Ich hatte gehofft es gäbe eine automatisierte variante die Properties beider Objekte zu vergleichen. Naja ok dann muss ich das wohl doch manuell machen 😃
Danke dir
Hallo zusammen
Ich habe bei meinem aktuellen Projekt meine Datenstrukturen aufgesetzt und möchte diese nun durch UnitTests testen. Unter anderem besitzt eine meiner Klassen eine DeepClone() Methode um dieses Objekt zu kopieren.
Mein Unittest sieht folgendermaßen aus :
[TestMethod]
public void Test_Cloning()
{
string modelname = "FantasyModel Testname";
string description = "Beschreibungstext für das FantasyModel";
FantasyModel FM = new FantasyModel( modelname );
FM.Description = description;
FM.ReferencePage = 5;
FantasyModel FM2 = FM.DeepClone();
Assert.AreNotSame( FM2, FM );
Assert.AreEqual<FantasyModel>( FM, FM2 );
}
Meine Deepclone methode sieht so aus :
public FantasyModel DeepClone()
{
FantasyModel modelClone = new FantasyModel( this.Name );
using ( MemoryStream ms = new MemoryStream() )
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize( ms, this );
ms.Position = 0; //Reset for reading
modelClone = bf.Deserialize( ms ) as FantasyModel;
}
return modelClone;
}
Leider wird beim ausführen meines Unittests immer gesagt das der Test fehlgeschlagen ist. Mit folgendem Grund :
Fehler bei "Assert.AreEqual". Erwartet:<tww.ArmyGenLib.WHFantasy.Core.FantasyModel>.
Tatsächlich:<tww.ArmyGenLib.WHFantasy.Core.FantasyModel>.
Kann mir jemand aufschluss geben warum das nicht funktioniert ?
Noch eine kleine Zusatzfrage. Als Beispiel habe ich folgendes :
public class MyClass()
{
private List<string> _liste1;
private List<string> _readOnlyListe1;
public MyClass()
{
_liste1 = new List<string>();
_readOnlyListe1 = _liste1.AsReadOnly();
}
public List<string> Liste1 { get { return _readOnlyListe1; } }
//Jetzt die Frage
}
Ich möchte für abgeleitete Klassen von MyClass natürlich die Collection als nicht schreibgeschützt freigeben ohne aber die variable an sich als protected zu deklarieren. Gibt es da noch einen besonderen Kniff um Properties zwischen nicht abgeleiteten Klassen und "fremden" klassen zu unterscheiden und je nachdem eine readonly liste oder eine normale liste zurückzugeben ?
Oder werde ich gezwungen sein ein weiteres protected Property zu erstellen ? Wenn ja was würdet ihr vom Naming her empfehlen das ja der Name möglichst gleich sein soll. "WriteAbleListe1" ?
Danke für euren Rat
Super ! 😃
Danke an euch beide !
Hallo zusammen
Ist es möglich eine Liste innerhalb des Quellcodes zu sperren ?
Als Beispiel :
Ich habe ein Objekt welche eine generische Liste<string> enthält. Nach außen offenbart das Objekt die Liste um auch anderen Objekten einsicht zu geben welche Objekte er in der Liste besitzt. Es soll jedoch nicht möglich sein von anderen Objekten aus Elemente in diese Liste einzufügen oder zu entfernen.
Gibt es also eine Möglichkeit für mein Objekt den Zugriff auf Add() und Remove() zu sperren ohne das er selbst nicht mehr darauf zugreifen kann ?
Also wenn du nur aus einer Klasse über verschiedene Methoden auf die Connection zugreifen musst reicht doch eine Instanzvariable in der Klasse um dann von den Methoden aus darauf zuzugreifen. Wenn du aus mehreren Klassen darauf zugreifen musst würde ich für die Connection eine eigene Klasse erzeugen, am besten nach dem Singleton Pattern.
Also Beispiel :
public MyClass
{
private Connection _myConnection; //Je nach Connectiontyp
public MyClass() //Konstruktor
{
_myConnection = new Connection(connectionstring);
}
public void MyMethod1() //BeispielMethode
{
_myConnection.open()
....
_myConnection.close()
}
}
Wer sich generell für 3D Programmierung interessiert dem kann ich nur den super Schinken "Tricks of the 3D Game Programming Guru's" von Andre Lamothe empfehlen.
Ist mittlerweile zwar etwas schwierig an das Buch heran zu kommen aber ich würde es um nichts in der Welt gegen ein anderes tauschen 😃.
Bei mir funktioniert das ganze mit Windows 7 64bit Prof. und VS2008 ganz normal
Dank dir Peter ich werde es damit mal versuchen und ggf. später nochmal auf das Topic zurückkommen
Hallo zusammen
Ich habe zur Zeit ein kleines Problem bei welchem ich wirklich gut die Wildcards von Java gebrauchen könnte. Gibt es in C# etwas vergleichbares ?
Um mein Problem etwas zu verdeutlichen habe ich ein kleines bildchen gezeichnet.
(SIEHE ANHANG)
Ziel ist es eben, dass die Klasse UnitFetcher alle möglichen Arten von Unit mit beliebigem Typen annehmen soll.
Ich hab zur Zeit keinen Plan wie ich das umsetzen soll ohne dabei auf den Typparameter bei Unit zu verzichten.
Ja mein Beispiel war auch keine schöne Lösung das war mir klar. Ich wollte auch nur sagen das man es mit der PadRight Funktion von string machen könnte und wollte ein Beispiel dazu geben. Das es bessere Methoden gibt dachte ich mir schon aber ich kannte ohne nachzuschauen grade keine.
Aber man lernt ja nie aus danke 😃
Das hier hat bei mir vorläufig geklappt
int nachkommastellen = 3;
decimal d2 = 2.2646546m;
decimal d1 = Math.Round( d2, nachkommastellen, MidpointRounding.AwayFromZero );
string[] lenghts = d1.ToString().Split(',');
string s = d1.ToString().PadRight(lenghts[0].Length + 1 + nachkommastellen,'0');
Ist aber auch entsprechend umständlich gelöst. Aber mit PadRight kannst du auf jeden Fall 0en manuell auffüllen , musst halt nur rausbekommen wieviele.
Vielleicht hilft dir ja mein Beispiel irgendwie
Da würde mich die Begründung aber sehr interessieren ? Hat man mit C# nicht genügend Hardwarezugriff ? Oder woran liegt das ?
Der Status deiner Variablen ist Changed UND Created
Das ist ein eigener Zustand genauso wie nur Changed
Ich bin mir jetzt nicht sicher ob ich genau verstanden habe was du wissen möchtest aber generell kannst du deine Variable genauso abfragen wie du es beschrieben hast , nur wird in deinem Beispiel immer false rauskommen weil dein Status halt Changed UND Created ist und nicht nur Changed.
Wieviele Attribute musst du denn pro objekt setzen ? Wenn es nur ein paar sind würde ich es auch über einen optionalen weiteren Konstruktor machen. Jedoch solltest du auf jeden Fall auch einen Konstruktor mit minimaler Parameteranzahl anbieten.
Eine weitere alternative wäre vielleicht auch Serialisierung für dich. Damit hast du zwar weiterhin das setzen mehrerer Attribute am hals aber kannst es auslagern z.B. in eine XML datei und aus dieser heraus deine Objekte erzeugen.
Wie das geht kannst du hier mal anschauen, vielleicht passt dir das ja.
Wenn du nur absagen bekommen hast wird es vermutlich an deiner Bewerbung liegen. Ich hoffe nicht das du denselben Fehler wie viele andere gemacht hast und nur eine Bewerbung geschrieben und an mehrere Firmen gesendet hast.
An welche Schule gehst du denn ? Nicht zufällig GSO oder ?
Ich würde beim compare ab dem "." hinter dem ply abschneiden und bis zum "<" die zahlen einlesen, in ein int konvertieren und dann einen Int.Compare jeweils machen dann solltest du eigentlich die richtige reihenfolge rausbekommen
Das es SHGetFileInfo schon seit C gibt weiß ich und das unsauber war auch nicht darauf bezogen 😃
Unsauber war auf ** Icon.ExtractAssociatedIcon** bezogen da es wie du sagtest abweichende Ergebnisse liefert. Ich finde entweder solte es das Icon zurückgeben oder NULL aber doch nicht so ein hü oder hott ding.
Echt ?
Das ist ja unsauber ... wer hat sich denn das ausgedacht ?
Naja wieder was gelernt 😃 , über Tom's Methode ist es vermutlich sowieso am besten.
Da hätte dir Google in windeseile ein brauchbares Ergebnis ausgespuckt :
Du kannst auf die Applikationsweiten Variablen zurückgreifen.
Auf diese kannst du von überall zugreifen. Sie funktionieren ähnlich wie Sessionvariablen jedoch solltest du vorsichtig und sparsam mit ihnen umgehen da sie im Gegensatz zu Sessionvariablen von jedem Besucher deiner Seite gleichermaßen zugegriffen werden.
public struct DateTime : IComparable, IFormattable, IConvertible,
ISerializable, IComparable<DateTime>, IEquatable<DateTime>
Also wenn ich das richtig verstehe dann hast du eigentlich nur die Möglichkeit, dass du direkt den Typ DateTime an dein Objekt übergibst (Dann kannst du dir den Cast allerdings sparen).
Im anderen Fall müsste dein Objekt einfach nur IComparable sein , da DateTime nicht IComparable<T> ist sondern nur IComparable<DateTime>.
Oder hab ich grad nen Hänger ?