Zum Inhalt springen

Whiz-zarD

Mitglieder
  • Gesamte Inhalte

    2.018
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    48

Alle Inhalte von Whiz-zarD

  1. Ja, Size() holt die Größe der Liste, um damit die Austrittsbedingung der for-schleife zu definieren. Heutzutage würde man das aber mit einer foreach-Schleife lösen.
  2. Was verstehst du denn dort nicht? Das ist eine Schleife, die über die Fillialen läuft. Innerhalb dieser Schleife gibt es eine weitere Schleife, die alle Mitarbeiter durchläuft und bei allen Mitarbeitern, die nicht Fillialleiter sind, wird das Gehalt erhöht.
  3. Stimmt. Hab die Klassen per Copy/Paste in Notepad++ erstellt. Also ohne IDE.
  4. Es ist halt dafür dar, um für Datentypen unterschiedlicher Art einen Eingangspunkt zu ermöglichen. z.B. einer formatierten Ausgabe von Strings: Console.WriteLine("Hallo {0}, ich bin {1} Jahre alt.", "Welt", 42); // Ausgabe: // Hallo Welt, ich bin 42 Jahre alt. "Welt" ist ein String (Objekt) und 42 ein Integer (Wertetyp). Damit die WriteLine()-Methode mit den unterschiedlichen Datentypen umgehen kann, nimmt sie ein object-Array entgegen (man sieht das Array nicht, wegen dem params-Schlüsselwort). D.h. die 42 wird in ein object konvertiert (boxing). Die Methode nimmt sich dies sogar zum Vorteil, da object die ToString()-Methode besitzt und die 42 kann direkt in ein String umgewandelt werden, da es ja nun ein object ist.
  5. Inzwischen schreibt man auch nicht mehr: Square square = new Square(...); sondern: var square = new Square(...); und überlasst den Kompiler den Rest. Die Angabe, um welchen konkreten Datentypen es sich handelt, ist nur eine doppelte Information, da wir mit new Square(...) schon den Datentyp kennen.
  6. Die abstrakte Klasse hat zwar keine Funktionalität, dennoch bräuchte ich neben dem Interface eine abstrakte Klasse, die die Color-Eigenschaft besitzt. Ohne diese abstrakte Klasse müsste ich weiterhin in den konkreten Klassen (Square und Circle) die Eigenschaft implementieren. Mit der abstrakten Klasse habe die Color-Eigenschaft nur ein mal implementiert und spare somit Code und potenzielle Fehlerquellen.
  7. Das Thema hat absolut nichts mit Boxing und Unboxing zu tun, denn Boxing und Unboxing ist was anderes. Boxing und Unboxing wird verwendet, um Wertetypen (integer, double, ...) in Objekte zu wandeln (boxing) und von Objekten wieder zurück in Wertetypen (unboxing). Beispiel für Boxing: int i = 123; object o = i; // boxing Beispiel für Unboxing: o = 123; i = (int)o; // unboxing So etwas wird verwendet, wenn man z.B. eine Liste mit unterschiedlichen Datentypen hat: var list = new List<object>(); In diese Liste kann dann alles reingeschrieben werden. Sei es z.B. Strings oder Integers. Das Thema, was @redstav anspricht, ist "Vererbung" und Vererbung ist die Haupteigenschaft der Objektorientierung. Abstrakte Klassen können nicht instanziert werden. Sie können nur vererbt werden, wie in dem Beispiel. Mit abstrakten Klassen können nämlich Grundgerüste geschaffen werden, die dann mit den Subklassen verfeinert werden können. Das Grundgerüst garantiert uns, dass die Subklassen die Eigenschaften und Methoden der abstrakten Klasse besitzt. Dein Beispiel finde ich aber nicht so toll, da es die abstrakten Klassen schlecht veranschaulicht. Ich versuche es mal mit einem anderen Beispiel: Angenommen wir wollen geometrische Figuren auf dem Bildschirm malen. Wir haben ein Quadrat und ein Kreis und wollen sie als Klassen abbilden. Beide Figuren sollen später mit einer Farbe ausgefüllt werden und sollen eine Methode besitzen, die dafür sorgt, dass die Figur auf dem Bildschirm gemalt wird. Fangen wir naiv an: public class Square { public double Width { get; } public Color Color { get; } public Square(double width, Color color) { this.Width = width; this.Color = color; } public void Paint() { // Malt Quadrat auf den Bildschirm } } public class Circle { public double Radius { get; } public Color Color {get; set;} public Square(double radius, Color color) { this.Radius = radius; this.Color = color; } public void Paint() { // Malt Kreis auf den Bildschirm } } Nun haben wir zwei tolle Klassen. Nun kommt die Vererbung ins Spiel: Wir sehen, dass der Aufbau beider Klassen dort recht identisch ist. Also können wir eine Grundgerüst - also eine abstrakte Klasse - bauen: public abstract class Shape { public Color Color {get; set;} public Square(Color color) { this.Color = color; } public abstract void Paint(); } public class Square : Shape { public double Width { get; } public Square(double width, Color color) : base(color) { this.Width = width; } public override void Paint() { // Malt Quadrat auf den Bildschirm } } public class Circle : Shape { public double Radius { get; } public Circle(double radius, Color color) : base(color) { this.Radius = radius; } public override void Paint() { // Malt Kreis auf den Bildschirm } } Square und Circle besitzen nun durch die Vererbung die Eigenschaften von Shape. Mit der abstrakten Paint()-Methode geben wir dann noch zusätzlich an, dass die Methode zwar in den Subklassen zur Verfügung steht aber die konkrete Implementierung in den Klassen Geschehen muss. So wird dann garantiert, dass alle Klassen, die von Shape erben, auch die Paint()-Methode besitzen. Dies ist jetzt nämlich vom Vorteil, denn wir wollen ja geometrische Figuren auf dem Bildschirm zeichnen. Derjenige, der jetzt dafür sorgt, dass die Figur auf dem Bildschirm gezeichnet wird, muss nämlich nicht wissen, ob es nun ein Quadrat oder Kreis ist, sondern muss nur wissen, dass sie vom Typ Shape sind: public class Screen { public void Paint(Shape shape) { shape.Paint(); } } Screen screen = new Screen(); Square square = new Square(12.5, Color.RED); Cirlce circle = new Circle(10, Color.BLUE); screen.Paint(square); screen.Paint(circle); Die Paint()-Methode in der Screen-Klasse muss also nicht den konkreten Datentyp (Square oder Circle) wissen (ansonsten müssen wir jeden Typ eine eigene Methode schreiben), sondern muss nur wissen, dass die Klasse vom Typ Shape sein muss, um die Paint-Methode aufrufen zu können. In den Klassen Square und Circle erkennt man auch, dass beide zwar vom Typ Shape sind aber beide haben unterschiedliche Eigenschaften. Einmal Width (Square) und Radius (Circle). Das sind Eigenschaften, die zwar die konkreten Klassen kennen aber Shape nicht: Shape s1 = new Square(10, Color.BLUE); Console.WriteLine(s1.Width); // funktioniert nicht, da wir angebenen haben, dass s1 ein Shape-Objekt ist und Shape Width nicht kennt. Square s2 = s1; Console.WriteLine(s2.Width); // funktioniert, da s1 ja ein Square ist und wir sagen, dass s2 ein Square ist.
  8. Und welches ominöse Tool für "Big Data" habt ihr installiert?
  9. Das hat doch aber absolut nichts mit Big Data zu tun... Big Data sind unstrukturierte Datenmassen aus unterschiedlichen Quellsystemen. Eine (No)-SQL-Datenbank kann nur eine von vielen Quellsystemen sein. Es kann aber auch die Bilder einer Überwachungskamera ein Quellsystem sein oder die Werte eines Sensors oder Log-Dateien, etc. All diese Daten werden in einem Cluster gespeichert und können dort verknüpft werden.
  10. Wieso will man dafür das Rad neuerfinden? Wenn es nur maximal 10 Benutzer sind, dann kann man auch Confluence kostenlos benutzen.
  11. Wie wäre es einfach mit einer Gruppe in einem der unzähligen Messenger? Wenn einer was schreibt, bekommen dies auch alle mit.
  12. Wann benötigt man dann die komplette Infrastruktur des Unternehmens, um irgendwas vorab zu testen? Für gewöhnlich testet man immer im kleinen Stil und wenn man es für gut empfunden hat, kann man es sich überlegen, dies auch im Unternehmen einzuführen. Niemand würde auf die Idee kommen an produktiven Systemen rumzuschrauben und zu experimentieren, sondern immer in einer kleinen Testumgebungen. Kein Arbeitgeber würde dir eine komplette Kopie der IT-Infrastruktur zum Test zur Verfügung stellen.
  13. Ich würde mal behaupten, dass man privat viel mehr Mittel zur Verfügung hat, als beruflich, da beruflich es um die Wirtschaftlichkeit geht. Da hat man nun mal nicht 4 Tage Zeit, um sich mal ein neues Framework oder eine neuen Webserver anzuschauen. Wenn es ein Problem gibt, dann muss es schnell gelöst werden und nicht schön. Also verwendet man die alten Paradigmen und Techniken weiter, weil die jeder kennt und zur Routine gehören. Da können die Paradigmen und Techniken auch ruhig veraltet und schlecht seien aber so hat man es dann immer gemacht und so versteht es auch jeder. Privat hat man aber die Zeit, mal andere Wege für ein Problem auszuprobieren. Wer sich also privat nicht weiterbildet, wird schnell zu den Entwicklern gehören, die den Anschluss verpasst haben.
  14. Man setzt doch keine Pattern ein, damit man hinterher sagen kann, dass man Patterns benutzt hat. Man setzt Patterns ein, weil man sie für ein bestimmtes Problem als nützlich erachtet hat und man stößt mit der Zeit auf die Patterns, wenn man nach Lösungen für bestimmte Probleme sucht. Niemand setzt sich hin und lernt ein Buch über Design Patterns auswendig. Es ist aber evtl. hilfreich sich ein Buch zu kaufen und mal darin zu stöbern.
  15. DSPs sind eigentlich dazu gedacht, das Signal zu verarbeiten. z.B. Frequenzfilterung, Implemtierung von Effekten (Echo, Hall, ...) oder Spracherkennung. Bei Techniken wie z.B. EAX oder A3D wurden DSPs in den Soundchip integriert aber aufgrund der Tatsache, dass sowas heutzutage CPU-seitig erledigt werden kann und es auch noch kaum standisierte Schnittstellen gibt, um Hardware-DSPs anzusprechen, bestehen Soundchips heutzutage überwiegend noch noch aus einem D/A-Wandler für die Ausgänge und ein A/D-Wandler für die Eingänge. Siehe dazu auch den AC'97- oder HD Audio-Standard von Intel.
  16. Heutzutage macht der Soundchip aber nichts mehr großartiges. Er koordiniert nur noch die Ein- und Ausgänge. Sowas, wie damals EAX oder A3D, macht heute die CPU und nicht mehr ein separater Teil des Soundchips. DirectSound wurde inzwischen auch schon aus DirectX rausgeworfen und gegen XAudio 2 ausgetauscht. XAudio 2 stellt programierbare DSPs bereit, die aber auf dem CPU ausgeführt werden. Das ist nur noch eine Sache des verbauten D/A-Wandlers. Ja, auf den teuren Soundkarten wird ein besserer D/A-Wandler verbaut, als bei Onboard-Chips, wer aber seinen Rechner per HDMI/Optical an einen Verstärker/A/V-Receiver anschließt, wird keinen besseren Klang haben, nur weil eine teure Soundkarte im Rechner werkelt, weil das Audiosignal 1:1 weitergeleitet wird. Und der Software-Equalizer, den man häufig findet? Berechnet die CPU und bei Onboard-Chips hat sie das schon immer getan. Damals war die CPU um die 20% nur mit dem Audiokram von Onboard-Chips ausgelastet und man sollte eine Soundkarte kaufen, um die CPU zu entlasten. Das fält heutzutage alles weg. Das ist eigentlich schon immer mit Boardmitteln möglich gewesen. Ich spreche da aus Erfahrung. Es gibt sehr viele Spieler, die einen USB-Kopfhörer nehmen, weil der Bass dort noch intensiver ist. Razor bringt doch jetzt auch Bluetooth-In-Ear-Kopfhörer für Gaming auf den Markt. Da Spielt der Soundchip auch keine Rolle.
  17. https://www.govdata.de/ http://opendata.cern.ch/ Aber sicher, dass du nicht "Big Data" einfach mit "große relationale Datenbank" gleichsetzt?
  18. Da Soundkarten ein sterbenes Geschäft sind, gebe ich deinem Lehrer recht. Heutzutage verwendet doch kaum einer noch Soundkarten. Leute, die mit ihrem PC ein Heimkino betreiben, werden den PC sowieso per HDMI oder Optischen Kabel an den A/V-Receiver/Verstärker angeschlossen haben und regeln den Sound darüber. Da macht eine Soundkarte keinen Sinn. Und Gamer? Naja, wenn sie sich von THX-Zertifikaten, Fernbedienungen und noch mehr Bass blenden lassen... Man sieht ja schon deutlich, dass der Markt stirbt. Alternate.de verkauft nur noch eine Hand voll Soundkarten und die besitzen Soundchips, die schon 8 (Creative Sound Core3D) oder 10 Jahre (Asus AV100) alt sind. Technologisch steht der Markt also still. Vielfach ist es doch schon so, dass selbst Gamer ein Kopfhörer mit USB-Anschluss benutzen. Da ist dann ein billiger Soundchip im Kopfhörer verbaut. Und im professionellen Tonstudio? Nun ja, da arbeitet man inzwischen auch schon hauptsächlich digital und die Hardware unterscheidet sich eigentlich nur noch, welche Anschlüsse die Karten besitzen, da es in diesem Sektor zig unterschiedliche Normen gibt. Die Verarbeitung übernimmt die Software. Hardware-mäßig passiert auch hier nicht mehr so viel. Das sieht man auch daran, dass DSP-Systeme (Digital Sound Processor) für Echtzeitverarbeitung den SHARC-Prozessor besitzen, der 1993 vorgestellt wurde. Bauteile? Naja, du hast einen D/A-Wandler und ein paar Kondensatoren für die Signalglättung. Anschlüsse? Im Heimbereich Klinke, Cinch, Coaxial und Optical. Früher waren die CPUs nicht so leistungsstark, sodass man die Soundverarbeitung in einen separaten Prozessor ausgelagert hat. Heutzutage ist es für eine CPU kein Problem mehr. Wenn du aber was über die Geschichte erzählen möchtest, dann vergiss aber nicht, den SID-Chip zu erwähnen.
  19. DevOps ist auch ein recht neuer Begriff, der sich erst mal etablieren muss, da viele Firmen mit diesem Begriff noch nicht viel anfangen können und so nach und nach begreifen müssen, wozu DevOps benötigt wird. Den Begriff gibt es auch erst seit 4 Jahren und Deutschland gehört auch nicht zu den schnellsten IT-Ländern. Ich gehörte damals auch zu den ersten Mechatronikern auf den Arbeitsmarkt. Damals kannte den Begriff auch niemand. Nicht mal die Firmen. Die haben entweder einen Schlosser oder Elektriker gesucht. Damals musste ich den Firmen noch erklären, was eigentlich ein Mechatroniker ist oder haben sich selbst erst mal erkundigt und waren immer wieder erstaunt darüber, dass den es Beruf Mechatroniker gab, da man sich nicht vorstellen konnte, dass man zwei Berufe in einem zusammengefügt hat. Heute ist der Begriff allgegenwärtig und hat z.B. den Beruf Schlosser gänzlich ersetzt. Deutschland ist auch noch mehr ein Land der Monolithen. Also ein großer Haufen Code, der alles kann, der noch On-Premise installiert wird. Außerdem ist hierzulande noch das Pflichten- und Lastenheft gegenwertig. Da ist CI/CD noch nicht so wichtig. Wenn man aber in Richtung agiler Softwareentwicklung denkt und den Kunden immer ein vollständiges Produkt zur Verfügung stellen möchte, dann wird CI/CD immer wichtiger und wir merken, dass es in unserem Umfeld (Banken) dies immer mehr zu einem Thema wird, da auch Banken immer mehr dazu verpflichtet werden, die Systeme auf den aktuellen Stand zu aktualisieren und sollen ihre individuelle Datenverarbeitung (IDV) abbauen. Da kommen dann inzwischen auch Themen wie SaaS oder FaaS. Und wie @bigvic schon sagte, wenn man deine Suche als Maßstab nimmt, dann wären auch FISIs eine Nische, da 10 mal so viele Entwickler gesucht werden, wie Systemintegratoren. Die Frage ist auch: Wie viele Personen für DevOps benötigt ein Unternehmen? Man benötigt vielleicht 40 Entwickler aber ggf. kommt man auch mit 3 DevOps aus. Das Team, dass bei uns mit CI/CD angefangen hat, besteht aus zehn Entwicklern und aus einer Person für DevOps. Wir dachten zuerst auch, dass dies die Entwickler mitübernehmen könnten aber es stellte sich heraus, dass es zu einer Vollzeitbeschäftigung wurde. Natürlich werden nicht so viele Personen für DevOps gesucht, wie für die Softwareentwicklung aber dennoch werden sie früher oder später benötigt.
  20. Ähm, nein. Es ist schon vielfach gelebte Realität. Wer z.B. Continous Integration und/oder Conutinous Deployment betreibt, kommt an DevOps gar nicht vorbei, da u.a. die Pipelines eingerichtet und gewartet werden müssen. Bei unseren neuen Produkten haben wir nun auch angefangen CI/CD einzuühren und merken selber, dass wir ohne eine Person für DevOps nicht mehr auskommen. Wir haben zuerst auch gedacht, dass die Entwickler es auch machen könnten aber es zeigt, dass man halt einfach jemanden braucht, der sich um die Maschinerie kümmert und das kann weder ein Entwickler noch ein Admin. Hat man damals beim Mechatroniker (Mechaniker und Elektroniker) auch gesagt und trotzdem hat es irgendwie geklappt. Ich finde schon, dass es durchaus sinnvoll sein könnte, beide FI-Fachrichtungen zu vereinen. Entscheidend ist, wohin man sich später spezialisert.
  21. @KeeperOfCoffee hat im Grunde nur meine Idee der Datenstruktur in Code umgesetzt. Beispiel: Du hast die Buchstaben "aahrstu" angegeben. Du musst also die Buchstaben zählen und die Anzahl der Buchstaben pro Buchstabe darstellen. Dafür bietet sich ein Dictionary an, was dann so aussieht: a => 2 h => 1 r => 1 s => 1 t => 1 u => 1 Nun durchläufst du alle Wörter und jedes Wort analysierst du ebenfalls auf die selbe Art und Weise, wie die angegebenen Buchstaben. Beispiel "Haus": h => 1 a => 1 u => 1 s => 1 Nun musst du beide Dictionaries miteinander vergleichen und zwar dürfen in dem Wort nur Buchstaben vorkommen, die man angegeben hat und zusätzlich darf die Anzahl der Buchstaben nicht der angegebenen Buchstaben überschreiten. ich hatte heute in der Bahn einige Stunden Zeit gehabt und hab die Aufgabe fertig. Ich wollte sie jetzt aber nicht präsentieren, da du die Aufgabe für dich selbst gestellt hast und ich es schade finden würde, wenn jemand vor dir die Lösung präsentieren würde.
  22. In vielen Berufen ist das seit über 10 Jahren normal. Die Ausbildungen werden nach und nach so umgestaltet, da sich dieses Prinzip sich bewährt hat, da man nun tieferes Wissen abfragen kann, da man beim zweiten Teil nicht mehr das abfragen muss, was im ersten Teil abgefragt wurde.
  23. Keine Ahnung, wie weit du schon bist aber wie viel Erfahrung du schon in der Softwareentwicklung hast aber schaue dir den Dijkstra-Algorithmus an: https://de.m.wikipedia.org/wiki/Dijkstra-Algorithmus
  24. Wäre vielleicht DevOps auch eine Möglichkeit für dich? Der Trend geht ja in Richtung SaaS, CI/CD, etc. und da benötigt man Menschen, die auch zwischen der Softwareentwicklungs- und IT-Betrieb-Welt agieren können.

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...