Kotlin von Kopf bis Fuß

Eine Einführung in die Kotlin-Programmierung

Dawn Griffiths und David Griffiths

Diese Publikation zitieren

Dawn Griffiths, David Griffiths, Kotlin von Kopf bis Fuß (2019), O'Reilly Verlag, Heidelberg, ISBN: 9783960103097

3871
Accesses
10
Quotes

Beschreibung / Abstract

Kotlin von Kopf bis Fuß ist eine praxisnahe Einführung in die Programmierung mit Kotlin, für die Sie keine Java-Vorkenntnisse benötigen. Das Buch vermittelt Ihnen zunächst die Grundlagen der Sprache und behandelt dann Collections, die generische Programmierung, Lambdas und Funktionen höherer Ordnung. Unterwegs haben Sie Gelegenheit, sowohl mit objektorientierter als auch mit funktionaler Programmierung zu experimentieren. Hierfür verwenden die Autoren eine einzigartige, visuell ansprechende Methode, die über das Lernen der Syntax und schlichte Anleitungen hinausgeht. Wenn Sie Kotlin wirklich verstehen wollen, ist dieses Buch genau das richtige für Sie.


In dieses Buch sind die neuesten Erkenntnisse der Kognitionsforschung und der Lerntheorie eingeflossen, um Ihnen das Lernen so einfach wie möglich zu machen. Statt einschläfernder Bleiwüsten verwendet dieses Buch eine Vielzahl von Abbildungen und Textstilen, die Ihr Gehirn auf Trab halten und Ihnen das Wissen direkt ins Hirn spielen – und zwar so, dass es sitzt.

Beschreibung

Dawn Griffiths besitzt über 20 Jahre Erfahrung in der IT-Industrie und arbeitet als Senior-Entwicklerin und Senior-Softwarearchitektin. Sie hat bereits eine Reihe von Büchern aus der "Head-First-Reihe" (deutsch "Von Kopf bis Fuß") geschrieben, darunter "Head First Android Development". Zusammen mit ihrem Mann David hat sie außerdem die Lehrvideoreihe "The Agile Sketchpad" entwickelt, um Schlüsselkonzepte und -techniken auf eine Art zu vermitteln, die das Hirn aktiv und auf Trab hält.

Wenn Dawn keine Bücher schreibt oder Videos macht, arbeitet sie an ihren Tai-Chi-Fähigkeiten, liest, läuft, klöppelt oder kocht. Besonders mag sie es, Zeit mit ihrem Mann David zu verbringen.

David Griffiths hat als Agile Coach, Entwickler und als Werkstattmeister gearbeitet, aber nicht in dieser Reihenfolge. Er begann im Alter von 12 Jahren mit dem Programmieren, nachdem er eine Dokumentation über
die Arbeit von Seymour Papert gesehen hatte. Als er 15 war, schrieb er eine Implementierung von Paperts Computersprache LOGO. Vor "Kotlin von Kopf bis Fuß" hat David bereits verschiedene andere Bücher aus der "Von
Kopf bis Fuß"-Reihe verfasst, darunter "Head First Android Development", und zusammen mit Dawn die Lehrvideoreihe "The Agile Sketchpad" entwickelt.

Wenn David nicht schreibt, programmiert oder als Coach arbeitet, verbringt er seine Freizeit damit, mit seiner wunderbaren Frau und Mitautorin Dawn zu verreisen.

