Alle Beiträge von Whiz-zarD
-
C# Zugriff auf externe Klassen
Erstmal würde ich nicht für jede Aufgabe eine eigene Form bauen. Das widerspricht dem kompletten Gedanken der Objektorientierung. Ich würde also erst mal anfangen, zu überlegen, welche Arten von Aufgaben du hast (Multiple Choice, Rechenaufgabe, ...) und dafür geeignete Forms ausdenken. Eine Aufgabe kann ja selber eine Klasse sein. Deine "externe Klasse", die die Auswertung übernimmt kannst du ja per Dependecy Injection reinreichen. https://blogs.msdn.microsoft.com/dmx/2014/10/14/was-ist-eigentlich-dependency-injection-di/ Deine Forms besitzen dann eine Property, die als Typ deine "externe Klasse" entspricht. Bei der Instanziierung der Form reichst du dann deine "externe Klasse" rein. Beispiel: public class AnalysisClass { // ... } public class MyForm : Form { public MyAnalysisClass AnalysisClass { get; set; } /// ... } AnalysisClass analysisClass = new AnalysisClass(); MyForm myForm = new MyForm(); myform.AnalysisClass = analysisClass;
-
C# Zufallszahlen erstellen und Wiedergeben
Performance ist nicht das Problem. Über Performance würde ich mich erst Gedanken machen, wenn es wirklich ein Problem mit dieser gibt. Performanceoptimierung heißt in den meisten Fällen, dass der Code unübersichtlicher wird. Wie man den Code nun übersichtlicher macht, ist ein recht großes Thema und lässt sich auch nicht mit einfachen Worten erklären. Wenn du 10 Entwickler an die Aufgabe lässt, wirst du 11 Lösungen bekommen. In der Objektorientierung hat sich aber das sog. SOLID-Prinzip bewährt. Das S steht für "Single-Responsibility-Principle", das besagt, dass eine Methode oder eine Klasse nur für eine Sache zuständig sein soll. Wenn man jetzt deine button1_Click()-Methode anschaut, dann sie quasi für alles zuständig ist. Also sie würfelt, analysiert und macht die Ausgabe. Ich weiß es, weil ich die Aufgabe kenne und auch deine Gedanken dahinter verstanden habe aber kann ein anderer erkennen, dass der folgende Code ein Würfel sein soll? Random Zufall = new Random(); [...] int Zahl = Zufall.Next(1, 7); Nicht so wirklich, oder? Er sieht nur, dass du dort Zufallszahlen zwischen 1 und 6 generierst aber das es ein Würfel sein soll, lässt sich in diesem Kontext nicht herauslesen. Also würde ich im ersten Schritt genau daraus einen Würfel bauen. Also wir erstellen eine Klasse, die einen Würfel repräsentiert. Diese Klasse hat dann eine Roll()-Methode, die dann uns eine Zufallszahl zurückgibt. Das Endergebnis würde dann so aussehen: int number = dice.Roll(); So lässt sich dann auch im Kontext lesen, dass wir es mit einem Würfel zu tun haben, der gewürfelt wird. Analog das selbe gilt auch fürs Analysieren. Da würde ich auch eine Klasse bauen, die genau das übernimmt. Da könnte es dann z.B. eine Analyse()-Methode geben, die als Parameter die Nummer entgegennimmt und sie entsprechend eingruppiert. Eine GetCount()-Methode könnte dann die Anzahl zurückliefern: int number = dice.Roll(); analyser.Analyse(number); [...] label3.Text = "Es wurde " + analyser.GetCountOfNumber(1) + " mal die Eins gewürfelt"; Natürlich könnte man noch viel mehr erzählen. z.B. über MVC (Model-View-Controller), etc aber ich denke, das würde zu weit führen. Ich denke, dass selbst mein Text schon zu weit geht. Zum Thema String vs. StringBuilder vs. Stringinterpolation: Ich denke mal, der TE kann mit dem Wort "immutable" nichts anfangen. Ich bin mir nicht mal sicher, ob der TE überhaupt eine Ausbildung macht oder nur ein Schüler auf einer allgemeinbildende Schule ist. Daher sollte man ihn vielleicht auch mal erklären, was immutable heißt. Zumal es performancetechnisch wohl keinen allzu großen Unterschied macht, ob er die Strings verkettet und somit einen neuen erzeugt oder einen StringBuilder verwendet. Wenn er einen eigenen StringBuilder verwendet, dann muss jedes Mal die Clear()-Methode aufgerufen werden, was den Code zumüllen würde. Darüber hinaus müsste er jedes String-Fragment mit der Append()-Methode zusammenführen, was schlecht lesbar ist. Daher würde ich hier auf den StringBuilder verzichten und die Stringinterpolation verwenden. Diese verwendet intern auch nur die string.Format()-Methode und in dieser Methode wird ein gecachter StringBuilder verwendet, der eben die Clear()-Methode aufruft. Ob man jetzt also "Es wurde " + Eins + " mal die Eins gewürfelt"; oder $"Es wurde { Eins } mal die Eins gewürfelt"; ist aus meiner Sicht erst mal irrelevant. Da es sich hier um eine Mikrooptimierung des Code handelt. Dann läuft der Code halt 10 Nanosekunden langsamer. Na und? Wir reden hier nicht von einem Hochverfügbarkeitssystem, was die Zahlen in Echtzeit anzeigen soll. Ja, man kann die Problematik ansprechen aber geht es nicht erst mal darum, den Code lesbarer zu machen? Im Idealfall liest sich der Code wie ein Buch und da sollte die Reise hingehen und nicht welche Mikrooptimierung man nun unbedingt einbauen muss.
-
Insgesamt 4 Zusagen, aber sehr unentschlossen!
Interessant, dass die Frage, ob der Job bei Firma A Reisetätigkeiten bedeutet, konsequent ignoriert wird. Consulting heißt in der Regel genau das. Also man wird zu den Kunden geschickt und wenn man liest, dass sie ein Firmenwagen springen lassen, deutet dies schon darauf hin. Die Frage ist dann, ob man dazu auch bereit ist? Dann bringt es auch nicht viel, die 50 Minuten Fahrzeit zu erwähnen, weil man dann eh kaum zur Firma fährt, sondern zum Kunden und je nach dem kann der Kunde auch im Ausland sitzen oder 5 Stunden Fahrzeit entfernt sein.
-
C# Zufallszahlen erstellen und Wiedergeben
Memo an mich: Man sollte nicht zwei Dinge auf einmal erledigen. Ich dachte, es geht nur darum, die Zufallszahlen auszugeben. Es soll ja noch ausgegeben werden, wie oft welche Zahl gewürfelt wurde. Fürs Auswerten gibt es mehrere Ansätze aber ich denke der Ansatz mit einem weiteren Array ist für dich das verständlichste. Du hast ja ein Würfel mit sechs Seiten. Daher könntest du auch ein Array mit sechs integer-Werten instanziieren: int[] würfel = new int[6] // würfel[0] -> Anzahl der Würfe der Zahl 1 // würfel[1] -> Anzahl der Würfe der Zahl 2 // würfel[2] -> Anzahl der Würfe der Zahl 3 ... // würfel[5] -> Anzahl der Würfe der Zahl 6 Jeder Wert steht für die Anzahl der Würfe und die Indexierung entspricht die Zahl auf dem Würfel. Wenn also in deinem Array mit deinen Zufallszahlen eine 3 vorkommt, dann kannst du ja den dritten Wert des Würfel-Arrays um 1 erhöhen. Aber aufpassen: Die Indexierung eines Arrays fängt bei 0 an. D.h. würfel[0] wäre in Wirklichkeit die Zahl 1 auf dem Würfel. Falls du die Dictionary-Klasse kennen solltest, kannst du es auch damit machen.
-
C# Zufallszahlen erstellen und Wiedergeben
Um ein String in ein Int zu wandeln, kannst du dir ja mal die Methoden Int.TryParse() oder die Convert.ToInt32() anschauen. Dein ganzer Code macht aber wenig Sinn. Fangen wir mit folgenden Zeilen an: String Anzahl = textBox1.Text; textBox1.Text = Anzahl.ToString(); Du speicherst den Text von textbox1 in die Variable Anzahl. Danach setzt du den Text von textbox1 mit Anzahl. Wozu? textBox1 hat doch schon den Wert. int b = Anzahl; Kann nicht funktionieren. b ist ein Integer und Anzahl ein String. for ( int i = 0; i < b; i++) { Random Zufall = new Random(); int Zahl = Zufall.Next(1, 6); textBox2.Text = Zahl.ToString(); a++; } Eine Instanz der Random-Klasse brauchst du nur einmal erstellen und nicht jedes Mal neu. int[] GesamtZAHL; GesamtZAHL = new int[a]; textBox2.Text = GesamtZAHL; Die letzte Zeile funktioniert nicht, weil Text ein String ist und GesamtZAHL ein Array. Du kannst also folgendes machen: Den Text von textBox1 in eine Zahl konvertieren und in eine Variable speichern Erzeugst eine Instanz von Random Durchläufst eine Schleife so oft, wie die Anzahl der Würfelversuche (Variable aus Schritt 1) In der Schleife erzeugst du mittels der Instanz von Random eine Zufallszahl Die Zufallszahl fügst du an Text von textBox2. (textBox2.Text += zufallszahl.ToString())
-
Mehr Netto vom Brutto - Benefits
Wer sagt, dass ich auf Gehalt verzichte? Schon wieder Gehalt... Nenn mich altmodisch aber ich bin kein Freund von Home Office. Erst mal aus persönlicher Sicht, da ich mich zu Hause nicht so recht auf die Arbeit konzentrieren kann und dann sind auch die Kommunikationswege umständlicher. z.B. ist Pair-Programming oder Code Reviews schlechter realisierbar. Bei uns kommen auch spontane Meetings recht häufig vor, wo wir uns dann vor einem Whiteboard versammeln und uns eine Lösung überlegen. Die Digitalisierung macht nun mal nicht alles besser. Ich hab Arbeitskollegen, die arbeiten drei mal die Woche von zu Hause. Das ist alles kein Ding. Ich fahre aber lieber ins Büro aber es ist gut zu wissen, dass ich auch mal von zu Hause arbeiten kann, wenn es nicht anders geht und das ohne Verzicht auf Gehalt...
-
Mehr Netto vom Brutto - Benefits
- 30 Tage Urlaub - jährliche Bonusauszahlung - Home Office-Möglichkeiten - flexible Arbeitszeiten - Pluralsight-Account - bezahlte Weiterbildungsmaßnahmen (z.B. Teilnahme an Konferenzen oder die Ausbildung zum Ausbilder) - elektrisch höhenverstellbaren Tisch - Möglichkeit, ein Dienstfahrrad zu "leasen" - Rabatte bei Fitnessstudios - kostenloses Obst
-
Java Tree, Validierung nach Root, Node, Leaf
Ein binärer Baum ist nur eine Sonderstruktur eines Baumes. Ein binärer Baum hat nur zwei Knoten pro Wurzel. Ein Baum hingegen kann viele haben. Somit ist ein binärer Baum für eine XML-Struktur nicht geeignet und ob man das jetzt DOM (Document Object Model) oder Baum nennt, ist erst mal irrelevant, da ein DOM auch nichts weiter als ein Baum ist. https://de.wikipedia.org/wiki/Document_Object_Model
-
Java Tree, Validierung nach Root, Node, Leaf
Aus deiner Beschreibung werde ich nicht schlau, was du genau willst. Die Frage ist also erst mal, was du unter "validieren" verstehst? Validieren heißt eigentlich, dass etwas auf Richtigkeit überprüft werden soll aber offenbar willst du erstmal die XML in eine Baumstruktur laden, da die Begrifflichkeiten Root, Node und Leaf eben Begriffe aus einer Baumstruktur sind und das einlesen nennt sich Deserialisierung und nicht Validierung. Edit: Ich vermute mal, dass mit "Java Trees" die TreeMap-Klasse gemeint ist.
-
Allgemeine Fragen - nach der Prüfung
Hier muss man etwas differenzieren. Ja, der Arbeitgeber muss nach der Beendigung ein Zeugnis ausstellen. Im Arbeitszeugnis muss dann "Art, Dauer und Ziel der Berufsausbildung sowie über die erworbenen beruflichen Fertigkeiten, Kenntnisse und Fähigkeiten der Auszubildenden" enthalten sein. Das sind die Pflichtangaben. Wenn der Azubi zusätzlich Angaben über Verhalten und Leistung im Zeugnis stehen haben möchte, dann muss er selbst aktiv werden und dies verlangen, sofern der Arbeitgeber dies nicht von sich aus schon macht:
-
Karteikarten von azubishop24.de
Ich finde es schon bezeichnend, dass es nicht mal konkret eine Beispielkarte gibt, sondern nur einen virtuellen Produktkarton und wenn man eine Beispielkarte sieht, dann nur in Form eines Fotos, in der eine Frau eine Karte hält und man gute Augen braucht, um die Frage lesen zu können. Scheint so, als seien sie selbst vom Produkt nicht so überzeugt aber verkaufen es für teures Geld.
-
Java ExecuteUpdate zur Erweiterung einer Tabelle
Die Main-Klasse wird ja nicht die einzige Klasse sein, die eine Datenbankverbindung benötigt. Wenn du nun in jeder anderen Klasse Main.getConnection() aufrufst, lassen sich die Klassen nicht mehr isoliert testen, weil sie Abhängig von Main sind. Du musst in jedem Test erst mal die main()-Methode aufrufen, weil die Methode die Verbindung aufbaut.
-
Java ExecuteUpdate zur Erweiterung einer Tabelle
Statische Klassen sind die Hölle, wenn man mal einen Unittest schreiben will. Sowas immer als Dependency Injection in die Klasse reinreichen und nicht überall im Code verstreut Main.getConnection() aufrufen. So etwas macht die Klassen erst recht untestbar.
-
Welche Programmiersprache lernen? C++?
Ja, eben. Also warum so ein kompliziertes Beispiel, wie ein Taschenrechner, der nichts taugt? Für mich ist sogar der Spaghetticode-Taschenrechner kontraproduktiv, weil der Code so unübersichtlich wird, sodass der Anfänger schnell den Überblick verliert, was bei einem Anfänger zu Frust führen kann. Zu solchen Taschenrechnern findet man z.B. auf Youtube tausend Videos und in vielen ist es sogar so, dass der Sprecher sogar den Überblick verliert und ins Stottern gerät, weil er ein Fehler produziert hat. Ja, wenn der auch was taugen würde aber er ist eben unflexibel und hält die Operatorreihenfolge nicht ein. Zu einem vernünftigen Taschenrechner gehört nun mal etwas mehr, als nur vier if-Anweisungen für die Grundrechenarten, die dann in einer Methode/Funktion verwurstelt werden und da rumgestülpt weiteren Code, nur damit die Oberfläche keine Zicken macht. Man sollte sich dann auch mit binären Bäumen und mit der Prä- und Postfix-Schreibweise eines mathematischen Ausdruckes beschäftigt haben, was einem Anfänger nicht zuzumuten wäre. Mit diesem Spaghetticode-Taschenrechner gaukelt man dem Anfänger nur vor, es hätte praktischen Bezug aber diese Taschenrechner sind Beispiele, wie man nicht programmieren sollte.
-
Welche Programmiersprache lernen? C++?
Ein Taschenrechner, der nichts taugt. Super. Ein Taschenrechner ist für mich eines der denkbar schlechtesten Übungen, die man sich nur vorstellen kann. Am Ende kommt nur ein Haufen Spaghetticode raus, der so ziemlich gegen jedes Prinzip der Softwareentwicklung verstößt und der Taschenrechner kann nur zwei Zahlen verarbeiten. Eine Operatorreihenfolge (Punkt- vor Strichrechnung) und Klammern kennt er nicht. Um if-anweisungen zu erklären, kann man auch bessere Beispiele nehmen, wie z.B. das FizzBuzz-Spiel.
-
Java ExecuteUpdate zur Erweiterung einer Tabelle
Ist zwar schon und gut, dass du in der Main-Methode ein Objekt der ConnectionToMySQL-Klasse erzeugst, aber das tust du in der Aufgaben-Klasse auch und in der Aufgaben-Klasse baust du keine Verbindung zum Server auf. DU willst also somit zwei Verbindunegen aufbauen, wobei du in der Main-Methode connect() aufrufst aber nicht in der Aufgaben-Klasse. Deswegen auch die NullReferenceException.
-
Java ExecuteUpdate zur Erweiterung einer Tabelle
Dann wird stmt NULL sein.
-
Java ExecuteUpdate zur Erweiterung einer Tabelle
Welche Zeile ist denn nun genau Zeile 64 in der ConnectionToMySQL.java? Du kannst auch mit dem Debugger Schritt-für-Schritt dein Code durchlaufen und den Status der jeweiligen Objekte anschauen. Irgendeins muss davon ja NULL sein.
-
Welche Programmiersprache lernen? C++?
Was in den Berufsschulen gelehrt wird und was in der Prüfung vorkommt, sind zwei unterschiedliche Paar Schuhe. Eine Prüfung ist auch ohne einer Programmiersprache machbar. Die Pseudocode-Beispiele, die man im Wikipedia-Artikel findet, reichen alle male. Das Problem ist eher, dass die Programmieraufgaben, aufgrund ihrer eingeschränkten Sichtweise (z.B. Arrays anstatt Listen, deren Größe erst mal initialisiert werden müssen) oftmals umfangreicher werden, als sie es überhaupt sein müssen. Auch ist die Aufgabenstellung oft sehr merkwürdig aber ein FISI dürfte wohl sowieso keine allzu großen Programmieraufgaben bekommen.
-
Welche Programmiersprache lernen? C++?
C++ wäre für einen FISI wie mit Kanonen auf Spatzen schießen. Ich vermute mal, dass er damit sowieso nicht viel anfangen kann. Da ein FISI eher mit Scripten arbeitet und die PowerShell von Microsoft objektorientiert aufgebaut ist, wäre es wohl nicht verkehrt, die Grundprinzipien der Objektorientierung zu erklären. Explizit eine Programmiersprache auszuwählen braucht man nicht und ich weiß nicht mal, ob überhaupt eine Programmieraufgabe in den Abschlussprüfungen vorkommt. Wenn ja, dann ist sie auch mittels Pseudocode lösbar. Also reichen auch ein paar Trockenübungen für die imperative Programmierung.
- SQL Aufgaben (Einstieg)
-
Rainmeter - Sensor selber bauen
Oh, Okay.
-
Rainmeter - Sensor selber bauen
Du kannst dir auch direkt ein Plugin schreiben, was die Daten holt. Die Entwickler von Rainmeter bieten ja ein SDK an. https://github.com/rainmeter/rainmeter-plugin-sdk
-
Wochenplan für Mitarbeiter mit Delphi erstellen.
Okay, hast mich.
-
SQL Aufgaben (Einstieg)
1) Es geht darum, Dinge zu gruppieren und zu sortieren. Was du gruppieren und wie du es sortieren sollst, steht doch in der Aufgabe. 2) Hier soll ebenfalls was gruppiert werden 3) Es soll über eine WHERE-Bedingung rausgefunden werden, welche Pizza teuerer als 9 € ist 4) Ebenfalls eine Gruppierung 5) Die Tabellen Bestellung und Kunde müssen gejoined werden und dann den Kunden mit der E-Mail-Adresse a@f raussuchen 6) Schau dir mal die AVG()-Funktion (= Average) an. 7) Eine Sortierung auf den Bestellungen 8) Eine Sortierung mit Filterung auf den Bestellungen 9) Genauer, wie die Aufgabe kann man es nicht mehr beschreiben, ohne die Lösung zu präsentieren