Zum Inhalt springen

Whiz-zarD

Mitglieder
  • Gesamte Inhalte

    2.021
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    48

Beiträge von Whiz-zarD

  1. vor 25 Minuten schrieb wisdomsoz:

    http://www.hbfswi.de/

    Das ist die Schule, wo das ganze angeboten werden würde. Laut der Website wäre man dann "Staatlich geprüfter Wirtschaftsinformatiker/in".

    Leider gibt es nicht viele Informationen auf der Webseite aber sie klingt erst mal nicht schlecht und ich denke, nach der Schule ist eine zusätzliche Ausbildung nicht notwendig und ich halte das dann auch für schwendete Zeit. Wenn, dann würde ich eher nach einem Studium ausschau halten, wenn du meinst, dass es nicht reicht.

  2. vor 9 Minuten schrieb Gottlike:

    Wie kannst du das denn bewerten, wenn du nie eine betriebliche Ausbildung hattest?
    Ich sage ja auch nicht, "Meine betriebliche Ausbildung ist viel besser und ich bin froh keine schulische gemacht zu haben", weil ich nie Erfahrungen dazu gesammelt habe.

    Erst mal habe ich zuvor eine betriebliche Ausbildung als Mechatroniker hinter mir. Ich kenne also das Leben als Azubi. Zweitens hatte ich im Laufe der Zeit schon einige Gesprächen mit so manchen FIAE-Azubis gehalten und irgendwie berichtet jeder von den selben Problemen. Drittens hatte ich mich mal in diesem Forum angemeldet, weil ich Informationen über die Ausbildung sammeln wollte, da ich vor habe, die Ausbildereignungsprüfung abzulegen aber in diesem Forum werden immer wieder die Dinge bestätigt, die auch zuvor die Azubis berichtet haben, mit denen ich gesprochen habe und das erschüttert mich doch sehr. 

    vor 4 Minuten schrieb Uhu:

    Möglicherweise unterscheidet sich die Qualität und Anerkennung der Assistentenausbildung von Bundesland zu Bundesland. In NRW ist die Assistentenausbildung in der Wirtschaft als berufsqualifizierender Abschluss nicht sehr anerkannt und wird hauptsächlich nur von Leuten gemacht, die keine betriebliche Ausbildung bekommen haben und/oder auch kein (Fach-)Abitur haben, um zu studieren.

    Das mag vielleicht sein. Das kann ich so nicht beurteilen. Ich selber war auf einer Schule in Schleswig-Holstein und diese Schule genießt in Norddeutschland einen sehr guten Ruf und die Leute, die auf dieser Schule einen Abschluss gemacht haben, werden eher genommen, als jemand mit einer betrieblichen Ausbildung.

  3. vor 3 Minuten schrieb Graustein:

    Ist ja kein geschützer Begriff, so kann sich jeder nennen. Mit einem "echten" W-Info Studium hat das ganze wohl eher rein gar nix zu tun.

    Du frage ist, wie die tatsächliche Bezeichnung heißt? Es gibt die "staatlich geprüften Assistenten für Wirtschaftsinformatik" und umgangssprachlich werden sie auch Wirtschaftsinformatiker bezeichnet. So eine Ausbildung ist auch mit einer Fachinformatiker-Ausbildung gleichrangig. Je nach Schule im Lehrstoff sogar höherwertiger. Ich bin staatlich geprüfter Assistent für Medieninformatik und habe diese Entscheidung nie bereut. Im Gegenteil. Ich bin sogar eher froh darüber, diesen Weg gewählt zu haben, anstatt eine betriebliche Ausbildung.

  4. Wozu dann noch eine FIAE Ausbildung, wenn du später Wirtschaftsinformatiker bist? Das halte ich für Verschwendung. Darf ich fragen, welche schule du in Auge gefasst hast? 

     

    vor einer Stunde schrieb Graustein:

    Generell ist schulisch im Bereich IT eher nur als Notnagel zu sehen.

    Ich habe auch eine schulische Ausbildung abgeschlossen und würde diese Ausbildung einer betrieblichen Ausbildung immer wieder bevorzugen.

  5. Es wäre besser, wenn du immer den kompletten Code hier reinschreiben würdest. Mit Schnipseln, die sogar noch unvollständig sind, kann keiner was anfangen. Auch solltest du auf die Formatierung achten. Der Code kann noch so gut sein aber wenn dieser schlecht formatiert ist, ist er quasi unlesbar.

    Was mir aber ins Auge sticht, ist die Methode GetSource(). Die hat kein Rückgabewert, obwohl sie mit "Get" anfängt. Das spricht gegen die Erwartungshaltung der Methode. Get deutet immer auf eine Methode hin, die irgendwas zurückliefert aber das tut sie hier nicht.

  6. Die zweite Variante würde ich nicht empfehlen, weil die Methode TuEtwas() zwei Dinge macht: Sie tut etwas und setzt die Eigenschaft. Sie besitzt also einen Seiteneffekt. Das Verhalten der Klasse hätte was "magisches". Beispiel:

    A a = new A();
    Console.WriteLine(a.Nummer); // würde 0 ausgeben
    a.Nummer = 10;
    Console.WriteLine(a.Nummer); // würde 10 ausgeben
    a.TuEtwas(15);
    Console.WriteLine(a.Nummer); // würde plötzlich 15 ausgeben

    Jemand, der die Klasse A nur verwendet und nicht weiß, wie sie intern aufgebaut ist, fragt sich, wieso Nummer plötzlich 15 ist.
    Außerdem wird es ja einen Grund haben, wieso du die Eigenschaft definiert hast. Sie ist ja offenbar eine Konfiguration für diese Klasse, die von außen beeinflussbar ist. Methoden in Klasse A sollten daher den Wert nicht überschreiben, damit eben nicht dieser "magische Effekt" entsteht. 

    Wenn der Parameter hingegen nur in der Methode TuEtwas() benötigt wird, dann kannst du die Eigenschaft ja auch weglassen, und die nummer, wie im zweiten Beispiel, in die Methode reinreichen.

  7. vor 2 Stunden schrieb gluexxpirat:

    Das Problem ist, dass mein Chef vom programmieren nichts versteht und ich halt nur so weit ich es mir selbst beigebracht habe bzw aus der Schule gelernt habe. 

    Ich nehme mal an, es handelt sich um eine FIAE-Ausbildung. Wieso bildet die Firma FIAEler aus, wenn keiner programmieren kann? Was lernst du in der Firma? Vor allem von wem?

  8. vor 27 Minuten schrieb gluexxpirat:

     

    Die Datenbank ist doch egal. Heutzutage unterstützen die meisten Anwendungen alle möglichen Datenbanken oder bringen die Datenbank selbst mit und wenn du schon in die Zukunft schaust, würde ich nicht auf mysql setzen, da die Zukunft um mysql ungewiss ist. Inzwischen geht der Trend weg von mysql. Wenn, dann solltest du lieber auf MariaDB oder PostgreSQL setzen.

  9. Ich verstehe trotzdem das Problem nicht. Wenn sich die OracleDB ändern sollte, z.B. aufgrund eines softwareupdates, dann muss sich auch der sog. ETL-Prozess und ggf. auch die mysql Datenbank angepasst werden. Du hast hier so oder so aufwände. Es gibt auch Tools, mit denen man den ETL-Prozess konfigurieren und steuern kann. Z.B. Talend. Wenn ich noch richtig in Erinnerung habe, bietet talend auch eine Echtzeit Funktionalität. Vielleicht ist das ja das, was du suchst. 

    Auch wäre es nicht schlecht, wenn du dich mal mit der rechtevergabe unter Oracle auseinandersetzt. Ich glaube, deine Befürchtung liegt eher darin, dass du Angst hast, jemand könnte die Daten manipulieren aber unter Oracle kannst du sehr feingranular die rechte vergeben. Du kannst auch einen read-only Nutzer anlegen, der nur lesezugriff auf bestimmte Tabellen bekommt.

  10. Termine können immer kurzfristig platzen. Egal von welcher Seite aus.
    Ich denke mal, jeder wird es mal erlebt haben, dass eine Person aus der Firma, die eigentlich am Gespräch teilnehmen wollte, nicht konnte. So ist es nun mal und ich finde es auch nicht schlimm, wenn man rechtzeitig bescheid sagt. Bei Bewerbern um einen Ausbildungsplatz muss man eben damit rechnen, dass sie noch recht jung sind und keinen Führerschein besitzen und daher auf öffentliche Verkehrsmittel angewiesen sind. That's life ...

  11. vor 7 Stunden schrieb PVoss:

    Beachtest du auch welcher Umfang da überhaupt vermittelt werden soll, über welche (geringe) Dauer und von welchem Startpunkt aus? Soll man auch das Wort Aushilfslehrer mal fett hervorheben?

    Ist doch ganz gleichgültig, ob es ein Aushilfslehrer ist, oder nicht. Er soll die Schüler vernünftig unterrichten. Auch handelt es sich hier nicht um eine 7. Klasse, wo es scheißegal ist, ob sie Objektorientierung verstehen oder nicht, sondern es geht um Azubis, dies dies in ihrem Berufsleben brauchen. Der Lehrer springt aber von den Klassen zu Arrays, ohne überhaupt mal zu erklären, wozu überhaupt Klassen gedacht sind. Er verschiebt den Code nur von einer Klasse zur nächsten ... Ja, wow. Dafür brauche ich kein C#, sondern kann dafür auch eine prozedurale Sprache, wie z.B. Pascal, nehmen. Es hat doch keinen Sinn, eine Objektorientierte Sprache zu wählen, wenn man den Azubis nicht mal erklärt, was Objektorientierung überhaupt ist. Er springt auch mit den Themen kreuz und quer ohne einen roten Faden zu besitzen. z.B. von den erwähnten Klassen zu Arrays oder von der for-Schleife zu Modulo und von Modulo zur Random-Klasse. Was ist mit den anderen Arten von Schleifen? Von WinForms zu Boolesche Algebra. Was ist das denn für ein Unterricht? Man sieht ja, was dabei rauskommt, nämlich nichts ...

    vor 7 Stunden schrieb PVoss:

    Weiß du eigentlich, dass da auch die schlechteren Schüler mitgenommen werden sollen? Da kann man einfach nicht so schnell machen.

    Wenn man aber bei den Themen von Pontius zu Pilatus springt, nimmt man die schwachen Schüler nicht mit. Im Gegenteil. Sie verlieren schneller den Überblick, weil sie den Themen einfach nicht folgen können. Im Unterricht sollte ein roter Faden zu sehen sein und der fehlt hier komplett. Es wird irgendwie alles nur kurz angerissen ohne näher darauf einzugehen. Sorry, aber mit so einem Wissensstand kann man noch keine Programme mit C# schreiben, da einfach das komplette Wissen über Objektorientierung fehlt. Wenn man schon die Objektorientierung weglassen möchte, was bei Anfängern vielleicht durchaus verständlich ist, dann sollte man auch meiner Meinung nicht mit einer OO-Sprache anfangen, weil es sonst für Verwirrung sorgt. Bei meiner Assistenten-Ausbildung wurde auch mit Pascal anfangen aber Pascal ist heute wohl nicht mehr "fancy" genug. Meine damalige Ausbildung habe ich 2008 begonnen und 2011 abgeschlossen. Das Problem sieht man schon in diesem Video von ihm. Er beschreibt den Konstruktor falsch. Er implementiert einen Konstruktor, nur weil er Quelltext sparen möchte. Das ist aber nicht der Sinn und Zweck eines Konstruktors. Der Konstruktor ist dafür da, um ein Objekt zu initialisieren. Parameter reicht man dann in ein Konstruktor rein, wenn das Objekt Daten von außerhalb benötigt. Zwar hat er genau das vor aber er erwähnt es nicht. Seine Intention ist nur, dass er zwei Zeilen Code weniger schreiben möchte. Dies ist einfach unbrauchbar und sorgt auch nicht für ein besseres Verständnis, sondern für mehr Verwirrung.

    Je mehr ich mir die Unterlagen anschaue, desto mehr wird mir auch die Probleme von @Tician klar. Der Lehrer versucht zwar die Basics einer imperativen Programmiersprache zu zeigen, versucht aber gleichzeitig prozedural in einer reinen objektorientierten Sprache zu entwickeln. Das kann einfach nicht klappen, ohne dass es verwirrend wird. Da kommen wir wieder zu dem Problem, was ich oben erwähnte. Wenn man einfach nicht die Zeit hat, die Objektorientierung zu erklären, dann sollte man auch nicht mit einer objektorientierten Sprache anfangen, sondern mit einer rein prozeduralen Sprache.

    Auch das wichtigste Werkzeug eines Entwicklers, wird nicht mal besprochen: Der Debugger. Ohne den Debugger könnte kein Entwickler überleben aber nirgends wird mal der Debugger erwähnt und das Problem sieht man hier doch auch: Der TE ist nicht in der Lage, seinen eigenen Code zu debuggen. Taucht ein Fehler auf, ist der TE sofort aufgeschmissen. 

    vor 7 Stunden schrieb PVoss:

    Die kann man auch für Anfänger in der Programmierung verwenden, damit diese Anfänger ein bisschen Spaß haben können.

    Vielleicht ist es ja mit sein Ziel das Interesse nach mehr zu wecken. Von der 7. Klasse zur Ausbildung ist es übrigens nicht so weit hin wie du vielleicht denkst.

    Mag sein, aber das Problem sieht man doch hier überdeutlich: Der TE hat zwar Interesse nach mehr und möchte in der Firma ein eigenes Programm schreiben aber eckt überall an, weil er/sie überhaupt kein Verständnis für die Objektorientierung oder für C# besitzt. Man kann nicht einfach eine rein objektorientierte Sprache nehmen und die Objektorientierung weglassen. 

  12. vor 45 Minuten schrieb Tician:

    Naja so haben wir es gelernt... unser Lehrer im ersten Lehrjahr war Java-Programmierer, die Schüler fanden ihn gut aber er war eben nur ein Jahr lang da und das ist was wir beigebracht bekommen haben.

    http://wierbicki.de/programmierung-c/

    Der Lehrer selbst musste sich in C# einarbeiten. Das sind unsere Materialien aus dem ersten Lehrjahr nur mittlerweile habe ich so angst zu hören "Habt ihr doch gelernt" und ich kann es einfach nicht anwenden. :unsure:

    Die Folien sind aus meiner Sicht totale Grütze ...
    Die kann man vielleicht in der 7. Klasse verwenden, damit die Schüler ein bisschen Spaß haben können aber für Azubis sollte da schon mehr Niveau sein. Wo ist Vererbung? Polymorphie? Generics?

    Sorry, aber ihr lernt nicht mal Ansatzweise Objektorientierung. Geschweige denn richtig mit C# umzugehen. Auch wenn er aus der Java-Welt kommen sollte, hat er dennoch nicht das Zeug dazu, echt das richtig beizubringen. Java unterscheidet sich von C# nicht so sonderlich viel.

    vor 52 Minuten schrieb Tician:

    Der Rest mit den typischen Fehlern war für komplette Anfänger sehr hilfreich, in Klassenarbeiten mussten wir Fehler in vorgefertigtem Code finden (auf dem Blatt Papier natürlich). Klammern die gefehlt haben, Semikolon die vergessen wurden, Anführungszeichen bei strings und vieles mehr.

    Meiner Meinung nach ist das Bullshit. Wenn man die Syntax richtig erklären würde, dann würde man auch das Konzept hinter der Syntax verstehen und dann lösen sich Syntax-Fehler von alleine. Man braucht da nicht irgendwelche Regeln auswendig lernen. Die kommen von alleine, wenn man einmal die Syntax verstanden hat... 

    Aber Gut zum Thema:

    vor 54 Minuten schrieb Tician:

    Zurück zum Thema: Wenn ich Getter und Setter explizit schreibe dann rufe ich es wie eine Methode auf? Du hast ja oben slebst ein Beispiel gezeigt wie der Compiler es übersetzen würde, das sieht mir jetzt wie das aus was wir gelernt haben - oder? Im Prinzip werden ich zukünftig wohl sowieso nur noch mit dem {get; set} arbeiten schätze ich.

    Ja, das ist richtig. C# verfolgt aber das Ziel Daten grundsätzlich mit einem Zuweisungsoperator zu manipulieren, während Methoden eine Aufgabe darstellt, die mit den Daten arbeitet. Wenn man, wie in der Java-Welt, Getter- und Setter-Methoden schreiben würde, würde man die Manipulation von Daten und Methoden vermischen und somit hätte man kein gleichmäßiges Bild mehr. Darum abstrahiert C# die Getter- und Setter-Methoden. 

     

  13. Das explizite Schreiben von Getter- und Setter-Methoden ist in C# unüblich. Das macht man in der Java-Welt.

    Im Allgemeinen finde ich dieses pdf-Dokument sehr schlecht. Ein Variablenname sollte nicht den Datentypen beinhalten. Das schränkt zu sehr ein. Angenommen, du musst aufgrund von Änderungen den Datentypen ändern. Dann musst du auch über den Variablennamen ändern. Den Datentyp im Variablennamen stammt noch aus der Zeit, als es noch keine gescheiten IDEs gab und der Entwickler Hilfskonstrukte benötigte. Außerdem geht man gar nicht darauf ein, wieso die Semikolons falsch sind. Es ist zwar nur eine Wiederholung aber wenn man die Schüler erklären würde, dass ein Semikolon das Ende einer Anweisung darstellt, dann sollte sich das von selbst erübrigen.

     

  14. vor 1 Stunde schrieb Klotzkopp:

    Nein. Eigenschaft werden wie Member benutzt:

    
    A.Nummer = 15;
    int zahl = A.Nummer;

     

    Genau.
    Der Entwickler benutzt es wie Members. Der Kompiler macht daraus später Methodenaufrufe.

    vor 3 Stunden schrieb Tician:

     

    
    Console.WriteLine("Nummer gesetzt auf {0}", value)

    Ich habe das schon öfter gesehen aber warum benutzt man das? Warum nicht so:

    
    Console.WriteLine("Nummer gesetzt auf " + value)

    Was machen die geschweiften Klammern mit der null da?

    WriteLine besitzt weitere Signaturen. Darunter auch eine Signatur, die der String.Format()-Methode entspricht.
    Die {0} ist ein Platzhalter und wird gegen den ersten parameter - also value - ausgetauscht. Strings zu konkatenieren (mit dem +-Operator zusammenfügen) sollte man vermeiden, Das liegt an der Eigenheit der Strings. Strings sind immutable. D.h. unveränderbar. Der +-Operator nimmt die Werte und baut daraus einen neuen String. In diesem Fall macht es wenig Probleme aber stelle dir mal vor, du führst dies mehrere Tausend mal hintereinander aus. Dann wird das irgendwann sehr langsam, weil jedes Mal ein neuer String gebaut wird. Darum gibt es z.B. die String.Format()-Methode und die StringBuilder-Klasse, um Strings zu generieren, ohne dass jedes Mal zwischendurch ein neuer String gebaut werden muss. 

    Mit dem neuen C# 6.0 gibt es inzwischen auch eine weitere lesbarere Variante:

    Console.WriteLine($"Nummer gesetzt auf {value}");

    Diese Variante nennt sich String Interpolation
    Die String Interpolation beginnt mit einem $-Zeichen. Danach werden die Variablen, die ausgewiesen werden sollen, in geschweifte Klammern gesetzt. 

  15. Mag sein, dass die Prüfer da nicht ganz so streng draufschauen, aber ich finde den Antrag sehr fragwürdig. Auf der einen Seite wird die Software als riesiges, komplexes Konstrukt dargestellt aber auf der anderen Seite wird gar nicht auf die komplexität eingegangen.

    Als erstes die Projektbeschreibung:
    Sie wird dargestellt als würde die Software komplexe Strukturen der Projekt-Phasen in unterschiedlichen Firmen abbilden, kontrollieren und steuern können. Die Aufgabe des Azubis ist die Implementierung der Basisfunktionalität. Gut, lassen wir es einmal so wirken.

    Bis jetzt liest sich wie ein PR-Text eines Vertrieblers, der den Wunschzustand erwähnt aber wünschen kann man sich ja vieles. ;) Zur Nutzen/Kostenberechnung sage ich mal nichts. Das würde jetzt den Rahmen sprengen. 

    Punkt 2:
    Hier wird es mal etwas konkreter, was die Software können soll:

    • Projekte anlegen
    • Projekte verwalten (auf welche Weise auch immer?)
    • Projekte tabellarisch oder als Ganttdiagramm darstellen

    Das wars? Wo ist die erwähnte Steuerung und Kontrollierung der Projekte?
    Und das soll dann verkauft werden? Okay, vielleicht ist das auch nur die Basisfunktionalität. Wer weiß? 

    Punkt 3.1:
    Du erwähnst, dass das Projekt mittels dem Entwicklungsmodel des Wasserfallmodell und der agilen Entwicklung entwickelt werden soll. Beides schließt sich aber gegenseitig aus. Das Wasserfallmodel beruht auf sehr starren Phasen, während die agile Entwicklung bestmöglich gar nicht aus Phasen besteht. Agile Entwicklung beruht auf vier Grundsätze:

    • Menschen und Interaktionen stehen über Prozessen und Werkzeugen
    • Funktionierende Software steht über einer umfassenden Dokumentation
    • Zusammenarbeit mit dem Kunden steht über der Vertragsverhandlung
    • Reagieren auf Veränderung steht über dem Befolgen eines Plans

    Das Wasserfallmodell verstößt schon gegen drei der vier Grundsätze. Ich nehme mal an, du meinst eher das V-Modell.

    Punkt 3.2:
    Wieso wird so oft MySQL erwähnt? Mag ja sein, dass ihr MySQL verwendet aber ihr wollt die Software verkaufen, also muss sie auch mit anderen Datenbanken zurecht kommen. Angenommen, ein Kunde hat MSSQL oder OracleDB im Einsatz. Was dann?

    Punkt 3.3:
    In der Implementierungsphase wird mit vier Sätzen ein generisches Login-System beschrieben. Das Gantt-Diagramm muss mit einem Satz auskommen. Wie wird das Diagramm überhaupt generiert? Ist das eine HTML-Tabelle? Eine Grafik? Schreibst du die Bibliothek dafür selber? Wird da was fertiges verwendet? Die eigentliche Aufgabe der Software wird hier gar nicht beschrieben. Ist das generieren des Gantt-Diagramms überhaupt deine Aufgabe oder implementierst du nur das Login-System?

    Punkt 4:
    In der "Entwurf"-Phase designst du 9 Stunden lang Datenbank-Tabellen. Wozu? In der Phase "Implementierung" lässt du diese Tabellen mit dem Entity Framework generieren. Auch designst du in der "Entwurf"-Phase noch Views. Wozu? Weshalb? Welchen Grund haben die Views? Willst du die komplette Business-Logik als Views abbilden? Das halte ich für fatal. Ihr habt doch das mächtige Entity Framework und bitte sag mir jetzt nicht, dass ihr das Framework nicht richtig einsetzt und nur stumpf SQL-Queries mit der ExecuteQuery()-Methode ausführt. 

    Fazit:
    In der gesamten Projektbeschreibung wird aus meiner Sicht überhaupt nicht klar, was du machen möchtest. Es wird eine angeblich riesige Software vorgestellt, die aber in Wirklichkeit nur sehr klein ist und auf deine Aufgabe gehst du nicht mal ein. Der Hauptaugenmerk liegt irgendwie beim Login-System aber das kann doch nicht deine einzige Aufgabe sein. 

    Ansonsten das noch, was @stefan.macke schrieb.

  16. vor 21 Minuten schrieb Gottlike:

    Wie kommt ihr darauf, dass die meisten Azubis Zuhause wohnen? Das verwirrt mich. In meiner Berufsschulklasse waren es vielleicht 1-2 Leute, die noch Zuhause wohnen. Und es gab auch davon durchaus noch welche die zusätzlich einen Nebenjob ausgeführt haben, um sich eben dieses leisten zu können. 

    Und wer bezahlt die Wohnung? Mit Sicherheit nicht der Azubi selbst, wenn man bedenkt, dass ein Azubi oft nicht mal volljährig ist, wenn er die Ausbildung anfängt ... Ich nehme nur mal Raum Hamburg, wo die Kalt-Miete einer Ein-Zimmer-Wohnung schon das durchschnittliche Einkommens eines Azubis übersteigen kann. Von der Kaution will ich gar nicht sprechen. Da bleibt nichts anderes übrig, als in Hotel Mama weiterzuwohnen oder die Eltern bezahlen die Wohnung. Mag sein, dass es Gegenden gibt, wo sich Azubis eine Wohnung leisten können, aber dies ist bei weitem nicht überall so.

    vor 30 Minuten schrieb Gottlike:

    Ansonsten stimme ich weiterhin zu. Ein Studium ist etwas komplett anderes als eine Ausbildung, was man meiner Meinung nach nicht vergleichen kann/soll. Und im Schnitt ist ein Studium anspruchsvoller, natürlich, aber der eine hält später seinen Bachelor in den Händen und der andere "nur" eine abgeschlossene Berufsausbildung. 

    Selbst Studium ist nicht gleich Studium. Ich kenne inzwischen einige Bachelor-Absolventen. Sowohl von Fachhochschulen als auch von Universitäten und irgendwie ist jeder der Meinung, dass Fachhochschulen praxisorientierter aber stressiger sind, als Universitäten und das deckt sich auch mit meinen Erfahrungen, da ich in meiner Assistenten-Ausbildung die meist die Kurse und Vorlesung, wie auch die FH-Studenten, die im selben Hause studierten, besuchte und sehr häufig musste ich auch noch die Nacht durcharbeiten, weil am nächsten Morgen um 8 Uhr der Abgabetermin der Übungen war. Zu meiner Zeit als Azubi kam sowas nie vor.

  17. Ich würde eigentlich sogar noch einen Schritt weitergehen: Weg von Powerpoint!

    Ich finde, es gibt nichts langweiligeres als Powerpoint-Präsentationen. Gerade ITler wollen nicht mit Zahlen und Fakten gelangweilt werden, sondern die wollen etwas sehen. Ich würde es langweilig finden, wenn jemand ein Vortrag über ein Stück Code hält und dabei nur ein Folien zeigt, anstatt die IDE, womit man den den Code direkt "anfassen" und ausprobieren kann.

    Außerdem bin ich der Meinung, dass Powerpoint nur etwas für Leute ist, die technisch keine Ahnung haben. Ich bin ein Freund von HTML-Präsentationen. Das läuft in jedem Browser und man braucht keinen unsinnigen Powerpoint-Viewer. Die Zuschauer brauchen auch nur den Link und können sich noch mal die Präsentation anschauen. Da schmeiße ich mal reveal.js in den Raum. Das ist ein Framework für schicke HTML-Präsentationen. Der Vorteil ist auch, dass man hier nur mit reinen Text arbeitet und mit Hilfe einer Quellcodeverwaltung Änderungen an der Präsentation leicht nachvollziehen lassen können. So habe ich schon einige Vorträge auf Konferenzen gesehen, die gleich auf der Bühne korrigiert und online gestellt worden sind. Für dieses Framework gibt es auch einen visuellen Editor.

    Wenn man also gerade in der Abschlusspräsentation beweisen möchte, dass man was drauf hat, würde ich von Powerpoint Abstand halten und schauen, ob es da nicht bessere Alternativen gibt und auch wenn man sich gegen Powerpoint entscheiden sollte, sollte man gerade bei Präsentationen, die hauptsächlich ITlern ansprechen sollte, mit Folien sparsam sein. Ob man jetzt Witze einbaut, sollte jeder für sich selbst entscheiden. Es gibt Leute, die bringen Witze sehr gut rüber und können die Präsentation ein wenig auflockern. So gibt es bei mir in der Firma jemanden, der selbst langweilige und trockene Präsentationen zu Themen, wie z.B. Marktanalysen, sehr unterhaltsam präsentieren kann. Andere können es wiederum nicht und bei solchen Leuten wirken Witze wie erzwungen. 

  18. Die Frage ist, wie sollen wir dir nun helfen?
    Ich kann dir die erste Frage in deinem ersten Post beantworten. Die Frage ist dann aber, ob du das überhaupt verstehst.

    Und das führt mich zu folgendes:

    Am 4.1.2017 um 15:57 schrieb Tician:

    Ich kann programmieren, ob es gut ist ist eine andere Frage.

    Ich behaupte mal frech: Nein, du kannst es nicht. Zumindest noch nicht.
    Programmieren ist mehr, als nur ein paar Zeilen Code zu schreiben, die man nicht versteht. Das du den Code selber nicht verstehst, sieht man daran, dass du Kommentare brauchst, um den Code zu erklären, damit du noch am nächsten Tag weißt, was der überhaupt macht. Ich sehe hier zwei große Probleme, die du erstmal in den Griff bekommen müsstest, um weiterkommen zu können:

    1. Du musst die Objektorientierung verstehen
    2. Du musst das Konzept bzw. die Syntax von C# verstehen

    Dir ist offenbar nicht klar, dass Klassen aus Methoden und Eigenschaften bestehen.

    Zugriffsmodifizierer

    In C# kann man mit Hilfe der Zugriffsmodifizierer die Sichtbarkeit der Methoden und Eigenschaften bestimmen:

    • public: Die Methode/Eigenschaft ist von außen sichtbar
    • private: Die Methode/Eigenschaft steht nur der direkten Klasse zur Verfügung; sie ist von außen nicht sichtbar
    • protected: Die Methode/Eigeschaft steht der direkten und vererbten Klasse zur Verfügung; sie ist von außen nicht sichtbar
    • internal: Die Methode/Eigenschaft steht nur im eigenen Projekt zur Verfügung.

    internal ist mehr ein Sonderling und kommt in der Praxis relativ selten vor. Es wird oft verwendet, wenn man private Klassen in einem Unittest testen möchte, da man die Möglichkeit besitzt, den Zugriff auf solche Klassen dennoch in anderen Projekten zu erlauben. Dies muss man aber explizit in der Projekt-Datei angeben.

    Eigenschaften

    Eigenschaften lassen sich über get abrufen und über set setzen. Eigenschaften definiert man wie folgt:

    class A
    {
        public int Nummer { get; set; }
    }

    Bei dieser Art der Implementierung einer Eigenschaft spricht man auch von einer "automatisch implementierten Eigenschaft", da der C#-Kompiler dahergeht und Standard-Getter- und Setter-Methoden generiert, da der getter- und setter nicht ausprogrammiert worden sind. Der Kompiler generiert daraus folgenden Code:

    class A
    {
        private int nummer;
    
        public int get_Nummer()
        {
            return this.nummer;
        }
    
        public void set_Nummer(int value)
        {
            this.nummer = value;
        }
    }

    Wie man sehen kann, wird dann ein privates Feld und eine öffentliche get- und set-Methode generiert, mit denen man das Feld von außen steuern kann. Natürlich kann man auch hier die Sichtbarkeit einschränken. Beispiel:

    class A
    {
        public int Nummer { get; private set; }
    }

    Der Getter ist dann öffentlich (public) und der Setter ist nicht öffentlich (private). Natürlich kann man auch das public gegen einen anderen Modifizierer ersetzen:

    class A
    {
        protected int Nummer { get; set; }
    }

    In diesem Beispiel ist der Getter- und Setter protected. Also nur in der direkten und vererbten Klasse sichtbar und von außen nicht.

    Man kann auch selbst den Getter- und Setter implementieren, wenn man möchte, dass noch zusätzlich was passiert. Häufig ist dies der Fall, wenn man ein Event auslösen möchte, wenn eine Eigenschaft sich ändert. Dann muss man auf die automatische Implementierung der Standard Getter- und Setter-Methoden verzichten und es selbst schreiben: Beispiel:

    public class A
    {
        private int nummer;
    
        public int Nummer
        {
            get
            {
                return this.nummer;
            }
            set
            {
                Console.WriteLine("Nummer gesetzt auf {0}", value)
                this.nummer = value;
            }
        }
    }

    In diesem Beispiel wird auf der Konsole der neue Wert für Nummer ausgegeben. In der Set-Methode steht die Variable value zur Verfügung, die den neuen Wert besitzt. Der Kompiler würde daraus folgenden Code erzeugen:

    class A
    {
        private int nummer;
    
        public int get_Nummer()
        {
            return this.nummer;
        }
    
        public void set_Nummer(int value)
        {
            Console.WriteLine("Nummer gesetzt auf {0}", value)
            this.nummer = value;
        }
    }

    Die Schreibweise mit get {...} und set {...} ist also nichts weiter als syntaktischer Zucker, um den Code kompakter zu machen. Daraus werden dann auch nur Methoden generiert.

    Methoden

    Methoden können einen Rückgabewert besitzen oder nicht. Wie man schon beim generierten Getter- und Setter-Methoden der Eigenschaften sehen kann, gibt ein void an, dass die Methode kein Rückgabewert besitzt. Ersetzt man void hingegen gegen einen Datentyp, so gibt die Methode einen Wert vom genannten Datentyp zurück. Beispiel:

    public string GetHallo()
    {
        return "Hallo";
    }

    Die Methode GetHallo() gibt den String "Hallo" zurück.

    Zu deiner ursprünglichen zweiten Frage:

    Am 30.12.2016 um 15:52 schrieb Tician:

    2. Problem: der StreamReader sollte (wenn ich das richtig verstanden habe) auch bei einer Exception ein Close() bekommen, das ist mir aber hier nicht so möglich wie ich es wollte. Wie machen andere das?

    Ich habe mir mal den Code vom StreamReader angeschaut. Die Dispose()-Methode ruft Close() auf.
    Sprich, wenn du um den StreamReader ein using machst, wird automatisch Close() aufgerufen, wenn Dispose() aufgerufen wird.

    Hier mache ich aber auch erst mal schluss, da ich nicht weiß, ob du überhaupt verstehst, was ich hier geschrieben habe. Wenn du es verstanden haben solltest, kann ich noch was zu Klassen und Generics schreiben.

  19. vor 3 Minuten schrieb Tician:

    Das war doch nur ein Beispiel was in der Datei drin steht (und ich entziffern kann), da stehen Abkürzungen in dem Header mit denen ich nichts anfangen kann. Lass mich erstmal meine erste Klasse fertig machen und herumprobieren wie ich Variablen rumschieben kann, ich wäre ja schon froh das zu verstehen, du weißt gar nichts wie frustrierend das ist wenn man sich vornimmt das kleine 1x1 zu lernen und jemand anderes aber gleich in einen Rechenbereich mit 20 nullen hinter der Zahl vordringen möchte.

    Sorry, aber ich kann nichts dafür, wenn du mit dem großen 1x1 anfangen willst, auch wenn du das kleine nicht kannst.
    Dann muss ich sagen, dann ist das Projekt noch zu groß für dich. Dann fange mit kleineren Dingen an. Bei deinem Projekt brauchst du schon etwas mehr Übung und Erfahrung, um es wirklich auf die Beine stemmen zu können. Du hast vor, mehrere komplexe Themen zu bearbeiten und du verstehst nicht mal, wie man das erste Thema löst. 

    Dann kaufe ein Buch für Anfänger und arbeite es durch. So wird das einfach nichts.

  20. Ich verstehe deine Nummerierung nicht.
    Zuerst gibst du an, dass die CSV-Datei so aufgebaut ist:

    Datum, Packstück-Nummer, Auftrags-Nummer, Paketnummer, Bezeichnung, Menge, Lagerplatz

    Dann sagst du, dass du die siebte Nummer braucht und das wäre nach meiner Zählung "Lagerplatz".
    Wo kommt denn deine "7. Nummer her"? Von was?

  21. Das virtual könnte man auch weglassen. Ich schreibe es nur aus Gewohnheit hin, weil das NHibernate-Framework dies so möchte. Außerdem bietet es mir beim Testen gewisse Vorteile.

    virtual bedeutet, dass diese Eigenschaft mittels Vererbung überschreibbar ist. Für gewöhnlich sind Eigenschaften und Methoden in C# nicht überschreibbar. Wenn man in einer vererbten Klasse eine Eigenschaft oder Methode aber überschreiben möchte, so muss sie in der Basis-Klasse als virtual definiert werden. Beispiel:

        public class A
        {
            public virtual string Hallo
            {
                get { return "Hallo"; }
            }
        }
    
        public class B : A
        {
            public override string Hallo
            {
                get { return base.Hallo + " Welt"; }
            }
        }

    Die Eigenschaft Hallo in Klasse A liefert "Hallo" zurück, während die Klasse B "Hallo Welt" zurückliefert. 
    Die Klasse B überschreibt die Eigenschaft von Klasse A und ruft mit base.Hallo erst mal die Eigenschaft in Klasse A auf und modifiziert diesen Wert.

     

    vor einer Stunde schrieb Tician:

    Das Problem ist das ich mir da zu viel Mühe machen würde alles was mich an der ganzen Datei interessiert ist nur "die 5. Nummer jeder Zeile", der Rest bleibt wie er ist.

    Was ist denn die "5. Nummer jeder Zeile"? Welche Spaltenüberschrift besitzt dann diese Zeile?

  22. Ich nehme mal an, dass das aus der Logistik kommt. Ich kenne mich da mit den Begrifflichkeiten nicht aus. Ich nehme aber mal an, dass Daten aus deiner Firma sind. Die Daten stammen ja mit Sicherheit auch aus einer Datenbank, also muss das Kind bei euch ja einen Namen haben. Frage doch deinen Ausbilder. Spontan und ohne den Kontext zu kennen, würde ich aber behaupten, dass es sich hierbei um eine Kanban-Karte für einen Logistiker handelt, der mit diesen Informationen die Pakete packt.

    Unabhängig von dem Klassennamen kannst du aber dennoch schon den Inhalt der Klasse füllen:

    public class Xyz
    {
        public virtual DateTime Datum { get; set; }
        public virtual int PackstueckNummer { get; set; }
        public virtual int Auftragsnummer { get; set; }
        public virtual int Paketnummer { get; set; }
        public virtual string Bezeichnung { get; set; }
        public virtual int Menge { get; set; }
        public virtual string Lagerplatz { get; set; }
    }

    Für Xyz muss dann noch ein passender Name gefunden werden. Bei PackstueckNummer, Auftragsnummer, Paketnummer und Lagerplatz musst du dann mal schauen, ob die Datentypen richtig sind. Ich kenne die Daten nicht. Kann auch sein, dass Buchstaben erlaubt sind, dann müssen es Strings sein.

     

  23. Einfacher geht es kaum noch. Ich versuche es aber mal.
    Du hast eine For-Schleife. Im Kopf stehen folgende Informationen:

    • Die Zählervariable heißt i  => int i = 0
    • i wird mit 0 initialisiert => int i = 0
    • Die Schleife läuft so lange, wie i kleiner 5 ist => i < 5
    • Pro Schleifendurchlauf wird i um 1 erhöht => i++
      • Das bedeutet, du hast 5 Schleifendurchläufe

    bei jedem Schleifendurchgang wird folgende Logik angewendet:

    if (i == 3) {
        result += 10; 
      } else { 
        result += i; 
      }

    D.h. wenn i gleich 3 ist, dann wird auf result 10 addiert. Ansonaten i.

    Jetzt gehen wir die Durchläufe Schritt-für-Schritt durch:

    1. Durchlauf:
      i = 0, result = 0
      i ist nicht 3, also wird auf result 0 addiert. result ist 0; also: result = result + i = 0 + 0 = 0
    2. Durchlauf:
      i = 1, result = 0
      i ist nicht 3, also wird auf result 1 addiert. result ist 0; also: result = result + i = 0 + 1 = 1
    3. Durchlauf:
      i = 2, result = 1
      i ist nicht 3, also wird auf result 2 addiert. result ist 1; also: result = result + i = 1 + 2 = 3
    4. Durchlauf:
      i = 3, result = 3
      i ist 3, also wird auf result 10 addiert. result ist 3; also: result = result + 10 = 3 + 10 = 13
    5. Durchlauf:
      i = 4, result = 13
      i ist nicht 3, also wird auf result 4 addiert. result ist 13; also: result = result + i = 13 +4 = 17

    Beim 6. Durchlauf hätte i den Wert 5 und somit entspricht i nicht mehr der Bedingung, dass es kleiner als 5 ist und bricht die Schleife ab. result ist dann 17 und wird in der Konsole ausgegeben.

  24. Und wo genau liegt das Problem? Gehen wir mal die Schleife durch:

    i    result
    ------------------------------------
    0    result += 0	=>    result = result + 0	=>	result = 0 + 0 = 0
    1    result += 1	=>    result = result + 1	=>	result = 0 + 1 = 1
    2    result += 2	=>    result = result + 2	=>	result = 1 + 2 = 3
    3    result += 10	=>    result = result + 10	=>	result = 3 + 10 = 13
    4    result += 4	=>    result = result + 4	=>	result = 13 + 4 = 17

    Auf result wird pro Schleifendurchlauf immer i dazu addiert. Die Ausnahme ist, wenn der Zähler i bei 3 ist. Dann wird 10 draufaddiert. Der += operator ist nur eine Abkürzung

    result += i

    ist das selbe wie

    result = result + i

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...