IT-Berufe-Podcast Archiv
214 Episoden
47 Minuten
Eine Kernaufgabe vieler Softwareentwickler - auch in der Abschlussprüfung - ist die Modellierung von Datenbanken. In der achtundvierzigsten Episode des Anwendungsentwickler-Podcasts gehe ich daher die Schritte bei der Modellierung von Datenbanken mit dem Entity-Relationship-Modell durch. TL;DR Ich zeige dir, wie du aus einer Aufgabenbeschreibung ein Entity-Relationship-Modell (ERM) entwickelst und seine Kardinalitäten bestimmst. Du erfährst, wie die Chen-Notation funktioniert, wie du Attribute den passenden Entitätstypen oder Beziehungen zuordnest und welche Angaben erst ins relationale Tabellenmodell gehören. An einer Telefonliste für Mitarbeiter:innen gehe ich ein schrittweises Vorgehen durch, mit dem du dein Datenmodell anschließend anhand konkreter Fälle prüfen kannst. Kapitelmarken [00:00:20] Datenbankmodelle in Ausbildung und Prüfung [00:01:39] Das ER-Modell als abstrakte Grundlage [00:02:49] Chen-Notation und Prüfungsrelevanz [00:03:57] Entitätstypen, Attribute und Beziehungen zeichnen [00:06:22] Attribute und Primärschlüssel kennzeichnen [00:07:05] Entitätstypen und konkrete Entitäten [00:07:39] Fremdschlüssel und Zuordnungstabellen im Tabellenmodell [00:09:46] Kardinalitäten in beiden Richtungen bestimmen [00:11:52] Beispiele für 1:1, 1:n und m:n [00:14:02] Kardinalitäten im ER-Modell eintragen [00:15:12] Weitere Beispiele mit Artikeln und Hunden [00:16:42] Crow’s-Foot-Notation und optionale Beziehungen [00:20:50] Schrittfolge zum Entwickeln eines ER-Modells [00:24:46] Attribute an Beziehungen und historische Preise [00:26:24] Prüfungsbeispiel: Telefonliste für Mitarbeiter:innen [00:28:19] Begriffe sammeln und Attribute zuordnen [00:31:52] Attribute ergänzen und Primärschlüssel festlegen [00:33:46] Beziehungen zwischen Mitarbeiter:in und Anschlusstyp [00:34:50] Telefonnummer als Beziehungsattribut [00:37:14] Übrige Begriffe prüfen und das ER-Modell zeichnen [00:39:17] Das Modell mit konkreten Fällen prüfen [00:41:14] Die Schrittfolge im Überblick [00:42:39] Ausblick auf das relationale Tabellenmodell [00:43:54] Literatur, Projektdokumentation und Java-Anfängerfehler [00:45:04] Kontakt, Feedback und Newsletter Inhalt Modellierung mit dem Entity-Relationship-Modell Welche Bestandteile hat ein Entity-Relationship-Modell (ERM) und wie sehen sie (in der Chen-Notation) aus? Entitätstypen (Rechtecke), Attribute (Ovale), Beziehungstypen (Striche mit Rauten) mit Kardinalitäten. Primärschlüssel werden unterstrichen. Fremdschlüssel sind nicht (!) enthalten. m:n-Beziehungen werden nicht (!) aufgelöst. Vorgehensweise bei der Bestimmung der Kardinalität einer Beziehung: Du musst für die Beziehung zwischen den beiden Entitäten in beide Richtungen separat (!) überlegen, wie viele Ausprägungen der anderen Entität zu einer Ausprägung der aktuellen Entität gehören. Also immer zwei (!) Sätze bilden, die mit "1" beginnen. Dann nimmst du die beiden Ergebnisse der jeweiligen Gegenseite und bist fertig. Beispiele: Ein Login ist genau einem (1) Benutzer zugeordnet. Ein Benutzer hat genau einen (1) Login. -> 1:1 Ein Artikel gehört zu einer (1) Warengruppe. Eine Warengruppe hat mehrere (n) Artikel. -> 1:n Ein Hund hat mehrere (m) Herrchen. Ein Herrchen hat mehrere (n) Hunde. -> m:n Wie funktioniert die crow's foot notation? Anstatt die Anzahl (0, 1, n, 0..1 usw.) der zugehörigen Datensätze an die Beziehung zu schreiben, wird eine grafische Darstellung verwendet. Die Beziehungslinien werden um 0, 1 oder den Krähenfuß (n) ergänzt. Wie kommt man zu einem ER-Modell? Substantive im Aufgabentext (bzw. der Domäne) suchen. Sie sind potentielle Entitätstypen. Ggfs. konkrete Werte in abstrakte Konzepte übersetzen (z.B. Mercedes in Auto oder gelb in Farbe) und Substantive ergänzen. Beschreiben die Substantive andere Substantive werden sie zu Attributen. Die beschriebenen Substantive sind dann Entitätstypen. Ggfs. sinnvolle/notwendige Attribute ergänzen (z.B. Vorname und Nachname bei Personen). Primärschlüssel kennzeichnen und ggfs. ergänzen. Beziehungen zwischen Entitätstypen einzeichnen und Kardinalitäten festlegen. Ggfs. Attribute an die Beziehungen hängen. Restliche Substantive sinnvoll als Attribute einsortieren oder streichen. Fertiges Datenmodell mit Beispielen aus der Praxis verifizieren. Literaturempfehlungen Einsteigern ins Thema Datenmodellierung empfehle ich die Artikelreihe von Dr. Veikko Krypczyk im Entwickler Magazin. Der erste Artikel ist frei verfügbar: Datenbanken: Grundlagen und Entwurf - entwickler.de. Das Beispiel (Telefonliste) für den Algorithmus zum Erstellen eines Entity-Relationship-Modells habe ich aus einem der Prüfungstrainer für die Abschlussprüfung*. * Ein tolles Buch, um einmal über den Tellerrand der relationalen Datenbanken hinweg zu schauen, ist Seven Databases in Seven Weeks*. Eine relationale Datenbank (PostgreSQL) wird vorgestellt, aber der Rest des Buches behandelt die unterschiedlichsten Typen von (NoSQL-)Datenbanken und ihre Besonderheiten - gerade auch ber der Datenmodellierung. Absolut lesenswert für jeden Softwareentwickler. * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Chen-Notation – Wikipedia Entity-Relationship-Modell – Wikipedia Martin-Notation – Wikipedia (crow's foot notation) Letzte Woche im Blog: Projektdokumentation von Michael Kleimann (mit 92% bewertet) inkl. Projektantrag Die häufigsten Anfängerfehler bei der Java-Programmierung Zusammenfassung Daten mit einem ER-Modell beschreiben Wenn du als Fachinformatiker:in für Anwendungsentwicklung Software schreibst, brauchst du häufig eine Datenbank. Ich gehe mit dir den Weg von einer Aufgabenbeschreibung zu einem Entity-Relationship-Modell (ERM) durch. Dieses abstrakte Modell beschreibt die Daten einer Domäne und ihre Beziehungen. Es kann als Grundlage für eine relationale Datenbank dienen, ebenso für einen Key-Value-Store oder eine dokumentenorientierte Datenbank. In der schriftlichen Abschlussprüfung werden häufig ER-Modelle oder Tabellenmodelle verlangt. Auch im Fachgespräch können Prüfer:innen nachfragen, wie du Daten modellierst. Achte deshalb auf die geforderte Darstellungsform und ihre Regeln. Chen-Notation lesen und zeichnen Die nach Peter Chen benannte Notation stammt aus den 1970er Jahren. Ihre Zeichen kannst du so einsetzen: Rechtecke stellen Entitätstypen dar, beispielsweise Mitarbeiter:in. Ovale enthalten Attribute und sind mit dem jeweiligen Entitätstyp verbunden. Rauten bezeichnen Beziehungen zwischen Entitätstypen. Den Primärschlüssel kennzeichnest du, indem du den Namen des Attributs unterstreichst. Bei Mitarbeiter:innen kann das die Personalnummer sein. Eine Beziehung sollte sich in beide Richtungen lesen lassen. Eine einfache Bezeichnung wie "hat" kann dafür ausreichen: Ein:e Vorgesetzte:r hat Mitarbeiter:innen; ausgehend von einer beschäftigten Person lässt sich die zugehörige Führungskraft bestimmen. Mit dem Entitätstyp Mitarbeiter:in beschreibst du eine allgemeine Struktur. Eine Entität ist eine konkrete Person, etwa ich als Mitarbeiter. Aus der Objektorientierung kennst du das entsprechende Prinzip von Klasse und Objekt. Fremdschlüssel und Zuordnungstabellen für m:n-Beziehungen gehören ins relationale Tabellenmodell. Im ER-Modell stellst du die Beziehungen direkt dar. Dadurch bleibt das Modell unabhängig davon, in welcher Datenbank du es später umsetzt. Kardinalitäten bestimmen Um eine Beziehung zu beschreiben, gehst du jeweils von einer einzelnen Entität aus und prüfst beide Richtungen getrennt. Entscheidend ist, wie viele zugehörige Entitäten nach den fachlichen Regeln möglich sind. Die erlaubten Möglichkeiten gelten auch dann, wenn gerade erst wenige Datensätze vorhanden sind. | Kardinalität | Beispiel | | --- | --- | | 1:1 | Ein:e Benutzer:in hat genau einen Login, der genau dieser Person gehört. | | 1:n | Ein:e Vorgesetzte:r kann mehrere Mitarbeiter:innen haben. Jede beschäftigte Person hat im angenommenen hierarchischen Unternehmen genau eine Führungskraft. | | m:n | Ein:e Lehrer:in kann mehrere Klassen unterrichten. Zu einer Klasse können mehrere Lehrer:innen gehören. | Bei einer Warengruppe mit mehreren Artikeln ergibt sich ebenfalls eine 1:n-Beziehung, sofern jeder Artikel genau einer Warengruppe zugeordnet ist. Die Aufgabenbeschreibung entscheidet, ob ein Artikel mehreren Gruppen angehören darf. Für m:n lässt sich auch die Beziehung zwischen Hunden und Halter:innen verwenden. Die Kardinalität schreibst du an das Ende der Beziehungslinie beim gegenüberliegenden Entitätstyp. Wenn eine Führungskraft mehrere Mitarbeiter:innen haben kann, steht das n bei Mitarbeiter:in. Die 1 an der Seite der Führungskraft beschreibt, wie viele Vorgesetzte zu einer beschäftigten Person gehören. Crow’s-Foot-Notation Mit der Crow’s-Foot-Notation, auch Martin-Notation genannt, kannst du zusätzlich ausdrücken, ob eine Beziehung optional oder verpflichtend ist: Ein Kreis steht für null. Ein Querstrich bezeichnet eins. Ein Krähenfuß bedeutet mehrere. Kombinierte Zeichen beschreiben Bereiche wie 0 bis 1, 0 bis n oder 1 bis n. Genau eins lässt sich ebenfalls darstellen. Die Zeichen stehen am jeweiligen Zielende der Beziehungslinie. Wenn ein Hund mindestens eine:n Halter:in haben muss und mehrere haben darf, stehen bei Halter:in ein Querstrich und ein Krähenfuß. Für Prüfungen ist vor allem entscheidend, dass deine Darstellung verständlich ist und zur Aufgabe passt. Eine ausdrücklich geforderte Notation hältst du ein. Einheitliche Zeichen helfen anderen Informatiker:innen, dein Modell zu lesen. Schrittweise von der Aufgabe zum ER-Modell Ich arbeite beim Entwickeln eines ER-Modells mit folgender Schrittfolge: Alle Substantive sammeln: Schreibe die Nomen aus dem Aufgabentext zunächst vollständig auf. So behältst du auch Begriffe im Blick, deren Rolle noch unklar ist. Konkrete Werte verallgemeinern: Aus "gelb" wird beispielsweise Farbe. Namen aus einer Beispieltabelle führen zu den Begriffen Vorname und Nachname. Attribute zuordnen: Prüfe,...
39 Minuten
Eine der häufigsten Fragen im Fachgespräch ist die nach der Zusammensetzung des Stundensatzes, der in fast allen Abschlussprojekten als zentraler Kostenfaktor angeführt wird. In der siebenundvierzigsten Episode des Anwendungsentwickler-Podcasts wird der Stundensatz daher ausführlich besprochen. TL;DR In meinem Prüfungsausschuss gehört die Frage nach dem Stundensatz zu den häufigen Themen im Fachgespräch. Für dein Abschlussprojekt berechnest du die Kosten deiner Arbeitszeit aus der Brutto-Ausbildungsvergütung, den Personalnebenkosten und den anteiligen Gemeinkosten; bei einem externen Auftrag kommt je nach Unternehmen ein Gewinnzuschlag dazu. Dazu solltest du erklären können, wie du die verfügbaren Arbeitsstunden ermittelst und Gemeinkosten verteilst, sowie mit Zuschlagskalkulation, Betriebsabrechnungsbogen und den Grundlagen der Preisrechnung vertraut sein. Kapitelmarken [00:00:01] Einstieg und Informationen zum Fachgespräch [00:00:38] Die Frage nach dem Stundensatz [00:00:59] Projektkosten und Amortisation [00:02:59] Kosten der Arbeitszeit berechnen [00:04:45] Bestandteile des Stundensatzes [00:06:48] Interner und externer Stundensatz [00:07:37] Rechenbeispiel zur Ausbildungsvergütung [00:09:08] Personalnebenkosten und freiwillige Leistungen [00:10:45] Sozialversicherung und Einzugsstellen [00:12:19] Einzelkosten und Gemeinkosten [00:16:28] Beispiele für Gemeinkosten [00:18:12] Zuschlagskalkulation [00:21:37] Gewinnzuschlag, Skonto und Rabatt [00:24:37] Handelskalkulation [00:25:58] Betriebsabrechnungsbogen und Kostenstellen [00:28:53] Gemeinkosten mit passenden Schlüsseln verteilen [00:29:52] Gemeinkostenzuschläge im Stundensatz [00:31:43] Gewinn und kalkulatorischer Unternehmerlohn [00:33:19] Fixkosten und variable Kosten [00:34:33] Den Stundensatz im Fachgespräch begründen [00:35:19] IT-Handbuch und weiterführende Links [00:35:56] Git-Tipps und Vorstellung des Ausbildungsbetriebs [00:37:15] Kontakt, Feedback und Checklisten [00:38:21] Ausblick auf die Datenbankmodellierung Inhalt Stundensatz Wie setzt sich normalerweise (!) ein Stundensatz zusammen? Bruttogehalt Personalnebenkosten Gemeinkosten Gewinn Welche Personalnebenkosten gibt es? Personalnebenkosten aufgrund gesetzlicher und tariflicher Bestimmungen: Arbeitgeberanteil zur Sozialversicherung, Beiträge zur Berufsgenossenschaft, Aufwand nach dem Schwerbehindertengesetz und Mutterschutzgesetz, bezahlte Abwesenheit wie Urlaub, Feiertage, Krankheitstage, Aufwand nach dem Betriebsverfassungsgesetz. Personalnebenkosten aufgrund freiwilliger Leistungen: Aus- und Fortbildung, Altersversorgung, Werksverpflegung, sonstiger freiwilliger Sozial- und Personalaufwand. Wer bekommt die Sozialabgaben überwiesen? Einzugstelle (Krankenkasse); die überweist es weiter an die Sozialversicherungsträger. Unfallversicherung an die Berufsgenossenschaft. Was sind Gemein- und Einzelkosten? Einzelkosten können einem Kostenträger direkt zugeordnet werden, Gemeinkosten werden über Zuschlagssätze verteilt. Was sind übliche Gemeinkosten? Miete oder Pacht, Steuern und Kapitalkosten (Zinsen), Kosten für die IT, für Telefon, Versicherungen oder für Werbung, Abschreibungen Wie berechnet man die Gemeinkostenzuschlagsätze? Mit der Zuschlagskalkulation oder dem Betriebsabrechnungsbogen. Wird bei einem internen Stundensatz auch Gewinn aufgeschlagen? Nein, denn über den kalkulatorischen Unternehmerlohn werden die Bezüge der Geschäftsführer bereits erwirtschaftet. Was sind fixe und variable Kosten? Fixe Kosten fallen immer an, variable nur wenn produziert wird. Literaturempfehlungen Wie schon bei der Erläuterung der Gehaltsabrechnung kann ich wieder nur das IT-Handbuch* (auch "Tabellenbuch" genannt) empfehlen. Es handelt sich beim Stundensatz erneut um ein Wirtschaftsthema, das man auswendig lernen und gut in Tabellen darstellen kann. * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Check: Berechnung des Stundenverrechnungssatzes | BMWi-Existenzgründungsportal Stundensatzkalkulation - Wie einen Stundensatz berechnen? Definition » Personalnebenkosten « | Gabler Wirtschaftslexikon Lohnnebenkosten – Wikipedia Sozialversicherungsträger – Wikipedia Zuschlagskalkulation – Wikipedia Betriebsabrechnungsbogen – Wikipedia Weitere Infos zum FachgesprächDu suchst noch mehr Tipps rund um das Fachgespräch? Dann schau doch mal in diese Artikel- und Podcast-Kategorie: Alle Artikel rund um das Fachgespräch.Kennst du schon meine Hörbücher zur Vorbereitung auf das Fachgespräch? Unter dasperfektefachgespraech.de kannst du sie herunterladen. In insg. über 10 Stunden gehe ich über 200 Fragen im Detail durch und gebe Tipps für die Beantwortung.Und wenn du dich für meinen Newsletter einträgst, bekommst du immer direkt alle Neuigkeiten von dieser Seite in dein Postfach geliefert.Jetzt anmelden! Zusammenfassung Die Kosten deiner Projektarbeit berechnen In meinem Prüfungsausschuss wird häufig gefragt, wie sich der Stundensatz im Abschlussprojekt zusammensetzt. Als Fachinformatiker:in brauchst du dafür kaufmännisches Wissen, weil dein Projekt einen wirtschaftlichen Zweck erfüllt. Wenn es beispielsweise Kosten senkt oder höhere Umsätze ermöglicht, kannst du berechnen, wann es die entstandenen Kosten wieder einspielt. Dafür steht der Begriff Amortisation. Deine Arbeitszeit verursacht Kosten für den Ausbildungsbetrieb. Im Rechenbeispiel dieser Episode umfasst das Projekt 70 Stunden. Über den Stundensatz lässt sich ausrechnen, welchen Betrag du dafür in deiner Projektplanung ansetzt: Kosten der Projektarbeitszeit = Projektstunden × Stundensatz Die Ausbildungsvergütung bildet dabei einen Teil der Kosten ab. Dein Betrieb bezahlt außerdem weitere Leistungen und trägt Kosten für das Umfeld, in dem du arbeitest. Im Fachgespräch solltest du die Bestandteile des angesetzten Stundensatzes begründen können. Welche Bestandteile in den Stundensatz eingehen Bruttogehalt beziehungsweise Brutto-Ausbildungsvergütung: Dieser Betrag bildet die Grundlage für die Kosten deiner Arbeitszeit. Personalnebenkosten: Dazu gehören unter anderem die Sozialbeiträge des Arbeitgebers sowie gesetzliche, tarifliche und freiwillige Leistungen. Gemeinkosten: Kosten, die im Unternehmen für mehrere Leistungen oder Produkte anfallen, werden anteilig eingerechnet. Gewinnzuschlag: Bei einem Auftrag für Kund:innen wird abhängig vom Unternehmen zusätzlich Gewinn einkalkuliert. Für ein internes Projekt berechnest du einen internen Stundensatz, der die anfallenden Kosten abdeckt. Ein externer Stundensatz bestimmt, was dein Unternehmen Kund:innen für eine Arbeitsstunde berechnet. Wenn das Unternehmen Gewinn erzielen möchte, fließt dieser in den Preis ein. Gemeinnützige Organisationen können sich auf das Decken ihrer Kosten beschränken. Die Vergütung auf Arbeitsstunden umrechnen Für die Rechnung gehst du vom Bruttobetrag aus, den dein Arbeitgeber bezahlt. Als Grundlage eignen sich die tatsächlich verfügbaren Arbeitsstunden eines Jahres. Dabei berücksichtigst du Urlaub und Krankheitstage. Je nach Arbeitsverhältnis kommen Zuschläge hinzu, etwa für Nachtarbeit oder anders vergütete Überstunden. Den auf eine Stunde entfallenden Bruttobetrag erhältst du, indem du die Vergütung für den betrachteten Zeitraum durch die zugehörigen Arbeitsstunden teilst. Für mein vereinfachtes Beispiel setze ich 1.000 Euro Ausbildungsvergütung im Monat an. Bei 38,5 Stunden pro Woche und angenommenen vier Arbeitswochen ergeben sich 154 Stunden. Daraus folgen etwa 6,50 Euro pro Stunde. Für 70 Projektstunden sind das gerundet 450 Euro, bevor weitere Kosten eingerechnet werden. Dieses Beispiel vereinfacht die verfügbaren Arbeitsstunden bewusst. Personalnebenkosten einrechnen Zusätzlich zur Vergütung fallen für deinen Arbeitgeber unter anderem folgende Kosten an: Arbeitgeberanteile zur Renten-, Arbeitslosen-, Pflege- und Krankenversicherung; Beiträge zur Unfallversicherung, die der Arbeitgeber allein trägt; Aufwendungen aufgrund gesetzlicher Vorgaben, beispielsweise zum Mutterschutz oder nach dem Betriebsverfassungsgesetz; Kosten im Zusammenhang mit bezahlten Ausfallzeiten, etwa Feiertagen; freiwillige Leistungen wie Fortbildungen, betriebliche Altersversorgung oder Zuschüsse zur Kantine. Bei Fortbildungen zählt auch die Zeit, in der ein:e Mitarbeiter:in bezahlt wird und an einer Schulung teilnimmt. Welche Leistungen einfließen, hängt vom jeweiligen Unternehmen ab. Eine mögliche Anschlussfrage im Fachgespräch betrifft die Stelle, an die der Arbeitgeber die Sozialbeiträge überweist. Die gesetzliche Krankenkasse dient als zentrale Einzugsstelle und verteilt die Beiträge an die zuständigen Sozialversicherungsträger weiter. Beiträge zur Unfallversicherung gehen üblicherweise an die Berufsgenossenschaft. Einzelkosten und Gemeinkosten zuordnen Einzelkosten lassen sich einem Kostenträger direkt zuordnen, beispielsweise einem bestimmten Produkt. Bei einem Stahlträger kann das die Menge an Eisenerz sein, die für ihn gebraucht wird. Auch Arbeitskosten können direkt zugeordnet werden, etwa wenn ein:e Mitarbeiter:in nach Stückzahl oder Stunden bezahlt wird. Bei einem festen Gehalt ist diese Zuordnung schwieriger. Gemeinkosten werden über passende Schlüssel oder Zuschläge verteilt. Dazu zählen beispielsweise: Miete oder Pacht für Gebäude; Energie sowie Telefonkosten; Steuern und Zinsen; Abschreibungen auf Anlagegüter, etwa Maschinen oder Firmenwagen; Kosten für interne Abteilungen wie Personal, Rechnungswesen oder IT; Versicherungen und Werbung. Wenn eine Halle monatlich 1.000 Euro Miete kostet und darin zehn Stahlträger gefertigt werden, lassen sich in einem einfachen Beispiel jedem Stahlträger 100 Euro Miete zurechnen. Mit der Zuschlagskalkulation rechnen Bei der Zuschlagskalkulation gehst du schrittweise entlang des Ablaufs im Unternehmen vor: Du beginnst mit den Materialeinzelkosten, beispielsweise für Eisenerz. Materialgemeinkosten kommen hinzu, etwa die Miete für ein Materiallager. ...
34 Minuten
Der Wirtschaftsteil der Ausbildung wird von vielen Prüflingen unterschätzt. Es wird Zeit, die häufigsten Wirtschaftsfragen im Fachgespräch zu besprechen. Die sechsundvierzigste Episode des Anwendungsentwickler-Podcasts behandelt die Gehaltsabrechnung. TL;DR Für dein Fachgespräch als Fachinformatiker:in Anwendungsentwicklung empfehle ich dir, auch Wirtschaftsfragen vorzubereiten: Du solltest deine Gehaltsabrechnung vom Bruttoentgelt bis zum ausgezahlten Betrag erklären können. Dazu gehören die Steuern und die fünf Sozialversicherungen mit ihren Beitragssätzen sowie den Anteilen, die Arbeitgeber:in und Arbeitnehmer:in tragen. Wenn du zunächst einen Überblick gibst und anschließend die einzelnen Posten vertiefst, bekommt deine Antwort einen nachvollziehbaren Aufbau. Die genannten Zahlen beziehen sich auf 2016. Kapitelmarken [00:00:01] Einstieg ins Fachgespräch [00:00:43] Wirtschaftsfragen in der IT-Abschlussprüfung [00:01:49] Gehaltsabrechnung als Grundlage für den Stundensatz [00:02:58] Antworten im Fachgespräch strukturiert aufbauen [00:05:06] Brutto und Netto [00:06:40] Lohn und Gehalt [00:07:59] Ausbildungsvergütung für IT-Azubis [00:08:26] Beitragsbemessungsgrenze [00:10:04] Versicherungspflichtgrenze und Krankenversicherungspflicht [00:12:26] Gesetzliche und private Krankenversicherung [00:15:33] Gehaltsabrechnung und IT-Handbuch [00:16:44] Vom Bruttoentgelt zum ausgezahlten Betrag [00:18:03] Vermögenswirksame Leistungen [00:19:02] Welche Details im Fachgespräch gefragt werden [00:20:22] Lohnsteuer und Steuerklassen [00:22:09] Solidaritätszuschlag und Kirchensteuer [00:23:17] Rentenversicherung und Arbeitgeberanteile [00:24:49] Krankenversicherung und Zusatzbeitrag [00:25:20] Arbeitslosenversicherung [00:25:36] Pflegeversicherung und Kinderlosenzuschlag [00:26:43] Gesetzliche Unfallversicherung [00:27:50] Wirtschaftsfragen für die Prüfung vorbereiten [00:29:19] Ausblick auf Stundensatz und Projektkosten [00:29:58] Literatur und aktuelle Beitragssätze [00:31:03] Zeitrahmen der Abschlusspräsentation [00:31:24] Oath of the Programmer und Pfadfinderregel [00:32:37] Links empfehlen und Feedback geben [00:33:27] Newsletter und Checkliste zur Projektarbeit Inhalt Allgemeines Was ist der Unterschied zwischen Netto und Brutto? Netto ist ein Teil des Brutto. Was ist der Unterschied zwischen Lohn und Gehalt? Gehalt ist unabhängig von der erbrachten Leistung und somit jeden Monat gleich hoch. Welches Arbeitsentgelt erhält ein Azubi? Ausbildungsvergütung. Was ist die Beitragsbemessungsgrenze? Der Teil des Einkommens, der die Beitragsbemessungsgrenze (2016: 74.400 EUR) übersteigt, bleibt für die Beitragsberechnung der Sozialversicherung außer Betracht. Was ist die Versicherungspflichtgrenze? Die Versicherungspflichtgrenze (auch Jahresarbeitsentgeltgrenze) bestimmt, ab welcher Höhe des jährlichen Arbeitsentgelts (2016: 56.250 EUR) ein Arbeitnehmer nicht mehr in der gesetzlichen Krankenversicherung pflichtversichert sein muss. Achtung: Es gibt eine Pflicht zur Krankenversicherung! Gehaltsabrechnung Wie ist die Gehaltsabrechnung grundsätzlich aufgebaut? Bruttoentgelt (+) ggfs. vermögenswirksame Leistungen = steuerpflichtiges Bruttoentgelt (-) Steuern (-) Sozialversicherung = Nettoentgelt (-) ggfs. vermögenswirksame Sparleistungen = Auszahlungsbetrag Welche Sozialversicherungen gibt es? Rentenversicherung (2016: 18,7%), 50%/50% AG/AN Krankenversicherung (2016: 14,6%), 50%/50% AG/AN + Zusatzbeitrag für AN Arbeitslosenversicherung (2016: 3%), 50%/50% AG/AN Pflegeversicherung (2016: 2,35%), 50%/50% AG/AN + 0,25% für kinderlose AN ab 23 Jahren Unfallversicherung, 100% AG Welche Steuern gibt es? Lohnsteuer, abhängig von Steuerklasse, Einkommenshöhe und Steuersatz Solidaritätszuschlag, 5,5% der Lohnsteuer Kirchensteuer, 9% bzw. 8% der Lohnsteuer Literaturempfehlungen Zu den Wirtschaftsfragen kann ich eigentlich nur das IT-Handbuch* (auch "Tabellenbuch" genannt) empfehlen. Es handelt sich ja um Themen, die man gut in Tabellen darstellen und recht einfach auswendig lernen kann. Das IT-Handbuch enthält auch einige Links auf "offizielle" Quellen für die aktuellen Beitragssätze usw. * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Netto – Wikipedia Arbeitsentgelt – Wikipedia Ausbildungsvergütung – Wikipedia Beitragsbemessungsgrenze – Wikipedia Versicherungspflichtgrenze – Wikipedia Weitere Infos zum FachgesprächDu suchst noch mehr Tipps rund um das Fachgespräch? Dann schau doch mal in diese Artikel- und Podcast-Kategorie: Alle Artikel rund um das Fachgespräch.Kennst du schon meine Hörbücher zur Vorbereitung auf das Fachgespräch? Unter dasperfektefachgespraech.de kannst du sie herunterladen. In insg. über 10 Stunden gehe ich über 200 Fragen im Detail durch und gebe Tipps für die Beantwortung.Und wenn du dich für meinen Newsletter einträgst, bekommst du immer direkt alle Neuigkeiten von dieser Seite in dein Postfach geliefert.Jetzt anmelden! Zusammenfassung Im Fachgespräch strukturiert antworten Als Fachinformatiker:in Anwendungsentwicklung brauchst du auch kaufmännisches Wissen, das in der schriftlichen Prüfung und im Fachgespräch gefragt wird. Die eigene Gehaltsabrechnung zu erläutern gehört zu den häufigen Wirtschaftsfragen. Das Gehalt spielt außerdem eine große Rolle, wenn du einen Stundensatz für deine Projektarbeit berechnest. Für deine Antwort empfehle ich dir, zunächst einen Überblick über die Abrechnung zu geben. Danach kannst du die einzelnen Posten vertiefen, indem du etwa der Reihenfolge auf deiner Abrechnung folgst. So behältst du im Kopf, welche Punkte du ansprechen möchtest, und gibst deiner Antwort einen logischen Aufbau. Begriffe rund um dein Entgelt Bruttoentgelt bezeichnet das vereinbarte Entgelt, von dem unter anderem Steuern und Sozialabgaben abgezogen werden. Nettoentgelt bleibt übrig, nachdem diese Abzüge erfolgt sind. Weitere Posten, etwa Geld für einen vermögenswirksamen Sparvertrag, können den Betrag verändern, der auf deinem Konto ankommt. Gehalt wird als fester Betrag regelmäßig gezahlt, beispielsweise monatlich. Es ist unabhängig davon, wie viel Leistung du im jeweiligen Monat erbracht hast. Lohn richtet sich nach einer erbrachten Leistung, etwa nach Arbeitsstunden oder der Zahl montierter Teile. Historisch werden Menschen mit Lohn als Arbeiter:innen und Menschen mit Gehalt als Angestellte bezeichnet. Als IT-Azubi erhältst du eine Ausbildungsvergütung, die während deiner Ausbildung zum Lebensunterhalt beiträgt. Dein:e Arbeitgeber:in trägt zusätzlich zum vereinbarten Bruttoentgelt eigene Anteile an den Sozialversicherungen. Diese Kosten gehören dazu, wenn später ein Stundensatz berechnet wird. Grenzen für die Sozialversicherung Die Beitragsbemessungsgrenze legt fest, bis zu welchem Einkommen Sozialversicherungsbeiträge berechnet werden. Der Anteil des Einkommens oberhalb dieser Grenze bleibt bei der Beitragsberechnung außen vor. Dadurch ergibt sich ein Höchstbeitrag. Als Beispiel für die Rentenversicherung werden für 2016 eine Grenze von 74.400 Euro jährlich und ein Beitragssatz von 18,7 Prozent genannt. Mit der Versicherungspflichtgrenze, auch Jahresarbeitsentgeltgrenze genannt, hängt zusammen, wann du als Arbeitnehmer:in in eine private Krankenversicherung wechseln kannst. Für 2016 beträgt der genannte Wert 56.250 Euro jährlich. Wenn dein Einkommen darüber liegt, kannst du dich privat krankenversichern oder weiterhin in der gesetzlichen Krankenversicherung bleiben. Die Pflicht, krankenversichert zu sein, besteht weiterhin. Selbstständige können ihre Krankenversicherung unabhängig von dieser Einkommensgrenze wählen. Für Beamt:innen spielt die staatliche Beihilfe eine Rolle, die einen Teil ihrer Krankheitskosten übernimmt. Krankenversicherung: Beiträge und Leistungen In der gesetzlichen Krankenversicherung wird der Beitrag anhand des Einkommens berechnet. Die beitragsfreie Familienversicherung ermöglicht es insbesondere, Kinder mitzuversichern. Für zusätzliche Leistungen lassen sich ergänzende Versicherungen abschließen, beispielsweise für ein Einbettzimmer im Krankenhaus. Bei einer privaten Krankenversicherung wird jede Person einzeln versichert und zahlt einen eigenen Beitrag. Für dessen Höhe spielt das individuelle Risiko eine Rolle, beispielsweise das Alter beim Eintritt. Es gelten Unisex-Tarife. Steigende Krankheitskosten können dazu führen, dass ein:e Versicherer:in die Beiträge für den versicherten Bestand anpasst. Vom Bruttoentgelt zum ausgezahlten Betrag Das vorgestellte Schema lässt sich Schritt für Schritt durchgehen: Ausgangspunkt ist das Bruttoentgelt aus deinem Arbeitsvertrag. Falls dein:e Arbeitgeber:in vermögenswirksame Leistungen zahlt, werden diese hinzugerechnet. Daraus ergibt sich im dargestellten Schema das steuerpflichtige Bruttoentgelt. Die Steuern werden abgezogen. Anschließend werden deine Sozialversicherungsbeiträge abgezogen. Übrig bleibt das Nettoentgelt. Fließt Geld in einen vermögenswirksamen Sparvertrag, wird dieser Betrag vom Nettoentgelt abgezogen. Danach steht fest, wie viel du ausgezahlt bekommst. Ob dein Betrieb vermögenswirksame Leistungen zahlt, kann beispielsweise durch einen Tarifvertrag oder eine individuelle Vereinbarung geregelt sein. Das Geld soll dir helfen, langfristig Vermögen aufzubauen, etwa über einen Bausparvertrag oder einen Banksparvertrag. Als üblicher Betrag werden 40 Euro monatlich genannt. Die Leistung wird beim Brutto berücksichtigt und versteuert; der Sparbetrag wird anschließend aus dem Netto an den jeweiligen Vertrag überwiesen. Steuern auf der Gehaltsabrechnung Die folgenden Zahlen beziehen sich auf 2016. | Posten | Grundlage und genannte Höhe | | --- | --- | | Lohnsteuer | Hängt vom Einkommen und der Steuerklasse ab; die Höhe richtet sich nach dem jeweiligen Steuersatz. | | Solidaritätszuschlag | 5,5 Prozent der Lohnsteuer. | | Kirchensteuer | Bei entsprechender Kirchenmitgliedschaft je nach Bundesland 8 oder 9 Prozent der Lohnsteuer. | ...
33 Minuten
Getter und Setter, ein vernünftiges Klassendesign und Enumerations sind die Themen der fünfundvierzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Mit meiner Lernzielkontrolle vertiefst du als IT-Azubi die Grundlagen der Objektorientierung. Über Getter und Setter steuerst du, wie auf Attribute zugegriffen wird, wobei du Werte berechnen oder vor dem Setzen prüfen kannst. Beim Klassendesign helfen dir klar abgegrenzte Aufgaben und sprechende Namen; außerdem sollten Methoden und Attribute eng zusammengehören und Abhängigkeiten gering bleiben. Enumerations legen erlaubte Werte als eigenen Datentyp fest, sodass dich der Compiler vor ungültigen Angaben schützt. Kapitelmarken [00:00:20] Themen der Lernzielkontrolle [00:01:12] Getter und Setter als Zugriffsmethoden [00:02:54] Lesezugriff und Schreibzugriff steuern [00:03:54] Unveränderbare Objekte und Java-Strings [00:05:16] Werte im Getter berechnen [00:06:05] Werte im Setter prüfen [00:07:19] Getter und Setter in deutschsprachigem Code benennen [00:08:41] Klassendesign und Single Responsibility Principle [00:10:40] Klassen wiederverwenden und Abhängigkeiten begrenzen [00:12:25] Sprechende Klassennamen und Codevervollständigung [00:15:19] Attribute zunächst privat halten [00:15:41] Geringe Kopplung [00:17:26] Hohe Kohärenz und Klassen aufteilen [00:21:20] Enumerations für festgelegte Werte [00:24:10] Aufzählungstypen und Typsicherheit [00:26:19] Eigene Methoden in Java-Enums [00:27:42] Unterstützung durch Compiler und IDE [00:28:19] Ausblick auf Wirtschaftsfragen im Fachgespräch [00:29:01] Shownotes und Literaturempfehlungen [00:30:30] Handouts und Tipps für Präsentationen [00:31:50] Kontakt und Newsletter Inhalt Getter und Setter Wie steuert man den Zugriff auf Instanzvariablen? Über dafür vorgesehene Methoden: Getter und Setter. Was sind Getter und Setter? Methoden zum Setzen und Lesen von Instanzvariablen. Welchen Vorteil haben Setter im Vergleich zu public Attributen? Man kann z.B. das Setzen ungültiger Werte verhindern. Welchen Vorteil haben Getter im Vergleich zu public Attributen? Man kann z.B. zusätzliche Berechnungen ausführen. Klassendesign Was sind die grundlegenden Regeln beim Schreiben von Klassen? Eine Klasse sollte nur eine einzige Aufgabe haben (Single Responsibility Principle). Sie sollte einen sprechenden Namen haben. Sie sollte keine Attribute public machen (Geheimnisprinzip). Sie sollte eine hohe Kohärenz aufweisen. Sie sollte eine geringe Kopplung aufweisen. Enumerations Was ist eine Enumeration? Ein Datentyp, der eine abgeschlossene Liste an Werten definiert. Wann und warum sollte man Enumerations verwenden (und nicht Strings oder Integers)? Wenn die Anzahl der erlaubten Werte begrenzt ist bekommt man durch eine Enumeration eine Art "Typsicherheit". Literaturempfehlungen *(direkt beim Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) Viele weitere "Regeln" zum Schreiben von Klassen (oder auch grundsätzlich zur sauberen Programmierung) findest du in Clean Code*. * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts ArticleS.UncleBob.PrinciplesOfOod The Single Responsibility Principle (PDF) Robert C. Martin - The Single Responsibility Principle. on Vimeo Strive for low coupling and high cohesion What does that even mean Zusammenfassung Getter und Setter Wenn du Attribute als private deklarierst, bleiben die inneren Werte deiner Klasse nach außen verborgen. Über Methoden kannst du gezielt festlegen, wie andere Klassen darauf zugreifen dürfen. Ein Getter liest einen Wert, während ein Setter einen Wert setzt. Dabei lässt sich der Zugriff für jede Richtung einzeln festlegen: Mit einem öffentlichen Getter gibst du einen Wert zum Lesen frei. Welche Methoden ihn verändern dürfen, bestimmst du separat. Ein Setter mit protected erlaubt abgeleiteten Klassen, den Wert zu setzen. Über einen privaten Setter kann die Klasse selbst ihre Werte verändern. Unveränderbare Objekte Wenn mehrere Threads gleichzeitig denselben Wert verändern, können Probleme entstehen. Bei unveränderbaren Objekten, auf Englisch immutable objects, bleibt der Zustand nach dem Erzeugen erhalten. In Java ist String ein Beispiel dafür. Bei einem Ausdruck wie text += "abc" entsteht ein neuer String mit dem ergänzten Inhalt. Der ursprüngliche String behält seinen Wert. Mit privaten Attributen und Gettern kannst du den Zugriff von außen auf das Lesen beschränken. Logik in Zugriffsmethoden Bei einer Klasse Person kann getAlter() das Alter aus dem gespeicherten Geburtsdatum und dem heutigen Datum berechnen. Dadurch brauchst du keinen zusätzlichen gespeicherten Alterswert. Bevor ein Setter einen neuen Wert übernimmt, kann er prüfen, ob dieser gültig ist. Für ein Alter könnte beispielsweise der Bereich von 0 bis 200 gelten. Bei einem Wert außerhalb dieses Bereichs lässt sich eine Exception auslösen oder das Setzen ablehnen. Als Entwickler:in sorgst du dafür, dass dein Objekt in einem gültigen Zustand bleibt. Namen für Getter und Setter In meiner Praxis programmiere ich versicherungsinterne Software häufig auf Deutsch, weil sich Fachbegriffe so verständlich im Code ausdrücken lassen. Auch dabei behalte ich die Präfixe get und set bei, etwa in getKilometerstand(). Daran erkennst du die Rolle der Methode direkt. Eine passende deutsche Variante für get habe ich für mich bisher nicht gefunden. Klassen entwerfen Eine klar abgegrenzte Aufgabe Beim Schreiben einer Klasse orientiere ich mich am Single Responsibility Principle. Die ursprüngliche Regel lautet: Eine Klasse sollte genau einen Grund haben, geändert zu werden. Häufig wird das als eine einzige Aufgabe oder Verantwortung beschrieben. Wenn ein Dateimanager sowohl Dateien liest als auch schreibt, kann eine Änderung beim Schreiben versehentlich das Lesen beeinträchtigen. Durch getrennte Klassen bleiben die Aufgaben überschaubar. Du kannst eine solche Klasse außerdem leichter in einem anderen Programm einsetzen, weil sie nur die Abhängigkeiten ihrer eigenen Aufgabe mitbringt. Gerade bei zusätzlichen Frameworks kann eine breit angelegte Klasse aufwendig werden: Für eine einzelne benötigte Funktion musst du dann möglicherweise weitere Bibliotheken einbinden und konfigurieren. Sprechende Namen und private Attribute Mit Namen wie Dateileser oder Dateischreiber wird die Aufgabe einer Klasse direkt erkennbar. Bezeichnungen wie Manager oder Utility lassen offen, was die Klasse genau macht. Für eine spezielle Aufgabe darf der Name länger ausfallen. Aus meiner Praxis stammt etwa ein "blocksammelnder Datensatzschreiber". Beim Eingeben hilft dir die IDE: In Eclipse kannst du die Anfangsbuchstaben der einzelnen Wörter eingeben und den Namen mit Strg + Leertaste vervollständigen lassen. Als Ausgangspunkt setze ich alle Attribute auf private. Anschließend entscheide ich einzeln, welche Werte über Zugriffsmethoden nach außen zugänglich werden. Geringe Kopplung Wenn deine Klasse andere Klassen oder Bibliotheken benötigt, bestehen Abhängigkeiten. Der Begriff Kopplung beschreibt diese Beziehungen. Mit jeder weiteren Abhängigkeit wird es aufwendiger, die Klasse an anderer Stelle einzusetzen; auch die Fehlersuche kann schwieriger werden. Eingebundene Bibliotheken können ihrerseits weitere Bibliotheken benötigen. Da Klassen in einem objektorientierten System zusammenarbeiten, gehören Abhängigkeiten zum Alltag. Halte sie möglichst gering, damit sich deine Klassen leichter wiederverwenden lassen. Hohe Kohärenz Wie eng Methoden und Attribute einer Klasse zusammenarbeiten, beschreibe ich hier als Kohärenz. Eine hohe Kohärenz liegt vor, wenn die Methoden die Attribute der Klasse umfassend verwenden. Bei einer Klasse Auto verändert die Methode zum Fahren beispielsweise den Kilometerstand. Eine Methode zum Öffnen der Türen arbeitet mit den Türobjekten. Dass diese Methoden jeweils unterschiedliche Attribute ansprechen, passt zum abgebildeten Konzept. Wenn bei einer großen Klasse einzelne Gruppen von Methoden jeweils nur wenige Attribute bearbeiten, kann das auf mehrere Aufgaben hinweisen. Dann lohnt es sich zu prüfen, ob du diese Gruppen in eigene, kleinere Klassen aufteilen kannst. So hängt die Kohärenz mit dem Single Responsibility Principle zusammen. Enumerations Wenn ein Attribut nur Werte aus einer festgelegten Liste annehmen darf, kannst du dafür eine Enumeration, kurz enum, anlegen. Dieser Aufzählungstyp definiert die erlaubten Werte als Konstanten. Für Wochentage lässt sich beispielsweise ein Typ Wochentag mit sieben Konstanten festlegen. Im Code greifst du dann auf einen Wert wie Wochentag.MONTAG zu. Auch das Lieblingsessen eines Hundes kann als Enumeration abgebildet werden, wenn deine Anwendung dafür eine feste Auswahl vorgibt. Typsicher arbeiten Bei einem frei eingegebenen String können Tippfehler auftreten. Ein Integer erlaubt Werte außerhalb des vorgesehenen Bereichs und verrät außerdem wenig darüber, welche Zahl welchen Wochentag bezeichnet. Mit einem Enum-Typ in der Methodensignatur wird sichtbar, welche Werte erwartet werden. Der Java-Compiler prüft den Typ und weist unzulässige Angaben zurück. Deine IDE kann dir die definierten Konstanten beim Schreiben des Codes vorschlagen. Methoden in Java-Enums Java-Enumerations besitzen Eigenschaften von Klassen und können eigene Methoden enthalten. Wenn du aus einem Formular einen String erhältst, kannst du beispielsweise direkt im Enum eine Methode bereitstellen, die daraus den passenden Enum-Wert ermittelt. Literatur und weitere Inhalte Unter anwendungsentwicklerpodcast.de/45 findest du meine Shownotes mit weiterführenden Links zum Single Responsibility Principle sowie zu Kohärenz und Kopplung. Als Literatur empfehle ich dir die Einführung in Java beziehungsweise die Java-Insel aus dem Rheinwerk-Verlag. Für das Klassendesign kommt Clean Code von Bob Martin hinzu, das praxisnahe Tipps auch für Programmieranfänger:innen enthält. Auf meiner Website verweise ich außerdem auf meinen Artikel zu Handouts bei der Projektpräse
35 Minuten
Sichtbarkeitsmodifizierer und Konstruktoren sind die Themen der vierundvierzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR An der Klasse Auto zeige ich dir, wie du mit this auf das aktuelle Objekt zugreifst und Konstruktoren miteinander verknüpfst. Konstruktoren sorgen dafür, dass ein neues Objekt gültige Attributwerte erhält, während Sichtbarkeitsmodifizierer den Zugriff auf seine Attribute und Methoden regeln. Als Entwickler:in deiner Klasse bist du dafür verantwortlich, dass sie sich vollständig initialisiert und andere Entwickler:innen direkt mit ihren Objekten arbeiten können. Kapitelmarken [00:00:01] Einstieg in die zweite Lernzielkontrolle zur Objektorientierung [00:01:53] this als Referenz auf das aktuelle Objekt [00:05:23] Konstruktoren und gültige Objektzustände [00:08:08] Konstruktoren definieren und überladen [00:10:13] Gemeinsamen Konstruktorcode mit this wiederverwenden [00:14:25] Faustregel für verkettete Konstruktoren [00:15:05] Kapselung und Geheimnisprinzip [00:16:45] Sichtbarkeit mit public, private und protected regeln [00:20:24] Package-private in Java [00:22:06] Empfehlungen zur Sichtbarkeit und zu Tests [00:23:45] Die Java-Sichtbarkeiten im Überblick [00:24:47] Instanzvariablen vollständig initialisieren [00:27:23] Anfangswerte im Code setzen [00:29:37] Namenskonflikte mit this auflösen [00:32:12] Ausblick, Literatur und weiterführende Links Inhalt Konstruktoren Was macht das Schlüsselwort this? Referenz auf das aktuelle Objekt. Was ist die Aufgabe eines Konstruktors? Ein Objekt zu erzeugen und es in einen gültigen Zustand zu versetzen. Wie definiert man einen Konstruktor? In Java: Methode ohne Rückgabewert und dem gleichen Namen wie die Klasse. Was ist ein Default-Konstruktor? Der parameterlose Konstruktor einer Klasse, der ggfs. durch Java selbst erzeugt wird. Sichtbarkeitsmodifizierer Wie steuert man die Sichtbarkeit von Attributen und Methoden von Klassen? Mit den Sichtbarkeitsmodifizierern private, protected, public und package-private. Was ist die standardmäßige Sichtbarkeit in Java? package-private Wie kann man Instanzvariablen initialisieren? Inline bei ihrer Deklaration, im Konstruktor oder in einer Methode. Muss man Instanzvariablen immer über this ansprechen? Nein, nur wenn es einen Namenskonflikt gibt. Literaturempfehlungen *(direkt beim Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Controlling Access to Members of a Class (The Java Tutorials > Learning the Java Language > Classes and Objects) Rheinwerk Computing :: Java ist auch eine Insel - 5.2 Privatsphäre und Sichtbarkeit Rheinwerk Computing :: Java ist auch eine Insel - 5.5 Objekte anlegen und zerstören Zusammenfassung Mit this auf das aktuelle Objekt zugreifen Wenn du mit Auto a = new Auto(); ein Objekt erzeugst, kannst du über die Referenz a seine zugänglichen Methoden aufrufen. Innerhalb des Objekts steht dir dafür this als Referenz auf das aktuelle Objekt zur Verfügung. Mit this.kilometerstand += 1; erhöhst du beispielsweise den eigenen Kilometerstand. In einer Methode der Klasse Auto bezieht sich this auf das jeweilige Autoobjekt. Schreibst du es innerhalb einer Methode der Klasse Autowaschanlage, verweist es auf das aktuelle Objekt dieser Klasse. Für eine Prüfung kannst du dir die Formulierung merken: this ist eine Referenz auf das aktuelle Objekt. Konstruktoren und gültige Objektzustände Beim Erzeugen eines Objekts wird ein Konstruktor aufgerufen, der dessen Attribute mit gültigen Werten versieht. Der Zustand eines Objekts ergibt sich aus den aktuellen Werten aller seiner Attribute. Java gibt Instanzvariablen zunächst Standardwerte. Numerische Attribute erhalten 0, bei einem booleschen Attribut ist der Wert false. Referenzen wie String-Attribute beginnen mit null. Welche Werte fachlich gültig sind, hängt von deiner Klasse ab. Ein leerer String kann beispielsweise verhindern, dass der spätere Zugriff auf dieses Attribut einen Null-Pointer-Fehler auslöst. Wenn du in Java keinen eigenen Konstruktor definierst, erzeugt die Sprache einen parameterlosen Default-Konstruktor. Sobald deine Klasse eigene Schritte braucht, um einen gültigen Zustand herzustellen, musst du diese selbst programmieren. So sieht ein Konstruktor aus In Java und C# trägt ein Konstruktor exakt den Namen seiner Klasse, einschließlich der Groß- und Kleinschreibung. Der Rückgabetyp entfällt vollständig, auch void. Für die Klasse Auto lautet ein parameterloser Konstruktor beispielsweise: java Auto() { this.kilometerstand = 0; } Du kannst Konstruktoren überladen, indem du unterschiedliche Parameterlisten definierst. Für einen Gebrauchtwagen lässt sich der vorhandene Kilometerstand direkt beim Erzeugen übergeben: java Auto(int kilometerstand) { this.kilometerstand = kilometerstand; } Konstruktoren miteinander verknüpfen Wenn mehrere Konstruktoren dieselben Attribute setzen, kannst du den gemeinsamen Code an einer Stelle halten. In Java ruft ein Konstruktor mit this(...) einen anderen Konstruktor derselben Klasse auf: java Auto() { this(0); } Auto(int kilometerstand) { this.kilometerstand = kilometerstand; } Beim Aufruf von new Auto() wird dadurch der Konstruktor mit dem Kilometerstand 0 ausgeführt. Ändert sich die gemeinsame Logik, bearbeitest du nur eine Stelle. Als Faustregel empfehle ich dir, einen Konstruktor mit weniger Parametern den Konstruktor mit mehr Parametern aufrufen zu lassen. Dabei übergibt er die passenden Standardwerte. Kapselung und Geheimnisprinzip Eine Klasse fasst ihre Attribute mit den zugehörigen Methoden zu einer Einheit zusammen. Das bezeichnet Kapselung. Beim Geheimnisprinzip hält die Klasse ihre internen Werte verborgen und kontrolliert, wie andere Klassen darauf zugreifen dürfen. Am Kilometerstand lässt sich der Zweck erkennen: Ein direkter Zugriff von außen könnte einen negativen Wert erlauben oder dazu führen, dass jemand den Kilometerstand eines Gebrauchtwagens zurücksetzt. Über Sichtbarkeitsmodifizierer legst du fest, welche Klassen auf Attribute und Methoden zugreifen dürfen. Sichtbarkeit in Java | Sichtbarkeit | Zugriff möglich für | | --- | --- | | private | Die definierende Klasse selbst | | package-private | Die Klasse selbst und alle Klassen im selben Package | | protected | Die Klasse selbst, Klassen im selben Package sowie Subklassen außerhalb des Packages | | public | Alle Klassen | Package-private entsteht, wenn du den Sichtbarkeitsmodifizierer weglässt. Dafür gibt es in Java ein eigenes Verhalten, aber kein Schlüsselwort. Ober- und Unterpackages zählen jeweils als andere Packages. Bei Vererbung kann beispielsweise die Klasse Cabrio von Auto abgeleitet sein. Mit protected erhalten Subklassen Zugriff auf die entsprechend geschützten Member. Für deinen Einstieg empfehle ich dir, Attribute und Methoden zunächst auf private zu setzen. Anschließend erweiterst du den Zugriff gezielt dort, wo deine Klasse ihn braucht. Package-private kann zusammengehörigen Klassen innerhalb eines Packages Zugriff auf interne Member geben, etwa in einem Framework. Auch Testklassen im selben Package können so auf entsprechend zugängliche Methoden zugreifen. Ich habe dafür in meiner Praxis bislang keinen Bedarf gehabt und empfehle, private Methoden nicht direkt zu testen. Instanzvariablen vollständig initialisieren Wenn du eine Klasse programmierst, kennst du ihre internen Abläufe und die Bedingungen für gültige Werte. Dieses Wissen gehört in die Klasse. Andere Entwickler:innen sollen mit einem neu erzeugten Objekt arbeiten können, ohne erst eine bestimmte Folge von Setter-Aufrufen kennen zu müssen. Java und C# erzwingen eine solche Folge späterer Methodenaufrufe nicht. Deshalb muss deine Klasse selbst dafür sorgen, dass notwendige Schritte in der richtigen Reihenfolge stattfinden, einschließlich erforderlicher Berechnungen oder Datenbankzugriffe. Du kannst einen festen Anfangswert direkt bei der Deklaration setzen: java private int kilometerstand = 0; Im Konstruktor lässt sich der Wert ebenfalls zuweisen, beispielsweise anhand eines übergebenen Parameters. Für komplexere Berechnungen kannst du eine eigene Methode schreiben, die das Attribut setzt. Der Konstruktor muss diese Methode dann aufrufen, damit das Objekt anschließend einen gültigen Zustand hat. Wann du this beim Zugriff brauchst Bei einem eindeutigen Attributnamen kannst du innerhalb der Klasse direkt kilometerstand = 0; schreiben. Hat ein Parameter oder eine lokale Variable denselben Namen, wird dieser Name im näheren Gültigkeitsbereich verwendet. Im folgenden Konstruktor bezeichnet kilometerstand den Parameter. Über this.kilometerstand sprichst du ausdrücklich das Attribut des aktuellen Objekts an: java Auto(int kilometerstand) { this.kilometerstand = kilometerstand; } Du kannst den Parameter auch neuerKilometerstand nennen. Dann ist mit kilometerstand = neuerKilometerstand; eindeutig, welcher Wert welchem Attribut zugewiesen wird. Weiterführendes Material Unter anwendungsentwicklerpodcast.de/44 habe ich einen Oracle-Tutorialartikel mit einer Matrix zu den Sichtbarkeiten verlinkt. Dort findest du auch die Literaturempfehlungen "Einführung in Java" und "Java ist auch eine Insel". Getter und Setter sowie das Single Responsibility Principle sind für eine folgende Folge vorgesehen. Transkription der gesamten Episode Automatisch erzeugte Transkription der Episode [0:01] Herzlich willkommen zum Anwendungsentwickler-Podcast, dem Podcast rund um die Ausbildung zum Fachinformatiker [0:08] für Anwendungsentwicklung. In dieser Episode geht es um eine weitere Lernzielkontrolle zum Thema Objektorientierung. Viel Spaß! [0:15] Hallo und herzlich willkommen zur 44. Episode des Anwendungsentwickler-Podcasts. [0:26] Mein Name ist Stefan Mackel und heute kommt Nummer 2 meiner Lernzielkontrollen zum Thema Objektorientierung. [0:33] Beim letzten Mal, was ja schon jetzt etwas länger her ist,...
36 Minuten
Die grundlegenden Begrifflichkeiten rund um Klasse und Objekt sind die Inhalte der dreiundvierzigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Mit Beispielen aus meiner Lernzielkontrolle kannst du die Grundlagen der Objektorientierung für deine Prüfung und deinen Alltag als Fachinformatiker:in Anwendungsentwicklung wiederholen. Eine Klasse beschreibt als Bauplan die Attribute und Methoden ihrer Objekte, deren eigene Werte den jeweiligen Zustand bilden. Dazu gehören die Begriffe Instanz und Kapselung sowie das Prinzip YAGNI, nach dem du nur benötigte Eigenschaften und Funktionen programmierst. Du erfährst außerdem, wie du mit Instanzvariablen und statischen Membern arbeitest, welche Probleme null verursacht und wie du Klassen mit Java-Packages beziehungsweise .NET-Namespaces gruppierst. Kapitelmarken [00:00:01] Erste Lernzielkontrolle zur Objektorientierung [00:00:26] Objektorientierung in Prüfung und Berufspraxis [00:01:36] Die Zahl 42 und Per Anhalter durch die Galaxis [00:02:08] Klassen und Objekte am Beispiel eines Monitors [00:05:09] Die Domäne passend zur Anwendung modellieren [00:07:00] YAGNI: Nur benötigten Code programmieren [00:07:45] Instanz als anderer Begriff für Objekt [00:08:22] Objekte mit new erzeugen [00:09:09] Instanzvariablen definieren und verwenden [00:11:02] Individuelle Werte und der Zustand eines Objekts [00:12:05] Seiteneffekte durch veränderlichen Zustand [00:13:08] Daten und Methoden gemeinsam kapseln [00:14:29] Standardwerte von Instanzvariablen [00:15:29] Null-Pointer-Fehler und ihre Ursachen [00:17:12] Die Bedeutung von null bei Referenztypen [00:19:21] Zugriff auf Instanzvariablen mit dem Punktoperator [00:19:58] Statische Variablen und der Begriff Feld [00:22:24] Klassenvariablen über den Klassennamen ansprechen [00:23:19] Methoden aufrufen und ihre Signatur bestimmen [00:24:42] Methodenaufrufe als Nachrichten an Objekte [00:26:08] Statische Methoden und der statische Kontext [00:27:30] Member als Oberbegriff für Felder und Methoden [00:28:25] Zusammengehörige Klassen in Java-Packages gruppieren [00:29:41] Klassen aus anderen Packages importieren [00:31:23] Namespaces in C# und Visual Basic [00:32:13] Weihnachtspause und weitere Lernmaterialien [00:33:18] Feedback und Kontaktmöglichkeiten [00:34:19] Fachgespräch vorbereiten und Legacy-Systeme weiterentwickeln [00:35:04] Newsletter und Ausblick auf die nächste Lernzielkontrolle Inhalt Objektorientierung Was ist eine Klasse? Eine Klasse ist ein Bauplan für Objekte. Sie definiert alle Attribute und Methoden ihrer Objekte. Was ist ein Objekt? Ein Ding der realen Welt, das Eigenschaften und Funktionen besitzt. Was ist eine Instanz? Ein anderes Wort für Objekt. Was bedeutet Instantiierung? Das Erzeugen eines Objekts aus einer Klasse. Was macht das Schlüsselwort new? Instantiiert ein Objekt. Was ist eine Instanzvariable und wie definiert man sie? Eine Variable mit individuellem Wert für jedes Objekt. Sie werden auf Ebene der Klasse definiert. Wie werden Instanzvariablen initialisiert? Mit Standardwerten, wenn man keine eigenen angibt. Was ist null? Der Standardwert für Referenztypen. Wie greift man auf Instanzvariablen zu? Objektname + . + Variablenname + Parameter Was ist ein Feld? Der Oberbegriff für alle Variablen einer Klasse (static und Instanzvariablen). Was ist eine Methode? Funktionen von Objekten heißen Methoden. Wie ruft man eine Instanzmethode auf? Objektname + . + Methodenname + Parameter Was ist die Methodensignatur? Der Name der Methode sowie Datentyp und Position ihrer Parameter bilden die Signatur einer Methode. Was bedeutet es, eine Nachricht an ein Objekt zu senden? Eine Methode aufzurufen. Was sind statische Methoden und wie ruft man sie auf? Statische Methoden sind über eine Klasse aufrufbar und benötigen kein Objekt. Sie werden über den Klassennamen und den .-Operator aufgerufen. Was sind die Member einer Klasse? Oberbegriff für Felder und Methoden (static und Instanzvariablen) einer Klasse. Was ist ein Package? Ein Package dient der Gruppierung zusammengehöriger Klassen und ist vergleichbar mit einem Ordner im Dateisystem. Was macht das Schlüsselwort import? Importiert ein Package und macht seine Inhalte in der aktuellen Klasse verfügbar. Literaturempfehlungen 3 Klassen und Objekte - Rheinwerk Computing :: Java ist auch eine Insel Lesson: Classes and Objects (The Java Tutorials > Learning the Java Language) *(direkt beim Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) * * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Java Fields | tutorials.jenkov.com Vorbereitung auf das Fachgespräch Innovationen in Legacy-Systemen Der schlimmste Fehler in der Informatik Zusammenfassung Objektorientierung in der IT-Ausbildung Für dein Fachgespräch als angehende:r Fachinformatiker:in Anwendungsentwicklung solltest du die Begriffe der Objektorientierung sicher beherrschen. Dazu lassen sich viele Fragen stellen, mit denen Prüfer:innen auch dein tieferes Verständnis prüfen können. In meinem Ausbildungsalltag greife ich das Thema regelmäßig auf, weil es ebenso beim Programmieren gebraucht wird. Viele verbreitete Programmiersprachen arbeiten objektorientiert. Klassen und Objekte An meinem Monitor kannst du nachvollziehen, was ein Objekt ausmacht: Er hat Eigenschaften wie seine Helligkeit und bietet Funktionen, etwa das Einschalten. In der Objektorientierung heißen diese Eigenschaften Attribute, während die Funktionen als Methoden bezeichnet werden. Eine Klasse ist der Bauplan für solche Objekte. Sie legt fest, welche Attribute und Methoden alle zugehörigen Objekte besitzen. Wenn ich mehrere Monitore in einem Raum betrachte, hat jeder eine Helligkeit, deren konkreter Wert je nach Monitor unterschiedlich sein kann. Die Klasse Monitor beschreibt die gemeinsamen Eigenschaften und Funktionen dieser einzelnen Monitorobjekte. Für ein Telefon würde ich eine eigene Klasse mit den dazu passenden Attributen und Methoden modellieren. Auf diese Weise lassen sich die Dinge des fachlichen Bereichs, der Domäne eines Programms, in Software abbilden. Welche Teile der Domäne gehören ins Programm? Bei einer Autowaschanlage brauche ich die Maße eines Autos, damit sich die Bürsten passend bewegen können. Für eine Autovermietung ist beispielsweise der Mietpreis relevant. Welche Attribute und Methoden eine Klasse Auto erhält, hängt deshalb davon ab, was die jeweilige Anwendung braucht. Als Entwickler:in wählst du die passenden Teile der Domäne aus. Dein Modell enthält die Eigenschaften und Funktionen, mit denen dein Programm arbeiten soll. Das Prinzip YAGNI, ausgeschrieben "You ain't gonna need it", hilft dir dabei: Programmiere etwas erst, wenn feststeht, dass es gebraucht wird. Jeder zusätzliche Teil des Codes bringt später Arbeit mit sich, etwa wenn du ihn pflegen oder überarbeiten musst. Instanzen erzeugen Wenn du in einer Prüfungsfrage auf das Wort Instanz stößt, ist damit ein Objekt gemeint. Die Begriffe werden gleichwertig verwendet; entsprechend kannst du eine Instanzmethode auch Objektmethode nennen. Bei der Instanzierung erzeugst du aus einer Klasse ein Objekt. Dafür wird in vielen objektorientierten Sprachen new verwendet. In meinen Beispielen sieht das so aus: Java oder C#: new Auto() Ruby: Auto.new Die Schreibweise hängt von der Programmiersprache ab. Instanzvariablen und der Zustand eines Objekts Damit mein Monitor seine Helligkeit speichern kann, braucht er eine Variable für diesen Wert. Eine Instanzvariable gehört zu einem konkreten Objekt. Jedes Monitorobjekt besitzt damit seinen eigenen Helligkeitswert, auch wenn die Klasse für alle dieselbe Variable mit demselben Datentyp definiert. Im gezeigten Klassenaufbau deklarierst du Instanzvariablen direkt im Klassenblock. Auf sie können die Methoden des Objekts zugreifen. Ob die Variable am Anfang oder am Ende der Klasse steht, spielt dabei keine Rolle. Eine innerhalb einer Methode deklarierte lokale Variable gilt im Bereich dieser Methode. Aus den aktuellen Werten seiner Instanzvariablen ergibt sich der Zustand eines Objekts. Wenn sich diese Werte ändern, können spätere Methodenaufrufe andere Ergebnisse liefern. Bei komplexen Objekten mit voneinander abhängigen Attributen wird es dadurch schwierig, Fehler nachzuvollziehen. Die funktionale Programmierung versucht, solche veränderlichen Zustände und die damit verbundenen Seiteneffekte zu vermeiden. Kapselung In meiner Klasse kann ich die Daten zusammen mit den Methoden definieren, die mit diesen Daten arbeiten. Dieses Zusammenfassen zu einer Einheit beschreibt hier den Begriff Kapselung. Dadurch lässt sich eine Klasse mitsamt ihren Daten und Funktionen an anderer Stelle wiederverwenden. Standardwerte und null Bei einer Instanzvariable wie int a wird in den besprochenen Beispielen automatisch ein Standardwert gesetzt. Welcher Wert das ist, hängt vom Datentyp und von der Programmiersprache ab: | Datentyp | Genannter Standardwert | | --- | --- | | Zahlentyp | 0 | | Boolescher Typ | false | | Referenztyp | null | Lokale Variablen brauchen vor dem Lesen einen gesetzten Wert. Bei den beschriebenen Instanzvariablen übernimmt die Sprache das Setzen des Standardwerts, sofern du selbst keinen Wert angibst. Mit null drückst du bei einer Referenz aus, dass sie auf kein Objekt verweist. Wenn ich dann beispielsweise über diese Referenz die Länge eines Autos abfragen möchte, entsteht ein Null-Pointer-Fehler. In größeren Programmen können die Stellen, an denen eine Variable deklariert, gesetzt und später gelesen wird, weit auseinanderliegen. Das erschwert die Suche nach der Ursache. Ich empfehle dir deshalb, den Umgang mit null möglichst zu vermeiden. Für Java werden dazu folgende Beispiele behandelt: String ist ein Referenztyp. Ein leerer String ist ein gültiger String; eine Referenz mit dem Wert null verweist auf kein Stringobjekt. Auch Integer mit großem I ist ein Referenztyp....
44 Minuten
Mit den Themen Algorithmen und Methoden setze ich in der zweiundvierzigsten Episode des Anwendungsentwickler-Podcasts meine Reihe der Lernzielkontrollen zur Einführung in die Programmierung mit Java fort. TL;DR Mit meiner Lernzielkontrolle zu Algorithmen und Methoden kannst du dein Wissen als IT-Azubi prüfen. Ein Algorithmus beschreibt wiederholbar, wie du ein Problem löst; seine Grundbausteine sind Sequenzen, Verzweigungen und Wiederholungen. An Java-Beispielen geht es um Bedingungen und Schleifen sowie darum, wie du Code in Methoden wiederverwendest. Dazu gehören eindeutige Methodensignaturen und das Überladen von Methoden, außerdem Rückgabewerte, Parameter und der Aufruf von Instanzmethoden oder statischen Methoden. Kapitelmarken [00:00:20] Lernzielkontrolle zu Algorithmen und Methoden [00:01:31] Was ist ein Algorithmus? [00:02:14] Lösungswege zuerst auf Papier entwickeln [00:03:33] Grundbausteine eines Algorithmus [00:04:20] Sequenzen und Verzweigungen [00:05:17] Fallunterscheidungen mit switch und Polymorphie [00:06:27] Aufbau einer if-Abfrage [00:07:51] Kopfgesteuerte und fußgesteuerte Schleifen [00:09:22] Die for-Schleife und Endlosschleifen [00:11:13] Collections mit For-Each durchlaufen [00:13:29] Schleifen mit continue und break steuern [00:15:31] Aufbau und Ablauf einer for-Schleife [00:17:18] Code mit Methoden wiederverwenden [00:17:53] Funktionen und Prozeduren [00:19:45] Methoden mit Extract Method erzeugen [00:20:18] Methodenaufbau und Signatur [00:22:57] Parametertypen und eindeutige Signaturen [00:24:56] Checked Exceptions und Antworten in der Prüfung [00:26:23] Methoden überladen [00:27:30] Rückgabewerte mit return und void [00:29:02] Parameter mit Call by Value übergeben [00:31:08] Call by Reference und ref in C# [00:32:18] Objekte und kopierte Referenzen als Parameter [00:34:34] Änderungen über Rückgabewerte nachvollziehen [00:35:35] Instanzmethoden und Klassenmethoden aufrufen [00:37:21] Statische Methoden mit static definieren [00:38:14] Objekte mit new erzeugen [00:39:01] Shownotes und Quellen zum Lernen mit Java [00:40:42] Legacy Code testen und fremde Projektvorlagen verwenden [00:41:55] Feedback und Kontakt [00:42:33] Podcast abonnieren und Newsletter [00:43:30] Ausblick auf die Objektorientierung Inhalt Algorithmen Was ist ein Algorithmus? Die wiederholbare Beschreibung zur Lösung eines Problems. Welche drei grundlegenden Bestandteile kann eine Algorithmus haben? Sequenz, Verzweigung und Wiederholung. Aus welchen Teilen besteht ein if-Statement? if (bool) { } else { } Welche Schleifen gibt es in Java? while, do while, for, "foreach". Was machen die Statements continue und break? Sie setzen die Schleife mit der nächsten Iteration fort bzw. beenden sie. Wie definiert man eine for-Schleife in Java? for (Initialisierung; Prüfung; Aktion) { } Methoden Wann und warum schreibt man Methoden? Um Algorithmen wiederverwenden zu können. Was macht die return-Anweisung? Beendet die Methode und gibt den angegebenen Wert zurück. Was bedeutet das Schlüsselwort void? Einen leeren Return-Wert. Was ist die Signatur einer Methode und welche Bestandteile hat sie? Die Signatur einer Methode besteht aus dem Namen der Methode und der Anzahl und den Datentypen ihrer Parameter. In Java zählen auch Checked Exceptions zur Signatur. Welche Teile der Methodensignatur müssen eindeutig sein? Name und Anzahl/Datentyp der Parameter. Was bedeutet das Überladen von Methoden? Gleicher Name, andere Parameter. Welche Auswirkung hat die Änderung des Wertes eines Methodenparameters für den Aufrufer? Keine. Parameter werden by value übergeben und sind nur innerhalb der Methode gültig. Was ist der Unterschied zwischen call by value und call by reference? Beim call by value werden die Werte der Parameter einer Methode kopiert und sind nur innerhalb der Methode verfügbar. Änderungen wirken sich nicht auf den Aufrufer aus. Beim call by reference wird eine Referenz auf Variablen als Parameter übergeben. Änderungen an diesen Variablen sind damit auch dem Aufruf bekannt. Wie ruft man eine Instanzmethode auf? Durch den .-Operator an einem Objekt. Was macht das Schlüsselwort static? Definiert eine Klasse, Methode oder Variable als statisch. Dieses Element hängt damit nicht an einem Objekt, sondern an einer Klasse. Was macht das Schlüsselwort new? Instantiiert eine Klasse (erzeugt ein Objekt). Literaturempfehlungen 13 Datenstrukturen und Algorithmen - Rheinwerk Computing :: Java ist auch eine Insel 2.8 Methoden einer Klasse - Rheinwerk Computing :: Java ist auch eine Insel The Java Tutorials *(direkt beim Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Referenzparameter – Wikipedia Signatur (Programmierung) – Wikipedia Zusammenfassung Algorithmen verstehen Wenn du eine Aufgabe programmieren möchtest, brauchst du zuerst einen Lösungsweg, den du selbst nachvollziehen kannst. Ein Algorithmus ist eine wiederholbare Beschreibung, wie sich ein Problem lösen lässt. Du kannst ihn auch auf Papier ausführen. In meiner Ausbildung lasse ich IT-Azubis ihre Lösung zunächst mit eigenen Worten beschreiben. Wenn du beim Programmieren festhängst, zeichne dir beispielsweise das Array auf, das du sortieren möchtest, und verschiebe die Elemente auf dem Papier. So kannst du die einzelnen Schritte durchgehen, bevor du sie in Code übersetzt. Die Grundbausteine Mit diesen Bausteinen lassen sich berechenbare Probleme abbilden: Sequenz: Befehle werden nacheinander ausgeführt. Bei a = 1; b = 3; c = a + b; folgt jeder Schritt auf den vorherigen. Verzweigung: Eine Bedingung bestimmt, welchen Weg das Programm einschlägt. Dafür gibt es beispielsweise if und switch. Wiederholung: Eine Schleife führt einen Codeblock wiederholt aus. Bei Fallunterscheidungen mit switch besteht die Gefahr, dass sich dieselbe Logik an mehreren Stellen verteilt. Kommt ein Fall hinzu, musst du diese Stellen anpassen. Ich bevorzuge für solche Aufgaben in objektorientiertem Code eine Lösung über Polymorphie. Bedingungen mit if In Java steht die Bedingung in runden Klammern hinter if. Ist sie wahr, wird der zugehörige Block ausgeführt, dessen geschweifte Klammern den Code zusammenhalten. Ein optionaler else-Block legt fest, was bei einer falschen Bedingung passiert. if ist in Java ein Statement ohne Rückgabewert. Andere Programmiersprachen kennen dafür auch Ausdrücke, die einen Wert liefern. Schleifen while Bei einer kopfgesteuerten, auch abweisenden Schleife wird die Bedingung vor dem Schleifenrumpf geprüft. Eine while-Schleife führt ihren Block aus, solange die Bedingung wahr ist. Ist sie bereits beim ersten Prüfen falsch, gibt es null Durchläufe. do-while Die fußgesteuerte beziehungsweise akzeptierende Schleife prüft ihre Bedingung am Ende. In Java beginnt sie mit do, worauf der Codeblock folgt; anschließend steht while mit der Bedingung. Dadurch läuft der Block mindestens einmal. for Eine for-Schleife ist kopfgesteuert und fasst häufig benötigte Schritte im Schleifenkopf zusammen. Das Beispiel for (int i = 0; i < 10; i++) zählt von 0 bis 9. Zuerst wird i einmalig angelegt und auf 0 gesetzt. Vor jedem Durchlauf prüft die Schleife i < 10. Nach dem Schleifenrumpf erhöht i++ den Zähler, bevor die Bedingung erneut geprüft wird. Die Bestandteile im Schleifenkopf sind durch Semikolons getrennt. for und while lassen sich ineinander umformen. Auch leere Bestandteile sind bei for möglich: for (;;) ergibt eine Endlosschleife. Achte bei deinen Schleifen darauf, dass das Abbruchkriterium erreicht werden kann. Bleibt die Bedingung dauerhaft wahr, läuft die Schleife weiter. for-each Wenn du jedes Element eines Arrays oder einer Collection bearbeiten möchtest, empfehle ich dir eine For-Each-Schleife. Sie übernimmt das Durchlaufen der Elemente, sodass du dich auf den jeweiligen Inhalt konzentrieren kannst. Fehler beim Verwalten eines Zählers oder bei den Arraygrenzen entfallen damit. In Java verwendet auch diese Schleife das Schlüsselwort for, etwa in for (String s : strings). Jedes Element steht im Schleifenrumpf über die temporäre Variable s bereit. C# hat dafür das Schlüsselwort foreach; in Ruby gibt es die Methode each. Wenn du zusätzlich den Index brauchst, etwa für die Ausgabe oder um auf ein benachbartes Element zuzugreifen, verwende ich eine klassische for-Schleife. continue und break Mit continue überspringst du den restlichen Code des aktuellen Durchlaufs. Danach wird die Schleife fortgesetzt; bei einer klassischen for-Schleife folgt zunächst die Aktion im Schleifenkopf. break verlässt die Schleife vollständig. Das Programm setzt hinter ihr fort. Bei der Suche nach einem Wert kannst du damit nach einem Treffer die verbleibenden Durchläufe sparen. In Natural heißen die entsprechenden Statements ESCAPE TOP und ESCAPE BOTTOM. Code in Methoden wiederverwenden Wenn du denselben Code mehrfach brauchst, fasse ich ihn als Methode zusammen. Sie gibt einem Codebereich einen Namen, über den du ihn an verschiedenen Stellen aufrufen kannst. Eine Methode zum Berechnen des Alters kann beispielsweise das Geburtsdatum und das aktuelle Datum erhalten und das Alter zurückgeben. Doppelter Code führt dazu, dass du Änderungen an mehreren Stellen einpflegen musst. Wird dabei eine Stelle übersehen, können Fehler entstehen, die schwer zu finden sind. Meine Faustregel lautet deshalb: Sobald ich Code mehr als einmal brauche, mache ich daraus eine Methode. Eclipse unterstützt das über Refactor Extract Method und erzeugt dabei auch passende Parameter und einen Rückgabewert. In prozeduralen Sprachen bezeichnet eine Funktion einen benannten Codebereich mit Rückgabewert. Eine Prozedur hat keinen Rückgabewert. In Java heißen beide Varianten Methoden. Aufbau und Signatur Bei einer Methode steht der Rückgabetyp vor dem Namen. Dahinter folgen die Parameter in runden Klammern. Die Signatur kennzeichnet eine Methode eindeutig....
50 Minuten
Viele angehende Anwendungsentwickler/innen könnten Hilfe bei der Gestaltung ihrer Bewerbung um eine Ausbildungsstelle gebrauchen. Daher gebe ich in der einundvierzigsten Episode des Anwendungsentwickler-Podcasts einige praktische Tipps zum Bewerbungsverfahren. TL;DR Für deine Bewerbung als Fachinformatiker:in Anwendungsentwicklung empfehle ich dir, den Beruf vorher kennenzulernen und erste kleine Programme auszuprobieren. Ein Praktikum zeigt dir, wie ein Betrieb arbeitet, und hilft dir, einen passenden Ausbildungsplatz zu finden. In deinen Unterlagen sollte deutlich werden, warum du programmieren möchtest; deine Kontaktdaten und mehrere Schulzeugnisse gehören ebenfalls dazu. Für das Gespräch bereitest du eigene Fragen vor, informierst dich über das Unternehmen und klärst, wie du später zur Arbeit und zur Schule kommst. Kapitelmarken [00:00:00] Bewerbungstipps für die Ausbildung [00:01:23] Erfahrungen aus dem Auswahlverfahren und duales Studium [00:03:25] Beruf und Arbeitsalltag kennenlernen [00:06:20] Anwendungsentwicklung unabhängig vom Geschlecht [00:07:08] Erste kleine Programme ausprobieren [00:08:54] Praktikum und passende Entwicklungsbereiche [00:11:28] Ausbildung oder Studium wählen [00:12:50] Alternativen und persönliche Voraussetzungen klären [00:14:12] Ausbildungsbetriebe finden und Kontakte knüpfen [00:16:10] Berufliche Ziele überlegen [00:17:27] Bewerbungsunterlagen und erwartete Vorkenntnisse [00:19:30] Den Berufswunsch nachvollziehbar begründen [00:21:16] Kontaktdaten angeben und erreichbar sein [00:23:24] Unterbrechungen im Lebenslauf erklären [00:25:12] Mehrere Schulzeugnisse beilegen [00:27:23] Hobbys im Lebenslauf angeben [00:28:48] Natürlich schreiben und Zukunftspläne realistisch halten [00:29:52] Elektronisch bewerben [00:30:38] Alle Unterlagen in einer PDF-Datei verschicken [00:31:33] Das Vorstellungsgespräch vorbereiten [00:31:56] Über das Unternehmen informieren [00:33:48] Smalltalk üben und aktuelle IT-Themen verfolgen [00:36:41] Eigene Fragen für das Gespräch vorbereiten [00:39:02] Arbeitsweg und Wohnort klären [00:41:31] Angebotene Termine wahrnehmen [00:43:38] Passende Kleidung wählen [00:44:59] Mit etwas Zeitpuffer ankommen [00:46:03] Weiterführende Artikel und Links [00:47:10] Fragen, Feedback und Newsletter [00:49:10] Ausblick auf die Lernzielkontrolle zu Algorithmen Inhalt Viele Inhalte aus Podcast-Episode 5 (Bewerbung nach der Ausbildung) gelten auch schon bei der Bewerbung um eine Ausbildungsstelle. Vorbereitung Informiere dich über Inhalte und Anforderungen des Berufs. Probiere aus zu programmieren, wenn du es noch nie (z.B. in der Schule) gemacht hast (z.B. mit AntMe! oder der Hour of Code). Hast du Spaß daran? Absolviere ein Praktikum im IT-Bereich. Am besten in der Anwendungsentwicklung. Informiere dich über den Ablauf der Ausbildung/des Studiums (Inhalte, zeitliche Organisation). Informiere dich über potentielle Ausbildungsunternehmen, z.B. auf Jobmessen, Bewerbertagen, bei Bekannten und Verwandten oder im Internet. Mache dir Gedanken über Karrieremöglichkeiten. Überlege dir mögliche Alternativen zur Ausbildung/zum Studium. Bewerbungsschreiben Mache dein Interesse am Beruf deutlich und lege überzeugend dar, warum der Beruf der richtige für dich ist. Gib deine persönliche Handynummer und E-Mail-Adresse gut auffindbar an. Verschweige nichts. Lass insb. keine Lücken im Lebenslauf entstehen. Reiche deine vollständigen Bewerbungsunterlagen ein. Lege mehrere Zeugnisse bei, sodass eine Entwicklung erkennbar ist. Gib gerne deine Hobbys an (sie liefern Gesprächsstoff für das Bewerbungsgespräch und zeigen ggfs. dein Interesses am Beruf). Verwende keine hochtrabenden Formulierungen. Du bewirbst dich auf eine Ausbildung und nicht auf eine Führungsposition. Bewirb dich elektronisch (falls das möglich und erwünscht ist). Verschicke deine Bewerbung als eine (!) PDF-Datei (z.B. mittels PDFCreator) und nicht als 10 Word- und JPG-Dateien. Vorstellungsgespräch Bereite dich auf das konkrete Unternehmen vor (Mitarbeiterzahl, Produkte, wichtige Rahmendaten usw.). Recherchiere das aktuelle Tagesgeschehen (liefert potentielle Gesprächsthemen). Übe ein wenig Smalltalk. Recherchiere aktuelle IT-Themen (Hardware, Windows, Handys usw.). Bereite eigene Fragen vor (z.B. zu Vergütung, Arbeitszeit, Schule, Ausbilder, Arbeitsalltag). Plane ggfs. deinen Arbeitsweg zum Unternehmen/zur Berufschule/zur Hochschule? Plane ggfs. deine Unterkunft während der Ausbildung/des Studiums. Nimm dir angebotene Termine bestmöglich wahr und mache die Schule nicht zum Problem. Die Unternehmen haben oft nur wenige Termine frei. Ziehe vernünftige Kleidung an (nicht zu hochgestochen, aber auch nicht zu locker). Sei pünktlich, aber nicht überpünktlich. Literaturempfehlungen * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Zusammenfassung Den Beruf kennenlernen Aus dem Auswahlverfahren für einen Ausbildungsplatz 2016 habe ich Tipps für dich zusammengestellt. Sie gelten auch, wenn du dich für ein duales Studium interessierst, das die Ausbildung als Fachinformatiker:in Anwendungsentwicklung einschließt. Für eine Stelle nach der Ausbildung findest du weitere Hinweise in Episode 5. Was dich im Arbeitsalltag erwartet Als Anwendungsentwickler:in verbringst du viel Zeit am Computer und löst Probleme, indem du Software schreibst. An einer Aufgabe arbeitest du teilweise mehrere Wochen oder Monate. Dazu kommen Gespräche mit Kolleg:innen und Kund:innen, etwa über Anforderungen oder darüber, wie die Software aussehen soll. Sprich mit einem/einer Entwickler:in oder deiner Informatiklehrkraft über den Arbeitsalltag. So kannst du einschätzen, ob dir diese Arbeit gefällt. Der Beruf steht dir unabhängig von deinem Geschlecht offen; ich wünsche mir mehr Bewerberinnen in der Informatik. Erste Programme ausprobieren Mit einer kleinen Programmieraufgabe findest du heraus, ob dir das Denken und Arbeiten beim Programmieren Spaß macht. Dafür gibt es kostenfreie Angebote im Internet, teilweise direkt im Browser. Ich nenne beispielsweise Hour of Code, AntMe! und Rails for Zombies. Professionell programmieren lernst du während der Ausbildung. Erste eigene Versuche helfen dir dabei, deine Berufswahl auf Erfahrungen zu stützen. Ein Praktikum machen In einem Praktikum erlebst du, wie Software in einem Unternehmen entsteht. Du lernst das Arbeitsumfeld kennen und siehst, welche Anwendungen der Betrieb entwickelt. Wenn dich Webentwicklung interessiert, suche gezielt nach einem Unternehmen, das in diesem Bereich arbeitet. Du kannst auch für die Ferien nach einem Praktikumsplatz fragen. Selbst ein kurzer Einblick in die Anwendungsentwicklung hilft dir später, deinen Berufswunsch zu begründen. Bei mir erhöht ein freiwilliges Praktikum in diesem Bereich die Chance, dass ich dich zum Gespräch einlade. Einen passenden Ausbildungsweg und Betrieb finden Zur Softwareentwicklung führen unterschiedliche Wege. Die Ausbildung als Fachinformatiker:in Anwendungsentwicklung dauert regulär drei Jahre und findet im Betrieb und in der Berufsschule statt. Für ein duales Studium kommen unter anderem Wirtschaftsinformatik oder Medieninformatik infrage. Informiere dich über die Inhalte der jeweiligen Studiengänge und darüber, wie sie zu deinen Interessen passen. Überlege auch, welche Alternative für dich infrage kommt, falls du deinen gewünschten Platz nicht bekommst. Ein Vollzeitstudium kann eine solche Möglichkeit sein. Wenn du mehrere Wege offenhältst, kannst du ein Angebot danach beurteilen, wie gut es zu dir passt. Bei deiner Suche helfen dir folgende Fragen: Welche Software möchtest du später entwickeln? Wie lange möchtest du lernen, und kommt eine kürzere Ausbildung für dich infrage? Kannst du für deinen Ausbildungsplatz umziehen? Wie erreichst du den Betrieb und die Berufsschule? Möchtest du dich später fachlich vertiefen oder als Teamleiter:in beziehungsweise Projektleiter:in arbeiten? Kontakte zu Unternehmen findest du auf Jobmessen und an Bewerbertagen. Manche Angebote ermöglichen dir, Bewerbungsgespräche zu üben oder deine Unterlagen prüfen zu lassen. Frage auch bei Hochschulen und Berufsschulen nach entsprechenden Veranstaltungen. Als weitere Anlaufstellen nenne ich Xing und fachinformatiker.de. Über persönliche Kontakte erfährst du ebenfalls von Ausbildungsbetrieben und bekommst leichter einen ersten Zugang zu einem Unternehmen. Deine Bewerbungsunterlagen schreiben Den Berufswunsch begründen Beschreibe, warum du Anwendungsentwickler:in werden möchtest und welche Erfahrungen dich zu diesem Wunsch gebracht haben. Dafür eignen sich eigene Programmierprojekte, Informatikunterricht oder ein Praktikum. Wenn du bisher andere Berufsfelder kennengelernt hast, braucht dein Wechsel zur Anwendungsentwicklung eine nachvollziehbare Begründung. Ich suche bei IT-Azubis nach Interesse am Beruf und danach, ob sie sich mit dem Arbeitsalltag beschäftigt haben. Das fachliche Wissen gehört zur Ausbildung. Bei einem Betrieb, der bereits umfassende Programmierkenntnisse verlangt, würde ich genauer prüfen, ob er dir eine gute Ausbildung bietet. Solche Erwartungen können darauf hindeuten, dass du früh als günstige Arbeitskraft eingesetzt werden sollst. Gut erreichbar sein Gib deine Handynummer und eine passende E-Mail-Adresse an. Ich empfehle dir, beide auf jeder Seite gut sichtbar in der Kopfzeile oder Fußzeile zu platzieren. Rufe deine E-Mails regelmäßig ab und beantworte Nachrichten. Gerade während deiner Schulzeit lässt sich ein Termin auf diesem Weg leichter vereinbaren. Deinen Lebenslauf nachvollziehbar machen Erkläre längere Unterbrechungen knapp, beispielsweise mit einem Hinweis auf einen Krankenhausaufenthalt oder einen Umzug. Persönliche Einzelheiten kannst du dabei für dich behalten. Eine kurze Angabe hilft mir, den zeitlichen Ablauf zu verstehen. Lege mehrere Schulzeugnisse bei, damit ich erkennen kann, wie sich deine Leistungen entwickelt haben. Wenn du Abitur machst, eignen sich dafür die Zeugnisse aus der Oberstufe. ...
40 Minuten
Als Software-Entwickler kann man sich mit zahlreichen Tools das Leben einfacher machen. In der vierzigsten Episode des Anwendungsentwickler-Podcasts stelle ich 23 hilfreiche (Windows-)Tools vor. TL;DR Mit den Windows-Tools aus meinem Arbeitsalltag kannst du als IT-Azubi wiederkehrende Aufgaben schneller erledigen und deine Entwicklungsumgebung einrichten. Textbausteine und eine erweiterte Zwischenablage sparen dir Tipparbeit, während Git deine Änderungen nachvollziehbar macht und passende Editoren dich beim Programmieren unterstützen. Für Aufgaben am System stelle ich dir unter anderem Everything zur Dateisuche und Process Explorer für gesperrte Dateien vor. Dazu kommen Werkzeuge für virtuelle Testumgebungen sowie RSS-Reader und Podcatcher, mit denen du neue Fachinhalte verfolgen kannst. Kapitelmarken [00:00:01] Windows-Tools für den Entwicklungsalltag [00:01:56] Explorer++: Ordner über Tabs und Favoriten erreichen [00:02:53] CLCL: Mehrere Inhalte in der Zwischenablage speichern [00:04:03] AutoHotkey: Textbausteine und Makros einrichten [00:05:50] KeePass: Eigene Passwörter für jeden Account [00:07:27] Texteditoren: Vim, Notepad++ und PSPad [00:10:46] MarkdownPad: Texte schreiben und als Vorschau sehen [00:12:30] Excel: Texte bearbeiten und SQL-Anweisungen erzeugen [00:13:50] Git: Quelltext und Dokumente versionieren [00:14:53] posh-git: Git-Status in PowerShell anzeigen [00:15:59] WinMerge: Dateien vergleichen und zusammenführen [00:16:57] Die passende IDE und ihre Shortcuts [00:18:44] Browser mit Entwicklungswerkzeugen [00:19:37] Enterprise Architect und Violet UML [00:21:38] Everything: Dateien schnell finden [00:23:14] Process Explorer: Prozesse und gesperrte Dateien untersuchen [00:24:35] IrfanView: Bilder ansehen und Screenshots bearbeiten [00:25:39] 7-Zip: Archive erstellen und entpacken [00:26:16] TreeSize: Große Ordner aufspüren [00:27:09] PuTTY und WinSCP: Auf Linux-Systeme zugreifen [00:28:21] f.lux und Twilight: Bildschirmfarben am Abend anpassen [00:30:13] VirtualBox: Betriebssysteme und Netzwerke testen [00:31:32] RSS-Reader: Neue Artikel gesammelt verfolgen [00:32:44] BeyondPod: Podcasts abonnieren und schneller hören [00:34:38] Buchtipps zu Vim und Git [00:35:49] Shownotes und Buch zu testgetriebenem Entwickeln mit C# [00:37:09] Eric Lippert über problematische C#-Sprachfeatures [00:37:43] Feedback und Newsletter mit Projektchecklisten [00:39:01] Ausblick: Bewerbungen für die IT-Ausbildung Inhalt Produktivität bei der täglichen Arbeit Explorer++ oder ein anderer Explorer-Ersatz Sollte Favoriten und mehrere Tabs unterstützen. CLCL Multi-Clipboard für Copy/Paste. AutoHotkey Text-Vervollständigung z.B. für Code-Snippets oder andere häufig benötigte Texte. KeePass Verwaltet alle Passwörter. Inkl. Browser-Integration. Vim, Notepad++, PSPad oder irgendein anderer Editor Das Schweizer Taschenmesser für Entwickler. Sollte Regular Expressions beherrschen. MarkdownPad* Zum Schreiben jeglicher Dokumentation. Excel* Für viele wiederkehrende Bearbeitungen hilfreich. Git Die beste Versionsverwaltung der Welt ;-) posh-git Erweitert die PowerShell um eine nützliche Git-Integration WinMerge Ein sehr gutes Merge-Tool für Windows. Eclipse, Visual Studio* oder eure Lieblings-IDE Hilft, produktiv zu entwickeln. Browser mit Development Tools Unerlässlich für die Webentwicklung Enterprise Architect* oder eine andere Modellierungssoftware Nicht nur für die Abschlussprüfung ist die Modellelierung oder Dokumentation der programmierten Software wichtig. System-Tools Everything Die schnellste Dateisuche für Windows. Process Explorer Findet z.B. Prozesse, die Dateien blockieren. IrfanView Schneller und leichtgewichtiger Bildanzeiger mit rudimentären Bearbeitungsfunktionen. 7-Zip (deutsche Version) Packt und entpackt alles. TreeSize Findet die Speicherfresser auf der Festplatte. PuTTY Terminalemulation für den Zugriff auf Linux-Server. WinSCP Dateiübertragung per SCP, FTP usw. Sonstiges f.lux Damit man auch nach einer langen Coding-Session ruhig schlafen kann. VirtualBox oder eine andere Virtualisierungssoftware Zum Testen der programmierten Software oder zur Simulation einer komplexen Umgebung unerlässlich. RSSOwl, Tiny Tiny RSS oder ein anderer RSS-Reader Um auf dem Laufenden zu bleiben. BeyondPod* oder ein anderer Podcatcher Um immer die neusten Podcast-Folgen im Zugriff zu haben. Literaturempfehlungen * * Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Was sollte ich alles machen, wenn ich Windows neu installiere? Podcasts für Softwareentwickler - Anwendungsentwickler-Podcast #26 Kostenlose Informationsquellen zur Softwareentwicklung - Anwendungsentwickler-Podcast #22 Kostenpflichtige Informationsquellen zur Softwareentwicklung - Anwendungsentwickler-Podcast #23 Zusammenfassung Wiederkehrende Aufgaben am Windows-PC Für meine tägliche Arbeit als Softwareentwickler habe ich über die Jahre verschiedene Werkzeuge gesammelt. Die meisten sind kostenfrei; einige Programme kosten Geld. Als IT-Azubi kannst du damit häufige Handgriffe verkürzen und Aufgaben rund um deine Software bearbeiten. Explorer++: Mehrere Tabs halten verschiedene Verzeichnisse offen. Über Favoriten erreichst du häufig benötigte Ordner schnell. Ich lege dort beispielsweise meinen Workspace ab. CLCL: Diese erweiterte Zwischenablage speichert mehrere kopierte Inhalte. Bei mir sind 30 Einträge eingestellt. Mit Strg+V fügst du den zuletzt kopierten Inhalt ein; für ältere Einträge öffnest du eine Auswahlliste über einen konfigurierbaren Shortcut. Ich habe dafür Strg+Alt+V eingerichtet. AutoHotkey: Kürzel werden automatisch durch hinterlegte Texte ersetzt, etwa durch eine Grußformel oder deine E-Mail-Adresse. Seltene Zeichenfolgen mit einem zusätzlichen # helfen dabei, versehentlich ersetzte Texte zu vermeiden. Das kostenfreie Werkzeug unterstützt außerdem Makros und kann Windows fernsteuern. Im Forum findest du Hilfe zu den Funktionen. KeePass: Deine Passwörter liegen in einer Datenbank, die du mit einem Master-Passwort öffnest. Der eingebaute Generator erstellt lange Passwörter, sodass du für jeden Account ein eigenes hinterlegen kannst. Über die Browser-Anbindung lassen sich Zugangsdaten per Klick oder Shortcut einfügen. Ich verwende für meine Accounts jeweils unterschiedliche, generierte Passwörter. Texte bearbeiten und Daten vorbereiten Wenn ich Quelltext umforme oder eine CSV-Datei bearbeite, greife ich häufig zu einem Texteditor. Durch Suchen und Ersetzen lassen sich beispielsweise vorhandene Attribute einer Java-Klasse für weiteren Code aufbereiten. Vim: Mein bevorzugter Editor lässt sich über die Tastatur bedienen. Auch beim Navigieren können die Finger auf der Grundposition des Zehnfingersystems bleiben. Die Bedienung braucht Übung, weil viele Tasten eigene Befehle auslösen. Zum Beenden gehört beispielsweise der Befehl :q. Notepad++ und PSPad: Beide habe ich zusätzlich installiert. Wenn ich mit regulären Ausdrücken suche und ersetze, arbeite ich gern mit einer sichtbaren Vorschau und gehe die Treffer schrittweise durch. MarkdownPad: Während du Markdown schreibst, zeigt dir der Editor eine HTML-Vorschau. Markdown zeichnet Texte mit einer einfachen Syntax aus: Ein # kennzeichnet beispielsweise eine Überschrift, ein Sternchen kann einen Listenpunkt erzeugen. Auch Links und Bilder lassen sich einfügen. Excel: Mit Formeln kannst du größere Mengen Text bearbeiten. Ich erzeuge damit beispielsweise SQL-Anweisungen aus CSV-Daten, wenn eine Datenbank diese Dateien nicht direkt importieren kann. Ebenso lassen sich Texte ergänzen oder umformen. Das entsprechende Programm aus OpenOffice kann diese Aufgaben ebenfalls übernehmen. Markdown lässt sich in andere Formate umwandeln, darunter HTML und LaTeX. Ich schreibe damit auch für meinen Blog und mein Wiki. Da Markdown aus reinem Text besteht, kannst du Änderungen mit Git verfolgen. Quelltext verwalten und entwickeln Mit Git speichere ich die Entwicklung meines Quelltexts und meiner Markdown-Texte. Das dezentrale Versionsverwaltungssystem arbeitet lokal, sodass du dafür keine Serververbindung brauchst. Du kannst frühere Stände wiederherstellen und Änderungen zwischen Versionen vergleichen. posh-git: Die PowerShell-Erweiterung zeigt Informationen zu deinem Git-Repository direkt im Prompt an, etwa geänderte oder neue Dateien. Einstellungen können helfen, die Anzeige zu beschleunigen. Die Erweiterung ist für PowerShell gedacht. WinMerge: Dateien lassen sich visuell vergleichen und Änderungen zusammenführen. Dabei kannst du beispielsweise Leerraum oder Zeilenenden ignorieren. Per Shortcut überträgst du Inhalte zwischen den Seiten. WinMerge lässt sich als Merge-Werkzeug in Git einbinden. Bei der IDE richtet sich die Wahl nach deiner Programmiersprache. Für Java kommen beispielsweise Eclipse oder IntelliJ infrage; auch NetBeans wird genannt. Im .NET-Umfeld arbeite ich mit Visual Studio. Eine passende IDE ergänzt Code und zeigt Fehler früh an. Refactoring-Funktionen helfen dir, vorhandenen Code zu überarbeiten. Für häufige Funktionen lerne oder konfiguriere ich Shortcuts, damit ich sie direkt über die Tastatur erreiche. Wenn du Webanwendungen entwickelst, brauchst du einen Browser mit Entwicklungswerkzeugen. Ich verwende Firefox mit Erweiterungen. Auch Chrome bietet Unterstützung, beispielsweise um unterschiedliche Displaygrößen für responsive Websites nachzubilden. Internet Explorer beziehungsweise Edge werden ebenfalls als Möglichkeiten genannt. Software und Prozesse modellieren Mit Enterprise Architect erstelle ich Modelle für Software und Prozesse. Das kostenpflichtige Werkzeug unterstützt Entity-Relationship-Modelle sowie UML-Diagramme. Auch BPMN und EPK gehören zum Funktionsumfang. Aus Klassendiagrammen lässt sich Code erzeugen; vorhandener Code kann wiederum als Klassendiagramm dargestellt werden. Enterprise Architect unterstützt außerdem Code aus Zustandsdiagrammen für
39 Minuten
Die Verarbeitung von Zahlen und Zeichen in Java wird in der neununddreißigsten Episode des Anwendungsentwickler-Podcasts behandelt. TL;DR Mit meiner Lernzielkontrolle zu Zahlen und Zeichen in Java kannst du dein Grundlagenwissen als IT-Azubi prüfen. Du erfährst, wie Zahlenliterale und Datentypen funktionieren, was bei Ganzzahldivision und Überläufen passiert und weshalb Gleitkommazahlen beim Rechnen ungenau sein können. Dazu kommen char und String, Escape-Sequenzen sowie der Zusammenhang zwischen Zeichen und Zahlenwerten. Für präzise Dezimalberechnungen steht dir BigDecimal zur Verfügung; bei primitiven Datentypen und ihren Wrapper-Klassen begegnen dir außerdem Boxing und Unboxing. Kapitelmarken [00:00:20] Lernzielkontrolle zu Zahlen und Zeichen [00:01:43] Zahlenliterale in verschiedenen Zahlensystemen [00:04:14] Ganzzahlige Datentypen und Wertebereiche [00:06:45] Standardtyp int und das Suffix L für long [00:08:26] Zahlen mit Unterstrichen lesbarer schreiben [00:10:03] Ganzzahldivision und Cast auf double [00:12:10] Überläufe bei ganzzahligen Datentypen [00:15:19] Gleitkommazahlen mit double und float [00:17:33] Ungenauigkeiten von Gleitkommazahlen [00:20:50] Präzise Dezimalberechnungen und BigDecimal [00:22:11] Genauigkeitsverlust beim Cast von double auf int [00:23:27] Einzelne Zeichen und Strings [00:24:29] Escape-Sequenzen für besondere Zeichen [00:29:05] Zeichenwerte, ASCII und Cäsar-Verschlüsselung [00:32:25] Primitive Datentypen, Wrapper und Boxing [00:34:13] Shownotes und Themenliste für die Abschlussprüfung [00:35:36] Mehrere Programmiersprachen kennenlernen [00:36:28] Kontakt, Feedback und Newsletter [00:38:06] Ausblick auf Werkzeuge für Entwickler:innen Inhalt Zahlen Welche Präfixe kennt Java zur Eingabe von Zahlen in verschiedenen Zahlensystemen? 0b für Binär-, 0 für Oktal- und 0x für Hexadezimalzahlen. Welche ganzzahligen Datentypen gibt es in Java? byte (8bit), short (16bit), int (32bit), long (64bit). Was ist der Standarddatentyp für Ganzzahlen in Java? Integer. Wie zwingt man Java zur Verwendung eines anderen Datentyps für numerische Variablen? Mit den entsprechenden Suffixen (z.B. L für Long). Wie kann man sehr große Zahlen besser lesbar eingeben? Mit _ als Trennzeichen. Worauf muss man bei der Division zweier Integer-Werte achten? Das Ergebnis ist auch ein Integer, also ggfs. falsch. Was ist ein Overflow? Wenn eine numerische Variable einen Wert zugewiesen bekommt, der zu groß für ihren Wertebereich ist, "läuft sie über" und beginnt bei der kleinsten negativen Zahl weiterzuzählen. Was ist der Standarddatentyp für Dezimalzahlen in Java? Double. Wie gibt man eine Dezimalzahl in Java ein? Mit . als Tausendertrennzeichen. Warum könnte die mangelnde Präzision von Gleitkommazahlen ein Problem sein? Weil mathematische Berechnungen ggfs. ein falsches Ergebnis produzieren. Warum kann man einer Integer-Variablen keinen Double-Wert zuweisen? Weil das einen Genauigkeitsverlust zur Folge hätte. Zeichen Wie gibt man einen char in Java ein? In einfachen Anführungszeichen (''). Was ist ein String? Ein Datentyp, der beliebige alphanumerische Zeichen speichern kann. Wie schreibt man Strings in Java? In normale Anführungszeichen (""). Wie escapet man Zeichen in Java? Mit einem Backslash (\). Welche wichtigen besonderen Zeichen sollte man kennen? Zeilenumbruch \n und Tabstop \t. Wie hängen char und int zusammen? Man kann sie implizit ineinander umwandeln. Der Zahlwert steht für die ASCII-Position der Buchstaben. Was sind primitive Datentypen? Datentypen, die nur einen simplen Wert aufnehmen können und keine Methoden besitzen. Literaturempfehlungen 2 Imperative Sprachkonzepte - Rheinwerk Computing :: Java ist auch eine Insel 4 Der Umgang mit Zeichenketten - Rheinwerk Computing :: Java ist auch eine Insel The Java Tutorials *(direkt beim Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Letzte Woche auf der Website: Liste möglicher Themen der IHK-Abschlussprüfung und Muss man mehr als eine Programmiersprache beherrschen?. Ascii Table - ASCII character codes and html, octal, hex and decimal chart conversion 9.2 Wrapper-Klassen und Autoboxing - Rheinwerk Computing :: Java ist auch eine Insel Zusammenfassung Zahlen in Java schreiben Mit dieser Lernzielkontrolle schließe ich meine erste Reihe zu den Java-Grundlagen vorerst ab. Nach Variablen und logischen Operatoren kannst du hier dein Wissen über Zahlen und Zeichen prüfen. Im Quellcode kannst du ganze Zahlen in verschiedenen Zahlensystemen schreiben: | Zahlensystem | Schreibweise | | --- | --- | | Dezimal | Zahl ohne besonderes Präfix | | Binär | 0b vor der Zahl | | Oktal | führende 0 | | Hexadezimal | 0x vor der Zahl | Bei einer führenden Null interpretiert Java ein ganzzahliges Literal als Oktalzahl. Dort sind die Ziffern von 0 bis 7 erlaubt, weshalb eine enthaltene 8 oder 9 einen Compilerfehler verursacht. Hexadezimalzahlen können zusätzlich die Zeichen a bis f enthalten. Wenn du solche Werte mit println ausgibst, erscheint ihr Dezimalwert. Beispielsweise ergibt 0b01 bei der Ausgabe 1. Ganzzahlige Datentypen und Wertebereiche Für ganze Zahlen stehen dir vier primitive Datentypen zur Verfügung: | Datentyp | Bitlänge | | --- | --- | | byte | 8 Bit | | short | 16 Bit | | int | 32 Bit | | long | 64 Bit | Mit den 8 Bit eines byte lassen sich 256 verschiedene Werte darstellen. Sein Wertebereich reicht von -128 bis 127. Bei den ganzzahligen Datentypen liegt der kleinste negative Wert betragsmäßig jeweils um eins über dem größten positiven Wert, weil auch die Null einen Platz braucht. Ein int bietet insgesamt ungefähr 4,2 Milliarden verschiedene Werte, davon etwa 2,1 Milliarden im positiven Bereich. Für eine eigene positive ID für jeden Menschen auf der Erde reicht dieser Bereich daher nicht aus. Ein long bietet dafür genügend Platz. Eine IPv6-Adresse mit ihren 128 Bit überschreitet wiederum die Länge eines einzelnen long. Literale und lesbare Zahlen Ganzzahlige Literale haben standardmäßig den Typ int. Mit einem großen L am Ende, beispielsweise 75L, kennzeichnest du ein Literal als long. Bei großen Zahlen, die den Wertebereich von int überschreiten, brauchst du dieses Suffix. Durch Unterstriche zwischen Ziffern kannst du längere Zahlen leichter lesen. 1_000 steht für denselben Wert wie 1000, wobei Java die Unterstriche beim Verarbeiten ignoriert. Die Gruppen kannst du passend zum jeweiligen Wert wählen. Gerade bei Testwerten lässt sich so schneller erkennen, welche Zahl im Code steht. Division mit ganzen Zahlen Wenn beide Operanden ganzzahlig sind, liefert die Division ein ganzzahliges Ergebnis. Dabei wird der Nachkommateil abgeschnitten. Auch bei double d = 5 / 3; wird zunächst ganzzahlig gerechnet, sodass d anschließend den Wert 1.0 erhält. Für ein Ergebnis mit Nachkommastellen muss mindestens ein Operand als Gleitkommazahl vorliegen. Das erreichst du beispielsweise mit einem Cast: double d = (double) 5 / 3;. Überläufe Erhöhst du einen byte über seinen Maximalwert 127 hinaus, entsteht ein Overflow, also ein Überlauf. Beim nächsten Wert springt er auf -128. Am Bitmuster lässt sich der Übergang nachvollziehen: Aus 01111111 wird durch das Erhöhen um eins 10000000. Dieses Muster steht beim byte für den kleinsten negativen Wert. Auch bei den anderen ganzzahligen Datentypen setzt sich die Folge nach dem größten positiven Wert beim kleinsten negativen Wert fort. Wiederholtes Erhöhen durchläuft den Wertebereich im Kreis. Gleitkommazahlen und präzises Rechnen Für ein Literal mit Nachkommastellen ist double der Standardtyp. Im Java-Code schreibst du den Dezimaltrenner als Punkt, etwa 12.37. Mit einem angehängten f kennzeichnest du den Wert als float, beispielsweise 12.37f. Da float weniger Speicher beansprucht, kommt dieser Typ infrage, wenn sein Wertebereich für deine Aufgabe ausreicht. In meinen bisherigen Programmen habe ich mit double gearbeitet. Woher Ungenauigkeiten kommen Gleitkommazahlen bilden Werte mithilfe von Zweierpotenzen ab. Hinter dem Binärkomma stehen dabei Bruchteile wie ein Halb oder ein Viertel; jede weitere Stelle halbiert den Stellenwert erneut. Ein Wert wie 0.1 lässt sich damit nur angenähert speichern. Wenn du ihn zehnmal addierst, kann deshalb ein Ergebnis knapp unter 1 entstehen. Solche Abweichungen ergeben sich bereits aus den gespeicherten Werten und wirken sich beim Rechnen aus. Für präzise Dezimalberechnungen, etwa bei Rechnungsbeträgen oder in Versicherungsanwendungen, steht dir in Java BigDecimal zur Verfügung. In C# heißt der entsprechende Typ Decimal. Prüfe für deine Programmiersprache, welcher Datentyp die geforderte Genauigkeit ermöglicht. Als ich meine ersten Berechnungen für eine Versicherung in C# mit double geschrieben hatte, musste ich nach den fehlerhaften Ergebnissen die betreffenden Werte durch Decimal ersetzen. Dafür brauchte ich fast einen halben Tag. Werte ausdrücklich umwandeln Bei int a = 2.7; meldet der Compiler einen Fehler, weil beim Wechsel von double zu int der Nachkommateil verloren geht. Mit int a = (int) 2.7; erlaubst du diesen Schritt ausdrücklich. Das Ergebnis ist 2, da der Cast den Nachkommateil abschneidet. Ein solcher Cast macht kenntlich, dass du den möglichen Genauigkeitsverlust bewusst akzeptierst. Zeichen und Zeichenketten Ein einzelnes Zeichen schreibst du mit einfachen Anführungszeichen, beispielsweise char zeichen = 'A';. Für Zeichenketten steht dir String zur Verfügung, etwa String text = "Hallo";. Darin können Buchstaben ebenso wie Ziffern, Umlaute oder Sonderzeichen stehen. Escape-Sequenzen Für besondere Zeichen innerhalb eines Literals setzt du einen Backslash vor das folgende Zeichen: | Escape-Sequenz | Bedeutung | | --- | --- | | \n | Zeilenumbruch | | \t | Tabulator | | \\ | Backslash als Zeichen | Wenn du beispielsweise einen Windows-Dateipfad im Quellcode schreibst, brauchst du für jeden enthaltenen Backslash die Sch
38 Minuten
Eine kurze Einführung in alles rund um Variablen und Operatoren gibt es in der achtunddreißigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Mit meiner Lernzielkontrolle zu Variablen und Operatoren in Java kannst du Grundlagen für deine IT-Ausbildung wiederholen. Variablen sind benannte Speicherbereiche, deren Datentyp bestimmt, welche Werte sie aufnehmen können; dazu gehören Regeln für Namen und Gültigkeitsbereiche sowie das Deklarieren, Initialisieren und Casten. Bei den Operatoren geht es um Wertzuweisungen und Berechnungen, außerdem um das Verketten von Strings und logische Ausdrücke. Beispiele zeigen dir, wie Modulo funktioniert und wann Java Teile eines logischen Ausdrucks überspringt. Kapitelmarken [00:00:01] Einstieg in die Lernzielkontrolle [00:00:41] Persönliche Ansprache und Feedback zum Gewinnspiel [00:02:55] Variablen und Operatoren im Java-Tutorial [00:04:28] Was ist eine Variable? [00:05:43] Java-Bezeichner und Namenskonventionen [00:07:48] Datentypen und statische Typisierung [00:09:20] Variablen deklarieren [00:10:16] Variablen initialisieren [00:11:50] Literale im Quelltext [00:12:44] Gültigkeitsbereiche lokaler Variablen [00:14:42] Instanzvariablen auf Klassenebene [00:15:58] Datentypen mit einem Cast umwandeln [00:18:24] Werte mit dem Zuweisungsoperator zuweisen [00:19:52] Arithmetische Operatoren [00:20:34] Modulo und gerade Tabellenzeilen [00:22:20] Strings verketten [00:23:17] Zusammengesetzte Zuweisungsoperatoren [00:24:50] Unäre Operatoren und Präfix oder Postfix [00:26:36] Gleichheit und Ungleichheit prüfen [00:27:29] Logische Operatoren [00:28:43] Boolesche Variablen [00:29:28] Lazy Evaluation logischer Ausdrücke [00:31:24] Mathematische Funktionen der Klasse Math [00:32:54] Prüfungsbezug der Grundlagen [00:33:59] Java-Bücher und Affiliate-Links [00:34:58] Shownotes, Prüfungsthemen und Probleme mit null [00:36:11] Feedback und Newsletter [00:37:13] Ausblick auf weitere Ausbildungsthemen Inhalt Variablen Was ist eine Variable? Ein benannter Speicherbereich des Computers. Wie werden Variablen in Java benannt? Welche Zeichen sind erlaubt? Nach Konvention in Camel Case. Zahlen, Buchstaben, Dollarzeichen und Unterstrich sind erlaubt. Was ist ein Datentyp? Ein Datentyp definiert, welche Werte eine Variable aufnehmen kann (z.B. Zahlen, Zeichen). Wie deklariert man eine Variable in Java? Datentyp + Name (z.B. String text). Was bedeutet es, eine Variable zu initialisieren? Die erste Wertzuweisung einer Variablen heißt Initialisierung. Was ist ein Literal? Ein fixer Wert (z.B. Zahl/Text), der z.B. einer Variablen zugewiesen werden kann. Was ist der Gültigkeitsbereich (scope) einer Variablen? Eine Variable ist ab ihrer Deklaration nur im aktuellen Block und allen untergeordneten Blöcken gültig (Ausname: Instanzvariablen). Was ist ein Cast? Eine explizite Typumwandlung. Operatoren Was mach der Operator = in Java? Zuweisungsoperator. Wie führt man grundlegende arithmetische Operationen in Java aus? Die Operatoren +, -, *, / und % (Modulo) sind direkt verfügbar. Was macht der Modulo-Operator? Ermittelt den Rest der ganzzahligen Division. Was ist Konkatenation und welcher Operator wird dafür verwendet? Das Zusammenfügen von Strings mit dem Operator +. Wie kann man häufig benötigte arithmetische Operationen auf Variablen abkürzen? Mit den Operatoren +=, -=, *=, /= und %=. Was sind unäre Operatoren? Operatoren mit nur einem Operanden (z.B. ++). Was ist der Unterschied zwischen den Operatoren = und ==? Zuweisungs- und Vergleichsoperator. Was sind die Operatoren für "gleich" und "ungleich"? == und !=. Was sind die Operatoren für und, oder und exklusives oder? &&, || und ^. Welche Werte kann eine boolesche Variable annehmen? true und false. Was bedeutet es, wenn logische Ausdrücke lazy ausgewertet werden? Wenn ein logischer Ausdruck seinen Wert nicht mehr ändern kann, werden noch folgende Teilausdrücke nicht mehr ausgewertet. Wo sind weiterführende mathematische Operationen in Java zu finden? Im Package Math. Literaturempfehlungen 2.3 Datentypen, Typisierung, Variablen und Zuweisungen - Rheinwerk Computing :: Java ist auch eine Insel - 2 Imperative Sprachkonzepte 2.4 Ausdrücke, Operanden und Operatoren - Rheinwerk Computing :: Java ist auch eine Insel - 2 Imperative Sprachkonzepte The Java Tutorials *(direkt beim Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Letzte Woche auf der Website: Themen der letzten IHK-Prüfungen und Beispiele für Projektarbeiten und Der schlimmste Fehler in der Informatik. In Javascript, can I use a variable before it is declared? - Stack Overflow George Boole – Wikipedia Lazy Evaluation – Wikipedia Zusammenfassung Variablen und Operatoren in der IT-Ausbildung In meinem Java-Tutorial für IT-Azubis stehen Variablen und Operatoren am Anfang, bevor ich mit der Objektorientierung einsteige. Wenn dabei Strings vorkommen, berührt das bereits Objekte und Klassen. Bei einem neuen Tutorial würde ich deshalb direkt mit der Objektorientierung beginnen. Die folgenden Grundlagen gehören zu meiner Lernzielkontrolle und können auch in einer Abschlussprüfung vorkommen. Was eine Variable ist Eine Variable ist ein benannter Speicherbereich des Computers. Über ihren Namen kannst du auf gespeicherte Werte zugreifen. Ein sprechender Name wie mehrwertsteuersatz macht verständlich, wofür der Wert steht, und erspart dir, mit Speicheradressen zu arbeiten. Wie du eine Variable nennst, entscheidest du als Entwickler:in innerhalb der Regeln deiner Programmiersprache. Variablennamen in Java Für Bezeichner stehen dir Buchstaben und Ziffern sowie das Dollarzeichen und der Unterstrich zur Verfügung. Eine Ziffer darf erst nach dem ersten Zeichen stehen. Ein Bindestrich ist als Teil des Namens ausgeschlossen, weil Java ihn als Operator interpretiert. Ich empfehle dir für gewöhnliche Variablennamen camelCase mit Buchstaben und gegebenenfalls Ziffern. Dabei beginnt das erste Wort klein, während jedes weitere Wort mit einem Großbuchstaben anfängt. Diese Konvention gilt auch für Methodennamen. Klassennamen beginnen bei der Pascal-Schreibweise mit einem Großbuchstaben. Dollarzeichen und Unterstriche lasse ich bei gewöhnlichen Java-Variablennamen weg. Unterstriche trennen Wörter bei der Schreibweise Snake Case; in PHP beginnt eine Variable mit einem Dollarzeichen. Welche Werte eine Variable aufnehmen kann Der Datentyp legt fest, welche Werte du in einer Variablen speichern kannst. Dazu gehören beispielsweise Zahlen, Zeichenketten und Wahrheitswerte. Zahlentypen heißen in Java unter anderem int, double und long. Java ist statisch typisiert. Wenn du einer Variablen einen Datentyp gibst, müssen die später zugewiesenen Werte dazu passen. Eine int-Variable nimmt ganzzahlige Werte auf. Bei einer direkten Zuweisung einer Kommazahl oder Zeichenkette meldet der Compiler einen Typfehler. Eine Variable deklarieren Beim Deklarieren legst du Datentyp und Namen fest. In Java steht der Typ vor dem Namen, und ein Semikolon beendet die Anweisung: java String text; Damit ist text als Variable vom Typ String bekannt und kann eine Zeichenkette aufnehmen. Den ersten Wert zuweisen Wenn eine Variable zum ersten Mal einen Wert erhält, wird sie initialisiert. Häufig geschieht das direkt beim Deklarieren: java String text = "abc"; In dieser Zeile bekommt text ihren Namen und Datentyp sowie den ersten Wert. Du kannst diese Schritte auch getrennt ausführen, wenn dein Anwendungsfall das vorsieht. Literale im Quelltext Ein Literal ist ein konkreter, fest im Quelltext stehender Wert, etwa 19 oder "abc". Im Beispiel wird text mit dem Literal "abc" initialisiert. Solche Werte kannst du auch direkt an eine Methode übergeben oder einer Konstante zuweisen. Wo du auf eine Variable zugreifen kannst Eine lokale Variable ist ab der Stelle gültig, an der du sie deklarierst. Ihr Gültigkeitsbereich umfasst den aktuellen Block und dessen untergeordnete Blöcke. Wenn du vor einer for-Schleife eine Variable deklarierst, kannst du innerhalb der Schleife darauf zugreifen. Bei einer Variablen, die du im Schleifenblock deklarierst, endet der Gültigkeitsbereich mit diesem Block. Probiere solche Fälle im Quelltext aus, damit du nachvollziehen kannst, welche Zugriffe erlaubt sind. Instanzvariablen, auch Objektvariablen genannt, stehen direkt auf Klassenebene. Auf sie können die Instanzmethoden der Klasse unabhängig davon zugreifen, an welcher Stelle der Klasse sie deklariert wurden. Ich empfehle dir, diese Variablen gesammelt an den Anfang der Klasse zu schreiben, damit du sie leichter findest. Einen Datentyp mit einem Cast umwandeln Ein Cast wandelt einen Typ ausdrücklich in einen anderen um. Dafür schreibst du den Zieltyp in runden Klammern vor den Ausdruck: java (int) d Wenn d eine double-Variable ist, erhältst du auf diese Weise einen ganzzahligen Wert. Die Nachkommastellen werden abgeschnitten, wodurch Genauigkeit verloren geht. Als Entwickler:in entscheidest du dich mit dem Cast ausdrücklich für diesen Schritt. Auch bei Vererbung und Interfaces kommen Casts vor. Wenn Auto von Fahrzeug erbt, lässt sich ein Auto als Fahrzeug behandeln. Ein ausdrücklicher Cast ist in diesem Beispiel durch die Polymorphie bereits entbehrlich. Werte zuweisen und rechnen Mit dem Zuweisungsoperator = erhält die Variable auf der linken Seite den Wert des Ausdrucks auf der rechten Seite. Bei a = a + 1; wird zunächst a + 1 berechnet und das Ergebnis anschließend in a gespeichert. Für die Grundrechenarten stehen folgende Operatoren bereit: | Operator | Bedeutung | | --- | --- | | + | Addieren | | - | Subtrahieren | | * | Multiplizieren | | / | Dividieren | | % | Rest einer Division bestimmen | Dabei gelten Punkt-vor-Strich und die Reihenfolge, die du durch Klammern vorgibst. Modulo Der Modulo-Operator % liefert den Rest der ganzzahligen Division....
36 Minuten
Einige allgemeine Begriffe rund um die Programmierung sind das Thema der siebenunddreißigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Mit meinen Fragen zu allgemeinen Programmierbegriffen kannst du als IT-Azubi dein Grundlagenwissen prüfen. Du erfährst, wie viele Werte sich mit Bits und Bytes darstellen lassen und welche Aufgaben Compiler sowie Unit-Tests übernehmen. Dazu kommen die fachliche Domäne eines Programms und Begriffe wie Ausdruck, Anweisung und Block. An Java-Beispielen zeige ich dir außerdem, wie Kommentare, die main-Methode und Schreibkonventionen funktionieren und warum einheitlich formatierter Code leichter zu pflegen ist. Kapitelmarken [00:00:01] Einführung in die Lernzielkontrolle [00:01:05] Gewinnspiel und Unterstützung des Podcasts [00:02:17] Themen der allgemeinen Programmiergrundlagen [00:02:47] Bits und mögliche Bitmuster [00:04:55] Bytes und der Zahlenbereich von 0 bis 255 [00:06:00] Compile-Zeit und Laufzeit [00:08:18] Fachliche Fehler und Unit-Tests [00:09:49] Die fachliche Domäne eines Programms [00:13:11] Ausdrücke und ihre Werte [00:14:26] Anweisungen und Semikolons [00:16:07] Blöcke in Java [00:17:17] Kommentare und ihre Schreibweisen [00:18:27] Die main-Methode als Einstiegspunkt [00:19:46] Case-Sensitivity und Groß- und Kleinschreibung [00:20:53] CamelCase und weitere Schreibkonventionen [00:23:32] Klammerarten und englische Bezeichnungen [00:26:28] Code im Team einheitlich formatieren [00:29:16] Javadoc und hilfreiche Kommentare [00:32:08] Kontakt, Shownotes und Lasten- und Pflichtenhefte [00:33:01] Live-Evaluierung in der IDE [00:33:42] Links einsenden, Feedback geben und abonnieren [00:35:08] Ausblick auf die nächste Lernzielkontrolle Inhalt Was ist ein Bit? Die kleinste Informationseinheit in der Informatik. Was ist ein Byte? Acht Bit. Was ist der Unterschied zwischen Kompilierzeit (compile time) und Laufzeit (runtime)? Kompilierzeit ist die Zeit des Programmierens, Laufzeit die Zeit der Programmausführung. Was ist die Domäne eines Programms? Das fachliche Aufgabengebiet des Programms, aus dem sich z.B. die Nomenklatur ableiten lässt. Was ist ein Ausdruck? Ein Ausdruck (expression) ist ein Konstrukt aus Variablen, Operatoren und Methodenaufrufen, das zu einem einzelnen Wert ausgewertet wird. Was ist eine Anweisung? Eine Anweisung (statement) ist eine vollständig ausführbare Einheit. Es gibt drei Arten von Statements: Deklarations-, Kontrollfluss- und Ausdruckstatements. Die meisten Statements werden mit Semikolons beendet. Was ist ein Block? Ein Block ist eine Menge von 0 oder mehr Statements, die durch geschweifte Klammern umschlossen sind. Wie definiert man einen Block in Java? Mit geschweiften Klammern. Was ist ein Kommentar und wie schreibt man einen solchen in Java? Kommentare werden vom Compiler ignoriert. Einzeilige Kommentare werden mit // eingeleitet, mehrzeilige stehen zwischen /* und */. Was ist die main-Methode? Der zentrale Einstiegspunkt in jedes Java-Programm. Ist Java case-sensitive? Ja. Was bedeutet Camel Case? Camel Case ist eine Art, Bezeichner zu benennen, bei der mehrere Wörter aneinander geschrieben werden wobei neue Wörter mit großem Anfangsbuchstaben beginnen. Welche Klammern gibt es in Java und wie heißen sie auf Englisch? Runde Klammern: () parentheses, eckige Klammern: [] brackets, geschweifte Klammern: {} curly brackets oder braces, spitze Klammern: angle brackets. Warum ist es wichtig, seinen Code einheitlich zu formatieren? Damit er leichter lesbar und dadurch verständlicher ist. Wie stellt man sicher, dass alle Entwickler im Team die gleiche Code-Formatierung benutzen? Ex-/Import der Einstellungen der IDE. Wie dokumentiert man seinen Java-Code? Mit JavaDoc-Kommentaren. Literaturempfehlungen Rheinwerk Computing :: Java ist auch eine Insel - 1 Java ist auch eine Sprache The Java Tutorials *(direkt beim Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Letzte Woche auf der Website: Lasten- und Pflichtenheft in der Projektdokumentation. Expressions, Statements, and Blocks (The Java Tutorials > Learning the Java Language > Language Basics) Binnenmajuskel – Wikipedia Javadoc Tool Home Page Coding Without Comments Zusammenfassung Bits und Bytes Mit meinen Fragen kannst du prüfen, wie vertraut dir die allgemeinen Begriffe aus der Programmierung sind. Viele davon begegnen dir in verschiedenen Programmiersprachen; einige Beispiele beziehen sich auf Java. Ein Bit ist die kleinste Informationseinheit der Informatik und kann die Werte 0 oder 1 annehmen. Mit n Bits lassen sich 2ⁿ verschiedene Bitmuster darstellen. Jedes zusätzliche Bit verdoppelt die Zahl der Möglichkeiten. Zwei Bits ergeben die vier Kombinationen 00, 01, 10 und 11. Bei 16 Bits sind es 65.536 Möglichkeiten. Ein Byte besteht aus acht Bits. Damit erhältst du 256 Bitmuster, mit denen sich die ganzen Zahlen von 0 bis 255 darstellen lassen. Die Null zählt dabei als eigener Wert. Compile-Zeit, Laufzeit und Tests Wenn der Compiler deinen Quelltext übersetzt, befindet sich das Programm in der Compile-Zeit. Dabei entsteht Maschinencode beziehungsweise bei Java Bytecode. Der Compiler prüft unter anderem die Syntax und die Datentypen. Beispielsweise erkennt er, wenn du einen String einer int-Variablen zuweisen möchtest. Sobald dein Programm ausgeführt wird, beginnt die Laufzeit. Welche Werte eine Variable dann enthält, hängt beispielsweise von Eingaben ab. Wird bei einer Division zur Laufzeit eine Null als Divisor übergeben, kann ein Laufzeitfehler auftreten. Auch fachlich falsche Berechnungen können in syntaktisch gültigem Code stehen. Im Beispiel wird auf einen Rechnungsbetrag mit 20 Prozent Mehrwertsteuer gerechnet, obwohl dafür 19 Prozent vorgesehen sind. Der Compiler akzeptiert den Zahlenwert. Mit meinen Unit-Tests führe ich Programmcode aus und prüfe dessen Verhalten. Dabei werden etwa Objekte erzeugt oder Methoden aufgerufen. Solche Tests können fachliche Fehler aufdecken. Für deine Software brauchst du sowohl die Prüfungen des Compilers als auch Tests, die den Code zur Laufzeit ausführen. Die fachliche Domäne Bei Software für eine Autowaschanlage gehören Begriffe wie Auto oder Wasser zum fachlichen Aufgabengebiet. Dieses Gebiet heißt Domäne. Die Namen im Code sollten aus diesem Gebiet stammen, damit du die fachliche Aufgabe auch an Variablen und Methoden erkennen kannst. Ein Begriff kann je nach Domäne eine eigene Bedeutung haben. Ein Vertrag über regelmäßige Autowäschen beschreibt andere Leistungen als ein Versicherungsvertrag, über den Arztrechnungen erstattet werden. Wenn du als Softwareentwickler:in in einer neuen Branche arbeitest, musst du dich in deren Fachgebiet einarbeiten. Dazu gehört, die Anforderungen und geltenden Regeln zu verstehen. Kläre mit deinem/deiner Kund:in, was ein verwendeter Begriff konkret bedeutet. Ausdruck, Anweisung und Block Bei int a = 5 + 7; wird 5 + 7 zu einem einzelnen Wert ausgewertet: 12. Dieser Teil ist ein Ausdruck, auf Englisch Expression. Ausdrücke können beispielsweise Variablen und Operatoren enthalten, ebenso Methodenaufrufe. Die gesamte Zeile ist eine Anweisung, auf Englisch Statement. Sie bildet eine vollständig ausführbare Einheit und deklariert hier eine Variable, die zugleich den Wert 12 erhält. Bei Anweisungen werden folgende Arten behandelt: Deklarationsanweisungen legen beispielsweise eine Variable an. Kontrollflussanweisungen bestimmen, welcher Code ausgeführt wird. Eine if-Anweisung ist eine Verzweigung. Ausdrucksanweisungen führen einen Ausdruck als Anweisung aus. Viele Anweisungen enden in Java mit einem Semikolon. Eine if-Anweisung mit einem Block endet mit dessen schließender Klammer. Ein Block umfasst null oder mehr Anweisungen und wird in Java durch geschweifte Klammern {} begrenzt. Damit kannst du mehrere Anweisungen zusammenfassen, die beispielsweise bei einer erfüllten if-Bedingung gemeinsam ausgeführt werden. Auch ein leerer Block ist möglich. Kommentare und die main-Methode Wenn du Text als Kommentar kennzeichnest, ignoriert der Compiler ihn. Ich kommentiere beispielsweise vorübergehend Teile meines Codes aus, um etwas auszuprobieren. In Java gibt es zwei grundlegende Schreibweisen: // beginnt einen einzeiligen Kommentar. /* ... */ umschließt einen mehrzeiligen Kommentar. Beim Start eines Java-Programms dient die main-Methode als zentraler Einstiegspunkt. Ihre hier behandelte Form lautet public static void main(String[] args). Dort steht der Code, der beim Programmstart aufgerufen wird. Meinen IT-Azubis gebe ich diese Schreibweise zu Beginn vor; die Bedeutung von Modifizierern wie static folgt später mit dem Hintergrund zur Objektorientierung. Groß- und Kleinschreibung sowie Namen Schreibst du in Java buch und Buch, entstehen unterschiedliche Bezeichner. Java ist case-sensitive, achtet also auf Groß- und Kleinschreibung. Als weiteres Beispiel wird das Linux-Dateisystem genannt, in dem entsprechend benannte Dateien im selben Ordner liegen können. Für Namen, die aus mehreren Wörtern bestehen, begegnen dir verschiedene Schreibweisen: Bei CamelCase beginnt der Name klein, jedes weitere Wort startet mit einem Großbuchstaben: meineTolleVariable. Das ist die hier behandelte Konvention für Java-Variablen. PascalCase beginnt bereits das erste Wort groß: MeineTolleVariable. Bei SnakeCase trennen Unterstriche die Wörter: meine_tolle_variable. Diese Konvention wird beispielsweise in Ruby verwendet. Da Java in Bezeichnern keine Leerzeichen erlaubt, machen solche Schreibweisen die Wortgrenzen sichtbar. Halte dich an die vereinbarten Konventionen deiner Sprache und deines Teams. Nachträgliches Umbenennen kann umfangreiche Änderungen in der Versionsverwaltung verursachen. Klammern und ihre englischen Namen Beim Lesen englischer Fachtexte helfen dir diese Bezeichnungen: | Klammern | Englischer Name | Beispiel für Java | | --- | --- | --- | ...
34 Minuten
Einige allgemeine Einstiegsfragen zur Lernzielkontrolle rund um Java sind das Thema der sechsunddreißigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Anhand meiner Lernzielkontrolle zu Java gehe ich mit dir die Grundlagen durch, die du als Fachinformatiker:in Anwendungsentwicklung kennen solltest. Du erfährst, wie aus Quellcode plattformunabhängiger Bytecode entsteht und welche Aufgaben die Java-Laufzeitumgebung und das JDK übernehmen. Dazu kommen die Hilfen einer IDE wie Eclipse sowie die Gemeinsamkeiten von Java und .NET. Java lässt sich als allgemeine, objektorientierte Sprache der dritten Generation einordnen, die kompiliert wird und statisch sowie stark typisiert ist. Kapitelmarken [00:00:01] Einstieg in die Lernzielkontrolle zu Java [00:00:55] Java als Einstiegssprache und Fragen im Fachgespräch [00:02:08] Gewinnspiel für Feedback zum Abschlussprojekt [00:03:54] Quellcode und Maschinencode [00:05:49] Compiler und Decompiler [00:07:18] Bytecode und plattformunabhängige Programme [00:09:53] Java als Programmiersprache und Plattform [00:12:33] JRE und Java Virtual Machine [00:13:49] Java Development Kit [00:15:18] Java mit Texteditor und Kommandozeile schreiben [00:16:26] Hilfen einer integrierten Entwicklungsumgebung [00:18:36] Eclipse und weitere Java-IDEs [00:20:18] Eclipse-Plugins und Tastenkombinationen [00:21:07] Gemeinsamkeiten von Java und .NET [00:23:29] Java als General Purpose Language [00:24:20] Generationen von Programmiersprachen [00:26:56] Java kompilieren [00:27:20] Statische und starke Typisierung [00:28:47] C-ähnliche Syntax [00:29:39] Objektorientierung in Java [00:30:18] Shownotes und Java-Literatur [00:31:04] Unterstützung über Affiliate-Links [00:31:50] Weitere Beiträge zur IT-Ausbildung [00:32:14] Kontakt und Podcast abonnieren [00:33:05] Newsletter und Checklisten [00:33:31] Ausblick auf weitere Grundlagen des Programmierens Inhalt Was sind Quellcode und Maschinencode? Quellcode wird vom Entwickler geschrieben (menschenlesbar). Maschinencode wird vom Computer ausgeführt. Was ist ein Compiler und was macht er? Übersetzt Quellcode in Maschinencode. Was ist Bytecode? Plattformunabhängiger Programmcode, der von einer virtuellen Maschine ausgeführt werden kann. Was ist Java? Eine Programmiersprache und -plattform. Was ist die JRE? Die Java Runtime Environment, die Laufzeitumgebung für Java-Programme. Was ist die JVM? Die Java Virtual Machine, der Teil des JRE, der die Programme ausführt. Was ist das JDK? Das Java Development Kit, das Werkzeuge zum Erstellen von Java-Programmen enthält. Was ist eine IDE? Eine Integrated Development Environment macht es dem Entwickler einfach, Programme zu erstellen, indem z.B. der Compiler der Programmiersprache automatisch ausgeführt wird und die Syntax bei der Eingabe geprüft wird. Was ist Eclipse? Eclipse ist ein verbreitetes IDE für Java. Was haben Java und .NET gemeinsam? Beides sind verbreitete Plattformen für die Softwareentwicklung, die auf dem Prinzip von Bytecode arbeiten. Welche Eigenschaften hat Java? General Purpose Language Sprache der dritten Generation wird kompiliert statisch typisiert stark typisiert C-ähnlich (Klammern) objektorientiert Literaturempfehlungen Rheinwerk Computing :: Java ist auch eine Insel - 1 Java ist auch eine Sprache The Java Tutorials *(direkt beim Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Letzte Woche auf der Website: Muss die Projektbearbeitungszeit (70 Stunden) wirklich genau eingehalten werden? und Verkürzung der Ausbildung Literaturempfehlungen für (angehende) Java-Entwickler - Anwendungsentwickler-Podcast #35 Objektorientierung - Häufige Fragen im Fachgespräch - Anwendungsentwickler-Podcast #2 Meine Top 5 Eclipse-Plugins Java-Laufzeitumgebung – Wikipedia Java Virtual Machine – Wikipedia Java Development Kit – Wikipedia Starke Typisierung – Wikipedia General Purpose Language – Wikipedia Third-generation programming language - Wikipedia, the free encyclopedia Zusammenfassung Java-Grundlagen für deine Ausbildung Nachdem meine IT-Azubis bestimmte Inhalte gelernt haben, gehe ich mit ihnen Fragen durch, um zu prüfen, was hängen geblieben ist. Beim Einstieg ins Programmieren arbeite ich mit Java, das auch an vielen Berufsschulen und Hochschulen als Lehrsprache dient. Die Fragen behandeln zunächst die Grundlagen der Sprache und ihrer Plattform. Im IHK-Fachgespräch können solche Fragen vorkommen; dort werden auch tiefergehende Themen wie Generics angesprochen. Quellcode und ausführbarer Code Als Entwickler:in schreibst du Quellcode, auch Quelltext oder Sourcecode genannt, in einer Programmiersprache. Dabei bestimmt deren Syntax, wie du deine Lösung ausdrückst. Menschen können diesen Text lesen. Die CPU führt Maschinencode aus, der aus binären Befehlen besteht und auf eine bestimmte Rechnerarchitektur zugeschnitten ist. Ein Compiler übersetzt Quellcode in einen Zielcode, der zur jeweiligen Plattform passt. Mit einem Decompiler lässt sich aus ausführbarem Code wieder Quellcode erzeugen. Dabei können unterschiedliche Schreibweisen zum selben Maschinencode führen, etwa eine for-Schleife und eine while-Schleife. Der Decompiler kann deshalb nur eine mögliche Fassung rekonstruieren. Bytecode und die Java-Plattform Wenn du Java-Quellcode kompilierst, entstehen aus .java-Dateien .class-Dateien mit Bytecode. Dieser plattformunabhängige Code wird von einer virtuellen Maschine ausgeführt. Auf dem Zielgerät muss dafür eine passende Laufzeitumgebung installiert sein. So kannst du denselben Bytecode auf verschiedenen Betriebssystemen ausführen, etwa unter Windows oder Linux. In einer Class-Datei lassen sich teilweise noch Zeichenketten erkennen, obwohl ihr Inhalt für die virtuelle Maschine bestimmt ist. Mit Java kannst du Programme schreiben; zur Java-Plattform gehören außerdem die Komponenten, auf denen diese Programme laufen. Auch andere Sprachen können Bytecode für die Java Virtual Machine erzeugen. Beispiele dafür sind Scala und Clojure. Über JRuby steht auch Ruby auf der Java-Plattform zur Verfügung. Dafür braucht eine Sprache einen Compiler, der passenden Bytecode erzeugt. Was JRE, JVM und JDK übernehmen JRE, Java Runtime Environment: Auf deinem Zielgerät stellt diese Laufzeitumgebung die Komponenten bereit, die ein Java-Programm zum Laufen braucht. Dazu gehören die JVM und die Klassenbibliotheken mit ihren Typen und Funktionen. JVM, Java Virtual Machine: Innerhalb der JRE lädt sie den Bytecode und führt ihn aus. Dabei werden Befehle erzeugt, die der jeweilige Prozessor verarbeiten kann. JDK, Java Development Kit: Wenn du selbst Java-Programme schreibst, erhältst du damit die erforderlichen Werkzeuge. Enthalten sind der Compiler und beispielsweise Javadoc, mit dem du deinen Code dokumentieren kannst. Zum Zeitpunkt der Folge ließen sich JRE und JDK kostenfrei bei Oracle herunterladen. Java schreiben und mit einer IDE arbeiten Du kannst deinen Java-Code in einem Texteditor schreiben und anschließend über die Kommandozeile mit javac kompilieren. Aus der .java-Datei entsteht dabei eine .class-Datei, die du mit java ausführen kannst. Beim Schreiben musst du auf die Syntax achten, einschließlich Groß- und Kleinschreibung sowie der Satzzeichen. Eine IDE, ausgeschrieben Integrated Development Environment, hilft dir während des Programmierens: Während du tippst, markiert sie Syntaxfehler, etwa ein fehlendes Semikolon. Über Vorschläge findest du Methoden und die benötigten Parameter. Lange Namen lassen sich automatisch vervollständigen; Templates liefern vorbereiteten Code, beispielsweise für neue Klassen. Der Compiler kann im Hintergrund laufen, während du deinen Quelltext bearbeitest. Dein Programm lässt sich direkt innerhalb der IDE starten, wo du auch das Ergebnis siehst. Für meine Lehre und meine IT-Azubis arbeite ich mit Eclipse. Die IDE ist kostenfrei und Open Source; du findest sie unter eclipse.org. Sie bietet die genannten Hilfen und unterstützt auch das Testen. Als weitere Java-IDEs werden NetBeans und IntelliJ genannt. Über Plugins kannst du Eclipse erweitern. In meinem Blogartikel zu Lieblings-Plugins stelle ich unter anderem eines vor, das dir nach einer Mausaktion die passende Tastenkombination zeigt. Damit lernst du, häufiger über die Tastatur zu arbeiten. Java und .NET Bei beiden Plattformen wird Quellcode in einen Zwischencode übersetzt, den eine installierte Laufzeitumgebung ausführt. Verschiedene Programmiersprachen können Code für die jeweilige Plattform erzeugen. Historisch begann Java mit einer Sprache, deren Programme auf mehreren Betriebssystemen laufen sollten. Bei .NET standen anfangs Windows und mehrere Sprachen im Mittelpunkt, darunter C# und Visual Basic. Zum Zeitpunkt der Folge waren auf beiden Plattformen weitere Sprachen verfügbar. Für .NET werden IronPython und IronRuby genannt. Das Mono-Projekt ermöglichte zudem, große Teile des .NET-Frameworks unter Linux auszuführen. Wie du Java als Sprache einordnen kannst General Purpose Language, GPL: Mit Java kannst du allgemeine Probleme lösen und beispielsweise Finanzanwendungen oder Webanwendungen schreiben. Eine Domain Specific Language, DSL, ist auf ein bestimmtes Fachgebiet zugeschnitten. Sprache der dritten Generation: Du arbeitest mit abstrakten Sprachmitteln wie Schleifen und Fallunterscheidungen. Die erste Generation umfasst Maschinencode, die zweite Assemblersprachen. Bei Sprachen der vierten Generation sind weitere Abläufe direkt eingebaut. Als Beispiel führe ich Natural an, wo du mit READ und wenigen Zeilen Datensätze einer Tabelle durchlaufen kannst. Kompiliert: Ein Compiler übersetzt deinen Java-Quellcode in Bytecode. Statisch typisiert: Bereits beim Kompilieren stehen die Datentypen fest, auch für Parameter und Rückgabewerte. Wenn du eine Variable als String deklarierst, bleibt dieser Typ festgelegt. Stark typisiert: Für den Umgang mit Typen gelten feste Regeln....
30 Minuten
Für Einsteiger, aber auch für Fortgeschrittene im Bereich der Java-Programmierung habe ich einige Buchtipps zusammengestellt, die ich in der fünfunddreißigsten Episode des Anwendungsentwickler-Podcasts durchgehe. TL;DR Für deinen Einstieg in Java empfehle ich dir die kostenlosen Oracle-Tutorials und Einführung in Java; Java ist auch eine Insel begleitet dich als ausführliches Nachschlagewerk. Mit Pragmatic Unit Testing in Java 8 with JUnit lernst du früh, deinen Code zu testen, während zwei weitere Bücher die funktionalen Konzepte und weitere Neuerungen von Java 8 behandeln. Sobald du Java-Grundlagen beherrschst, führen dich Der Weg zum Java-Profi und Professionell entwickeln mit Java EE 7 an die Werkzeuge und Technologien heran, die du für größere Anwendungen brauchst. Kapitelmarken [00:00:01] Literaturtipps für Java [00:00:36] Java in Ausbildung und Betrieb [00:02:22] Meine Erfahrungen und die Auswahl der Literatur [00:03:49] Kostenlose Quellen und Links zu den Büchern [00:04:16] Oracle-Tutorial: Learning the Java Language [00:06:23] Oracle-Tutorial: Essential Classes [00:08:25] Einstieg mit Einführung in Java [00:10:09] Java ist auch eine Insel als Nachschlagewerk [00:11:57] Unit-Tests mit Pragmatic Unit Testing in Java 8 with JUnit [00:14:04] Funktionale Konzepte mit Functional Programming in Java [00:16:38] Neuerungen mit Java SE 8 for the Really Impatient [00:18:10] Weiterführende Literatur: Der Weg zum Java-Profi [00:21:45] Enterprise-Anwendungen mit Professionell entwickeln mit Java EE 7 [00:23:52] Zeit für Fachliteratur und Bezug zur Prüfung [00:24:54] Überblick über die Literaturempfehlungen [00:26:01] Shownotes, RSS-Feed und Kontakt [00:26:56] Artikel zu Bootstrap und Abschlussprojekten [00:27:41] Feedback, Newsletter und Checklisten [00:28:45] Ausblick: Lernfragen zu Java und Programmiergrundlagen Inhalt Kostenfreie Literatur Bei Oracle gibt es eine sehr umfangreiche und kostenlose Einführung in Java, die ich selbst gelesen habe. Kann ich definitiv weiterempfehlen! Aber auch die "Java-Insel" als OpenBook ist natürlich empfehlenswert. Trail: Learning the Java Language (The Java Tutorials) Trail: Essential Classes: Table of Contents (The Java Tutorials) Java ist auch eine Insel - OpenBook von Rheinwerk Literatur für Einsteiger Für Programmieranfänger, die Java als erste Sprache lernen, empfehle ich Einführung in Java: Ideal für Studium und Ausbildung* (auch direkt beim Rheinwerk-Verlag*). * Das Standardwerk für danach ist aber natürlich Java ist auch eine Insel* (auch direkt beim Rheinwerk-Verlag*). Das darf in keinem Bücherschrank fehlen :-) * Für eine sehr gute Einführung in Unit-Testing mit JUnit empfehle ich Pragmatic Unit Testing in Java 8 with JUnit*. Die Beispiele kann man auch schon mit wenig Java-Vorkenntnissen gut verstehen und nachmachen. Hier ist mein längerer Artikel zum Buch: Rezension: Pragmatic Unit Testing in Java 8 with JUnit von Jeff Langr. * Update auf Java 8 Wer schon länger mit Java arbeitet und nur schnell auf den neusten Stand kommen möchte, was die Neuerungen in Java 8 angeht, dem kann ich diese beiden Bücher empfehlen: Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions* Wer die interessante und kurzweilige Art von Venkat Subramaniam z.B. aus seinen Präsentationen kennt (z.B. passend zum Thema hier: Transforming Code to Java 8 by Venkat Subramaniam), wird seine Bücher mögen. Ich habe schon einige von ihm gelesen und bin immer wieder begeistert von seiner erfrischenden Art zu schreiben. * Java SE8 for the Really Impatient: A Short Course on the Basics* Mit diesem Buch habe ich mich auf den neusten Stand gebracht. Es hält genau, was es verspricht: Kurz und knapp werden die interessanten Neuerungen in Java 8 geschildert. Für mich eine ideale Kombination aus knapper Beschreibung und trotzdem den wichtigsten Inhalten. * Fortführende Literatur Wer auf der Suche nach tiefergehender Lektüre rund um die Java-Entwicklung ist, dem empfehle ich Der Weg zum Java-Profi: Konzepte und Techniken für die professionelle Java-Entwicklung*. Hier wird auf alles eingegangen, was man in der Java-Insel nicht mehr findet: Versionsverwaltung, Modularisierung, Dependency-Management usw. Also einfach alles, was ein Entwickler so wissen muss, was aber über die eigentliche Sprache hinausgeht. * Wer außerdem noch im Umfeld von Java EE entwickelt, der wird vielleicht mit Professionell entwickeln mit Java EE 7: Das umfassende Handbuch* (auch direkt beim Rheinwerk-Verlag*) einen guten Einstieg finden. Die Bücher aus dem Rheinwerk-Verlag sind eigentlich immer super, und das gilt für dieses Buch auch. Eine gut verständliche Einführung in Java EE 7 mit vielen Beispielen. * Hast du noch weitere gute Literaturtipps zum Thema Java-Entwicklung? Dann schreib mir gerne einen Kommentar! Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Letzte Woche auf der Website: Einführung in Twitter Bootstrap und Ausgefallene oder anspruchsvolle Themen beim Abschlussprojekt Zusammenfassung Java in deiner IT-Ausbildung An Berufsschulen und Universitäten begegnet dir Java häufig als erste Programmiersprache. Auch Betriebe setzen Java ein, weshalb ich in Abschlussprüfungen regelmäßig Java-Projekte sehe. Die Sprache läuft auf vielen Plattformen und eignet sich für Anwendungen auf Mobilgeräten ebenso wie auf großen Servern. Mit Java 8 kamen unter anderem Lambda-Ausdrücke und die Stream-API hinzu. Aus meiner Arbeit mit Java und den Büchern, die ich selbst gelesen habe, empfehle ich dir folgende Quellen. Welche davon zu dir passt, hängt davon ab, wie viel Erfahrung du schon hast. Kostenlos mit Oracle lernen Learning the Java Language Das offizielle Oracle-Tutorial beginnt mit objektorientierten Konzepten. Du lernst, was Objekte und Klassen sind, wie sie über Nachrichten zusammenarbeiten und wie Vererbung funktioniert. Objektorientierung spielt auch in der Abschlussprüfung eine wichtige Rolle. Danach folgen Sprachgrundlagen wie Variablen und Datentypen, außerdem Arrays. Weitere Kapitel behandeln Interfaces, Strings, Generics und Packages sowie Annotations. Ich habe das Tutorial selbst durchgearbeitet und empfehle es für den Einstieg. Du kannst es kostenlos als PDF herunterladen und auf einem E-Reader lesen. Essential Classes Wenn du bereits etwas programmiert hast, führt dich dieser zweite Oracle-Trail tiefer in Java hinein: Bei Exceptions erfährst du auch, wie sich Checked und Unchecked Exceptions unterscheiden. Für Dateien behandelt das Tutorial Ein- und Ausgabe sowie die NIO-Bibliothek. Ein Kapitel führt in nebenläufige Programme ein. Weitere Themen sind die Plattformkonfiguration und reguläre Ausdrücke. Auch dieses Tutorial ist kostenlos als PDF verfügbar. Für meine Azubis ordne ich die Themen nach den ersten praktischen Erfahrungen mit Java ein; nebenläufige Programme würde ich im ersten Ausbildungsjahr noch nicht voraussetzen. Bücher für den Einstieg Einführung in Java Einführung in Java, mit dem Untertitel Ideal für Studium und Ausbildung, erscheint im Rheinwerk Verlag und setzt bei den ersten Schritten an. An Java-Beispielen lernst du Variablen kennen, triffst Entscheidungen im Programm und arbeitest mit Schleifen. Dadurch eignet sich das Buch auch, wenn du zuvor noch keine Programmiersprache gelernt hast. Auf rund 500 Seiten folgen objektorientierte Konzepte und Unit-Tests. Arrays und Collections gehören ebenfalls dazu, genauso wie Exceptions. Die vorgestellte Ausgabe behandelt bereits Java 8 mit Lambda-Ausdrücken und der Stream-API. Mit JavaFX lernst du außerdem grafische Oberflächen kennen. Für das erste Ausbildungsjahr empfehle ich dir dieses Buch als Einstieg. Java ist auch eine Insel Mit mehr als 1.000 Seiten geht Java ist auch eine Insel ausführlich auf die Sprache ein. Das Buch behandelt die Plattformen SE, EE und ME sowie verschiedene Java-Versionen. Du findest darin Informationen zu Entwicklungsumgebungen wie Eclipse und detaillierte Kapitel zu Datentypen und Operatoren. Zur Objektorientierung gehören Vererbung und Polymorphie. Eigene Kapitel behandeln Strings und zeigen dir, wie du Klassen modellierst, einschließlich Getter und Setter. Ich greife auf die Java-Insel zurück, wenn ich etwas nachschlagen möchte. Beim Rheinwerk Verlag kannst du sie auch kostenlos als Open Book lesen. Wenn du nur ein Java-Buch kaufen möchtest, ist die Java-Insel meine Empfehlung. Pragmatic Unit Testing in Java 8 with JUnit Dieses englischsprachige Buch von den Pragmatic Programmers führt dich in Unit-Tests ein. Es erklärt die Grundlagen des Testens und zeigt, wie JUnit funktioniert. Auch Test Driven Development, kurz TDD, wird behandelt. Mit Merkhilfen wie AAA: Arrange, Act, Assert lernst du, wie du einen Test aufbaust. Die grundlegenden Testprinzipien lassen sich auch auf andere Test-Frameworks übertragen. In meiner Ausbildung gehört das Buch bereits im ersten Jahr dazu. Nach ungefähr drei Monaten praktischer Java-Erfahrung empfehle ich dir, damit ins Testen einzusteigen und die Inhalte beim Programmieren anzuwenden. Eine ausführlichere Rezension findest du in meinem Blog. Java 8 kennenlernen Functional Programming in Java Wenn du Java schon kennst, führt dich Functional Programming in Java von Venkat Subramaniam an funktionale Konzepte heran. Auf etwa 150 Seiten geht es um Lambda-Ausdrücke und die Stream-API, außerdem um Exceptions in diesem Zusammenhang. Lazy Evaluation und Rekursion gehören ebenfalls zu den Themen. Funktionale Ansätze helfen dir dabei, lesbaren Code zu schreiben und Aufgaben leichter parallel auszuführen. Das Buch konzentriert sich auf diese Denkweise. Andere Neuerungen wie die Date-Time-API stehen außerhalb seines Schwerpunkts. Einen passenden Vortrag des Autors habe ich in den Shownotes verlinkt. Java SE 8 for the Really Impatient Für einen kompakten Überblick über die Neuerungen empfehle ich dir Java SE 8 for the Really Impatient. Neben Lambdas und Streams behandelt das Buch JavaFX und die überarbeitete Date-Time-API....
16 Minuten
Achtung: Diese Podcast-Episode behandelt die MEP nach der Prüfungsordnung vor 2020. Sie ist mit ziemlicher Sicherheit für dich nicht mehr relevant. Wenn du die aktuellen Informationen zur MEP haben möchtest, hör dir diese neue Episode an: Mündliche Ergänzungsprüfung - Erklärung, Benotung, Inhalte und Vorbereitung - IT-Berufe-Podcast #197 Aufgrund vieler Nachfragen von Prüflingen erkläre ich den Ablauf der mündlichen Ergänzungsprüfung in der vierunddreißigsten Episode des Anwendungsentwickler-Podcasts. TL;DR Bei zwei Fünfen im schriftlichen Prüfungsteil kann eine mündliche Ergänzungsprüfung dazu führen, dass du deine Abschlussprüfung noch bestehst. Voraussetzung ist, dass du damit rechnerisch die nötigen Ergebnisse erreichen kannst und in keinem Prüfungsbereich eine Sechs hast. Für die 15-minütige Prüfung empfehle ich dir den Bereich mit der besseren Fünf und ein Thema, das du gut beherrschst. Das schriftliche Ergebnis zählt doppelt, das mündliche einfach: Aus 40 Prozent schriftlich und 70 Prozent mündlich werden 50 Prozent und damit eine Vier. Kapitelmarken [00:00:01] Hinweise zum Fachgespräch [00:00:19] Einführung in die mündliche Ergänzungsprüfung [00:01:24] Voraussetzungen zum Bestehen der Abschlussprüfung [00:02:13] Zwei Fünfen und die Wahl des Prüfungsbereichs [00:03:47] Themengebiete für die Ergänzungsprüfung [00:05:16] Mögliche Fragen und ein passendes Thema [00:06:47] Themenwahl und Vorbereitung des Prüfungsausschusses [00:07:38] Reihenfolge von Fachgespräch und Ergänzungsprüfung [00:08:11] Rechnerische Voraussetzungen für das Bestehen [00:08:57] Prüfungsdauer und gezielte Vorbereitung [00:09:52] Gewichtung und Berechnung des neuen Ergebnisses [00:10:44] Knappe Ergebnisse und Umgang mit Prüflingen [00:12:06] Shownotes und rechtliche Grundlage [00:12:25] Buchtipp zu JUnit und Links zu Markdown [00:13:09] Feedback und Weiterempfehlung [00:13:38] Newsletter und Projektchecklisten [00:14:09] Ausblick auf Literaturtipps zur Programmierung Inhalt Die Prüfung ist bestanden, wenn man in Teil A und Teil B eine Vier hat. Mit einer Sechs ist man direkt durchgefallen. Wenn man in Teil B max. zwei Fünfen hat, kann die mündliche Ergänzungsprüfung durchgeführt werden, sofern ein Bestehen der Prüfung noch möglich ist. Das Themengebiet wird vom Prüfling vorgegeben (muss zum Bereich des mangelhaften Prüfungsteils passen). Die Prüfung dauert 15 Minuten. Bei uns findet die Prüfung nach dem eigentlichen Fachgespräch statt. Beispiel Notenberechnung Bisherige Note: 40% Ergänzungsprüfung: 70% Gesamtnote: (2 * 40% + 70%) / 3 = 150% / 3 = 50% (bestanden) Texte der Verordnung über die Berufsausbildung im Bereich der Informations- und Telekommunikationstechnik §15 Abs. 8 Die Prüfung ist bestanden, wenn jeweils in den Prüfungsteilen A und B mindestens ausreichende Leistungen erbracht wurden. Werden die Prüfungsleistungen in der Projektarbeit einschließlich Dokumentation, in der Projektpräsentation einschließlich Fachgespräch oder in einem der drei Prüfungsbereiche mit "ungenügend" bewertet, so ist die Prüfung nicht bestanden. §15 Abs. 7 Sind im Prüfungsteil B die Prüfungsleistungen in bis zu zwei Prüfungsbereichen mit "mangelhaft" und in einem weiteren Prüfungsbereich mit mindestens "ausreichend" bewertetet worden, so ist auf Antrag des Prüflings oder nach Ermessen des Prüfungsausschusses in einem der mit "mangelhaft" bewerteten Prüfungsbereiche die Prüfung durch eine mündliche Prüfung von etwa 15 Minuten zu ergänzen, wenn diese für das Bestehen der Prüfung den Ausschlag geben kann. Der Prüfungsbereich ist vom Prüfling zu bestimmen. Bei der Ermittlung des Ergebnisses für diesen Prüfungsbereich ist das bisherige Ergebnis und das Ergebnis der mündlichen Ergänzungsprüfung im Verhältnis 2:1 zu gewichten. Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Verordnung über die Berufsausbildung im Bereich der Informations- und Telekommunikationstechnik Aufbau und Ablauf der Abschlussprüfung - Anwendungsentwickler-Podcast #1 Vorbereitung auf die schriftliche Abschlussprüfung - Anwendungsentwickler-Podcast #4 Ablauf der mündlichen Abschlussprüfung (Präsentation und Fachgespräch) - Anwendungsentwickler-Podcast #14 Zusammenfassung Wann eine mündliche Ergänzungsprüfung möglich ist Für den hier beschriebenen Prüfungsaufbau brauchst du sowohl in Teil A, der Projektarbeit, als auch in Teil B, der schriftlichen Prüfung, mindestens die Gesamtnote Vier. Teil B umfasst Ganzheitliche Aufgabe 1, Ganzheitliche Aufgabe 2 und Wirtschafts- und Sozialkunde, kurz WiSo. Wenn du in zwei dieser schriftlichen Bereiche eine Fünf und im verbleibenden Bereich mindestens eine Vier erreicht hast, kannst du eine der Fünfen durch eine mündliche Ergänzungsprüfung ausgleichen. Danach darf in Teil B höchstens eine Fünf stehen bleiben, wobei das Gesamtergebnis mindestens eine Vier ergeben muss. Mit einer Sechs in einem Prüfungsbereich, also weniger als 30 Prozent, bist du durchgefallen. Als nächster Termin kommt eine Prüfung ein halbes Jahr später infrage. Der Prüfungsausschuss führt die Ergänzungsprüfung nur durch, wenn du dadurch die gesamte Abschlussprüfung noch bestehen kannst. Dafür müssen auch die übrigen Ergebnisse passen. Wenn selbst 100 Prozent in der Ergänzungsprüfung rechnerisch zum Bestehen zu wenig wären, entfällt diese Möglichkeit. Welchen Prüfungsbereich du wählen solltest Bei der Wahl des Bereichs empfehle ich dir die Fünf mit der höheren Punktzahl, weil das schriftliche Ergebnis doppelt in die neue Note eingeht. Hast du beispielsweise in Ganzheitlicher Aufgabe 1 45 Prozent und in Ganzheitlicher Aufgabe 2 40 Prozent erreicht, liegt Aufgabe 1 näher an der Grenze von 50 Prozent. Wie viele Punkte du mündlich brauchst, hängt von deinem konkreten schriftlichen Ergebnis ab. Mit 50 Prozent in der Ergänzungsprüfung bleibt das gemeinsame Ergebnis unter der Grenze zur Vier, wenn du schriftlich eine Fünf hattest. Wie du dein Thema auswählst Du darfst für die Ergänzungsprüfung ein Themengebiet innerhalb des gewählten Prüfungsbereichs bestimmen: Ganzheitliche Aufgabe 1: Themen aus der Anwendungsentwicklung, beispielsweise Programmierung oder UML. Auch Projektmanagement kommt infrage. Ganzheitliche Aufgabe 2: Ein breiteres Spektrum an IT-Themen, zu dem etwa strukturierte Verkabelung und Betriebssysteme gehören. Linux oder VPN sind ebenfalls Beispiele. WiSo: Themen aus Wirtschaft und Sozialkunde, etwa der Betrieb und sein Umfeld oder gesetzliche Vorgaben. Als Fachinformatiker:in Anwendungsentwicklung kannst du für Ganzheitliche Aufgabe 1 beispielsweise Objektorientierung wählen. Das Thema muss ausreichend breit sein; Polymorphie allein wäre zu eng gefasst. Innerhalb deines Themengebiets können die Prüfer:innen unterschiedliche Fragen stellen. Bei Programmierung reicht das von Algorithmen und Verzweigungen bis zu Interfaces oder abstrakten Klassen. Die Fragen müssen zum gewählten Gebiet passen. Wähle einen Bereich, in dem du dich auskennst und ein ausreichend gutes mündliches Ergebnis erreichen kannst. Deine schriftlichen Noten erfährst du üblicherweise deutlich vor dem mündlichen Termin. So kannst du die erforderliche Punktzahl ausrechnen und dich gezielt auf dein Thema vorbereiten. Meine Hinweise zur Vorbereitung auf die Abschlussprüfung gelten auch für die Ergänzungsprüfung. Wie die Prüfung abläuft In meiner Prüfungspraxis finden zunächst deine reguläre Präsentation und das Fachgespräch statt. Anschließend lässt sich beurteilen, ob du mit einer Ergänzungsprüfung die gesamte Prüfung noch bestehen kannst. Falls das möglich ist, folgt die Ergänzungsprüfung im Anschluss. Nachdem du dein Themengebiet genannt hast, verlässt du gegebenenfalls kurz den Raum. Die Prüfer:innen beraten sich, legen Fragen fest und klären, wer welche Fragen stellt. Weil das Ergebnis über das Bestehen entscheiden kann, wird die Prüfung sorgfältig protokolliert. Die Ergänzungsprüfung dauert 15 Minuten und behandelt das von dir gewählte Themengebiet. Wie dein neues Ergebnis berechnet wird Für den betreffenden Prüfungsbereich gilt: Neues Ergebnis = (2 × schriftliches Ergebnis + mündliches Ergebnis) / 3 Wenn du schriftlich 40 Prozent erreicht hast und mündlich 70 Prozent bekommst, ergibt sich folgende Rechnung: (2 × 40 + 70) / 3 = 50 Prozent Damit erreichst du in diesem Bereich die Note Vier. Für die gesamte Abschlussprüfung müssen zusätzlich die genannten Voraussetzungen erfüllt sein. Bei 49 Prozent bleibt die Fünf bestehen. Aus meiner Prüfungspraxis kenne ich einen wohlwollenden Umgang mit Prüflingen, gerade bei knappen Ergebnissen. Wie der Ausschuss bewertet, hängt dabei von deiner Leistung ab. Bereite dich deshalb gründlich auf das Thema vor, das du selbst auswählst. Weiterführende Inhalte und Links Unter anwendungsentwicklerpodcast.de/34 findest du meine Shownotes mit Hilfen zur Prüfungsvorbereitung und einem Link zur Ausbildungsordnung, in der die rechtliche Grundlage steht. Weitere Informationen zum Fachgespräch stehen auf dasperfektefachgespräch.de. Im Blog empfehle ich ein Buch zum Einstieg in JUnit und testgetriebene Entwicklung mit Java. Die erwähnten Links der Woche beschäftigen sich mit Markdown und enthalten unter anderem einen Pluralsight-Kurs. Über anwendungsentwicklerpodcast.de/Newsletter erhältst du wöchentlich Hinweise auf neue Inhalte sowie die Links der Woche bereits am Montag. Dazu kommen Checklisten für deinen Projektantrag und deine Projektdokumentation sowie für die Projektpräsentation mit insgesamt weit über 100 Prüfpunkten. Wenn du selbst eine mündliche Ergänzungsprüfung erlebt hast, kannst du mir deine Erfahrungen als Kommentar schreiben. Für die nächste Episode sind Literaturtipps zum Einstieg in die Programmierung angekündigt, voraussichtlich mit einem Schwerpunkt auf Java. Transkription der gesamten Episode Automatisch erzeugte Transkription der Episode [0:01] Hi, hier ist Stefan. In dieser Podcast-Episode geht es ums Fachgespräch. ...