Inhaltsverzeichnis

  • BEGINN
  • Die Autoren von Kotlin von Kopf bis Fuß
  • Inhaltsverzeichnis
  • Einführung
  • Für wen ist dieses Buch?
  • Und wir wissen, was Ihr†‰Gehirn gerade denkt.
  • Das haben WIR getan:
  • Lies mich
  • Danksagungen
  • Das Team der Fachgutachter
  • Ein Sprung ins kalte Wasser
  • Willkommen in Kotlinville
  • Sie können Kotlin fast überall benutzen
  • Was wir in diesem Kapitel tun
  • IntelliJ IDEA (Community Edition) installieren
  • Eine einfache Applikation erstellen
  • Eine einfache Applikation erstellen (Fortsetzung)
  • Eine einfache Applikation erstellen (Fortsetzung)
  • Das erste Kotlin-Projekt ist erstellt
  • Fügen Sie dem Projekt eine Kotlin-Datei hinzu
  • Anatomie der main-Funktion
  • Bauen Sie die main-Funktion in App.kt ein
  • Probefahrt
  • Was können Sie in der main-Funktion sagen?
  • Schleifen, Schleifen, Schleifen …
  • Ein Beispiel mit Schleifen
  • Bedingungsgesteuerte Verzweigungen
  • Rückgabewerte für if
  • Aktualisieren Sie die main-Funktion
  • Die interaktive Kotlin-Shell benutzen
  • REPL versteht auch mehrzeilige Codeabschnitte
  • Vermischte Nachrichten
  • Ihr Kotlin-Werkzeugkasten
  • Eine Variable sein
  • Ihr Code braucht Variablen
  • Was passiert, wenn Sie eine Variable deklarieren
  • Kotlins grundsätzliche Datentypen
  • Variablentypen explizit angeben
  • Den richtigen Wert für den Variablentyp verwenden
  • Einen Wert einer anderen Variablen zuweisen
  • Wir müssen den Wert konvertieren
  • Was passiert, wenn Sie einen Wert konvertieren?
  • Aufpassen, dass nichts überläuft
  • Mehrere Werte in einem Array speichern
  • Die Phras-O-Matic-Applikation erstellen
  • Den Code zu PhrasOMatic.kt hinzufügen
  • Der Compiler leitet den Arraytyp aus dessen Werten ab
  • var heißt, die Variable kann auf ein anderes Array verweisen
  • val bedeutet, die Variable verweist während der gesamten Laufzeit auf dasselbe Array …
  • Vermischte Referenzen
  • Ihr Kotlin-Werkzeugkasten
  • Raus aus main
  • Funktionen
  • Ein Spiel programmieren: Stein, Schere, Papier
  • Zuerst das allgemeine Konzept
  • Das Spiel soll eine Auswahl treffen
  • Funktionen erstellen
  • Funktionen können mehrere Parameter haben
  • Funktionen können Dinge zurückgeben
  • Funktionskörper mit einzelnen Ausdrücken
  • Die getGameChoice-Funktion in Game.kt einbauen
  • Die getUserChoice-Funktion
  • Wie for-Schleifen funktionieren
  • Benutzer zur Eingabe ihrer Auswahl auffordern
  • Vermischte Ausgaben
  • Wir müssen die Benutzereingaben validieren
  • Die getUserChoice-Funktion in Game.kt einbauen
  • Die printResult-Funktion in Game.kt einbauen
  • Ihr Kotlin-Werkzeugkasten
  • Etwas mehr Klasse
  • Objekttypen werden über Klassen definiert
  • Eigene Klassen entwickeln
  • Eine Dog-Klasse erstellen
  • Ein Dog-Objekt erstellen
  • Auf Eigenschaften und Funktionen zugreifen
  • Eine Songs-Applikation programmieren
  • Das Geheimnis der Objekterstellung
  • Objekterstellung im Detail
  • Hinter den Kulissen: Aufruf des Dog-Konstruktors
  • Eigenschaften im Detail
  • Flexible Eigenschafteninitialisierung
  • Initialisierungsblocks verwenden
  • Sie MÜSSEN Ihre Eigenschaften initialisieren
  • Eigenschaftswerte validieren
  • Einen eigenen Getter schreiben
  • Einen eigenen Setter schreiben
  • Der komplette Code für das Dogs-Projekt
  • Ihr Kotlin-Werkzeugkasten
  • Vererbung
  • Vererbung hilft, doppelten Code zu vermeiden
  • Was wir vorhaben
  • Eine Vererbungsstruktur für Tier-Klassen entwickeln
  • Duplizierten Code in Subklassen durch Vererbung vermeiden
  • Was sollen die Subklassen überschreiben?
  • Wir können einige Tiere gruppieren
  • Canine- und Feline-Klassen hinzufügen
  • Die Klassenhierarchie mit dem IST-EIN-Test überprüfen
  • Der IST-EIN-Test funktioniert im gesamten Vererbungsbaum
  • Wir erstellen ein paar Kotlin-Tiere
  • Die Superklasse und ihre Eigenschaften als »offen« deklarieren
  • Wie eine Subklasse von einer Superklasse erbt
  • Wie (und wann) Eigenschaften überschrieben werden
  • Beim Überschreiben von Eigenschaften können nicht nur Standardwerte zugewiesen werden
  • Funktionen überschreiben
  • Eine überschriebene Funktion oder Eigenschaft bleibt »offen« …
  • Die Hippo-Klasse in das Animals-Projekt einbauen
  • Die Canine- und Wolf-Klassen einbauen
  • Welche Funktion wird aufgerufen?
  • Wenn Sie eine Funktion an einer Variablen aufrufen, antwortet die Version des Objekts
  • Sie können einen Supertyp für die Parameter und den Rückgabetyp einer Funktion verwenden
  • Der aktualisierte Animals-Code
  • Ihr Kotlin-Werkzeugkasten
  • Ernsthafter Polymorphismus
  • Ein weiterer Blick auf die Animal-Klassenhierarchie
  • Einige Klassen sollten nicht instanziiert werden
  • Abstrakt oder konkret?
  • Abstrakte Klassen können abstrakte Eigenschaften und Funktionen enthalten
  • Die Animal-Klasse hat zwei abstrakte Funktionen
  • Eine abstrakte Klasse implementieren
  • Abstrakte Eigenschaften und Funktionen MÜSSEN implementiert werden
  • Das Animals-Projekt aktualisieren
  • Unabhängige Klassen können gemeinsames Verhalten haben
  • Über ein Interface können Sie gemeinsames Verhalten ­AUSSERHALB der Superklassenhierarchie definieren
  • Das Roamable-Interface definieren
  • Eigenschaften für Interfaces definieren
  • Deklarieren, dass einen Klasse ein Interface implementiert …
  • Mehrfache Interfaces implementieren
  • Wie kann ich entscheiden, ob ich eine Klasse, eine Unterklasse, eine abstrakte Klasse oder ein Interface benutzen soll?
  • Das Animals-Projekt aktualisieren
  • Polymorphismus funktioniert auch mit Interfaces
  • Wann sollte man den is-Operator verwenden?
  • Benutzen Sie when, um eine Variable mit einer Reihe von Optionen zu vergleichen
  • Der is-Operator führt eine automatische Typumwandlung (Smart Casting) durch
  • Explizite Typumwandlung mit as
  • Das Animals-Projekt aktualisieren
  • Ihr Kotlin-Werkzeugkasten
  • Mit Daten umgehen
  • == ruft eine Funktion namens equals auf
  • equals wird von einer Superklasse namens Any geerbt
  • Das von Any definierte gemeinsame Verhalten
  • Vielleicht soll equals testen, ob zwei Objekte gleichwertig sind
  • Mit einer Datenklasse können Sie Datenobjekte erstellen
  • Datenklassen überschreiben das geerbte Verhalten
  • Daten mit der copy-Funktion kopieren
  • Datenklassen definieren componentN-Funktionen …
  • Das Recipes-Projekt anlegen
  • Vermischte Nachrichten
  • Erzeugte Funktionen verwenden nur die im Konstruktor definierten Eigenschaften
  • Die Initialisierung vieler Eigenschaften kann zu schwerfälligem Code führen
  • Die Standardwerte des Konstruktors verwenden
  • Auch Funktionen können Standardwerte verwenden
  • Funktionen überladen
  • Das Recipes-Projekt aktualisieren
  • Der Code (Fortsetzung)
  • Ihr Kotlin-Werkzeugkasten
  • Gesund und munter
  • Wie entfernt man Objektreferenzen aus Variablen?
  • Eine Objektreferenz mit null entfernen
  • Nullwertfähige Typen können überall genutzt werden, wo auch nicht nullwertfähige Typen möglich sind
  • Ein Array mit nullwertfähigen Typen erstellen
  • Auf Funktionen und Eigenschaften eines nullwertfähigen Typs zugreifen
  • Sichere Aufrufe (»Safe Calls«)
  • Sichere Aufrufe können verkettet werden
  • Die Geschichte geht weiter …
  • Sichere Aufrufe für die Zuweisung von Werten verwenden …
  • let verwenden, um Code auszuführen, wenn Werte nicht null sind.
  • let mit Arrayelementen verwenden
  • Anstatt einen Ausdruck zu benutzen …
  • Der !!-Operator löst absichtlich einen NullPointerException-Fehler aus
  • Das Projekt Null Values bauen
  • Der Code (Fortsetzung)
  • In außergewöhnlichen Situationen wird eine Ausnahme ausgelöst
  • Ausnahmen mit try/catch abfangen
  • Dinge mit finally auf jeden Fall ausführen
  • Eine Ausnahme ist ein Objekt vom Typ Exception
  • Sie können Ausnahmen selbst auslösen
  • try und throw sind Ausdrücke
  • Ihr Kotlin-Werkzeugkasten
  • Dinge organisieren
  • Arrays können nützlich sein …
  • … mit manchen Dingen können Arrays aber nicht umgehen
  • Im Zweifel gehen Sie zur Bibliothek
  • List, Set und Map
  • Fantastische Listen ...
  • Eine mutable Liste erstellen ...
  • Sie können Werte entfernen …
  • Reihenfolge ändern und mehrere Änderungen gleichzeitig durchführen …
  • Das Collections-Projekt anlegen
  • Listen dürfen doppelte Werte enthalten
  • Ein Set anlegen
  • Wie ein Set auf Duplikate testet
  • Hashcodes und Gleichheit
  • Regeln für das Überschreiben von hashCode und equals
  • Ein MutableSet verwenden
  • Das Collections-Projekt aktualisieren
  • Zeit für Maps
  • Eine Map benutzen
  • Eine MutableMap erstellen
  • Einträge aus einer MutableMap entfernen
  • Maps und MutableMaps können kopiert werden
  • Der vollständige Code für unser Collections-Projekt
  • Vermischte Nachrichten
  • Ihr Kotlin-Werkzeugkasten
  • Innen und außen unterscheiden
  • Collections verwenden Generics
  • Eine MutableList definieren
  • Typparameter mit einer MutableList verwenden
  • Möglichkeiten generischer Klassen und Interfaces
  • Diese Schritte wollen wir abarbeiten.
  • Die Pet-Klassenhierarchie erstellen
  • Die Contest-Klasse definieren
  • Die scores-Eigenschaft hinzufügen
  • Die getWinners-Funktion erstellen
  • Ein paar Contest-Objekte erstellen
  • Das Generics-Projekt erstellen
  • Die Retailer-Hierarchie
  • Das Retailer-Interface definieren
  • Wir können CatRetailer-, DogRetailer- und FishRetailer-Objekte erzeugen ...
  • out verwenden, um den generischen Typ kovariant zu machen
  • Das Generics-Projekt aktualisieren
  • Wir brauchen eine Vet-Klasse
  • Vet-Objekte erzeugen
  • Verwenden Sie in, um einen generischen Typ kontravariant zu machen
  • Ein generischer Typ kann lokal kontravariant sein
  • Das Generics-Projekt aktualisieren
  • Ihr Kotlin-Werkzeugkasten
  • Code wie Daten behandeln
  • Einführung in Lambdas
  • Wie Lambdas aussehen
  • Lambdas können Variablen zugewiesen werden
  • Lambda-Ausdrücke haben einen Typ
  • Der Compiler kann die Lambda-Parametertypen ableiten
  • Das richtige Lambda für einen bestimmten Variablentyp verwenden
  • Das Lambdas-Projekt anlegen
  • Lambdas können an Funktionen übergeben werden
  • Das Lambda im Funktionskörper aufrufen
  • Was beim Aufruf der Funktion passiert
  • Das Lambda aus den runden Klammern befreien …
  • Das Lambdas-Projekt aktualisieren
  • Funktionen können Lambdas zurückgeben
  • Eine Funktion, die Lambdas übernimmt UND zurückgibt
  • Die combine-Funktion benutzen
  • Verwenden Sie typealias, um einen anderen Namen für einen vorhandenen Typ anzugeben
  • Das Lambdas-Projekt aktualisieren
  • Ihr Kotlin-Werkzeugkasten
  • Dem Code Beine machen
  • Kotlin besitzt eine Vielzahl eingebauter Funktionen höherer Ordnung
  • Die Funktionen min und max arbeiten mit Basisdatentypen
  • Ein näherer Blick auf die Lambda-Parameter von maxBy und minBy
  • Die Funktionen sumBy und sumByDouble
  • Das Groceries-Projekt
  • Willkommen bei der filter-Funktion
  • map verwenden, um eine Collection umzuwandeln
  • Was passiert, wenn der Code ausgeführt wird
  • Die Geschichte geht weiter …
  • forEach funktioniert wie eine Schleife
  • forEach hat keinen Rückgabewert
  • Das Groceries-Projekt aktualisieren
  • Collections mit groupBy gruppieren
  • Sie können groupBy in verketteten Funktionsaufrufen verwenden
  • Die fold-Funktion
  • Hinter den Kulissen der fold-Funktion
  • Weitere Beispiele für fold
  • Das Groceries-Projekt aktualisieren
  • Vermischte Nachrichten
  • Ihr Kotlin-Werkzeugkasten
  • Raus aus der Stadt …
  • Anhang I: Koroutinen – Code parallel ausführen
  • Anhang II: Testen – Ziehen Sie Ihren Code zur Rechenschaft
  • Anhang III: Die Top Ten der Themen, die wir nicht behandelt haben
  • 1. Packages und Importe
  • 2. Die Sichtbarkeit von Code steuern
  • 3. enum-Klassen
  • 4. Versiegelte Klassen
  • 5. Verschachtelte und innere Klassen
  • 6. Objektdeklarationen und -ausdrücke
  • 7. Erweiterungen (Extensions)
  • 8. return, break und continue
  • 9. Mehr Spaß mit Funktionen
  • 10. Interoperabilität
  • Index

Mehr von dieser Serie

    Ähnliche Titel

      Mehr von diesem Autor