![Stefan Macke](/img/default-banner.jpg)
- Видео 58
- Просмотров 198 504
Stefan Macke
Германия
Добавлен 17 дек 2012
Impressum: impressum.macke.it
Hausaufgabe 13 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Deine Hausaufgabe:
Wenn die Technikerin schonmal im Haus ist, soll sie gleich
auch die Kasse der Kantine warten.
Lege ein Interface "Wartbar" an mit den Methoden "void schalteAn()",
"void schalteAus()" und "void fuehreWartungDurch()".
Lege eine neue Klasse "Kasse" an und lass sie das Interface implementieren.
Die Methode fuehreWartungDurch() kann z.B. diese Ausgabe erzeugen "Kasse: Ersetze Bonrolle".
Überschreibe die Methode toString() in Kasse mit einer sinnvollen Implementierung.
Lasse die Klasse Getraenkeautomat das Interface Wartbar implementieren.
Ändere die Methode warte() in Klasse Technikerin so, dass sie Wartbar als Parameter bekommt.
Lasse die Technikerin in der Main-Methode in Kantine...
Wenn die Technikerin schonmal im Haus ist, soll sie gleich
auch die Kasse der Kantine warten.
Lege ein Interface "Wartbar" an mit den Methoden "void schalteAn()",
"void schalteAus()" und "void fuehreWartungDurch()".
Lege eine neue Klasse "Kasse" an und lass sie das Interface implementieren.
Die Methode fuehreWartungDurch() kann z.B. diese Ausgabe erzeugen "Kasse: Ersetze Bonrolle".
Überschreibe die Methode toString() in Kasse mit einer sinnvollen Implementierung.
Lasse die Klasse Getraenkeautomat das Interface Wartbar implementieren.
Ändere die Methode warte() in Klasse Technikerin so, dass sie Wartbar als Parameter bekommt.
Lasse die Technikerin in der Main-Methode in Kantine...
Просмотров: 193
Видео
Interfaces (Teil 13) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 2362 месяца назад
In Teil 13 meines Kurses zu den drei Säulen der Objektorientierung geht es um Interfaces als Alternative zur Vererbung. Es ist wichtig, die Unterschiede zwischen Interfaces und Basisklassen zu kennen und ihre jeweiligen Vor- und Nachteile erklären zu können. Daher ist dies meine längste Episode im Kurs. Hier gibt es noch den Link zum "Diamantenproblem" bei der Mehrfachvererbung: fiae.link/Diama...
Hausaufgabe 12 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 892 месяца назад
Deine Hausaufgabe: Überschreibe die Methode toString() in Kaffeesorte und Softdrinksorte und implementiere sie wie getName(). Lösche die Methode getName() und korrigiere alle Aufrufe, indem du dich auf den automatischen Aufruf von toString() verlässt. Überschreibe die Methode toString() in Getraenkeautomat und rufe darin getBeschreibung() auf. Überschreibe die Methode toString() in Techikerin u...
Überschreiben von toString() (Teil 12) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1372 месяца назад
In Teil 12 meines Kurses zu den drei Säulen der Objektorientierung geht es um das Überschreiben der Methode toString() und die Funktionsweise von System.out.println(). Spoiler: Es wird um die Vertiefung der Polymorphie gehen! :-) Deine Hausaufgabe: Überschreibe die Methode toString() in Kaffeesorte und Softdrinksorte und implementiere sie wie getName(). Lösche die Methode getName() und korrigie...
Hausaufgabe 11 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 862 месяца назад
Deine Hausaufgabe: Ergänze die Klasse Getraenkeautomat um die Methoden "void schalteAn()" und "void schalteAus()", die z.B. ausgeben "KVA-007 ausgeschaltet". Erstelle eine neue Klasse "Technikerin" mit Attribute "Name" und Getter und Setter. Füge eine Methode "void warte(Getraenkeautomat getraenkeautomat)" hinzu. Implementiere die Methode so, dass die Technikerin ihren Namen sagt und die Wartun...
Polymorphie (Teil 11) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1672 месяца назад
In Teil 11 meines Kurses zu den drei Säulen der Objektorientierung geht es um die letzte Säule: die Polymorphie. Dieses Prinzip der Objektorientierung können viele Prüflinge nicht korrekt erklären. Daher werden wir uns nun intensiv damit auseinandersetzen. Deine Hausaufgabe: Ergänze die Klasse Getraenkeautomat um die Methoden "void schalteAn()" und "void schalteAus()", die z.B. ausgeben "KVA-00...
Hausaufgabe 10 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 712 месяца назад
Deine Hausaufgabe: Mache die Klasse Getraenkeautomat abstract. Mache die Methoden setFuellstand() und fuelleAuf() final. Füge eine abstrakte Methode "void fuehreWartungDurch()" hinzu. Implementiere die Methode in Kaffeeautomat (Ausgabe z.B. "KVA-007: Tausche Heizspirale aus") und Softdrinkautomat (Ausgabe z.B. "SDA-001: Fülle Kühlmittel nach"). Führe am Ende der Main-Methode in Kantine eine War...
abstract und final (Teil 10) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1302 месяца назад
In Teil 10 meines Kurses zu den drei Säulen der Objektorientierung geht es um zwei neue Schlüsselwörter zur Einschränkung der Vererbung: abstract und final. Mit abstract können wir Klassen als nicht instanziierbar kennzeichnen und Methoden ohne Implementierung erzeugen. Und mit final können wir Methoden als nicht überschreibbar kennzeichnen. Deine Hausaufgabe: Mache die Klasse Getraenkeautomat ...
Hausaufgabe 09 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 772 месяца назад
Deine Hausaufgabe: Überschreibe getBeschreibung() in Kaffeeautomat und Softdrinkautomat so, dass alle Informationen korrekt und spezifisch ausgegeben werden. Passe dafür auch getBeschreibung() in Getraenkeautomat an. 00:00 Einleitung 00:14 Bisheriger Stand 00:56 getBeschreibung() in Basisklasse ändern 01:29 getBeschreibung() überschreiben 01:56 super für Aufruf der Basisklasse 02:26 Verhalten e...
Überschreiben von Methoden (Teil 9) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1182 месяца назад
In Teil 9 meines Kurses zu den drei Säulen der Objektorientierung geht es um das Überschreiben von Methoden bei der Vererbung. Dabei wird in der Subklasse eine Methode mit der gleichen Signatur wie der einer Methode der Basisklasse angelegt. Dadurch kann die Subklasse das allgemeine Verhalten der Methode der Basisklasse um eigene Funktionalität erweitern. Deine Hausaufgabe: Überschreibe getBesc...
Hausaufgabe 08 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 722 месяца назад
Deine Hausaufgabe: Füge der Klasse Getraenkeautomat einen Konstruktur mit allen Attributen hinzu. Setze die Attribute im Konstruktor durch Aufruf der Setter. Mache den Setter für die Bezeichnung in Getraenkeautomat private. Rufe den Konstruktor der Basisklasse in Kaffeeautomat und Softdrinkautomat auf. 00:00 Einleitung 00:19 Konstruktor für Getraenkeautomat 02:08 Setter private machen 02:30 Kon...
super zum Zugriff auf die Basisklasse (Teil 8) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1192 месяца назад
In Teil 8 meines Kurses zu den drei Säulen der Objektorientierung schauen wir uns das Schlüsselwort super etwas genauer an und führen auch in der Basisklasse eine saubere Kapselung ein. Jede (!) Klasse sollte die Kapselung wahren, egal ob Basis-, Subklasse oder "normale" Klasse. Deine Hausaufgabe: Füge der Klasse Getraenkeautomat einen Konstruktur mit allen Attributen hinzu. Setze die Attribute...
Hausaufgabe 07 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1052 месяца назад
Deine Hausaufgabe: Mache die Setter und fuelleAuf() in Getraenkeautomat protected und die übrigen Methoden public. Mache die Setter in Kaffeeautomat und Softdrinkautomat private und die übrigen Methoden inkl. Konstruktoren public. Mache die Konstruktoren von Kaffeeautomat und Softdrinkautomat public. Verschiebe die Klasse Kantine in ein Unterpackage und stelle sicher, dass die Setter an den Aut...
Sichtbarkeit protected (Teil 7) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1362 месяца назад
In Teil 7 meines Kurses zu den drei Säulen der Objektorientierung führen wir einen neuen Sichtbarkeitsmodifizierer ein: protected. Damit können nur noch die Klasse selbst und ihre Subklassen Attribute oder Methoden sehen und sie nutzen. Eine wichtige Maßnahme zur Wahrung der Kapselung bei der Vererbung. Deine Hausaufgabe: Mache die Setter und fuelleAuf() in Getraenkeautomat protected und die üb...
Hausaufgabe 06 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1332 месяца назад
Deine Hausaufgabe: Erzeuge eine Klasse "Getraenkeautomat" und übernimm alle Attribute und Methoden aus der Klasse Kaffeeautomat. Entferne alle Referenzen auf die Kaffeesorte. Passe auch getBeschreibung() entsprechend an. Mache alle Methoden public. Lass die Klasse Kaffeeautomat von Getraenkeautomat erben und entferne den doppelten Code für Bezeichnung und Füllstand. Erzeuge eine Klasse "Softdri...
Vererbung (Teil 6) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 2142 месяца назад
Vererbung (Teil 6) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Hausaufgabe 05 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1332 месяца назад
Hausaufgabe 05 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Domänenspezifische Sprache (Teil 5) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 2122 месяца назад
Domänenspezifische Sprache (Teil 5) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Hausaufgabe 04 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1332 месяца назад
Hausaufgabe 04 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Enums statt Strings (Teil 4) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 2442 месяца назад
Enums statt Strings (Teil 4) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Hausaufgabe 03 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1603 месяца назад
Hausaufgabe 03 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Konstruktoren (Teil 3) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 2923 месяца назад
Konstruktoren (Teil 3) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Hausaufgabe 02 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1973 месяца назад
Hausaufgabe 02 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Getter und Setter (Teil 2) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 4093 месяца назад
Getter und Setter (Teil 2) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Hausaufgabe 01 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 3133 месяца назад
Hausaufgabe 01 - Objektorientierung: Kapselung/Vererbung/Polymorphie
Kapselung von Attributen und Methoden (Teil 1) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 8513 месяца назад
Kapselung von Attributen und Methoden (Teil 1) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Voraussetzungen (Teil 0) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Просмотров 1,1 тыс.3 месяца назад
Voraussetzungen (Teil 0) - Objektorientierung: Kapselung/Vererbung/Polymorphie
Virtualisierung und Containerisierung für die IT-Berufe (AP1)
Просмотров 3 тыс.5 месяцев назад
Virtualisierung und Containerisierung für die IT-Berufe (AP1)
Betriebsabrechnungsbogen (BAB) für die IT-Berufe (AP1 und AP2)
Просмотров 1,8 тыс.6 месяцев назад
Betriebsabrechnungsbogen (BAB) für die IT-Berufe (AP1 und AP2)
Handelskalkulation für die IT-Berufe (AP1)
Просмотров 6 тыс.7 месяцев назад
Handelskalkulation für die IT-Berufe (AP1)
Hab dich kürzlich entdeckt und bin sprachlos vor lauter dankbarkeit. Wie kann man nur so ein guter mensch sein und zugleich so gut und empathisch erklären können ❤ danke für Dein schaffen!
Hallo Stefan, vielen Danke für deine gute Erklärungen. Ich wollte fragen kann man sich diese drei Verhalten(Entry/do und Exit) als Methoden in einer klasse vorstellen ?
Ja, wenn du den Zustandsautomaten programmierst, würdest du die Aktionen als Methoden implementieren. Schau die mal das Design Pattern "State" an, da siehst du, wie man das lösen kann.
Das ist ein sehr schönes Lehrvideo zur Prüfungsvorbereitung, auch wenn ich zur objektorientierten Programmierung (OOP) aPie (ein Kuchen) (abstraction, polymorphism, inheritance, encapsulation) gelernt habe. Wer das Video zur Prüfungsvorbereitung sieht, möge bitte genau hier aufhören, meinen Kommentar weiter zu lesen und weiter das Video genießen, es ist WIRKLICH gut. OOP funktioniert nicht. Stellen wir uns vor, wir haben eine Firma (Objekt) mit Technikerinnen (Objekte) sowie eine Kantine (Objekt) mit Getränkeautomaten (Objekte). Das lässt sich ja noch schön einfach modellieren. Nun möchte die Kantine die Firma beauftragen, ihre Getränkeautomaten durch eine Technikerin warten zu lassen. Im echten Leben ein sehr einfacher Prozess, im OOP ist das schon fast unmöglich bzw. nur völlig absurd zu realisieren. Wie kommt jetzt die Technikerin an die Getränkeautomaten? Die Firma kann der Kantine keine Technikerin schicken, denn die Technikerin ist ein gekapselter Zustand der Firma. Ebensowenig kann die Kantine der Firma ihre Getränkeautomaten schicken, denn die Getränkeautomaten sind ein gekapselter Zustand der Kantine. Wir bekommen die beiden nur zusammen, wenn wir die Kapselung (und damit das Law of Demeter / OOP) aus dem Fenster werfen und vergessen. Das Problem lässt sich scheinbar lösen, indem die Firma der Kantine etwas schickt, das sich exakt genauso wie seine Technikerin verhält, aber gar nicht seine Technikerin ist (einen Klon). In der Kantine bekommt der Klon nun Klone der Getränkeautomaten zum warten, denn die echten sind ja ein gekapselter Zustand der Kantine. Gekapselt ist das aber trotzdem nicht, weil die Kantine jetzt einen Techniker-Klon hat, auf den die Firma aber noch Einfluss haben kann (Sie könnte eine Referenz auf den Klon behalten haben). Auch der Technikerinnen-Klon wartet nun Getränkeautomaten-Klone, auf die die Kantine immernoch Einfluss haben kann (Auch hier könnte die Kantine weiter Referenzen auf die Klone halten). Beide könnten die Klon-Objekte noch während des Wartungsprozesses verändern. Aber sind wir mal nett und tun so, als wären Firma und Kantine so verantwortungsvoll, ihre Klone nicht währen der Wartung selbst zu verändern ... Was nun passiert, hat mit guter Abbildung der Realität nichts mehr zu tun. Jetzt wartet der Ternikerinnen-Klon die geklonten Getränkeautomaten. Am Ende meldet der Technikerrinnen-Klon der Kantine: "Wenn ich deine Getränkeautomaten gewartet hätte, sähe das Ergebnis wie diese Klone hier aus". Anschließend kehrt der Technikerinnen-Klon in seine Firma zurück und meldet: "Wenn du eine Technikerin zur Wartung in die Kantine geschickt hättest, sähe sie so aus wie ich (Erschöpfung, aussehender Lohn ...)". Jetzt muss die Kantine all ihre gekapselten Getränkeautomaten anhand der Klone updaten, gleiches muss die Firma mit ihrer gekapselten Technikerin machen. Das klingt absurd und das ist es auch, dieses Vorgehen ist auch im Sinne von OOP schlicht falsch. Objekte sollen Nachrichten (Daten) austauschen, nicht aber Objekte. Die nächste Frage ist, wie denn die Kantine überhaupt zur Firma kommt, um mit ihr zu kommunizieren. Die Firma hat viele Kunden, kann also keine Eigenschaft der Kantine sein. Gleiches gilt andersherum. Wir brauchen also ein Gott-Objekt, welches die Kommunikation zwischen den beiden regelt. Über das größte Problem haben wir an der Stelle aber noch gar nicht gesprochen, die Wartung selbst. Die Wartung verändert sowohl die Technikerin als aus auch die Getränkeautomaten. Zu welchem Objekt soll die Wartung nun aber gehören? Technikerin ... Getränkeautomat? Sie gehört natürlich ins Gott-Objekt ... vielleicht irgendwas mit dem wenig sprechenden Thing-Namen ServiceleistungsService. In dem Moment, wo wir die Wartung in den ServiceleistungsService auslagern, sind wir aber so weit von anschaulicher Abstraktion der realen Welt entfernt, wie es überhaupt nur geht. Ein ServiceleistungsService ist absurd, soetwas gibt es im echten Leben nicht. Was OOP eigentlich verlangt ist, dass Objekte miteinander nur über Daten kommunizieren. Daten sind etwas unveränderliches. Die Firma schickt also gar keine Technikerin zur Wartung, sondern nur ihre Daten. Gleiches gilt für die Kantine, die nur die Daten ihrer Getränkeautomaten zur Wartung schickt. Jetzt stellt sich aber das nächste Problem. Die Wartung im ServiceleistungsService hat nur Daten; das heißt, Technikerin und Getränkeautomaten können absolut nichts, da sie keine Methoden haben und einfach nur Daten sind. Die Wartung muss jetzt also Kenntnis darüber haben, was eine Technikerin so alles nützliches kann und was man mit einem Getränkeautomat so alles anstellen kann. Wir müssen jetzt also irgendwo einen einen Funktionspark für Technikerinnen-Daten und Getränkeautomaten-Daten bereit halten, wie man es in funktionaler oder prozeduraler Programmierung auch tun würde. Die gekünstelte OOP-Lösung wäre nun eine Klasse mit (unveränderlichen!) Daten und Methoden, die nur neue Daten mit den alten Methoden erzeugen können, da die Daten der Klasse ja unveränderlich sind. Das sind dann aber keine Objekte mehr, da sie unveränderlich sind, diese Dinger sind zustandsfrei (immutable) und all ihre Metoden sind im Prinzip pure functions. Die Klasse ist jetzt de facto nicht mehr als ein Namespace, der Daten und die zugehörigen functions beinhaltet. Sie hat nichts mehr mit OOP zu tun, namespaces nichd nichts OOP-exklusives. Die Modellierung der realen Welt klappt im OOP nur auf einer makroskopischen Ebene gut, je tiefer man ins Detail geht, desto mehr zerbröselt der Ansatz. Gleiches gilt für Kapselung. Auch sie klappt umso weniger, je mehr man ins Detail geht, außer man verlässt irgendwann das OOP-Konzept und greift dort auf Vorgehensweisen prozeduraler / funktionaler Programmierung zurück. Dabei findet dann Kapselung aber gar nicht mehr statt. Wer jetzt doch aus Versehen bis hier hin gelesen hat, sei bitte nicht entmutigt oder enttäuscht. Auch wenn OOP als solches nicht funktioniert, die gängigen OOP-Sprachen funktionieren trotzdem und das auch richtig gut. Ich selbst bin seit vielen Jahren C#-Entwickler, liebe diese Sprache und will sie gegen keine andere austauschen. Die gängigen OOP-Sprachen zwingen mich aber auch nicht zu purem OOP.
Bester Mann :)
:-)
UML Diagramme haben defacto Rust Syntax ist mir aufgefallen
Oh, das kann sein! :-D
Ich finde es wäre noch hilfreich gewesen, etwas mehr auf die mathematischen Aspekte einzugehen, auf denen die jeweiligen Verfahren basieren.
Das ist sicherlich interessant - wenn man Informatik studiert. Aber für die Ausbildung im IT-Bereich ist dieses Hintergrundwissen nicht notwendig. Es geht hier mehr um die grundsätzliche technische Funktionsweise und vor allem die praktische Anwendung der Verfahren.
Vielen Danke Sie erklãren sehr gut
Danke, das freut mich! :-)
Ich habe heute Ihren Channel gefunden ich bin mehr als begeistert. Natürlich ein Abo dagelassen und auch Ihre Art und Weise, wie sie die Sachen erklären und erzählen macht es aus. Was mich aber schockiert hat, ist, dass Sie so wenig Abonnenten haben. Sie verdienen deutlich mehr. Weiter So 👍🏼
Danke, das freut mich. An den Abonnenten arbeite ich noch! ;-)
Wirklich Erstklasse erklärt, mir als Umschüler hilft es sehr🙏🏼✌🏻
Moin, wieso hast du 2 main methoden?
Um den doppelten Code im Autohaus und der Werkstatt zu demonstrieren. Aber das ist ja auch kein Problem und durchaus erlaubt.
Was währe wenn wir 6 Abteilungen mit 4 mit 32 mit 20 mit 48 mit 60 und mit 8 hosts haben
Das müsstest du ja jetzt selbst ausrechnen können! :-) Oder wo kommst du nicht weiter?
Als Umschülerin, die Deutsch nicht meine Muttersprache ist, habe ich total Stress für die IHK-Prüfung. Herzlichen Dank für Ihre hilfreichen Videos.
Das Problem habe ich auch. Am 27.06 habe ich meine Prüfung
Gern geschehen. Freut mich, wenn ich helfen kann. Viel Erfolg!
@@StefanMacke Sie haben mir mit Ihren Videos schon geholfen. Vielen lieben Dank 🙂
@@user-uh7zd9ir6r Danke, das freut mich.
Sehr hilfreich, Dankeschön
Danke für das Feedback. Freut mich, wenn ich helfen kann.
Hi Stefan, sehe ich das richtig, dass du den 2. Teil (ISO 25010) gar nicht reingestellt hast? Würde mich freuen!
Ne, der steht noch auf der ToDo-Liste :-)
Wunderbare Video ich hab 2 mal geschaut und notizen gemacht supi erklärkt danke danke danke!
Gern geschehen :-)
habe gestern die Projektpräsentation und das Fachgespräch erfolgreich gemeistert. da die podcasts und die youtube-videos wirklich zu jeder sehr gut geholfen haben, möchte ich auf diesem wege ein dickes danke sagen!!!
Das freut mich für dich! Herzlichen Glückwunsch! 🥳
Brauch man in einer Sterntopologie überhaupt CSMA/CD, die Verbindung zum Router oder Switch ist doch Duplex, oder nicht? CSMA/CA kommt doch bloß in WLAN Netzen zum Einsatz, oder etwa nicht? Also gibt es da kein besser oder schlechter, kommt auf die Netztopologie an.
Ja, da hast du recht! Wenn Kollisionen aufgrund der Topologie nicht auftreten können, kann man CSMA/CD auch abschalten. Siehe auch: de.wikipedia.org/wiki/Carrier_Sense_Multiple_Access/Collision_Detection#CSMA/CD_und_der_Duplex-Modus
Vielen lieben Dank für deine tollen und super verständlichen Videos! 🙏
Gern geschehen! :-)
Ich kommentiere selten, aber das ist mir ein Bedürfnis. Wirklich super erklärt, mit wichtigem Inhalt und aufs Wesentliche fokussiert, Vielen Dank!
Danke, das freut mich. :-)
Genau zur richtigen Zeit ❤
Freut mich! :-)
Hallo Stefan, vor zwei Tagen habe ich dir eine E-Mail geschrieben, kannst du bitte sie mal lesen?
Habe schon geantwortet. Sorry, ich mache das alles hier in meiner Freizeit, da kann ich nicht innerhalb weniger Stunden alles beantworten.
Your explanation was fantastic. You started from scratch, explaining virtual machines, then why we use containers, and finally delving into the specifics of containers themselves. It felt like a historical narrative. You answered many questions I had and clarified the reasons behind the technology. Great job!
Thank you for your feedback!
@@StefanMacke can't wait for the SQL Video :D
Könntest du das Hintergrundrauschen bei deinem nächsten Video mit Audacity & co. bitte herausfiltern? Ist echt nervig mit guten Kopfhörern.
Ich werde es versuchen.
Müste die 1NF nicht heißten: atomare Werte, keine wdh-Gruppen und Bestimmung eines Primärschlüssels? Weil es könnte ja sein, dass die Tabelle in der 0.ten NF, die vorliegt, keinen Primärschlüssel hat. Oder liege ich da falsch?
Den Primärschlüssel solltest du festlegen, das stimmt. Das ist aber nicht direkt Teil der Normalisierung, bei der es ja um die Vermeidung von Redundanzen geht. Und Schlüssel einzuführen verringert nicht die Redundanz. Dennoch ist das ein logischer Schritt, den du in der Praxis in der 1. NF durchführst.
@@StefanMacke Ah ok, danke 🙂👍
Vielen Dank für Deine Videos! Du ersetzt gerade unsere Dozenten in der Umschulung zum FiSi.
Danke für das Feedback! :-)
Thank you so much for making all those podcasts, and special thanks for making those videos. Your podcast was one of the many reasons I started my education, and in two weeks I'll have my exam in LF4 in school, so thanks for all your hard work. I truly appreciate everything.
Thanks for watching my content. I'm glad I could help. :-)
Wie macht man das bei Listing? Mit dem aktualisieren oben in das Verzeichnis
Genauso wie bei Bildern. Nur dass du die Listings-Beschreibung verwenden musst. Dann kannst du das Verzeichnis mit einem Rechtsklick aktualisieren.
Warum muss ich sowas lernen als ITler? Das weiß doch keiner mehr, wenn er erst mal im Job ist und diesen Kram die Buchhaltung macht.
Gewisse kaufmännische Grundlagen müssen halt alle Prüflinge kaufmännischer Berufe (und das sind die IT-Berufe nunmal) lernen. Über den BAB wird letztlich deine Hardware usw. vom Unternehmen kalkuliert.
Großes Lob. Didaktische Meisterleistung 🙂👍
Danke! :-)
Aber wenn man die Sub-Klassen auch im selben Package hat, wozu hat man denn überhaupt die Unterscheidung zw private-package und protected. Weil wir haben in unserem fall sogar extra die Klasse Autohaus in eine andere package verschieben müssen, um sie auszuschließen. Was für einen Mehrwert bringt dann die Wahl des protected gegenüber dem private-package?
Wenn andere Programme unsere Klassen erweitern wollen, werden sie vermulich nicht im gleichen Package liegen (können). Daher protected, damit alle Subklassen, egal in welchem Package sie liegen, auf die Member zugreifen können.
@@StefanMackeJa ok, das macht Sinn. Vorausgesetzt man möchte, dass jemand die Klasse erweitert. Da ich eine Umschulung zum FIAE mache, habe ich leider sehr wenig praktische Erfahrung. Wir lernen hauptsächlich nur die Konzepte des Programmierens vorerst. Dann kommt es wohl doch öfters vor, dass Dritte eine Klasse von einem erweitertern?!? Weil, wenn man nach dem Prinzip geht, dass man möglichst wenig Sichtbarkeit zulässt, wäre demnach Private-Package bei eigenen Implementierungen besser. Oder vererbt man in eigene Sub-Klassen in dem man sie üblicherweise in andere Packages packt? 🤔
@@thacreepwalk Naja, man selbst erweitert vermutlich eher die eigenen Klassen ala jemand anderes. Aber dabei nutzt man normalerweise auch Packages zur Strukturierung.
Aber wird in der JAVA_HOME Variable nur die neuste jdk als wert gesetzt und nicht das Eltern-Verzeichnis aller JDKs?
Ja. Die JAVA_HOME kann nur auf eine eindeutige Java-Version zeigen. Wenn du die Java-Version wechseln willst, musst du JAVA_HOME (und auch PATH) entsprechend umsetzen.
Ich bringe auch Ihrer Arbeit meinen tiefsten Respekt entgegen!
Danke!
Ich muss nochmal anmerken: Ein dickes fettes Dankeschön für den Aufwand und die Bereitstellung dieses Kurses - und gar die ganzen Bemühungen zur allgemeinen Qualitätssteigerungen der Ausbildungsinhalte! Grüße Marcel
Danke für das Feedback! Das freut mich sehr! ☺️
Danke für die super gute Erklärung mit Codierung 🙏
Sehr gerne 😊
Vielen Dank für das Video. Es wäre sehr hilfreich, wenn Sie auch Video über Streams und Datenstruktur machen würden. Danke im Voraus
Streams habe ich tatsächlich als nächstes vor!
tolles video btw
Danke :-)
ohhh jaaaa, automatentherorie kam schon bei uns im studium vor...... :D
Hehe :-) Hatte ich damals auch. Und jetzt das Ganze nochmal als UML-Diagramm.
@@StefanMacke die therorie aus der uni zu kennen hilft aber ungemein. denn all die dea's nea's, petrinetze und modellierung von informationssystemen. man weiss ziemlich schnell was los ist.
@@novatex8635 Das stimmt. Aber das Niveau der IHK-Aufgaben ist schon deutlich niedriger. An den Unis gibt es ganze Vorlesungen nur zu Automaten. Hier ist das nur eins von mehreren UML-Diagrammen.
@@StefanMacke das mag sein. alles muss man dazu sicher nicht wissen als fisi. es gibt btw eine sehr gute vorlesung hier auf youtube über automaten. einfach mal nach prof. dr. mauerer suchen. der mann macht das sensationell gut. ist vielleicht für interessierte interessant.
Hi, vielen Dank für die wirklich nützlichen Videos. Es gelingt Ihnen, dieses komplexe Thema und die Zusammenhänge sehr verständlich und nachvollziehbar zu erklären.
Das freut mich und war das Ziel! :-)
Was ist Laufzeit?
Laufzeit ist die Zeit der Ausführung des Programms im Kontrast zur Compilezeit, zu der der Compiler das Programm übersetzt.
Wird der Code, der zur Laufzeit ausgeführt wird, im Teil der Main-Methode gefunden?
Was geschieht während der Compilerzeit und was während der Laufzeit? Warum ist es nicht möglich, diese beiden Phasen zu vereinen?
@@HuiminLuo Ich versuche das mal zu beantworten auch wenn ich selber noch ein Lernender bin. Die Laufzeit kann man so verstehen das wenn ich ein Programm gestartet habe, zum Beispiel ein E-Mail Klienten und ich das geöffnete Fenster des Programms vor mir sehe und Dinge anklicken kann wie "Anworten, Senden, etc." dann läuft das Programm. Das ist die Laufzeit weil es läuft. Wenn ich nun auf zum Beispiel Senden klicke und das Programm stürzt ab oder gibt eine Fehlermeldung aus, dann ist das ein Laufzeitfehler. Der Fehler tritt während der Laufzeit auf. Die Kompilierzeit ist der Moment oder die Zeit in der der geschrieben Code in Maschinencode übersetzt wird damit der PC das Programm ausführen kann. Hier auftretende Fehler, aufgrund fehlerhafter Syntax, etc. führen zu einem Kompilierfehler. Dadurch wird die Kompilierung (Übersetzung) abgebrochen und das Programm kann gar nicht erst gestartet werden. Bitte verbessert oder ergänzt mich falls das nicht richtig ist.
@@Kintrax476 Danke! Es ist hier schwer nachzuvollziehen, da beide vom gleichen Quellcode übersetzt und ausgeführt werden, einige Codes jedoch erst während der Laufzeit ausgeführt werden. Das heißt, ohne Kompilierung( keine entsprechende Bytecode) kennt das Virtuell Maschinen trotzdem hier ?
Polymorphie in einer Vererbungsbeziehung... Zum Thema habe ich zu vielen Fragen... Es wäre schön, wenn du irgendwann über das Thema unter Berücksichtigung der Arbeitsspeicheransicht erklären könntest.
Sorry, ich verstehe nicht, was du meinst. Was hat der Arbeitsspeicher damit zu tun?
@@StefanMacke Entschuldigung, ich meinte mit Memory management.
@@HuiminLuo Ich weiß leider trotzdem nicht, was du dazu wissen möchtest.
Ich würde gerne verstehen, wie der Code ausgeführt wird. Können Sie erklären, welche Variablen und Parameter im Stack gespeichert werden und wann sie entfernt werden? Zudem interessiert mich, wann Referenzen im Heap erscheinen und wie sich Vererbung und Polymorphie auswirken. Wäre es möglich, dass Sie dazu ein Video erstellen, wenn Sie Zeit haben?
@@HuiminLuo Das hört sich zwar interessant an, ist aber wenig prüfungsrelevant. Daher werde ich mich erstmal auf andere Inhalte konzentrieren.
❤ Danke 🙏
Gern geschehen. :-)
Vielen Dank, Stefan! Es wäre toll, wenn ein weiteres Video erstellt werden könnte, das die Konfiguration von Eclipse behandelt.
Mh, was genau brauchst du denn da? Bis auf den Formatter habe ich eigentlich nichts ein-/umgestellt.
Ich möchte wissen, ob Eclipse ähnliche intelligente Funktionen für das automatische Vervollständigen von Code wie IntelliJ IDEA hat?
@@HuiminLuo Klar: STRG+Leertaste vervollständigt so ziemlich alles. Und STRG+1 macht das Quickfix-Menü auf.
Toll gemacht
Danke! :-)
Danke ❤
Gern geschehen! Ich hoffe, es ist alles nachvollziehbar erklärt.
Hey Stefan. Danke für die Vorlage. Ich nutze deine Vorlage für meine Projektarbeit, und habe die Form beibehalten (Damit ist der Aufbau und Gliederung der Doku gemeint) Inhaltlich wurde die Vorlage natürlich an mein Projekt angepasst. Ist das Problematisch oder muss ich die Vorlage komplett umkrempeln ?
Du musst deine Doku so schreiben, dass sie den Ablauf deines Projekts wiedergibt. Wenn der Aufbau der Vorlage dazu passt, ist doch alles ok!
Okay danke Ich muss die Vorlage in meinem Quellenverzeichnis angeben welche Seite nutze ich dafür am besten hast du einen direkten link zur Vorlage ?
@@hasimkocabey5825 Du kannst doch einfach die Seite nehmen, wo du sie gefunden hast! Ganz normal wie bei anderen Quellen auch.
Vererbung? Ist das nicht die Säule, die alles zum Einsturz bringt, wenn man sie zu stark belastet?
Hehe :-) Darauf gehe ich später noch ein.
@@StefanMacke Ich habe vor Jahren noch OOP gelernt nach dem Motto (Tier->Katze->Bengal) oder so ähnlich, aber ich hatte immer Probleme und hab nicht verstanden, warum. Vor ein paar Jahren hab ich Rust kennengelernt und bin darüber zur funktionalen Programmierung gekommen. Inzwischen ist der Anteil an OOP bei mir unter 10% und Vererbung geht gegen 0. Ich habe die funktionale Programmierung anfangs abgelehnt wie viele andere und auch überhaupt nicht verstanden. Es hat eine Weile gedauert, bis ich die Idee dahinter entschlüsselt habe. Dabei habe ich auch endlich meine Probleme mit OOP verstanden. Meine bevorzugten Sprachen sind inzwischen F# als Ersatz für Python und Rust für alles andere. Rust ist zwar keine funktionale Programmiersprache, nutzt aber viele Konzepte daraus und hat OOP größtenteils ignoriert.
@@MarkusBurrer Viele Sprachen entwickeln sich (zu recht) in Richtung FP. Aber OOP ist halt immer noch ein wichtiges Prüfungsthema und insg. noch deutlich verbreiteter in der Praxis. Daher erstmal die Videos zur OOP. FP könnte aber auch noch kommen! :-)
Vielen Dank für deine tollen Videos. Bin gerade up to date mit all deinen und freue mich darauf was noch kommt. 🎉
Gern geschehen. Knapp die Hälfte hast du jetzt. Ein bisschen was kommt noch. :-)
Darf ich fragen, woher Sie das mit dem Pfeil zwischen Akteur und Use-Case haben? Bis auf die gerichtete Assoziation sind Sie die erste Person, die ich das so machen sehe. Und sowohl IBM als der Vater der Use-Cases, noch die IHK oder Lehrbücher nutzen das, sondern lediglich eine nicht gerichtete Assoziation.
Ich habe die Diagramme mit PlantUML erstellt, da ist das der Standard. plantuml.com/use-case-diagram
👌🏼😍
Ein schönes Thema & gut erklärt. Ich würde dir empfehlen an deiner Audio-Qualität zu arbeiten :) Sonst super!
Finde die Audio-Qualität ganz gut. Habe damit keine Probleme😂
Danke fürs Feedback! Ich teste schon ein anderes Mikro. Das Lavalier ist leider zu leise und muss im Nachhinein verstärkt werden.
Danke! :-)