Professionelles Java – Teil 1 | Kenneth DeLong | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Professionelles Java – Teil 1

teacher avatar Kenneth DeLong, Java and Groovy Programmer

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      00 Welcome

      5:40

    • 2.

      01-Übersicht

      3:39

    • 3.

      02 Einführung in Java

      12:31

    • 4.

      03 JavaIDEs

      3:26

    • 5.

      04 JavaHelloWorld

      10:27

    • 6.

      05 BasicSyntax

      21:54

    • 7.

      06a Objects

      12:39

    • 8.

      06b Attributes

      19:48

    • 9.

      06c Objektkonstruktion

      18:15

    • 10.

      06d Objects

      29:47

    • 11.

      07 Arrays

      26:55

    • 12.

      08 Kollektionen

      30:20

    • 13.

      09 PolymorphismAndInterfaces

      37:19

    • 14.

      10 Erinnerungen

      44:38

    • 15.

      11-Schlussfolgerung

      1:39

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

113

Teilnehmer:innen

--

Projekte

Über diesen Kurs

Dies ist der erste Teil eines dreiteiligen Kurses mit dem Ziel, dir die notwendigen Kenntnisse für die Programmierung in Java zu geben. In diesem ersten Teil behandeln wir Java-Grundlagen und die objektorientierten Einrichtungen von Java, einschließlich Kursteilnehmer:innen, Polymorphismus und Erbe sowie grundlegende Sammlungen. Der Kurs beinhaltet ein Projekt, das du von Grund auf neu codieren kannst, indem du die Konzepte in jedem Kapitel, um das Projekt zu erweitern, bis wir eine working haben, die mehrere anspruchsvolle objektorientierte Konzepte anwendet. Kursteilnehmer:innen müssen hart arbeiten und früheres Verhältnissen mit Programmieren wie to

Triff deine:n Kursleiter:in

Teacher Profile Image

Kenneth DeLong

Java and Groovy Programmer

Kursleiter:in

Skills dieses Kurses

Entwicklung Programmiersprachen Java
Level: Intermediate

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. 00 Welcome: Okay, alle, willkommen im professionellen Job. Natürlich ist mein Name Kendall Long. Ich werde dein Lehrer sein und durch diesen Kurs führen. Vielen Dank, dass Sie diesen Kurs gewählt haben. Lass uns reinspringen und sehen, worin du dich einbringst. In diesem Kurs ist das Ziel wirklich, Sie von jemandem, der sehr wenig vertraut mit Java hat zu jemandem zu bringen, der ein ziemlich breites Verständnis der alten Schlüsselelemente dessen hat, wie ein moderner Job eine Plattform aussieht. Und wirklich, Mike, mein eigentliches Ziel ist es, Ihnen die Werkzeuge zu geben, die Sie brauchen, um in einer professionellen Programmierumgebung zu funktionieren . Nicht wirklich. Nur um wie Ihr erstes Hallo World Programm oder Teoh tun einen kleinen Trick hier. Sie sind in Java, aber wirklich, um Ihnen die ganze Reihe von Wissen, die Sie wissen müssen, zu geben, um in einem professionellen Umfeld zu arbeiten. Also, wer bin ich wieder? Mein Name ist Kendall Long. Ich schreibe Software seit ungefähr den 1980er Jahren, und in den frühen neunziger Jahren wechselte ich irgendwie von meiner Art C und FORTRAN Hintergrund zu beginnen, objektorientierte Sprachen zu verwenden. Und 1997 wechselte ich zu Java und das ist so ziemlich alles, was ich seitdem programmiere . Ich habe Dunce, eine ziemlich Menge an Python-Programmierung und ein paar ihrer Randsprachen programmiert. Ähm, ich habe ungefähr 2008 über die groovy Sprache gestolpert, die eine Art supercharged Version von Java ist. Ähm, ich habe tatsächlich eine andere Klasse, die ich über Griffey gebaut habe, aber heute, in meinem Tagesjob, habe ich Java und Groovy verwendet, um Back-End-Dienste für mittelgroße Websites und Anwendungen zu erstellen . Und derzeit arbeite ich mit dem Internet der Dinge Art von Architekturen. Ähm, also bin ich immer noch sehr tief darin, Java für meinen täglichen Job zu verwenden. Und in den frühen zweitausenden entwarf und lehrte ich eine Java Two Enterprise Edition, die es nicht mehr gibt. Aber das war eine Art Job ist Antwort auf serverseitige Programmierung und Online-Anwendungen zurück in den Tag, das war eine sehr interessante und herausfordernde Erfahrung. Okay, reden wir über diesen Kurs. So ist der Kurs im ersten Teil in drei Teile unterteilt. Die erste Hälfte des ersten Teils ist eine Art, ah, nur eine grundlegende Einführung in Java wie diese. Syntax der Architektur, Fragen wie Sie wissen, was eine virtuelle Java-Maschine ist. Wie funktioniert das bei der Einführung in die Entwicklungsumgebungen, die Menschen in professionellen Umgebungen nutzen ? Und dann in der zweiten Hälfte der Klasse, werden wir in die Objektorientierung kommen. Java ist also im Kern eine objektorientierte Sprache. Und wenn Sie also nicht wirklich ein tiefes Verständnis dieser Konzepte wie Objekte, Klassen, Polymorphismus-Schnittstellen, Vererbung, solche Dingehaben Klassen, Polymorphismus-Schnittstellen, Vererbung, solche Dinge , ist es schwierig zu arbeiten mit, richtig? Das ist also das erste, worüber wir in Teil eins reden werden. Dann wird in Teil zwei zu mehr der Mechanik von Java übergehen, also ist das irgendwie in zwei allgemeine Bereiche unterteilt. Es gibt Sprachfunktionen, Dinge, die Kernteile der Sprache sind, aber wirklich die Objektorientierung betreffen. Also kamen sie nicht in Teil eins auf. Aber du weißt etwas. Einige Beispiele haben ihre Pakete Ausnahme geschrieben, statische Dinge wie diese, die definitiv Schlüssel zu verstehen sind. Aber es ist nicht wirklich objektorientiert, ähm, Wissen. Und dann würde in der zweiten Hälfte von Teil zwei über die Kernbibliotheken sprechen, so dass Java mit Zehntausenden von Klassen ausgeliefert wird, die alle Arten von Routineprogrammierungsaufgaben für Sie Sammlungen implementieren , die Zeitbibliotheken Eingabe, Ausgabe, Gewindeschneiden. Wir gehen durch und versuchen, einige der wichtigsten zu berühren und geben Ihnen einen Überblick über einige der weniger wichtigen. Sie sind sich also bewusst, dass diese Dinge existieren. Und dann gehen wir in Teil drei weiter zu einigen der Dinge, die in den letzten vielleicht fünf Jahren Java, Ähm,eingeführt wurden Java, Ähm, , was ich sie als moderne Jobs bezeichnet habe. So Dinge wie Generika, obwohl Generika ein wenig älter sind als das, aber Lambda-Funktion streamt Annotationen, das Modulsystem, den funktionalen Stil der Programmierung. All dies ist es etwas neu in Java und, uh, aber wirklich, aber wirklich, heutige leistungsstarke Java, das Sie sehen, hat all diese Dinge sehr stark genutzt. Daher ist es sehr wichtig, all diese Konzepte zu verstehen, und das wird es sein, was Teil 3 so die Voraussetzungen für diese Klasse ist. Also, zunächst einmal denke ich, dass Sie wahrscheinlich etwas Programmiererfahrung haben sollten, bevor Sie damit beginnen. Wir fangen nicht mit dieser Idee an, was ist eine Variable? Was ist eine Funktion? Was bedeutet es, ein Programm auszuführen, wie wenn Sie nicht bewerten können, sagen wir, 500 Zeilen Code in einer anderen Programmiersprache oder sogar in Java. Dann müssen Sie wahrscheinlich ein wenig lernen, bevor Sie beginnen, diesen Kurs zu nehmen , weil wir nicht von diesem Grund ein Niveau beginnen. Wenn Sie etwas Berufserfahrung haben, denke ich, das ist OK. Wenn Sie etwas, ähm, wissen Sie, wissen Sie, unvollständige Berufserfahrung Nummer eins haben. Es ist immer schön, einen Überblick über Dinge zu haben, die Sie zuvor gesehen haben. Aber Nummer zwei, wissen Sie, wenn alle Themen auf der vorherigen Folie oder nicht vertraut Sie wissen, werden Sie definitiv ein paar neue Dinge hier lernen. Zweitens ist, dass dies kein frivol ist nicht wie eine 45-Minuten-Klasse, oder? Es gibt also eine Menge Informationen. Job ist ein riesiges, riesiges Ökosystem. Es ist nur 25 Jahre alt. Ich denke jetzt, zum Zeitpunkt des Schreibens, vielleicht länger. Es gibt also eine Menge Dinge zu lernen. Trotzdem wir nicht alles abdecken, und es wird Teile geben, vor allem importieren drei Worte. Es fängt an, ziemlich schwierig zu werden. Also, äh, wirklich suchen wir nach Leuten, die es ernst meinen, fließend in Java zu lernen . Alles klar, wenn dir das alles gut klingt, dann klingt es gut für mich. Also lasst uns mit dem ersten Abschnitt von Teil eins beginnen 2. 01-Übersicht: Okay, willkommen in Kapitel eins des ersten Teils der professionellen Jobklasse, die sich mit Objekten und Objektorientierung befasst . Nur um Sie daran zu erinnern, wo Sie sich in der Sequenz befinden, ist Teil eins der dreiteiligen Kurse in diesem Teil. Wir nehmen den ersten Teil des Kurses und sprechen über grundlegende Job-Architektur und Syntax und einige Entwicklungsumgebungen, die in professionellen Umgebungen verwendet werden . Und dann gehen wir zu Jabbas objektorientiertem Kern. Sprechen Sie über Objekte in Klassen und Polymorphismus und Themen wie diese. Das Objekt ist also hier. Nummer Eins. Wir möchten sicherstellen, dass Sie eine umfassende Einführung in das Java-Ökosystem erhalten. Es ist kompliziert, und Leute werfen Wörter um, und manchmal verwenden sie die Wörter nicht genau richtig. Also ist es schön, wirklich einen Überblick über Hubble zu haben. Die Stücke passen in Java zusammen. Dann werden wir die meisten der Rest der Klasse verbringen, über Jobs Objekt während der Basis zu lernen . Java wurde also als objektorientierte Sprache erstellt, die der Kern der Sprache ist, und Sie müssen das wirklich verstehen, um das Beste daraus zu machen, und auf dem Weg lernen wir ein wenig über objektorientiertes Design. Nun, was das bedeutet, ist wie Wie schreiben Sie gute Programme in einer objektorientierten Sprache, die während eines Designs Objekt genannt wird ? Und obwohl das nicht wirklich unser Fokus ist, werden wir ein wenig darüber reden, wie Sie in Ihrem Denkprozess ein Programm entwerfen, wenn Sie ein Objekt in dieser Sprache verwenden. Okay, der eigentliche Umriss dieses Teils wäre wieder am Anfang. Die grundlegende Job-Architektur wird immer und installiert. Einführung in einige Entwicklungsumgebungen wird ein Hallo Welt Programme zu bauen. Sie können Ihr erstes Stück Code laufen lassen. Nun, dann machen Sie einfach ein wenig Syntaxüberprüfungen. Sie verstehen also gut, wie die grundlegenden Konstrukte im Job aussehen. Wenn dies das erste Mal durch ist und dann werden wir über die Objektorientierung wie Wasserklassen reden . Was sind Objekte? Erhöhen und Sammlungen? Ah, Polymorphismus mit Schnittstellen und Vererbung, und das wird der Großteil dieses Teils des Projekts des Kurses sein. Okay, eines der interessanten Dinge, auf die du hier eingehen wirst, ist das Klassenprojekt. Also wird unser Klassenprojekt eine Brettspiel-Simulation sein, insbesondere das Spiel von Sorry. Also, wenn Sie jemals zuvor Leid gespielt haben, äh, haben Sie einen kleinen Vorsprung auf die Anforderungen hier. Ich schätze, was daran interessant ist, ist die Nummer eins. Wir bauen es von Grund auf neu. Also beginnen wir mit einem leeren Projekt und wir schreiben den ganzen Code 100% von uns selbst. Äh, genau wie du es in einem echten Leben würdest, oder? Und das Projekt baut auf sich selbst von Kapitel zu Kapitel. Also beginnen wir, wenn wir anfangen, Objekte zu machen, wir beginnen, das Objekt zu bauen, die Klassen für dieses Spiel, und wir fügen immer mehr und mehr Funktionalität hinzu. Also ist es nicht einer von denen füllen Sie die leeren Projekte, wo Sie 200 Zeilen Code übergeben und Sie müssen auf eine NCAA meinte liniert 73 gehen. Und dann sollte das dein Projekt sein. Dies ist tatsächlich eine, wo Sie tatsächlich Beschichtung für echte, richtige, und natürlich, Lösungen Luft nach jedem Kapitel im Video zur Verfügung gestellt. Ich werde die Lösung zusammen mit Ihnen machen, damit Sie sehen können, wie ich es jetzt mache. Sprich dich irgendwie durch, damit du verstehen kannst, wie ich darüber nachdenke. Und dann natürlich, natürlich, dass dieser Quellcode im Projektbereich Ihres Kurses sein wird. So können Sie sich das immer ansehen. Okay, also das nächste Kapitel werden wir in die Geschichte von Java und eine schnelle Einführung das gesamte Ökosystem bekommen und den Job der virtuellen Maschine in Ihrem Computer installiert bekommen, damit wir anfangen können, etwas Code zu schreiben. Ich werde dich dort sehen. 3. 02 Einführung in Java: Okay, Willkommen zurück zu Kapitel zwei. Interessiert. Job Die Grundlagen. Also in diesem Kapitel wird nur einige sehr hohe Dinge abdecken, bevor wir in das Fleisch der Klasse zu bekommen . Eine ist eine Art von der Geschichte von Java und den verschiedenen Releases. Weil du davon ziemlich viel hörst. Ah, schneller Top-Level-Überblick darüber, wie Java funktioniert und wie es kompiliert wird und Dinge wie diese, und ein kurzer Blick auf die Tools, die wir verwenden, um richtig zu kompilieren und mit Java zu arbeiten. Also in Bezug auf die Geschichte. So war Sun Microsystems das Unternehmen, das Java in den frühen neunziger Jahren entwickelt hat, und zu der Zeit war das Feature wirklich erstaunlich, war eine plattformübergreifende , Programmiersprache, objektorientierte, Multithread-Müll gesammelt auf und auf und auf und auf. Das war ein riesiger Deal. Äh, heute, natürlich, im 21. Jahrhundert, ist das alles Teil des Kurses. Aber damals war das ein echter echter Spielwechsler. Nun, Sun Microsystems wurde 2010 von Oracle gekauft und seitdem hat Oracle die Entwicklung von Java geschult. Es gab eine Reihe von Versionen von Java, und einige von ihnen sind hier mit der veröffentlichten Nummer, dem Datum und nur einer Handvoll. Die Hauptmerkmale. Es gibt drei Dinge zu sehen auf dieser leichten Nummer Eins ist, dass wir Java verwenden werden. 11 So Wiese sind wir unten unten. Das ist also die Version von Java, mit der sich dieser Kurs beschäftigt. Nummer zwei. Nur etwas zu bemerken, ist, dass es zwei Hauptversionen von Java gab, die wirklich Spielwechsler waren, und das war Job von fünf und Job acht. Das ist, warum diese Luft fett ID Also diese beiden Releases wirklich aus verschiedenen Gründen gemacht. Kann Java-Entwicklung ganz anders. Es gibt definitiv ein Vorher und Nachher jeder dieser Veröffentlichungen. Nun ist das dritte, was zu bemerken ist ein bisschen subtiler. Hier ist, dass in den frühen Tagen von Java die Veröffentlichung so ziemlich alle zwei Jahre ungefähr kam, und das war ziemlich gut. Java hat ständig aktualisiert und neue Funktionen erhalten, aber beachten Sie gegen Ende. Was ist passiert? Java sieben dauerte fünf Jahre Job und neun dauerte vier Jahre, und die Community begann, eine Menge Frustration auszudrücken, dass es schien, als ob Java nicht in der Lage war , neue Funktionen rechtzeitig zu vertreiben, und so führte Oracle, den Weg zu ändern dass der Job freigegeben wird. Java nine war also die letzte Major Release in der Art und Weise, wie frühere Java-Major Releases Major waren . Nun, was sie tun, gibt es zweimal jährlich Veröffentlichungen. Also nach dem Job ein neun sechs Monate später kam Java, 10 nach Java. 10 6 Monate später kam Java 11 und jemand, der so weiter unterstützt. Job 11 hat langfristige Unterstützung. Das bedeutet, als Sicherheitsfehler, Luft gefunden und, äh, äh, andere Updates sind notwendig, um neue Hardware-Plattformen oder solche Dinge zu unterstützen. Job 11 wird weiterhin Aufmerksamkeit für die nächsten drei Jahre bekommen, Andere Releases sagen, wie Java 12 1 Monat nach Java 13 herauskommt, ist die Unterstützung für Job 12 beendet, so dass einige Leute ein wenig nervös. Die kleineren, häufigeren Releases sind einfacher zu aktualisieren, aber Sie haben irgendwie eine Waffe im Kopf, weil Sie nur einen Monat haben, bevor Ihr Java nicht mehr unterstützt wird. Es bedeutet nicht, dass es aufhören wird zu arbeiten, aber trotzdem, in einem professionellen Umfeld, das ein bisschen beängstigend ist. So viele Unternehmen, die in diesen Markt springen, brauchen gerade jetzt und was zwei lässt führt zu der Frage, was Java mehr ist. Es war früher der Job, dass kam von Oracle war Java. Es ist jetzt viel komplizierter. Jetzt gibt es ein Open-Source-Projekt namens Open J. D. K. Das ist der offizielle Referenz-Build von Java. Was auch immer offen J. D. K tut, das macht Java. Alle anderen irren sich. Dies wird natürlich unter der Leitung von Oracleentwickelt Leitung von Oracle , aber es sind viele andere große Unternehmen involviert. Red Hat, IBM Azul und eine Litanei anderer, die alle zu diesem Open Source beitragen. J T K Project Oracle nimmt dann das offene J. D K-Projekt und fügt eine Menge mehr Enterprise-Funktionen hinzu, die eine Menge von eigenständigen Dienstprogrammen hinzufügt , dass es einige Module zum Job der Distribution hinzufügt, die ah mehr auf Unternehmen fokussiert haben -Funktionen. Und auch gibt es viele andere Unternehmen, die das offene J D Kit Release nehmen und sie ihre eigene Art und Weise unterstützt. Und das ist sehr ähnlich der Art, wie Sie Distributionen von Lennox haben. So können Sie Susie Lennix oder Debian Lennox oder alle Segen in Kliniken bringen, und sie sind alle Lennox, aber sie sind alle irgendwie etwas anders und haben ein wenig verschiedene Funktionspakete. , Einige von ihnen mögen die,die wir verwenden, das ist die Azul Zulu Jabba, die Community-Version. Sie bieten verschiedene Unterstützungszeitpläne an. Also, was Azul sagt, ist wie Okay, Sie wollen Java 13 verwenden. Das ist großartig. Wir werden es für weitere zwei Jahre unterstützen, sobald Oracle oder sobald die Open J DK-Projekte nicht mehr unterstützt. Es gibt also eine Menge Ah, Verwirrung zu der Zeit, in der ich das aufnehme, was Anfang 2020 ist . Ich denke, der Markt wird sich herausschütteln und einige starke Anwärter werden auftauchen. Aber im Moment sind wir in einem Wir sind in einer Zeit der Veränderung hier. In Ordnung, gehen wir zu den technischen Aspekten von Java. Ähm, Java ist eine kompilierte Sprache. Was würden Sie Ihre Quelldateien nehmen und einen Compiler ausführen, um es in Binärdateien zu verwandeln , und dann diese binären Fouls oder was tatsächlich ausgeführt wird. Also benennen wir in Java unseren Quellcode. Wir legen es in Dateien namens dot Java, und der Quellcode ist natürlich steuerabgebaut. Sie geben es auf Ihrer Tastatur ein, Sie führen einen Compiler aus. Der Name dieses Compilerprogramms ist Java Sea, das für Java-Compiler steht, und was auf der anderen Seite herauskommt, ist eine Klassendatei, die den gleichen Namen wie ihre Quelldatei hat. Aber anstelle von Punkt Java, wird es Punkt-Klasse und die Klassendateien Luft binär und die Struktur der der Klassendatei wird durch die Job-Spezifikationen angegeben. Jetzt werden die Klassendateien nicht direkt auf irgendeiner Hardware ausgeführt. Sie können nicht einfach eine Klassendatei nehmen, sie zum Beispiel auf Ihrer Lennox-Box ausführen . Stattdessen gibt es ein anderes Programm, das Java Virtual Machine genannt wird. Die virtuelle Java-Maschine befindet sich also in. Führen Sie eine ble, die auf Ihrem Computer auf Ihrem Laptop oder Ihrem Server läuft oder was auch immer es ist Sie selbst laufen. Wir sind auf Läufen wie jeder andere Executive-Kräuter. Aber was der Job von Virtual Machine weiß, wie zu tun ist, ist Klassendateien auszuführen. Sie werden auch hören, wie Leute über Klassendateien als Byte-Code sprechen, also weiß das JBM, hatte Klassendateien ausgeführt, und das wird tatsächlich Ihr Programm ausführen. Wenn Sie also unten schauen, gibt es zwei Schritte, um ein Java-Programm auszuführen. Sie nehmen Ihre Quellcodedatei hello dot java und Sie führen Java Sea darauf aus. Das wird Hallo Dot-Klasse ausgeben und dann, wenn Sie ausführen möchten, sagen Sie Job ein Hallo und das startet eine jbm und führt die hallo-Klasse aus. Beachten Sie nun die Asymmetrie hier, wie wenn Sie sagen, wenn Sie das JBM ausführen, müssen Sie nicht Hallo Punktklasse sagen, die von den Punktklassen angenommen wurden, aber wenn Sie kompilieren, müssen Sie Dot Java jetzt allgemein sagen, Das wird dir egal sein, aber es ist irgendwie schön, das zu wissen. Wenn die Leute also über Java sprechen, gibt es eine zillion Akronyme und verschiedene Möglichkeiten, wie sie darüber sprechen. Das kann verwirrend sein. Das J R E steht also für die Java-Laufzeit-Engine, die im Grunde das JBM ist, die virtuelle Java-Maschine, die die Möglichkeit bietet, Java-Programme auszuführen. Dann werden die Leute über die J. D. K die Arbeit sprechen D. , ein Entwicklungskit, das der Jerry plus die Tools zur Entwicklung und kompilierte Java-Programme ist. Also, zum Beispiel, Java Sea würde in der J T. K enthalten sein , aber nicht die J R E. Und dann gibt es ein Job SDK, das scheint das gleiche wie die J. D. K, kann aber auch Dokumentation oder so etwas enthalten. Diese Begriffe sind nicht sehr knackig definiert. Es ist wichtig zu wissen, denn wenn Sie auf eine Website gehen, dann laden Sie Java herunter und es sagt Donald Jr E. Sie erkennen, dass Sie nicht in der Lage sein werden, irgendetwas damit zu kompilieren, weil es nicht den Job ein C haben wird -Compiler. Aber wenn es Witz sagt, laden Sie auf J. T. K herunter T. , dann erwarten Sie so ziemlich alles zu haben, was Sie brauchen, um Java zu entwickeln. So wird es dann zu einer Frage. Also, was ist Job? Aber es gibt all diese verschiedenen Teile, also sprechen die Leute über das Java-Ökosystem, das die Programmiersprache ist. Das sind im Grunde die Syntaxregeln von Wie würdest du Java-Code schreiben? Dann gibt es den ganzen Job von Bibliotheken, die ausgeliefert werden, wenn Sie einen Job herunterladen, eine Distribution. Es gibt Zehntausende von Bibliotheksdateien, die Menschen im Laufe der Jahre geschrieben haben, um Funktionen wie, wissen Sie, Datei und setzen Sie eine Ausgabe und Multi-Threading und viele verschiedene Dinge wie diese. Dann gibt es eine virtuelle Java-Maschine, die den Code auf Ihrer Plattform Ihrer Wahl und dann auch mit Java ausführt. Es gibt eine Reihe von Befehlszeilentools, nicht nur Java und Java Sea, sondern sie haben auch eine Reihe von Debug- und Reverse-Kompilierungstools und Paket-Tools und alle Arten von Dingen, die der Job einer Distribution angesammelt hat die Jahre. Wie ich bemerkt habe,gilt das JV M von den meisten Menschen als Kronjuwel dieses Ökosystems. Wie ich bemerkt habe, Es ist sehr anspruchsvoll. Es ist eine Art, Sie wissen schon, ein Teil der Spitzenklasse der Informatik, und es läuft mehr Sprachen als Job. Das ist etwas, das wirklich interessant ist. Es gibt viele Sprachen, die auf dem jbm laufen, nicht nur Java. Ähm, einige der wichtigsten sind groovy. Schließ deine Scala, Schottland. Es gibt Dutzende und Dutzende von diesen vier großen, die viel Traktion haben . Aber es ist sehr interessant, weil diese Sprachen erweiterte Funktionen oder einfach nur verschiedene Arten der Annäherung an die Programmierung bieten , die Java selbst nicht. Aber im Allgemeinen arbeiten sie wirklich, wirklich gut mit Java, weil sie auf derselben virtuellen Maschine laufen, also ist das ein wenig über den Rahmen dieser Klasse hinaus. Aber es ist interessant zu wissen. Jetzt scheint das ganze Zeug wirklich kompliziert zu sein und du kratzst dir wahrscheinlich den Kopf. Aber mach dir keine Sorgen. Es gibt I de ese, die integrierte Entwicklungsumgebungen sind, die es Ihnen ermöglichen, Ihren Code innerhalb von gooey basierten Umgebungen zu entwickeln und zu kompilieren und zu verpacken, wie Sie auf der rechten Seite sehen . Hier ist Eclipse und wir werden ein I. D in dieser Klasse verwenden , weil das ist, wie jeder Job dieser Tage codiert. Und es wird wirklich eine Menge dieser Probleme für Sie abstrahieren. Machen Sie es einfach, und sie kümmern sich einfach um eine Menge von dem Zeug, über das wir gesprochen haben, also müssen Sie sich nicht wirklich darum kümmern. jedoch Wenn Siejedochmit der Arbeit in Java beginnen, werden Sie auf eine Reihe dieser Probleme stoßen. Also ist es gut zu wissen, dass all diese Dinge existieren. Alles klar, Ihre Übung für dieses Kapitel wird darin bestehen, Job 11 in Ihrem Computer zu installieren. In Ordnung, jetzt wieder benutze ich die Zulu Zulu Community Edition von Job 11. Ähm, und Sie sind sicherlich willkommen zu nutzen, dass Sie so ziemlich jeden Job verwenden können. 11. Ich denke nicht, dass wir keine Funktionen berühren sollten, die nicht im Kern sind. Job 11. Ich werde Ihnen nicht hier oder in der Produktabteilung Zweites Projekt geben. Irgendwelche Anweisungen zur Installation von Java? Denn es ändert sich von Zeit zu Zeit und je nachdem, welche Distribution Sie verwenden. Sie können eine andere Art von installiert er haben, also folgen Sie einfach ihren Anweisungen. Stellen Sie sicher, dass Sie die J. D. K erhalten D. , nicht die J. R. R. E. Wenn sie zwei verschiedene anbieten und wenn es fertig ist, sollten Sie in der Lage sein, die Eingabeaufforderung wie Sie sehen in der Folie Haar und Sie sagen Java Strich Version und es sollte kommen, und Sie sollten einen Haufen von Eleven dort sehen, Genau hier sehen wir offene J. D. K Version 11 Punkt Null bis fünf. Das sagt uns also, dass das Job 11 ist. Um, 15. Oktober 2019 Langfristige Support-Version. Okay, das ist also der offizielle Job. Ein Build Job 11 wird ab 15. Oktober 2019 in Rechnung gestellt, so dass Sie in der Lage sein sollten, dies zu tun. Sie sollten in der Lage sein, die Befehlszeilenversion zu öffnen, Java-Dash-Version zu sagen und eine Art Ausgabe wie diese zu erhalten. Wenn Sie Zulu verwenden, sollte es so aussehen. Es gibt vielleicht einige Updates von der Zeit, die ich geschrieben habe, wissen Sie, diesen Kurs gemacht habe, aber auf jeden Fall sind das Ihre Hausaufgaben für diesen Abschnitt. Und sobald du das erledigt hast, triff dich im nächsten Kapitel und wir werden darüber reden, wie man ein I. D. E.installiert D. E. und dann haben wir all unsere Werkzeuge bereit, in die tatsächliche Arbeitslose in Texas einzutauchen. Sprich dann mit dir. 4. 03 JavaIDEs: Ok. Willkommen alle zu Kapitel drei Java I ds. Lassen Sie uns einrichten, um zu beginnen, etwas Code zu schlagen. Ordnung, also ist dieses Kapitel ein kurzes, nur um zu lernen, ein I D. E zu installieren und uns in die Position toe zu bringen, fangen Sie an, Code zu schreiben. Nun, Sie sagen vielleicht eine Idee. - Was? Ok. Ich d e steht für integrierte Entwicklung in Aber Umgebung, die ein Kombinations-Editor ist, Compiler de Bugger Runner, Alles, was Sie brauchen, um Code zu entwickeln Und ich weise nur darauf hin, dass diese Dinge verrückt sind, mächtig. Wenn Sie eine Programmiersprache kompilieren, erstellt der Compiler eine Datenstruktur namens abstrakte Syntaxbaum, die dem Compiler mitteilt , dass Sie wissen, was Ihr Code bedeutet und was er tut. Diese I d Ys sind in die A S t Abstracts in Textur eingesteckt. Und so vermitteln sie Dinge beim Bearbeiten und Re-Factoring Ihres Codes, die ein Texteditor einfach nicht wissen könnte. Ich meine, sie machen ein paar sehr ausgeklügelte Sachen. jedoch Wenn Siejedochwie ein Nemax-Guru oder so etwas sind, und Sie denken, dass Sie viel produktiver sein können, als sich frei zu fühlen. Doch für die meisten von uns mit einem 90 e wird die Art und Weise sein, dass wir unsere Tage als professioneller Coder verbringen . Also, was sind die beliebten I Ds? Nun, zum Zeitpunkt dieses Kurses, die wichtigsten Aaron, die wichtigsten Aaron, erzählen Ajay von einer Firma namens Jetbrains, und das scheint derjenige zu sein, der gerade die größte Mindshare hat. Dann gibt es Eclipse, was ich glaube, das ursprüngliche I D E für Java ist. Sie datiert mindestens auf das Jahr 2000, wenn nicht davor. Und dann gibt es Nettobohnen, von denen ich glaube, dass Sun Microsystems begonnen hat. Jetzt wird es von Oracle gesponsert, das weniger beliebt als intelligent oder Eclipse in dieser Klasse zu sein scheint . Ich werde Clips verwenden, wenn wir es tun, wenn wir unsere Projektarbeit machen, und ich habe die Lösungen mit Ihnen überprüft. Ich werde in Eclipse arbeiten, aber es spielt wirklich keine Rolle. Sie alle machen so ziemlich das Gleiche. Die Klasse und die Projekte hängen nicht von Ihrer Wahl ab . . Wir werden nicht viel lernen, wie man die Ideen benutzt. Ich zeige Ihnen einige Dinge in einem Video grundlegende Eclipse-Befehle, nur um Sie loszulegen. Ähm, das Wichtigste ist, nur eine auszuwählen, es erneut herunterzuladen, es gemäß ihren Anweisungen zu installieren. Es wird für jeden anders sein, und die Anweisungen ändern sich von Zeit zu Zeit. Aber denken Sie daran, dass die Entwicklung und Arbeit so viel einfacher, wenn Sie eine gute Idee haben und Sie wirklich gut darin, es zu benutzen. Also, das ist definitiv eine lohnende Investition, wenn Sie ein Job, ein Programmierer werden wollen, und das war's. Die Übung für dieses Kapitel besteht also darin, eines der beliebten I DS zu installieren und es in Gang zu bringen. Also nochmal, schauen Sie auf ihrer Website nach Installationsanweisungen. Einige von ihnen werden mehrere Ergänzungen anbieten, und einige der Ergänzungen werden andere bezahlt werden. Sie werden alle Arten von zusätzlichen Funktionen für den Zweck dieser Klasse haben. Sie brauchen nur die grundlegende Java-Entwickler-Edition, was auch immer das in der I D genannt wird , die Sie auswählen. Äh, das sollte umsonst sein. Sie sollten in der Lage sein, das später zu installieren. Wenn Sie anfangen, anspruchsvollere Dinge zu tun, können Sie darüber nachdenken, vielleicht auf eine kostenpflichtige Version zu wechseln, aber das ist für diese Klasse nicht notwendig. Und dann, wenn wir das installiert haben und es funktioniert. Dann im nächsten Kapitel werden wir mit der Programmierung beginnen. Alles klar, das werden wir sehen. 5. 04 JavaHelloWorld: Alles klar, Willkommen in Kapitel vier, Java, Hallo Welt, wo wir unseren ersten ausführenden Code schreiben werden. Also in dieser Klasse werden wir nur etwas über das Format der Arbeit von Quellcodedateien lernen und wie man die Ausführung eines Java-Programms mit der sogenannten Hauptmethode startet . Java-Quellcode wird also in Dateien eingefügt, die Leute dazu neigen, Klassendateien aufzurufen, weil sie Klassen enthalten Das ist anders als die Klassendateien, über die wir vorher gesprochen haben, die Binärdateien sind, die vom Compiler erzeugt werden. Die Nomenklatur ist manchmal etwas verwirrend verwirrend. Aber sagen wir, Sie wollten eine Klasse namens meine Klasse erstellen. Sie würden eine Datei schreiben, die meinen Klassenpunkt Java nennt, und dann in dieser Datei hätten Sie diese Beschwörung hier, öffentliche Klasse, meine Klasse, gefolgt von geschweiften Klammern. Also, was ist hier los? Der erste von allen Klassennamen, den Sie Wut Quellcode definieren, muss mit dem Namen des Dateinamens vor dem Punkt-Job übereinstimmen . Wenn es also öffentliche Klasse ist, meine Klasse, muss es meine Klasse sein, nicht Job. Und dann bezeichnen die geschweiften Klammern den Umfang der Klasse Also, äh, äh, welcher Umfang bedeutet im Grunde nur eine Gruppe von Anweisungen, die zusammengehören. Wenn Sie Python-Programmierung durchführen, wissen Sie, dass der Bereich durch die Ebene der Einrückung gekennzeichnet ist. Wenn Sie Ihren Code darunter eingerückt haben, sagen wir, wie eine if-Anweisung, bezeichnet das einen Codeblock, der in Java zusammengeht. In jeder Sprache, die von der Programmiersprache C abstammt, verwenden wir geschweifte Klammern, um den Umfang zu bezeichnen. Alles klar, Java-Programme beginnen mit einer Methode, die Hauptmethode und Hauptmethode genannt wird. Sieht so aus. Dies ist Standard, ah, Format. Ford ist öffentliche statische void Haupt-String-Bracket-Argumente. Die Klammer bedeutet Array, und wir werden darüber in ein paar Kapiteln sprechen. Annette ist, wo, wenn Sie diese Klasse von der Befehlszeile aufrufen, hier wird die Ausführung gestartet. Die ARDS beziehen sich auf alle Parameter oder Argumente, die Sie in der Befehlszeile übergeben haben. So würden Sie Befehlszeilenargumente in das Programm übergeben, das sie als Jetzt der Argumentorganisation verfügbar sind , zum größten Teil in Ihrem Java-Programmierleben stimmen Sie nicht viele Hauptmethoden, und selbst wenn Sie auch sehen, wird das I d e sie für Sie erstellen, so dass Sie sich nicht wirklich zu viel um all diese Syntax kümmern müssen. Aber es ist erwähnenswert, dass dies etwas ist, das die Leute Java in den letzten vier geschlagen haben. Also, nur um ein Programm zum Laufen zu bringen, gibt es eine Menge Syntax. Was ist eine Klasse? Was ist öffentlich? Mich. Willst du eine statische? Mich? Worum geht es eigentlich leer? Was machen die eckigen Klammern? Da sind viele Dinge drin, die eine Erklärung erfordern. Uh, wir werden all diese Dinge durchgehen, während wir durch die Klasse gehen. Moment können Sie einfach die Hauptmethode als eine Art, ah gegebenes Format nehmen , das Sie immer verwenden. Okay, also haben wir Code ausgeführt, aber es hat nichts getan. Also lasst uns das tun. Das einfachste, was jeder tut, ist Hallo World an den Rat auszudrucken. Also wieder, in Java, wie etwas auf die Konsole zu drucken ist ein wenig ausführlich, sein System dot out dot dot print Lynn und dann die Zeichenfolge, die Sie drucken möchten, um Standard out. Also nur für Ihr Referenzsystem ist eine Klasse, die in Java ist. Out ist der Ausgabestrom, wie er genannt wird , der eine statische Variable in der Systemklasse ist und dann die Drucklinie ist die Methode, die Prince Align sagt , drucken Sie diesen Code und folgen Sie dann mit dem Zeilenfüßchen Zeichen Drehen Sie erneut. Du brauchst dir keine Sorgen darüber machen. Es ist das gleiche, die ganze Zeit System aus. Kreml behandelt nur als eine lange Sache, die Sie tippen. Mach dir keine Sorgen um die Komponenten. Nun, wenn Sie unser kleines Programm ausführen würden, das wir gerade an der Befehlszeile geschrieben haben, tun Sie es so, Sie würden Java Sea über meinen Klassenpunktjob A ausführen, um meine Klasse zu produzieren, Klasse, die die echte tatsächliche Klassendatei. Und dann würden Sie diese Klassendatei auf der jbm ausführen, indem Sie den Job meiner Klasse sagen und das würde das Programm ausführen, das bei der Hauptmethode beginnt. Und was Sie sehen würden, ist hallo, World print out to the Council. Jetzt werden wir das I D verwenden. Also werde ich umschalten, um zu Eclipse zu wechseln, um Ihnen zu zeigen, wie es in Eclipse funktioniert, und ich werde Sie durch dieses erste Programm führen, nur für den Fall, dass Sie brandneu darin sind. die anderen Ideen werden sehr ähnlich sein. Die Tastenkombinationen und die Menüs. Sie werden etwas anders sein, aber alles funktioniert ziemlich gleich. Okay, wenn dies das erste Mal ist, dass Sie Eclipse installiert haben oder es in Ihrem Arbeitsbereich hier öffnen , erhalten Sie diesen Willkommens-Dashboard-Bildschirm , der Links zu einer Reihe von Tutorials und solchen Dingen enthält. Ich will das nicht sehen, und ich will es nicht wieder sehen, also gehe ich direkt zu dem, was sie die Werkbank nennen. Okay, das ist also die Ansicht, wo du arbeiten wirst. Ich hätte gern ein bisschen mehr Immobilien. Ich werde einige dieser Fenster schließen, die ich nicht brauchen werde, und wir sind bereit, Code zu schreiben, aber Sie müssen wissen, dass Sie nicht nur allgemein in diesen i d.. E S anfangen können einzelne Dateien zu E schreiben. Sie müssen sie in ein Projekt einbauen. Und ein Projekt ist wirklich nur ein Ordner auf Ihrem Laptop. Also lasst uns hier ein neues erstellen. Wir haben einen Link Schaffung neuer Job ein Projekt. Lass uns das machen. Wir nennen es „Hallo Welt“. Hoppla. Das ist der Platz da raus. Von der Welt verwendet J zu Java. 11. Erstellen Sie separate Ordner für die Beschaffung von Klassendateien. Sie haben diese Option, dass die Klassendateien möglicherweise in den gleichen Ordner wie die Quelldateien gehen . Wenn Sie dies anklicken, denke ich, jeder legt sie in separate Dateien, separate Ordner. Und dann auf dieser Seite in Eclipse, gibt es diese eine Sache, die ich mag, dass Sie bemerken. Erstellen Sie die Modul-Info-Dot-Java-Datei. Lass uns das nicht tun, okay, das verursacht nur das. Dass das Teil von etwas ist, über das wir später im Kurs sprechen werden, das Java neun-Modulsystem genannt wird , verursacht eine Menge zusätzlicher Komplikation, hilft uns überhaupt nicht, also lasst uns das einfach loswerden und dann das Projekt erstellen. Jetzt. Als ich das Projekt geöffnet habe, dass es hier einen Ordner namens SRC gibt, dort geht Ihre Quelle und lassen Sie uns eine Hallo World Java-Klasse erstellen. Jetzt. Wie könnte man das machen? Nun, so wie Sie es in Eclipse tun, das ist genau richtig. Klicken Sie auf den Quellordner und Sie sagen neu und es sagt Klasse. Okay, machen wir es in der Klasse und ich rufe diese Klasse an. Hallo Welt. Es ist in Ordnung, die Klasse genauso zu benennen wie die Projekt-Benachrichtigung, die Eclipses sagt , Hey, Sie setzen dies in das Standardpaket. Das ist entmutigt. Wir haben noch nicht über Pakete gesprochen. Wir machen das viel später in der Klasse, und dann sagen wir Ihnen, wie Sie diese Warnung beheben können. , Beachten Sie,dass es hier allerlei Sachen gibt. Sie können das meiste davon anklicken, spielt keine Rolle. Nur jetzt steht es: Möchten Sie, dass ich über die öffentliche statische Leere gehe? Die wichtigsten Methoden? Ja, sicher. Warum schreibst du das nicht für mich ? Ich muss es nicht tun. Und hier kommt Okay, also, äh, wir bekommen das. Und persönlich mag ich die geschweiften Klammern auf den anderen Linien. Ich werde das tun. Da ist diese Ah, um Aussage hier für Sie zu machen. Also vergisst du nicht, zurückzukommen und das zu reparieren. Aber was wir tun wollten, war genau das, was wir in unserem Slides-System hatten. Ich habe das Druckland rausgeholt und bemerkt, wie, äh, der Redakteur weiß was? Ähm, Funktionen stehen zur Verfügung. Also nochmal, etwas, das ein Texteditor Ihnen bei Risk nicht helfen würde, war sagen Hallo Welt mit einem Ausrufezeichen. Denken Sie daran? Alles endet mit Semikolon. Speichern Sie die Datei. Und da gehst du. Da ist dein erstes Jobprogramm. Jetzt. Wie führst du es in Eclipse aus? Sie können zurück zu diesem linken Panel gehen, wie ich es im Allgemeinen richtig mache, klicken Sie darauf und sagen: Als Job-Anwendung ausführen. Manchmal gibt es mehrere Möglichkeiten für Eclipse, eine bestimmte Datei zu interpretieren, je nachdem, wie kompliziert Ihr Code ist. Sofort. Es gibt nur einen Weg, der eine Bewerbung hat. Sie führen es und der Konsul kommt auf und hier ist, wo Ihre Ausgabe geht. Hallo, Welt, richtig? Und wenn Sie beweisen möchten, dass Sie den Text ein wenig ändern können, können Sie ihn erneut ausführen und Sie können sehen, dass er sich geändert hat. Es ist also wirklich unser Quellcode, der hier läuft. Okay, das ist also eine Einführung in Eclipse. Das sollte fast genug sein, um Sie durch die ersten paar Phasen unseres Projekts zu bekommen. Es gibt wirklich nicht viel mehr als das. Offensichtlich, wenn Sie die Menüs und Dinge erkunden und alle Pop-up-Menüs in den oberen Line-Menüs verdunkeln , gibt es eine Menge Dinge, die Sie hier tun können, von denen wir uns nicht wirklich Sorgen machen müssen. Für unsere Klasse. Alles klar, zurück zu den Dias. Also, was die Übungen für dieses spezielle Kapitel ist, genau das zu tun, was ich getan habe. Holen Sie sich Ihr erstes Hallo Welt-Programm in Betrieb. Also machen Sie Ihr i d open erstellen Sie ein kleines Hallo World Projekt und holen Sie einfach das, ähm, bringen Sie das Ding im Druck zum Rat im Projektbereich. Dafür gibt es Anweisungen. Es wird beschriftet 04 Hallo Welt, das ist das gleiche wie der Kapitelname. So können Sie diese zusammen verfolgen. Also, wenn Sie etwas tiefere, ähm, Erklärungen darüber, was zu tun ist, werfen Sie einen Blick auf diese Datei. Also geh weiter und tu das hin und wieder in den nächsten. Nun, Nun, nur um zusammenzufassen, worüber wir gesprochen haben. Denken Sie daran, Java-Programme beginnen ihre Ausführung mit der Hauptmethode. Der Code ist in der Klassendatei in der Klassendatei enthalten, hat eine Hauptmethode und Parameter, Parameter, die Sie an das Funktionssystem übergeben haben, die Lynn drucken dann an den Konsul gedruckt werden . Okay, wir werden das Fax ziemlich viel im Rest der Klasse benutzen. Also, sobald Sie das in Ihrem I d funktioniert haben dann sind wir bereit für das nächste Kapitel, das alles über Klassen und Objekte sein wird. Das ist also, wo wir wirklich hineinkommen werden. Alles klar, dann werden wir sehen. 6. 05 BasicSyntax: Alles klar, willkommen zu Kapitel fünf. Arbeitslose in Texas. In diesem Kapitel werden wir nur über einige der grundlegenden Java-Syntax gehen. Ich werde nicht Labour sein. Das ist ziemlich selbsterklärend, aber es ist wichtig, es zumindest einmal zu sehen, bevor Sie mit der Arbeit an Java beginnen. Wenn Sie einen Job von zuvor programmiert haben, werden Sie wahrscheinlich eine langweilige von diesem. Aber es ist gut für jeden Teoh, all die verschiedenen syntaktischen Konstrukte zu sehen, die kommen kommen, einschließlich dieser Dinge Namenskonventionen, Typen, Variablen, Anweisungen, Blöcke bedingt ist vier Sprünge alle diese Arten von grundlegenden Bausteinen der Programmiersprache. Okay, Job A hat seine eigenen Rechtschreibkonventionen. Diese wurden nicht vom Compiler erzwungen, aber jeder macht es so, und die Leute werden unglücklich sein, wenn Sie Dinge anders schreiben. Also in Java haben wir das, was Camel Case genannt wird, verwendet, was bedeutet, dass die Wörter aneinander gereiht sind und neue Wörter den ersten Buchstaben Großbuchstaben haben . Es hat also Buckel, wie Sie hier auf diesem Kamelfall im Vergleich zu anderen Fällen sehen. Zum Beispiel, Snake Fall. So macht Python gerne dort, wo Sie Unterstriche zwischen den Wörtern setzen und sie alle lassen . Kleinbuchstaben eso Campbell cases Die Standardmethode, Dinge in Java-Klassennamen zu tun Regel immer groß geschrieben. Konstanten Luft machte alle Kappen so, wie Sie es hier im Konzept konstant sehen, weil sie alle Kappen sind . Sie verwenden den Unterstrich, um die Wörter zu trennen, aber so ziemlich alles andere beginnt Kleinbuchstaben und verwendet Kamel Fall Wenn es mehrere Wörter im Namen gibt , die Variablen und Methodennamen und Paketnamen und irgendetwas anderes wären Sie können sich vorstellen, Okay, Eine Sache, die über Java aus der Sicht einer objektorientierten Sprache interessant ist, ist, dass es einige Typen hat, die keine Objekte sind. Sie sind das, was wir Primitive nennen, und das sind die, die Sie hier sehen. Ich werde diese Tabelle nicht lesen. Sie haben es als Referenz. Aber diese Luft nicht Objekte in dem Sinne, dass die meisten Java-Klassen sind. Aber diese Lufttypen, die Sie verwenden können, die nur numerische und Charakter- und Mobbing- und Bisstypen sind , okay, Variablen deklarieren. Job ist also eine dieser Sprachen, in denen Sie die Variable deklarieren müssen, bevor Sie sie verwenden. Sie müssen dem Compiler sagen, dass ich dieses Gleichnis namens I verwenden werde und es ist ein Int , der ein primitiver Imager ist, richtig? Sie können eine Variable wie diese deklarieren und ihr dann später Werte zuweisen. Oder Sie können es tun, wie Sie mit der Zeile unten mit pie sehen, wo Sie die Variable deklarieren und sie in derselben Anweisung initialisieren. Beide Luft fein bewegen sich nach unten. Dort sehen wir, dass Anweisungen und Java immer durch Semikola beendet werden, oder? Es gibt viele Programmiersprachen, in denen der Compiler das Ende der Zeile durch den Wagenrücklauf am Ende des Zeilenende ableitet, aber nichts Job. Es ist nur der Semikolon, der das Zeilenende und Leerräume angibt. Kommentare wurden ignoriert. Wenn Sie einen doppelten Schrägstrich in eine Codezeile einfügen, betrachtet der Compiler dann alles vom doppelten Schrägstrich bis zum Ende der Zeile als Kommentar. Sie dulden also, dass Sie Code schreiben und dann einen doppelten Schrägstrich setzen können. Danach können Sie einfach eine Zeile mit einem doppelten Schrägstrich beginnen, der sie in einen Kommentar verwandelt. Wenn Sie mehrzeilige Kommentare benötigen, machen Sie einen Schrägstrich und dann ist alles von da an ein Kommentar, bis Sie den Sternschrägstrich machen Okay, Strings in jeder Programmiersprache sind ein echtes Arbeitspferd, und es gibt einige spezielle Syntax für Strings in Java, die wahrscheinlich vollständig unter oben wäre. Völlig akzeptiert werden, eher so in der ersten Zeile. Dort sehen Sie mit meiner Klasse, wenn Sie eine Instanz einer Klasse erstellen, und wir haben noch nicht wirklich darüber gesprochen, was das bedeutet, aber normalerweise müssen Sie etwas verwenden, das den neuen Operator genannt wird, um eine Instanz einer Klasse für Strings zu erstellen . Das musst du nicht tun. Man sieht fast nie jemanden, der neue String macht. Was Sie tun können, ist, Ihre Zeichenfolge einfach in doppelte Anführungszeichen zu setzen, und der Compiler erstellt automatisch ein String-Objekt für Sie, da Strings ebenfalls Objekte sind , und weisen Sie es dann der Nachrichtenvariablen zu. Also das ist eine Art ah, spezielle Zeichenfolge, wörtliche Syntax. Andere coole Dinge, die Sie mit Strings auf der rechten unteren Seite tun können, ist, dass Sie sie mit dem Pluszeichen kontaminieren können. Sie sehen also, dass diese Nachricht zwei plus Wörter entspricht, und wenn wir dann unser System aus dem Kreml machen, können wir sogar Captain acht. Ein *** mit der Zeichenfolge, wie Sie dort in der Nachricht sehen, plus ich, und wie der Aufruf zeigt, wird es zwei Wörter Doppelpunkt zu drucken So alle diese werden kontaminiert sein. Die ganze Zahl, die ich in ihre Zeichenfolgendarstellung verwandelt wird, wenn Sie versuchen, sie zu drucken, und das ist alles sehr praktisch. Richtiger Zustand. ALS Java verwendet also die gleichen Sündensteuern C oder C plus jede C-Sprache. , Programmiersprache C, Familie von Sprachen. Und wenn der boolesche Ausdruck innerhalb der Klammern als true ausgewertet wird, dann wird der folgende Block ausgeführt, dass diese Anweisung ausgeführt. Wenn Sie nicht sonst if und ein else if und else als in diesem ganzen Block haben, wird nur einer dieser Blöcke ausgeführt. Also, wie wir hier sehen, haben wir ah, J gleich fünf. Und dann sagen wir, wenn J weniger als vier ist, mach das gut, nein, das ist falsch. Wenn J größer als sechs Milch ist, ist das falsch. Und so gingen wir auf die endgültige else-Anweisung zurück, die diejenige ist, die Boolean ausführen würde. Operatoren können alle kleinen, äh, Arten von Operatoren verwenden, die Sie auf der rechten Seite sehen. Dort, der weniger als größer als gleich, gleich, nicht gleich Krieg und und eine andere Sache über Bedingung. ALS, obwohl im Allgemeinen, wenn Sie in if-Anweisung schreiben, werden Sie geschweifte Klammern nach ihm setzen, um den Code, der danach kommt, in einen Block zu gruppieren. Wenn es nur eine Zeile gibt, brauchen Sie die geschweiften Klammern nicht. Also, wenn Sie nur wie das Beispiel haben, ist es auf dieser Seite mit dem System, das aus Punktdruck Linds, Sie brauchen wirklich nicht die geschweiften Klammern. Aber es gilt als gute Praxis, sie einzubringen. Wenn Sie nur eine Zeile haben, die Ihrem folgt, wenn der Standardweg ist, wie es unten rechts aussieht , wo Sie es auf die gleiche Zeile wie die Anweisung setzen, nur um die 10.2 Personen zu betonen , die hey, das ist eine einzige Zeile Wenn Anweisung Okay, diese switch-Anweisung, uh, das ist wieder ähnlich wie viele andere Sprachen, in denen Sie einen Wert einschalten, J um, haben Sie mit den Fällen innerhalb der switch-Anweisung, und Was auch immer Übereinstimmungen sind, was ausgeführt wird , um den Fall zu Fall drei zu betrachten. Also, zum Beispiel, wenn J gleich zwei Übereinstimmungen ist, wird case, um es weiterhin die Liste der Anweisungen nach unten ausgeführt, bis es zu einer break-Anweisung kommt . Okay, also generell, bei jedem Fall, wenn du am Ende fertig bist, musst du dort eine Bremse setzen. Das ist ein typischer Fehler für Programmierer an der Unterseite. Es gibt auch einen Standardabschnitt , , der natürlich ausgeführt wird, wenn keiner der obigen Fälle übereinstimmt. Ähm, im Allgemeinen haben Sie eine Standardeinstellung, wenn Sie einen Schalter schreiben, aber nicht unbedingt die ganze Zeit. Okay, while Schleifen und do Schleife. Eine wilde Schleife ist also irgendwie wie in ihrer Aussage, in dem Sinne, dass sie einen booleschen Ausdruck annimmt. Aber die while-Schleife wird ihren Block weiter ausführen, bis dieser Ausdruck falsch rechts wird? So ist es genau das, was es sagt, während Jays Lektion 10. Tun Sie das Zeug hier, natürlich, innerhalb dieser , natürlich, Schleife, sollten Sie besser die Bedingung ändern, sonst wird es einfach eine Endlosschleife sein, richtig? Wenn Sie sagten, während fünf weniger als 10 sind und dann einen Codeblock dort setzen, wird das eine Endlosschleife sein, also seien Sie vorsichtig. Sie können die Bestellung auch rückgängig machen. Sie können sagen, tun Sie den Block zuerst, während es eine Bedingung gibt und die aufgerufen wird, while-Schleife zu tun. Ähm, aus welchem Grund auch immer, die sind nicht wirklich so häufig im täglichen Code zu sehen, aber sicherlich Balance in Texas. Okay, die Inkrement- und Decker Ament Off-Operatoren wieder, wenn Sie C oder C plus getan haben, wissen Sie das alles bereits. Aber wenn Sie nicht andere Sprachen haben, können diese Art von Syntax nicht haben. Wenn Sie eine ganzzahlige Variable wie Jay haben und Sie sagen, J Plus Plus, ist das dasselbe wie zu sagen, J ist gleich J Plus eins oder J minus minus. Das ist ein Nachteil. J entspricht J minus eins. Okay, also diese Luftkürzel für inkrementelle und Deck verbleibende und dann, wenn Sie nach unten fallen , gibt es eine Post Fix und eine Präfixnotation. Also, was das bedeutet, ist, wenn Sie J plus sagen, es sagt, führen Sie diese Anweisung aus, und wenn Sie fertig sind, erhöhen Sie J. In der unteren Zeile sehen Sie, wo es System aussagt. Berlin Plus Plus J Und was das dem Compiler sagt, ist zuerst Inkrement J. Und dann führen Sie diese Anweisung aus, so dass Sie in den Calls mit den Ergebnissen jener dieser kleinen Codierung sehen können , die es ausdrucken würde. Es gibt noch eine andere Tastenkombinationen im Text, die Sie hier auf der rechten Seite haben. Nehmen wir an, Sie haben eine Energie. J ist gleich eins, und du sagst J plus gleich vier. Das bedeutet, dass J gleich J plus vier ist. Anstelle eines Inkrements fügt es einen zusätzlichen Wert hinzu, den Sie angeben, und weist diesen dann der ursprünglichen Variablen zurück , damit Sie diese Art von Steuerkürzungen überall sehen, besonders hier in der vierten. Dies ist ein Riel Brot und Butter von Programmierern, und die vier Schleife hat eine vier Anweisung, die drei Abschnitte hat und dann von dem Codeblock gefolgt wird, der wiederholt ausgeführt wird. Also im Allgemeinen gibt es einige. Die typische Art, wie Sie dies sehen, ist, dass es einen Schleifenzähler gibt und in diesem Fall, dass dieser die Variable J ist , und Sie deklarieren es im ersten Abschnitt. J ist gleich Null Fall, dass das die Variable J erstellt und initialisiert sie Null. Dann sehen Sie ein Semikolon. Dann, im nächsten zweiten Abschnitt, gibt es einen booleschen Ausdruck, der besagt, diese Schleife weiterführt oder rechts stoppt, und das wird am Anfang jeder Schleife ausgewertet wird, wenn es um diese Schleife schleift, während es Schleifen um diese for-Schleife herum. Und dann auf dem dritten Ausdruck nach dem zweiten Semikolon, wo es J plus Plus sagt, das ist die Art von ah, Schleife, Schleife, Ende der Schleifenarbeit, die Sie tun. Und so ist dies in diesem Fall ein sehr Standard für Schleife. Oder du sagst nur, dass ich das Ding 10 Mal sehen will und du schaffst nur einen Zähler. Sie sagen Zähler gleich Null, während die Zähler weniger als 10 dies tun und dann plus plus Zähler . Und das ist eine sehr Standard-Syntax. Jetzt müssen Sie keinen Loop-Zähler haben. Das ist eine ganze Zahl wie diese in Ihren vier Schleifen. Es gibt andere Möglichkeiten, dies zu tun. Es ist nur irgendwie auf Ihre Phantasie beschränkt, aber das sind die Standards im Text. Drei, ähm, eine neue Initialisierungsanweisung. Boolescher Ausdruck. Und dann eine Art von Arbeit am Ende der Schleife zu tun, gefolgt von einem Block von Code-Tickets, die jedes Mal ausgeführt werden, wenn die Schleife durchläuft. Also diese spezielle äh, vier Schleife, die auf dem Bildschirm ist, würde 0123456 79 ausdrucken und dann würde es in vier Schleifen aufhören , Sie vermitteln. Um und das funktioniert auch für wo wilde Schleifen und Schleifen machen. Wir haben zwei spezielle Schlüsselwörter. Brechen und fahren Sie fort. Was also eine Pause sagt, ist es mir leid, mit fortfahren zu beginnen. Was weiter sagt, ist, wenn Sie zu einer continue Anweisung innerhalb einer for-Schleife gelangen, brechen wir den Rest des Codeblocks ab, der ihre ausführt, machen wir die Look Maintenance Klausel, die dritte Klausel, das J plus plus. Und dann gehen wir zurück nach oben und fangen wieder an. OK, so weiter einfach sagt: Okay, Okay, stoppen Sie diese Schleife dieser Zeit durch die Schleife, gehen Sie zurück nach oben und beginnen Sie erneut. Tu so, als hättest du das Ganze beendet. Und dann ist das zweite Schlüsselwort break, das sagt, Stoppen Sie einfach, diese Schleife kontinuierlich auszuführen. Tun Sie einfach so, als ob Sie das Ende erreichen und überspringen und fahren Sie mit dem Rest des Quellcodes fort. Und hier haben wir eine Schleife, die von, äh, J gleich Null j weniger als 10 läuft äh, . Die Werte, die J nach Hause nimmt, sind also null bis neun. Und wenn J weniger als fünf ist, geht das weiter, so dass es nicht zum System aus der Druckzeilenanweisung kommt, so dass nichts gedruckt wird, sobald J zu fünf kommt , dann führen wir diese Fortsetzungsanweisung nicht mehr aus, weil es bewacht von einem bedingten dort. Und jetzt fangen wir an, auf den Boden auszudrucken. Richtig. Siehst du die Ausgabe? 567 acht. Aber zu der Zeit, die wir jetzt acht bekommen, die dritte Anweisung in der Schleife, wenn j größer als sieben jetzt wahr wird und wir die Bremsenaussage treffen und wir aus der Schleife herausspringen und wir bekommen nie eine Chance, Nummer neun auszudrucken, weil wir wenn j gleich acht ist, schlagen wir die Bremsen. Anweisung in der Schleife, beendet, Brechen weiter sind sehr wichtig zu verstehen. Okay, das war also eine ziemlich Wirbelwind Tour. Uh, wir werden jetzt eine zusätzliche Übung haben, die Ihnen helfen wird, mit diesem Skype-Typ von Syntex und den Anweisungen in der Befehlszeile namens 05 grundlegende Syntax umzugehen . Und wir werden uns jetzt Zeit nehmen, um diese Übung zu machen. Sie können das Video pausieren und dann, wenn Sie fertig sind, können Sie das Video wieder starten, und dann werde ich diese Übung live im Video machen. den Fall, dass es etwas gibt, worüber du dir nicht ganz sicher warst oder du nur hören wolltest was ich dazu zu sagen habe. , Das wird folgen,sobald Sie hier fertig sind. In Ordnung, werfen wir einen Blick auf die grundlegende Syntaxübung, die wir im Projektbereich hatten. Ich werde einfach alle Schritte der Übung durchlaufen, nur für den Fall, dass Sie neugierig sind zu hören, wie es funktioniert, wissen Sie, schauen Sie sich eine Art, es zu tun. Also, äh, es steht, nehmen Sie einfach das Hallo World Project aus dem vorherigen Kapitel. Alles, was wir tun werden, ist mit der Syntax in der Hauptmethode, die wir zuvor geschrieben haben, zu geigen und zu sehen, wie es funktioniert. Also Nummer eins sagt, deklarieren drei. Beendet Ihre Variablen. I j und K ein Zeichen Variable Werte toe I NJ und lassen k die einige und drucken Sie den Wert. Okay, nun, das ist einfach genug. Also, aber, äh, nehmen Sie ein wenig Platz hier und wir sagen, Fein, machen wir das gleich vier. Und J ist gleich zwei Mieter König, weil ich j okay. Und dann steht, drucken Sie sie aus. Hier gibt es eine kleine Abkürzung. Eine Sonnenfinsternis, die das tut. Ich ging S Y S O und kontrollierte dann den Raum. Und so nennen sie eine Vorlage. Eine Sonnenfinsternis. Aber lasst uns das machen. Dann füllt es es für Personal aus. Ich muss das leiten. Ich kann tatsächlich in die Datei klicken und sagen, Als Job-Anwendung ausführen und es druckt sechs, was vier plus zwei dann richtig sein sollte, wie ein der Unterschied im Produkt sein und diese Werte wiederum drucken. Also im Grunde ist es das, was es bedeutet. Ist diese KB der Unterschied? Also ich minus j rechts drucken K. Und dann bedeutet das Produkt Multiplikation. Nun, und da gehen wir 6 zu 8. Genau das, was Sie erwarten würden. Okay, um Nummer drei erstelle jetzt eine weitere Variable Acts vom Typ double. Schau, der Quotient von I NJ Lass X die Frage meines Motors sein. Drucken Sie die Antwort aus. Okay, also lasst uns das machen. Wir werden sehen, was wir hier erreichen. Double X entspricht mir kälter, J, J, und lasst uns hier etwas tun, um das interessanter zu machen. Lassen Sie uns ändern I 25 Diese Ergebnisse werden ein wenig interessanter sein. Uh, Hoppla. X Übrigens, ich schlage nur. Wenn Sie Eclipse unter Windows verwenden, verwende ich Control F 11 und das sagt, Führen Sie die Kräuter erneut aus. Also das erste Mal muss ich mit der rechten Maustaste klicken und speichern als Java-Anwendung ausführen. Aber danach bin ich nur Kontrolle, wenn 11 Kontrolle nach 11. Okay, was wir haben, ist ich über J, das ist fünf geteilt durch zwei, und das ist gleich 2,0. Das scheint etwas merkwürdig zu sein. Und in der Tat, Nummer 3 A sagt. Dann kommt die Luft etwas seltsam raus. Und die Antwort ist, ja, weil das Teilen von Bildern durch Imager immer einen Imager zurückgibt, obwohl wir ihn dieser doppelten Genauigkeit Variable X zuweisen. und dann wird das in ein Double geändert, um es X zuzuweisen. Das ist nicht wirklich das, was wir erwartet haben. Was wir also tun müssen, ist, entweder I oder J zu ändern, um nicht unverletzt zu sein. Und die typische Art, dies zu tun, wie im Buch erwähnt, besteht darin, mit 1,0 zu multiplizieren. Alles klar, es ist irgendwie eine nicht aussehende Sache zu tun. Aber auf diese Weise die Multiplikation von 1,0 mal ändere ich mich in eine Gleitkommazahl, doppelte Genauigkeit Zahl. Und dann teilen Sie sich durch Jason. Jetzt haben wir 5.0 geteilt durch zwei. Und was wir bekommen sollten, ist 2,5. Das ist es, was wir erwarten würden. Alles klar, gehen wir. Mal sehen, was wir noch haben. Erstellen Sie eine Schleife, die zählt Null zählt eine bla bla, bla, bla, bla,bla bis zu zählen druckt bla, bla, bla, . Name. Ordnung, also ist das ein for-Loop-Problem. Jetzt. Ich kann nicht wirklich sagen, dass ich hier gleich Null ist. Mal sehen, der Compiler wird sagen „Warte“, du hast schon „Ich“ benutzt und er hat Recht. Also und ich habe ich j für den Fall verwendet, dass wir hier als eine Schleife verwenden. Oder eine andere Sache, die ich tun könnte, ist, anstatt eine neue, wertvolle sehr gut zu deklarieren , könnte ich einfach sagen, dass ich Gruppen gleich Null schreien weniger als 10 I plus plus. Das ist also eine andere mögliche Art zu tun. Oder Sie hätten int in gleich Null und weniger als 10 und plus sagen können. Außerdem arbeiten sie beide und wir drucken die Zählung. OK, also zähle Platz plus hoch. Lassen Sie uns das laufen und sehen, was passiert. Lassen Sie mich ein bisschen mehr Sichtbarkeit hier im Rat bekommen. In Ordnung, also gehen wir. Siehst du? Zählen Sie Null, um neun zu zählen. Nun, was ist das nächste, wenn die Ausgabe wird gezählt sieben werden. Auch Bingo drucken. In Ordnung. Interessant. Was ich sagen kann, ist, wenn ich sieben Leute. Lassen Sie uns das versuchen. Da gehen wir. Siehst du? Hier unten? Eins ist wie der Graf sieben. Du bekommst einen Bingo-Hinweis. Ich lege die Anweisung in die gleiche Zeile, als ob Sie jetzt keinen Mitgliederjob schreiben müssen. Ignoriert Weiß spricht. Richtig. Also könntest du das tun. Du könntest das sogar tun. Das ist wirklich verwirrend für die Leute, die hinter dir her sind. Und der Grund, warum Leute das im Allgemeinen auch nicht mögen, ist, weil es wie eine normale for-Schleife aussieht . Und vielleicht sehen Sie geschweifte Klammern. Da waren sie. Du warst, dass sie nicht existieren. Du könntest anfangen, so etwas zu tun. Weißt du, K ist gleich vier und denke, dass es Teil der Vier-Schleife oder des If-Blocks ist. Vielmehr ist es nicht richtig. Um die Leute davon abzuhalten, zu denken, dass wir das im Allgemeinen tun. Ok. Wie auch immer, was ist unser nächstes bisschen Magie hier? , Drucken Sie nichts,wenn die Zählung weniger als drei ist. Es gibt also zwei Möglichkeiten, das hier zu tun, oder? Ähm, man würde sagen, Nun, das klingt bedingt, schreibt ich werde sagen, wenn ich größer ist, sieht größer als oder gleich drei aus. Dann mach das Geld, ich klebe wieder seine Nüsse. Da gehen wir. Das funktioniert also. Es hat gesagt, wenn die Ausgabe weniger als drei ist, drucken Sie sie nicht. Das ist eine Möglichkeit, das zu tun. Eine andere Möglichkeit, dies zu tun, ist, etwas von Ihrem Bruch auszuüben. Fahren Sie fort. Okay, also sagen Sie, wenn ich weniger als drei weiter, also nicht brechen. Denn wenn Sie brechen, wird die Vier-Schleife beendet und wird nicht mehr ausgeführt. Und du bestreitest das, wenn du willst. Aber weiter sagt weiter weiter. Aber überspringen Sie einfach den Körper des Blocks für diese Werte und verlassen Sie die Schleife, wenn die Anzahl acht oder größer ist . Okay, Okay, weißt du was? Das Nein, es hat nicht gesagt, ob wir noch acht drucken sollen oder nicht. Gehen wir voran und drucken es wird schön. Wenn durch ist größer als oder gleich zu essen Rand. Richtig. Also gehen wir hin. Es stoppt um acht. Es druckt keine neun. Und nur um sicherzustellen, dass das verstanden wird, , lassen Sie uns eine weitere Anweisung nach der Schleife setzen. Sobald Sie aus der Schleife brechen, Ausführung direkt unter dem fortgesetzt. Was wir also sehen sollten, ist nach der Zählung acht. Wir sollten es sehen. Geh. Fertig. Okay, da gehen wir. Das ist also ein bisschen Art von Kritzeln mit Java, nur um mit einigen der Syntaxelemente zu üben , ,die wir in Java haben. Wir habennatürlich nicht alles benutzt, aber hoffentlich gewöhnt Sie sich daran, einige Codezeilen zu schreiben. Wir habennatürlich nicht alles benutzt, natürlich nicht alles benutzt, Ordnung, Im nächsten Kapitel werden wir anfangen, über Klassen und Objekte zu sprechen. Dann beginnt der Spaß. Wir werden sehen, dass 7. 06a Objects: Okay, Willkommen zurück zu Kapitel sechs, wo wir beginnen, in Klassen und die Grundlagen der objektorientierten Programmierung einzutauchen. So besuchen Sie einfach Übersicht für dieses Kapitel Objekt während des Programms basiert auf Klassen. Job ist objektorientiert. gesamte Java-Code tritt innerhalb einer Klasse auf. Daher müssen wir lernen, was Klassen sind. Okay, das ist ein wirklich langes Kapitel. Also habe ich es in vier Abschnitte über Klassen, Attributen Konstruktoren und Methoden aufgeteilt und mache sie 12 Mal am Ende jedes Abschnitts. Sie werden ein wenig Arbeit an unserem Projekt sein, und wenn wir fertig sind, wird das Kapitel es haben. Das Projekt läuft rudimentär. Okay, also Abschnitt A was? Die Hacker-Klassen sowieso. Also, was ist der Sinn? Warum all dieser Hoopla über Objektorientierung und Klassen und solche Dinge? Nun, das ist eine tiefe Diskussion, aber für den Anfang kann man sich jemanden vorstellen, der vom Produktteam kommt und sagt: Hey, Hey, Kunden können zwei Konten haben, und dann reagiert der Entwickler mit einigen Entwicklern gobbledygook. Was ist das Problem hier? Nun, es gibt eindeutig eine Kommunikationslücke zwischen den beiden. Der Produkteigentümer hat kein Vertrauen, dass der Entwickler alles von dem versteht, was er gerade gesagt hat. Es gibt sehr wenig Fähigkeit, zu verfolgen, was vor sich geht. Und der Entwickler würde vielleicht einen Fehler machen. Vielleicht haben sie einen dieser gobbledygook-Namen falsch, oder? Wäre es schöner, wenn der Entwickler so etwas sagt? Umarmung eines der Kundenklasse und hatte ein anderes Konto? Oh, okay, jetzt Nummer eins, es gibt weniger Übersetzungen zwischen den beiden Vokabeln und Nummer zwei, der Entwickler kann tatsächlich mit der Produktperson sprechen. Ordnung, das ist hier ein Spielzeugbeispiel, aber wenn man über ein großes Projekt mit Dutzenden und Dutzenden von Namen spricht, und wenn sie alle von Kunden übersetzt sind, sprechen Sie mit Ingenieur. Das belastet dein Gehirn wirklich, all das Zeug ständig zu übersetzen . Es ist irgendwie wie das gute Produkt, das die Leute auf Englisch sprechen, und Sie denken und Russisch oder so, oder umgekehrt. Ein weiterer Grund, dass die Leute über Objektorientierung sprechen, ist, dass, um durch den Aufbau, dass die Konzepte der Software basierend auf den Konzepten des Problems. Mit anderen Worten, wenn Sie ah haben, Ihr Produkt, die Leute sprechen über Kunden und Konten. Wenn Sie Ihre Software um die Konzepte von Kunden und Konten strukturieren, ist das wahrscheinlich eine ziemlich stabile Basis. Zum Beispiel, wenn Sie eine Bibliothek bauen, wissen Sie, Bibliothek hat Ressource ist zu verleihen. Sie haben Bibliothekare. Sie haben Gönner. Sie haben Kredite von. Ressource ist, das ist irgendwie die Situation seit Jahrhunderten. Richtig? Also ist Ihre Software wahrscheinlich sicher, um diese, ähm, Art, die Architektur zu finden. Okay, woher kamen diese Klassen? Nun, im Allgemeinen sind sie von dem Substantiv in der Problembeschreibung inspiriert. In Ordnung, also okay, was jetzt? Was sagen wir denn? Schauen wir uns unser Projekt an, und dann werden wir herausfinden, was einige Klassen darin sein könnten. Also, was wird unser Projekt sein? Wir werden eine Simulation eines Brettspiels bauen, das lose auf dem Brettspiel namens basiert . Entschuldigung. Wenn du das je gespielt hast, wirst du wissen, wovon ich rede. Wenn nicht, mach dir keine Sorgen. Wir werden es tun. Dummte Version davon. So sehr locker. Es gibt ein Brett mit 60 Quadraten. Mehrere Spieler können das Spiel spielen. Sie können jeweils mehrere Stücke haben, die Stücke liegen auf einem Quadrat zu jeder bestimmten Zeit und es gibt ein Kartenspiel, aus dem Sie ziehen, und es sagt Ihnen, wie Sie den Frieden direkt im Moment bewegen. Für diese Iteration werden wir nur Karten betrachten, die den Frieden voranbringen. Aber wenn Sie mit Entschuldigung vertraut sind, wissen Sie, dass es verschiedene Arten von Karten gibt, die das Stück rückwärts bewegen und andere Art von verrückten Dingen tun . Später stellen wir etwas davon vor. Okay, das ist eigentlich gut genug. Diese kleine, wissen Sie, 50 Wörter Problembeschreibung ist gut genug, um in einer Analyse zu beginnen, wenn Sie wollen. Wenn wir zum Projekt selbst kommen, gibt es noch viel mehr Details für Sie. Okay, so denken Sie über das Substantiv in der Produktbeschreibung auf der vorherigen Seite und schreiben Sie sie einfach auf ein Stück Papier und vielleicht geben Sie uns ein oder zwei Minuten Gedanken darüber, wie sie verwandt sind. Zum Beispiel sagte es, der Spieler hat eine Reihe von Stücken. Okay, dann weißt du, dass du eine Linie vom Spieler zum Frieden oder so etwas ziehen kannst, um zu zeigen , dass sie verwandt sind. Also, was Sie jetzt tun sollten, ist, das Video für einen Moment zu pausieren. Ich gehe zurück zu diesem Schiebeposten. Nehmen Sie nicht länger als ein oder zwei Minuten, um an die Substantiv Enden in diesem losen Anforderungsabschnitt zu denken und schreiben Sie sie auf ein Stück Papier, vielleicht zeichnen Sie einige Zeilen, wie sie verwandt sein könnten. Okay, also pausieren Sie das Video und wenn Sie fertig sind, gehen Sie weiter und starten Sie es erneut. In Ordnung? Hoffentlich hast du die Übung gemacht, und hier sind sie, diejenigen, die benutzt werden würden. Also hoffentlich haben Sie einige davon ausgedacht. Zuallererst gibt es ein Top-Level-Konzept des Törtchens, richtig? Das Spiel wird von Spielern gespielt. Die Spieler haben Stücke. Das Spiel hat eine Reihe von Quadraten. Es gibt ein Kartenspiel, oder? Wir haben all diese verschiedenen Dinge. Ich habe strategisch die Konzepte, die ich auf dieser Folie gesetzt habe, für diejenigen ausgewählt, die wir für das Projekt benötigen werden. So, zum Beispiel, Sie könnten mit einem Brett kommen, weil das Spiel es ein Brett hat, das die Quadrate Luft auf dem Brett hat. Stellt sich heraus, wenn wir den Code schreiben, brauchen wir die Board-Klasse nicht wirklich. Es kommt irgendwie im Weg. Also habe ich es hier entfernt. Also betrüge ich ein bisschen, richtig? Ähm, ein paar Punkte zu diesem Modell hier. Zunächst einmal ist es nur teilweise fertig. Wir werden weiter daran arbeiten. Es ist ein Modell der Konzepte der Anforderungen. Richtig. Das nennen wir also ein konzeptionelles Modell und die Dinge wie Frieden und Quadrat und Karte. Diese Luftkonzepte und die Notation, die verwendet wurden, heißt UML, die einheitliche Modellierungssprache , die irgendwie nur die Standardmethode ist, die wir haben, Sie wissen, vordefinierte Modellierungsnotation, um Modelle von Software zu machen Systeme. Wenn Sie also Softwaresysteme mit Boxen und Pfeilen und Linien und solchen Dingen zeichnen , sollten Sie UML verwenden, weil es eine Standardbedeutung alle Elemente des Diagramms gibt. Okay, also was wir hier tun, wird Objekt oder in der Analyse genannt, was im Allgemeinen von Design gefolgt wird. Also, was ist der Unterschied? Während bei der Analyse geht es um Verständnis, Ihre Anforderungen und Design geht es darum, wie wir die Software erstellen werden. Sie vernetzen sich wirklich nahtlos, was eine wunderbare Sache an der objektorientierten Softwareentwicklung ist, aber auch einige Verwirrung verursacht, weil Sie die Analyse für Design verwirren können und umgekehrt . Wenn Sie nicht vorsichtig sind, ähm, diese ganze Diskussion über Objekt oder in Analyse und Design, O und G, wie wir es nennen, ist riesig. Es ist faszinierend, ähm, Liebe, in das einzutauchen. Aber in dieser Klasse geht es wirklich um Java, also lassen Sie uns nicht zu weit von der Strecke kommen. Uh, wir nehmen eine Menge Abkürzungen durch den Analyse- und Designpfad, damit wir einen Teil der Klasse zum Job bekommen können . Also, wenn Sie an dieser Entschuldigung interessiert sind. Da draußen gibt es viele Referenzen. Sie können darüber lesen, aber gehen wir zurück zu Java hier. Also, wie programmierst du eine Klasse? Nun, das haben wir schon mal gesehen. Die grundlegende Gliederung einer Klasse sieht wie diese öffentliche Klasse aus, und dann der Klassenname und dann geschweifte Klammern, wohin der Code geht. In Ordnung, um, öffentlich wird Modifikator genannt. Es gibt andere Modifikatoren außer öffentlich. Mach dir keine Sorgen um sie. Nun, lassen Sie uns einfach öffentlich machen Nun, nur das ist das bei weitem die häufigste, und wir werden das einfach weiter machen. Alles klar, jetzt sind wir bereit für die erste Übung. Wir werden also in das I. D. E. gehen D. . Wir werden ein neues Projekt namens Sorry Game erstellen, und wir werden jedes der Konzepte auf unserem kleinen Diagramm durchlaufen, das wir in den Folien hatten . und wir werden eine Klasse erstellen, um einen von ihnen zu erreichen. Im Moment werden wir sie nicht an die Arbeit bringen oder so etwas tun. Das wird im nächsten Abschnitt dieses Kapitels sein. Aber es gibt drei weitere Abschnitte, also mach dir keine Sorgen. Wir werden es bis zum Ende für die Details arbeiten lassen. Suchen Sie Ihre Übungsanleitung. Sobald du damit fertig bist , , kannst du zurückkommen. Und wenn ich dieser Folie folge, werde ich es selbst auf dem Bildschirm für euch durcharbeiten. Ihr könnt also einen Blick werfen und sicherstellen, dass ihr alles verstanden habt, und dann gehen wir zum nächsten Abschnitt über Attribute. Also pausieren Sie das Video hier. Gehen Sie weiter und machen Sie Ihre Übung. Wenn du fertig bist, kannst du das Video fortsetzen und du kannst mir zusehen, wie ich es mache. Na gut, lasst uns diese Übung versuchen. Also hier sind wir im Übungsbuch für Kapitel sechs, und der erste Abschnitt hier ist über die Anforderungen des Spiels. Ich hoffe, Sie lesen das, weil es hier viel mehr Details gibt. Ich werde es nicht mit dir durchmachen. Sie können es leicht lesen. Äh, auch die Vereinfachungen. Eine wirklich wichtige. Wir machen gerade eine Menge dummer Dinge. Wie nur ein Spieler, nur ein Stück, nur eine Karte, nur ein quadratisches Kind. Das ist ein bisschen lächerlich, aber im nächsten Kapitel werden wir das in den nächsten Kapiteln beheben. In der Tat, ähm, lasst uns weitermachen. Whoops. Entschuldigung. Gehen wir weiter, um eine auszuüben ich will ein bisschen zu weit hier. Okay, es steht also, ein neues Projekt zu erstellen, das ich angerufen habe. Entschuldigung. - Spiel. In Ordnung, also lass uns das machen. Ich werde sagen und Sonnenfinsternis. Sie können überall mit der rechten Maustaste klicken. Es gibt Kontext. Ming ist ein neuer Job. Ein Projekt. Entschuldigung. Spiele. Ich will dort keinen Platz einlegen. Wir haben Job 11. Wir wollen die Modul-Info nicht wieder. Leg das aus und wir können das öffnen und da ist unser Direktorin. Großartig. Ähm, okay. Uh, wir werden anfangen, Klassen zu erstellen. Also lassen Sie uns diese Klassen oder einige Ratschläge zu erstellen. Wir versuchen, aus dem Job zu bleiben ein neun Modulsystem für jetzt, weil nur der Schmerz. Und so wollen wir alles, was das Standardpaket genannt wird, setzen. Hoffentlich wird Ihnen Ihr I d erlauben, das zu tun. Wenn nicht, wenn es darauf besteht, dass Sie einen Paketnamen hinzufügen, verwendet das Namensspiel und dann werden wir später über Pakete sprechen . Okay, lassen Sie uns diese Klassen erstellen. Tut mir leid, Spiel-Quadratspieler. Lassen Sie uns damit beginnen, so dass ich einfach mit der rechten Maustaste hier sagen Neue Klasse C. Entschuldigung Spiel. Jetzt möchten wir diesmal keine Art Hauptmethode hinzufügen, also lassen Sie diese deaktiviert. In Ordnung. Tut mir leid, Spielspieler. Mal sehen, was die anderen sind. Quadratisches Stück Da tun, die werden dies tun, wird man Quadrat gehen. Wird Stück gehen, dekadente Karte. Onda Auto. Großartig. Okay, so sagt, dass wir keinen weiteren Code hinzufügen müssen, werden zurückkommen und das als nächstes tun. Also eine Sache das einzige, was Sie sicher sein müssen, ist, dass es kein Big Red X gibt , das sagt, dass der Code nicht in Ordnung kompilieren kann, und wirklich, das ist es für Abschnitt A war nur, diese Klassen an Ort und Stelle , das sagt, dass der Code nicht in Ordnung kompilieren kann, und wirklich, zu bringen. Jetzt nochmal bemerken. Dies sind die Konzepte aus den Anforderungen dokumentieren diese Luft. Weißt du, das Spiel, das Quadrat, der Spieler, der Frieden wie diese waren Dinge, über die wir geschrieben haben, als wir anfingen, über die Anforderungen des Spiels zu sprechen . Und das ist die Essenz der Objektorientierung. Also, bis jetzt, Ihr Programm tut nichts, weil es nur eine Reihe von Umrissen gibt. Klassen werden das in den nächsten Abschnitten beheben. Alles klar, das ist es für diesen Abschnitt, sehen Sie im nächsten Abschnitt, Abschnitt B. 8. 06b Attributes: Okay, willkommen zum zweiten Abschnitt dieses Kapitels, der Abschnitt B über Attribute ist. Es stellt sich also heraus, dass eine Objektorientierungsklassen Attribute haben können, die Daten darstellen, die zu den Instanzen dieser Klassen gehören. Also, was meine ich damit? Nun, schauen wir uns die Idee einer Karte an. Die Klassenkarte tut mir leid. Spielsimulation hat Karten darin, und jeder von ihnen hat seinen eigenen einzigartigen Wert. Und der Wert hier ist eine ganze Zahl. Dafür steht das I M. T. Mit anderen Worten, Wert ist eine Zahl wie 12345 und jede Karte hat einen Wert. Also im Klassendiagramm immer noch, wir sind zurück Analyse. Hier können wir das nach unten markieren, indem wir die Klassenkarte auf Attribute geben, die Wert genannt werden. Und dann nach dem Doppelpunkt ist der Typ, der Imager ist. Was genau bedeutet das? Also müssen wir den Unterschied zwischen Klassen und Objekten verstehen. Dies ist wirklich der Schlüssel in der objektorientierten Programmierung. Die Klassen repräsentieren Blueprints oder Factories zum Erstellen von Objekten. Objekte werden auch als Instanzen bezeichnet. Jetzt. Ah, das Wort Objekt ist ein wenig überlastet, weil wir objektorientierte Programmierung haben Sie viele Dinge, die Leute Objekte nennen. Das Wort Instanzen etwas genauer darüber, was wir hier reden. Also werde ich versuchen, diese Wortinstanz zu verwenden. Aber verzeihen Sie mir, wenn ich manchmal Objekte sage. Was ist der Unterschied? Nun, eine Klasse, die wir bereits einige Klassen in Quellcode geschrieben haben, richtig. Sie haben einen Editor geöffnet und Sie haben den Player der öffentlichen Klasse eingegeben. Geschweifte Klammer, geschweifte Box. Okay, das ist eine Java-Klasse. Noch nicht viel, aber es ist eine Klasse. Diese Luftquellen-Code, uh, Konstrukte. Wo sind die Instanzen? Während die Instanzen erst dann erstellt werden, wenn Sie das Programm ausführen, sodass sie zur Laufzeit im Speicher des Computers vorhanden sind, existieren sie jedoch nicht im Quellcode. Richtig? Sie haben also eine Klasse des angegebenen Typs. Also haben Sie einen Spieler der öffentlichen Klasse geschrieben. Das ist die einzige Akte, die Sie haben. Das ist Player-Dot-Java, das einen öffentlichen Class-Player hat. Richtig? Aber zur Laufzeit, wenn wir das laufen, hoffe ich, dass unser Spiel irgendwann mehr als einen Spieler haben kann, denn sonst ist es ziemlich langweilig. Wir wissen, wer gewinnen wird, oder? Sie können ein Angebot unquotierte unbegrenzte Anzahl von Instanzen. Natürlich, wenn du darüber nachdenkst. Wenn sie im Speicher des Computers vorhanden sind, können Sie nicht einfach eine unendliche Zahl erstellen, da der Speicher nicht mehr vorhanden ist. Es gibt jedoch keine grundlegende Begrenzung für die Anzahl der Instanzen, die aus Ihrer Klassendatei erstellt werden können . Die Klassendatei definiert die Attribute, wie wir sahen, eine Karte hat einen Wert oder unten. Wir sehen, dass ein Spieler eine Farbe ist, die Sie wissen, hat eine Farbe. Also, wie Sie den blauen Player haben, der grüne Spieler, wenn Sie spielen Sorry, eso Das ist die Definition der Attribute, Die Klassendatei sagt. Jeder Spieler hat eine Farbe, aber es sind die Instanzen selbst, die eine Kopie dieses Attributs haben und einen eigenen eindeutigen Wert haben. Also hier ist ein bisschen mehr UML. Mach dir keine Sorgen um die Notation. Es ist nur eine bequeme Art, es zu bemerken. Aber auf der linken Seite haben wir das Klassendiagramm mit dem Klassenspieler, und wir sagen, jeder Spieler hat eine Farbe, und diese Farbe ist die Zeichenfolge. Es sind nur ein paar Briefe. Ähm, das ist eine Art das ist eine Art der abstrakten Schicht. Weißt du, der Spieler ist ein Konzept zur Laufzeit. Wir werden Instanzen von Spielern erstellen und sie wurden hier Spieler genannt, ein Spieler zu Spieler drei, und sie haben jeweils ihre eigene Farbe. Spieler eins hat also die Farbe Green Player zwei hat die Farbe Rot und Spieler drei hat die Farbe Blau. Diejenigen der Attribute Zweifel, Werte. Also nur um ein wenig über die Notation zu sprechen, nur damit es nicht super verwirrend ist. Sie sehen, wie wie Spieler eins hier unterstrichen ist. Und, äh, dann steht der kälte Spieler. Also das zugrunde liegende in, um el, das dieses Feld angibt, stellt eine Instanz oder ein Objekt zur Laufzeit dar. Dieser Teil von links vom Doppelpunkt ist der Name davon, falls Sie darüber reden und sagen wollen, Schau dir den Spieler an, um in Ordnung welche? Spieler zu, während dieser ist Spieler zwei genannt. Auf der rechten Seite des Doppelpunkts befindet sich die Klasse, aus der er stammt. Also sagen wir, dass diese Instanz aus dieser Klassendefinition gebildet wird, und wenn Sie eine kleine Zeile mögen, können Sie OK sagen, hier sind die Attribute, die die Klasse definiert und welchen Wert sie haben. Der Spieler, den wir Spieler eins nennen, hat also den Wert G R. E E N Für das Farbattribut in der Spielerklasse hat der Spieler drei den Farbattributwert blau. Alles im Moment, wie wir durch dieses Kapitel gehen, Will Seymour darüber, wie Instanzen zu erstellen, wie sie zuweisen. Es sind Attributwerte. Weißt du, sind vielleicht Fragen, die du gerade hast, aber wir kommen dazu. Mach dir keine Sorgen. Hier ist eine Menge. Teoh Impac, jetzt der Spieler mit einem Attribut des Typs, Farbe der Farbe des Typs String. Das ist, was wir eine einfache Attribute nennen. Es ist wie, wissen Sie, wenn Sie eine Zeichenfolge oder eine Zahl oder Boolean oder so etwas haben, diese Luft einfachen Attribute. Aber was wirklich interessant ist, eine Objektorientierung ist, dass Klassen Attribute besser andere Klassen haben können . Also, während wir hier noch Analysen machen und in nur einer Minute zum Code kommen, bezeichnen wir das, indem wir eine Grenze zwischen den beiden Konzepten zeichnen und sagen: Ja, Ja, es gibt eine Assoziation. Es gibt eine Verbindung zwischen Spielern und Stücken, du weißt schon, Spieler besitzen Stücke. Stücke gehören Spielern, als gäbe es etwas, richtig, und das wird seinen Weg in unseren Quellcode funktionieren. Diese Linien auf dem Diagramm. Manchmal haben sie Nummern beigefügt. Sie haben vielleicht gesehen, dass diese Zahlen Multiplizität Leichtigkeit genannt werden, und sie haben eine spezifische Bedeutung. Aus der Sicht des Spielers endet diese Linie, die hier zum Frieden geht, mit einem Punkt Punkt für und was das Ihnen hilft zu lesen, das heißt, ein gegebener Spieler hat irgendwo zwischen einem und vier Stücke damit verbunden. Und wenn Sie die andere Richtung lesen, ist ein bestimmtes Stück mit einem Spieler verbunden. Alles klar, also ist es nur eine Möglichkeit, den Überblick zu behalten, wie viele dieser Dinge es gibt. Bevor wir also darüber sprechen, wie dies im Quellcode übersetzt wird, der ,wissen Sie, die nächste Folie sein wird wissen Sie, , lassen Sie uns hier für eine Sekunde anhalten. Gehen Sie zurück zu dem Konzeptmodell, das wir zuvor in den Folien gezeichnet haben, und fügen Sie die Attribute hinzu, die irrelevant sind. Also haben wir bereits über Karten gesprochen, haben einen Wert, und Spieler haben eine Farbe. Es gibt wahrscheinlich ein paar andere Konzepte, die interessante Attribute haben. Wenn du das machst,kannst du das irgendwie verrückt machen. Wenn du das machst, Bleiben Sie also daran, was für die Spielsimulation wichtig ist. Zum Beispiel, hier ist ein gutes Beispiel. Im wirklichen Leben hat ein Stück in der sorry Spiel eine Höhe und warten und Dinge wie das. Niemand kümmert sich um unsere Spielsimulation, richtig? Wenn du Riel baust. Tut mir leid, Spiele. Das ist sehr wichtig. Wenn Sie sie in einem Computer simulieren, interessiert es niemanden, wie Told die Stücke richtig sind, also können Sie solche Sachen ignorieren. Und dann, wenn Sie eine Art der einfachen Attribute gemacht haben, dann denken Sie darüber nach, wie die Konzepte miteinander verbunden sind. Welche gehören wozu? Und, äh, zeichnen Sie diese Linien fuhren. Diese Vielfalt ist in der gleichen Weise, wie das Stück dem Spieler gehört. Also pausieren Sie einfach in meinem Gespräch hier für eine Sekunde, um Ihnen eine Chance zu geben, das Video zu pausieren, und Sie können zurückgehen und sich das Diagramm ansehen und vielleicht ein paar Sekunden dauern, um es auf die Attribute hinzuzufügen , wenn Sie fertig sind, starten Sie die Video wieder und wir werden es einfach hier überprüfen. Okay, hoffentlich haben Sie sich ein paar Sekunden genommen, um das alleine zu machen. Hier ist, was ich für dieses Diagramm ausgedacht habe, richtig? In Bezug auf einfache Attribute sagten wir, dass die Karte einen Wert hat, der ein ent ist. Der Spieler hat eine Farbe. Das ist eine Schnur. Die Quadrate haben eine Zahl. Also, wie Sie um das Brett gehen, wissen Sie, dass die Quadrate in der Reihenfolge quadratische Zahl eins aufgereiht sind, wo Nummer zwei Quadrat Nummer drei. Also ist es schön zu wissen, welches Quadrat welches ist. Also gab ich ihnen eine Nummer. Ich gab auch die Stücke in der Zahl. Kein Spieler hat vier Stücke oder zwischen einem und vier Stücke nach unserem Modell. Und wirklich, die Stücke Luft austauschbar. Aber sie haben eine Art von Identität, und der Grund, warum ich die Nummer in das Stück gesetzt habe, ist, dass wir wirklich sehen werden, wenn wir dieses Projekt bauen, ist, ich würde gerne wissen, wann ein bestimmtes Stück in einem bestimmten Quadrat Linien. Ich werde etwas auf die Konsole drucken, das besagt, dass Peace Nummer vier für Player Blue auf Platz 14 gelandet ist und es ist schön, dass Daten diese Debugging-Anweisungen korrigieren können , damit wir sehen können, dass die Dinge tatsächlich in Bezug auf die -Vereinigung. Hoffentlich ist es nicht überraschend, dass Deck eine Reihe von Karten hat und die Karten in einem Deck sind. Das traurige Spiel hat da ein paar Quadrate. 60 im Falle der Entschuldigung. Und wir haben zwischen einem und vier Spielern, die das Spiel spielen. Und wir wissen bereits, dass der Spieler 1 bis 4 Stücke hat. Jetzt. Ein weiterer interessanter hier ist, dass die Stücke irgendwo auf einem Platz sitzen sollen , oder? So sitzt jedes Stück zu einem bestimmten Zeitpunkt auf einem Quadrat. Die Quadrate in diesem Diagramm können Sternstücke haben. Das bedeutet eine beliebige Zahl, die von null bis unendlich stürmt. Keine Begrenzung. In einem wirklich traurigen Spiel. Wenn ein Stück auf einem Quadrat landet, das ein anderes Stück Sie besetzt, schlagen Sie sie ab und schicken Sie sie zurück zu ihr nach Hause. Wir vereinfachen hier unsere Anforderungen. Wir lassen nur eine beliebige Anzahl von Stücken auf einem bestimmten Platz sitzen. Das wäre etwas Spaßiges für euch, nach dem Unterricht zu arbeiten. Wenn Sie die Modellspitze verallgemeinern wollen, können Sie sagen, dass , es ein Argument geben könnte, um zu sagen, Hey, all das gehört zum traurigen Spiel, einschließlich der Stücke in den Karten. Wie kommt es, dass es dort keine Zeilen gibt? Ja, Sie könnten, ähm, in die Details der Objektivitätsanalyse eingehen. Auch hier geht es ein wenig über den Rahmen dessen hinaus, worüber wir hier im Allgemeinen sprechen wollen. Ich werde nur sagen, es tut Ihnen nicht wirklich viel Gutes, ein Konzept wie ein Spiel zu erstellen und dann einfach fallen, essen, Linien zu jedem anderen Konzept auf dem Diagramm zeichnen. Das ist wirklich nicht hilfreich, Ordnung, also versuchen wir Zehe, betonen diejenigen, die am stärksten sind, ja, die Teile des Teils des Spiels. Aber sie gehören wirklich dem Spieler. Das ist wichtiger als die Tatsache, dass sie Teil des Spiels sind. Alles klar, kommen wir zum Code, oder? Wie sahen diese Attribute aus, wenn Sie Code schreiben? Nun, lasst uns die Spielerklasse machen. Also haben wir uns die Spielerklasse angesehen. Es hat ein einfaches Attribut namens Color of Type String und die Art und Weise, wie Sie schreiben, dass hier ,sagen Sie, private String-Farbe innerhalb der Klassendefinition innerhalb der geschweiften Klammern des Players ist sagen Sie, . Jetzt gibt es etwas Neues hier ist dieses Wort privat. Lassen Sie uns die Diskussion über Privat verschieben. Es gibt auch öffentliche. Sie könnten diesen Modifikator auch einfach weglassen, aber im Allgemeinen ist er sehr, sehr häufig. Wahrscheinlich werden 90% der Attribute in der realen Welt als privat erklärt, und das ist ein guter Standardplatz, um zu beginnen. So mache ich immer meine Attribute, bis jemand, etwas sagt mir, dass ich sie etwas anderes als privat brauchen. Lassen Sie uns jetzt alle unsere Attribute privat machen. Und später in der Klasse wird zurückgehen und Sie wissen, wir werden über private öffentliche und andere Modifikatoren sprechen, die wir haben. Dann ist die andere, die wir da drin haben, das Stück. Also beachten Sie, wie wir gesagt haben, dass wir das hatten , Uh, wir hatten diese Assoziationslinie zwischen dem Spieler und dem Frieden, und wir sagten, dass das was das bedeutet, ist, dass der Spieler ein Attribut vom Typ Stück haben kann und oder den Frieden ein Attribut vom Typ player haben. Und hier haben wir hineingegangen und dem Spieler auf Attribute namens Frieden mit dem Klassennamen Stück gegeben. Also jetzt bemerkt, dass es hier ein Kapital in einem Kleinbuchstaben gibt. Dies ist sehr häufig in, besonders in Java, das Kapital P repräsentiert das Klassenstück, richtig? Das kleine P ist nur der Name kleine P Stücke, nur der Name der Variablen, und wir hätten dies alles nennen können, was wir es nur p oder P einen oder einen anderen Namen nennen können , den wir verwenden möchten. Aber es ist sehr üblich, wenn man nur einen hat. In diesem Moment, denken Sie daran, wir in dieser ersten Runde vereinfachen, dass wir den Spieler nur ein Stück bekommen werden, um einfach privaten Frieden zu sagen, Frieden. Nennen Sie es einfach Frieden. Manche Leute sagen den Frieden oder seinen Frieden oder so etwas. Ich werde hier nur Frieden sagen. Wir haben hier eine Entscheidung getroffen, dass der Spieler ein Attribut vom Typ Stück hat, und das heißt geben dem Spieler Sichtbarkeit auf den Frieden, weil es zitieren kann unzitiert sehen das Stück. Mit anderen Worten, es besitzt diese Referenz, dieses variable Stück, und es kann daher mit dem Frieden sprechen, den wir im nächsten später in diesem Kapitel sehen werden, dass das bedeutet, dass Sie Nachrichten an es. Also, was ist diese Sichtbarkeit Sache, damit der Spieler den Frieden sehen kann? Aber kann das Stück auch den Spieler sehen? Hier fangen Sie an, sich wieder zu bewegen. Von der Analyse bis zur Konstruktion und Analyse. Es ist gut genug, nur eine Linie zu ziehen und zu sagen: Ja, Ja, diese beiden Dinge waren angeschnappt. Irgendwie im Design müssen Sie es wissen, denn, wie wir gerade auf der vorherigen Seite gesehen haben, wenn sie wirklich nicht Attribut haben, müssen Sie den Code schreiben, richtig? Es reicht also nicht aus, eine Linie zu zeichnen. Sie müssen tatsächlich entscheiden, wohin der Code im Allgemeinen geht, wenn Sie kreisförmige Sichtbarkeit haben. Mit anderen Worten, der Spieler sieht das Stück, und das Stück sieht den Spieler. Das ist generell zu vermeiden, nicht weil irgendetwas grundlegend falsch ist, sondern nur weil es zu Komplexität und einigen Problemen führen kann , die , es vielleicht besser ist, zu vermeiden. Ich denke, im Allgemeinen ist es Es ist Dinge einfacher, wenn Sichtbarkeit Art von fließt in eine Richtung. Also, äh, für die Zwecke unserer Simulation, werde ich Ihnen nur sagen, dass das Stück keine Sichtbarkeit des Spielers braucht, und nur der Spieler braucht Sichtbarkeit für den Frieden. Also, auf einem Entwurfsdiagramm, fangen Sie an, diese kleinen Pfeilspitzen hinzuzufügen, und das sagt Ihnen, ob es sich um ein Software-Design-Diagramm handelt, okay, der Spieler hat ein Attribut vom Typ Stück, aber der Frieden hat kein Attribut der Tech-Spieler. Wenn es so war. Es wäre ein Doppelpfeil, Doppelspitzen-Pfeil hier, was es jetzt nicht ist. Wie kann ich das rechtfertigen? Nun, ich kann nicht schreiben. Alles, was ich sagen kann, ist, dass ich das Projekt gebaut habe, bevor ich es durchgemacht habe, und ich brauchte nicht den Frieden, um Nachrichten an den Spieler senden zu können. Ich brauchte nicht den Frieden, um den Spieler zu sehen, also schneiden wir das ab und haben nur den CIA-Spieler Sichtbarkeit für den Frieden. Eine letzte Sache über Attribute, bevor wir ihn programmieren. Sie haben Standardwerte. Wenn also eine Instanz aus einer Klasse erstellt wird und wir werden sehen, dass die Attribute sehr bald alle bestimmte Werte haben müssen. Wenn Sie ihnen also keinen Wert zuweisen, erhalten sie ihre Standardwerte von der virtuellen Java-Maschine. Und was ist mit den Vorgaben? Während numerische Typen wie Verletzungen, Sehnsüchte, Floats, Doubles, solche Dinge sind auf Null Bull Ians gesetzt. Wenn Sie wie ein, äh, auf der rechten Seite, sehen Sie private Tyrann und glücklich, was wahr oder falsch ist, das wird auf falsch gesetzt und alles andere. Das ist ein Verweis auf eine Klasse. Mit anderen Worten, Großbuchstabe hier. Recht Nach Konvention Ah, string ist eine Klasse, so dass dieser Name zu wissen gesetzt werden würde. Also, was bedeutet wissen? Nein ist ein besonderes? Ich denke, Sie könnten es ein Schlüsselwort in Java nennen, das die Abwesenheit angibt Das Fehlen eines Objekts, so dass dieser Variablenname angenommen wird, dass Zehe eine Zeichenfolge enthält, die der Name der Person ist . Aber wir haben ihm noch nicht den Namen zugewiesen. Also hat es nur der Name den Wert weiß, der besagt, dass es keine Zeichenfolge gibt. Da ist nichts, oder? Eine kurze Notiz. Diese Standardwerte funktionieren nur für Klassen Wenn wir zu Methoden später in diesem Kapitel erhalten, wenn Sie Variable in der Methode definieren, erhalten sie diese Standardwerte nicht. Seltsamerweise nehmen sie diesen Wert an, der nicht definiert ist, was wirklich ein Compilerfehler ist, wenn Sie versuchen, ihn zu verwenden, bevor Sie ihn finden. Alles klar, lassen Sie uns jetzt die Übung für die Attribute machen. Also geh zurück zu deinem Projekt und füge wieder alle entsprechenden Attribute zu unseren Klassen Vorerst, bis wir über eine Gehaltserhöhung und Sammlungen und solche Dinge studieren können, gehen wir davon aus, dass es eines von allem gibt. Es gibt einen Spieler. Es gibt ein Stück in der Tat, Einräumung. Angenommen, es gibt nur eine Karte und ein Quadrat, was irgendwie lächerlich ist. Aber nur um das Spiel zum Laufen zu bringen, und dann werden wir das wirklich, wirklich schnell verallgemeinern . Überprüfen Sie also Ihre Übungsanweisungen, die die genauen Anweisungen haben. Und ich werde hier eine Minute lang sprechen. könnt das Video pausieren, euer Projekt erledigen, und wenn ihr fertig seid, kommt zurück und startet das Video erneut und wir werden einen Blick darauf werfen, wie die Lösung in Ordnung aussehen könnte . Hoffentlich hattest du die Chance, das zu tun und an deiner Übung zu arbeiten. Werfen wir einen Blick. Also, wenn wir gehen und uns das in der, äh, Anweisungen für die Übung, wir hatten diese Sektion Übung. Seien Sie Attribute und Sie sehen hier, was gibt es eine Zeile fehlt dort nie vermisst. Aber wir sehen hier, dass unsere Köpfe und die Vielfalt für dieses Projekt angepasst wurden . Okay, also lasst uns mit dem Spieler beginnen, denn das ist derjenige, über den wir auf den Folien gesprochen haben. Es hat diese Saitenfarbe, und es hat gerade ein Stück. Also lasst uns zu Eclipse wechseln und gehen wir zum Spieler und sagen private Gruppen, Saitenfarbe und Privatstück Frieden. In Ordnung, kommen wir zurück und sagen: Gehen wir zum Friedenswillen. Es hat wie viele Attribute, während die Zahl hier ist. Aber dann gibt es auch den Platz, oder? Also gehen wir in den Frieden. Und hier gibt es etwas Interessantes zu sagen, es zu beweisen und zu nummerieren. Ich glaube, das hieß das, oder? Ja, und jetzt gibt es es ein anderes Attribut vom Typ Quadrat, aber es gibt keinen Hinweis darauf, wie der Name dieser Attribute richtig sein sollte, also könnten wir es quadratisch nennen, in Übereinstimmung mit der Art, wie die Spieler Stücke gerade Frieden. Aber eigentlich, ich denke, in diesem Fall gibt es einen ah, besseren Namen, denn was ist das Quadrat, das zu einem Stück gehört? Es ist der Ort, der aktuelle Ort des Friedens. Also sind die Stücke, die irgendwo zu jeder Zeit auf dem Brett sitzen, es , sei denn,es wird bewegt. Es sitzt auf dem Platz, und das ist der Ort der Stücke. Also werde ich tatsächlich diesen variablen Standort nennen. Es ist nicht notwendig. Natürlich könnten Sie es benennen. Was immer du willst. Der Platz selbst hat. Wie viele Attribute? Nun, da ist die Nummer und es gibt keinen abgehenden Pfeil. Das Quadrat hat also nur ein Attribut namens Es ist Zahl. Das wird sich ändern, wenn wir weitermachen. Aber fangen wir mit dieser privaten Nummer an. Es ist, als wäre ich Platz Nummer eins Quadrat Nummer zwei. Uh, die Karte hat einen Attributen seinen Wert , über den wir auch auf den Folien gesprochen haben. Sechs. Privat, Ich sage Ihnen, das Deck jetzt wieder für diese bescheidene Version, erste Version des Projekts. Die Decks haben nur eine Karte, was eine lächerliche Sache ist, aber machen wir das vorerst. Private, harte Karte. Und dann ist das letzte, was ist das traurige Spiel, das einen Spieler, ein Quadrat und das Deck hat , obwohl es hier einen Pfeil geben sollte, der fallen gelassen wurde. Aber das ist OK, also haben wir einen Spieler, privaten Spieler, einen Spieler, richtig, aber das Deck auf einem privaten Platz. Alles klar, jetzt beachte, dass es dich in Eclipse bereits warnt. Es ist wie das, was los ist? Es ist ein Schwung. Sie haben dieses Feld mit dem Namen Player definiert, und Sie haben es nie irgendwo verwendet. Es ist wie, ja, das ist richtig. Im nächsten Abschnitt oder zwei dieses Kapitels werden wir anfangen, diese zu verwenden. Also am Ende dieses Kapitels wird eine laufende Simulation gehen. Es wird langweilig, weil es nur ein Quadrat gibt. Also wissen wir immer, wo die Stücke, die auf dem Quadrat sind. Und wir kennen immer den Gewinner, weil es nur einen Spieler gibt. Aber wir werden genau das Gleiche erreichen. Das endet also das Kapitel. Attributen Bleiben Sie beiAttributenfür den nächsten Abschnitt dran. 9. 06c Objektkonstruktion: Alles klar, willkommen zurück zum nächsten Abschnitt dieses Kapitels, dem es um Konstruktoren geht. So erstellen Sie Instanzen aus Klassen. Bisher ist das Problem, das wir haben, dass wir versuchen, objektorientierte Computing ohne Objekte durchzuführen . Bisher ist das Problem, das wir haben, dass wir versuchen, objektorientierte Computing ohne Objekte durchzuführen Also einfach deklarieren eine neue Attribute wie Spieler wie in der traurigen Spiel haben wir private Spieler Spieler. Durch das Erstellen dieser Variablen wird keine Instanz des Klassenplayers erstellt. Es ist einfach wie ein Schlitz Zehe halten auf einen Spieler, oder es ist wie erklären Sie Ihre Absicht, einen Spieler zu einem späteren Zeitpunkt zu erstellen, Also, das ist nicht gut. Nun, wie erstellen wir tatsächlich Instanzen? Nun, wir verwenden diesen Operator namens New. Dies ist ein spezielles Schlüsselwort in Java, das eine Instanz des Players erstellt, das nimmt, was wir eine Referenzart wie die Adresse für diesen Player nennen , und speichert es in der Variablen, die Sie ihm zuweisen, wie der variable Player. So können Sie sagen, ist, Sie sehen hier Spieler Spieler gleich neuen Spieler. Also viele Spieler gibt es, aber der neue Operator, gefolgt von dem Klassennamen und dann ein Paar von forensischen, und das zeigt an, dass Sie ein neues Objekt erstellen. Oder um genau zu sein, erstellen Sie gerade eine Instanz des Klassenplayers. Sie können diese neuen Operatoren oft aufrufen, wie Sie möchten. Sie können ein Spieler ein Spieler 23456 so oft wie Sie es tun möchten, bis Sie aus dem Speicher laufen , wie wir im vorherigen Abschnitt gesprochen. Also, als du in Stan warst, hat sie eine Instanz gegessen. Wenn Sie den neuen Operator aufrufen und eine Instanz erstellen, wird das JBM einen Konstruktor für diese Klasse aufrufen, und das ermöglicht es der Instanz, ihn Zustand zu initialisieren. So haben wir im vorherigen Abschnitt über Standardwerte gesprochen. Im Allgemeinen möchten Sie die Standardwerte nicht. Sie wollen echte Werte, oder? Willst du sie wirklich ausfüllen? Wenn Sie also diesen neuen Operator auf dem Klassenplayer aufrufen, wird er diese Methode hier aufrufen, die ein Konstruktor ist. Jetzt. Woher wissen Sie, dass dies ein Konstruktor ist? Sie haben hier eine ganz besondere Signatur. Generell machen wir sie öffentlich. Sie müssen es nicht sein, aber im Moment nehmen wir ihre Öffentlichkeit an. Dann haben sie den Klassennamen, gefolgt von einem entsprechenden. Okay, also, äh, es ist ein bisschen anders als andere Methoden. Unterschriften? Wie wir im nächsten Abschnitt sehen werden, gibt es hier keinen Rückgabewert deklariert. Wir haben noch keine anderen Methoden im Detail betrachtet, aber das werden wir in einer Minute sehen. Und was können Sie innerhalb der geschweiften Klammern des Konstruktors der Spielerklasse tun? kannst du. Im Allgemeinen möchten Sie den Status initialisieren. Also, was bedeutet das? Also haben wir dieses variable Stück, und genau wie wenn wir einen Spieler haben, bedeutet das nicht, dass wir einen Spieler haben. Instanz haben wir hier auch keine Stückinstanz. Also lassen Sie uns eine mit dem neuen Operator erstellen. Richtig? Also werde ich New Piece anrufen. Ich werde diesen Wert für dieses variable Stück signieren. Und natürlich wird das den Konstruktor in der Friedensklasse nennen und so weiter unten. Eine Sache, die Sie hier bemerken müssen, ist, dass dies das Besondere an den Attributen einer Klasse ist dass Sie innerhalb der Methoden der Klasse, einschließlich des Konstruktors, diese Variablen tatsächlich lesen und schreiben können. Sie sind irgendwie wie globale Variablen innerhalb der Spielerklasse, genau, genau, da sie privat für die Spielerklasse sind. Niemand sonst kann sie sehen. Das ist ein Teil dessen, was privat bedeutet. Aber von jedem Ort in der Spielerklasse, können Sie tatsächlich mit der Farbe sprechen. Du kannst mit dem Frieden reden. In Ordnung, nun, sehen das ein bisschen mehr aus, während wir mitmachen. Okay, also ein Konstruktor, wie wir es gesehen haben, so faras, wissen Sie, nützlich. Aber es wäre schön, einige Daten übergeben zu können. Also, zum Beispiel, in unserem Spiel, haben wir irgendwann einen Spieler, einen roten Spieler, einen blauen Spieler, einen grünen Spieler, einen gelben Spieler. Wie bekomme ich diese Daten in den Player? Instanz? Weil ich das im Konstruktor nicht hart codieren kann, weil ich nur eine Farbe eingeben kann, wenn ich den Konstruktor erstelle. Also, was ich hier tun will, ist, wenn ich stehe, sie aß stattdessen die Klasse. Sie hat die Instanz gegessen. Ich möchte die Farbe als Parameter weiterleiten. Richtig. Wenn Sie also neuen Spieler sagen und dann innerhalb dieser elterlichen, können Sie Parameter dort setzen. Diese Parameter werden hier an den Konstruktor übergeben. Und Sie sehen, dass wir einen öffentlichen Player haben und jetzt einige Parameter in den Konstruktoraufruf einfügen. wir einen öffentlichen Player haben und jetzt einige Parameter in den Konstruktoraufruf einfügen. Und was wir tun können, ist jetzt, dass wir den Farbwert zuweisen, der übergeben wird, in dem er die Farbe genannt hat , und wir weisen ihn dieser Farbe hier zu. Und dann haben wir Friedensinstanz geschaffen, wie wir es in der vorherigen Zeile getan haben. Okay, das ist also wirklich nützlich. Sie können tatsächlich mehrere Konstruktoren in einer Klasse haben. Sie können so viele Konstruktoren haben, wie Sie möchten. Sie müssen eindeutige Kombinationen von Parametern haben. Also hier haben wir einen Konstruktor, der keine Parameter hat. Dieser nimmt eine Schnur. Sie könnten eine andere haben, die zwei Strings oder drei Strings oder eine Zeichenfolge in einer Ganzzahl oder zwei Ganzzahlen in einer Zeichenfolge oder einer beliebigen Kombination nimmt . Solange das einzigartig ist. Das hier ist etwas Besonderes. Dies ist der Standardkonstruktor, da er keine Argumente annimmt. Und was bedeutet es, etwas Besonderes zu sein? Nun, wenn Sie keine Konstruktoren in Ihrer Klasse schreiben, der Compiler einen Standardkonstruktor für Sie hinzu. Grundsätzlich mit einem leeren Körper zwischen den geschweiften Klammern. Okay, also wäre es wie ein öffentlicher Spieler, geschweifte Klammer, geschweifte Klammer mit nichts auf der Innenseite. jedoch beginnen, Wenn Siejedoch beginnen,irgendwelche Konstruktoren explizit zu schreiben. Wie wenn Sie in Ihren Quellcode irgendwelche Konstruktoren wie diesen eingeben , wird der Compiler keinen Standardkonstruktor für Sie hinzugefügt. Also, wenn Sie eine wollen, dann müssen Sie es eingeben. Du musst es wirklich hinzufügen, oder? Also entweder schreiben Sie keine, in diesem Fall erhalten Sie standardmäßig eine kostenlos oder wenn Sie einen von ihnen eingeben möchten, müssen Sie sie alle eingeben , einschließlich des Standardkonstruktors. Warum sollten Sie mehrere haben wollen. Wie wäre das nützlich? Nun, Sie können Konstruktoren verketten, und das ist etwas wirklich Gemeinsames, das Sie sehen werden. Also, äh, das ist eine Möglichkeit, Doppelarbeit des Mantels zu vermeiden. Wenn Sie also den Standardkonstruktor aufrufen, möchten Sie vielleicht sagen: Nun, Nun, wissen Sie was? Wenn du beim Erstellen eines Spielers keine Farbe bekommst, gehen wir einfach davon aus, dass es großartig ist, oder? also im Standardkonstruktor Aiken Setzen Siealso im Standardkonstruktor Aikendas Standardrecht. Wie ich schon sagte, ich möchte diese Farbe grau sein. Aber die Art und Weise, wie ich das tun werde, besteht darin, den Konstruktor aufzurufen, der tatsächlich die Farbe richtig annimmt . Also, wenn Sie innerhalb des Konstruktors und Ihnen sind. Sie schreiben eine Methode namens, die wie folgt aussieht und diese Tastatur verwenden und dann übergeben Sie Parameter an sie. Was das sagt, heißt das so, als ob sie diesen anderen Konstruktor mit diesem Wert tatsächlich aufgerufen haben. Richtig? Also diese Anweisung hier, die besagt, dass dies diesen Konstruktor tatsächlich aufruft und den Wert grau übergibt , so dass es eine größere Farbe zuweist und ein neues Stück erstellt. Und wenn Sie viele oder nicht einmal Starts in mehreren Parametern haben, kann das an den Konstruktor übergeben werden und viele von ihnen haben Standardwerte. Die Leute tun dies, indem sie diese Standardkonstruktoren schreiben und diese Konstruktorketten verwenden und die Standardwerte so übergeben. In Ordnung, also müssen wir jetzt zu unserem Projekt zurückkehren und anfangen, die Konstruktoren hinzuzufügen. Und es gibt detaillierte Anweisungen in der Projektbroschüre. Und wenn wir damit fertig sind, werden wir als Nächstes Methoden tun. Also zuerst, ähm, ähm, mach weiter und pausiere das Video. Hier, gehen Sie Ihr Projekt, und wenn Sie fertig sind, werde ich es zusammen mit Ihnen durchlaufen, so dass Sie Anmerkungen dazu vergleichen können, wie Sie es gemacht haben und wie ich es mache, und dann wird im nächsten Abschnitt auf die Methoden . Und an diesem Punkt werden wir tatsächlich in der Lage sein, die Simulation auszuführen, so dass das großartig sein wird. In Ordnung, hoffentlich haben Sie die Chance, Ihr Projekt zu machen. Werfen wir einen Blick. Also werde ich hier zu diesem Abschnitt wechseln. Also war das hier ein wenig zusammengerollt, Abschnitt C, die Konstruktorübung. Und, äh, hier gibt es einige detaillierte Anweisungen, wie es geht. Also lasst uns das irgendwie tun. Karten haben Wert, aber welchen Wert? Einige von ihnen eine, die einige von ihnen sind. Einige von ihnen sind drei. Also geben wir diese Verantwortung dem, der die Karten erschafft, um ihnen zu sagen, was ihr Wert ist. Also lassen Sie uns das gut für unsere Karte öffnen, und wir werden ihn Konstruktor hier reinbringen. Also werden wir die öffentliche Karte retten. Denken Sie daran, wenn Sie einen Konstruktor schreiben, verwenden Sie die Tastatur öffentlich und den Namen der Klasse, und es sagte, dass der Wert übergeben wird, also werden wir es sagen und nennen es einfach einen Wert. Ah, und wird Wert sagen, weil der Wert in Ordnung, Also jetzt, was wir jetzt haben. Wir haben hier keinen Standardkonstruktor, oder? Weil ich einen Konstruktor geschrieben habe, ohne einen Standard zu lesen. Wenn Sie also eine Karte erstellen, müssen Sie den Wert übergeben. Andernfalls können Sie keine erstellen. Gehen wir zurück ins Deck. Wir müssen eine Karte erstellen. Und denken Sie daran, wir machen nur einen für jetzt, also gibt es ein bisschen hokey, aber lassen Sie uns einen Wert wählen. Nehmen wir an, die Nummer drei und die Schaffung neuer Karren. Lassen Sie uns ins Deck gehen und einen Konstruktor für das Deck Public Deck erstellen. Jetzt ist dies ein Standardkonstruktor, aber wir werden es nicht dem Compiler überlassen, weil wir hier Arbeit zu erledigen haben. Wir müssen diese Rechte machen, indem wir eine Karte mit dem Wert neu erstellen. Drei. Wir konnten nicht zulassen, dass der Compiler einfach den Standardkonstruktor für uns generiert, weil wir hier einige spezifische Arbeit haben , die wir tun, die Sie wissen, der Java-Compiler würde nicht verstehen, dass er einen Wert Ah, Karte mit dem Wert drei. Richtig? Also musste ich das auch selbst auf einem Platz und bei einem Konstruktor zum Platz und zum Frieden tun. Jetzt bekommt das Stück zwei Parameter auf verletzt für seine Position. Ich bin eine ganze Zahl für seine Zahl und ein Quadrat. Das ist seine Position oder Lage. Also lasst uns das P tun, äh, tut mir leid. Waren das Quadrat im Frieden der Plätze? Erster öffentlicher Platz auf. Wir nehmen es hier in Wert, und wir sagen: Erinnerst du dich an diese Werte? Ähm, ich kann diesen Parameter benennen, was ich will, aber ich habe irgendwie eso gemacht. Hier ist ein kleiner Trick in der Finsternis. Es gibt ein Wieder Factoring, das Sie tun können. Ich werde alle unsere verschieben und ich sage, Lassen Sie uns Änderungen an der Nummer bemerken, wie es sich an beiden Orten ändert. Und als ich seine umbenannte es an beiden Orten für mich eingegeben hatte. Das ist also ein niedliches kleines Werkzeug. Du kannst den Frieden gebrauchen. Okay, so sagt es bei einem konstruktiven Es braucht zwei Parameter und genannt Zahl in einem Quadrat namens Position. Also habe ich diesen Ort hier angerufen. Ich habe falsch gesprochen. Es hätte Positionen sein sollen. Lass uns das ändern, bevor wir zu weit auf der Weltstraße sind. Und lasst uns diesen Konstruktor in Gang bringen. Öffentlicher Frieden und wie es dauert zwei Variablen, die int Zahl und Quadrat die Position und wird sagen erinnern, er ruft und Position war es in Ordnung? Ok. Nein, Im Fall der Spieler müssen wir seine Farbe kennen und schaffen seinen Frieden. Es gibt also ein bisschen eine Diskussion, oder das ist eigentlich eine interessante Diskussion. Also, äh , Bauteilkonstruktoren müssen ihre Nummer kennen, was in Ordnung ist, aber sie müssen auch ihre Position für dieses Quadrat kennen. Es steht also, um in Stan zu sein, hat sie das Stück gegessen. Wir brauchen ein Quadrat zu übergeben, dass der Konstruktor in Anforderungen, Begriffe der Spieler muss wissen, welches Quadrat sein Stück zu Beginn des Spiels auf setzen. Jemand außerhalb des Spielers muss dieses Wissen haben, weil eindeutig, Spieler sind nicht verantwortlich für Quadrate. Also lassen Sie uns einfach einen Parameter zum Spieler mit dem Namen Startquadrat vom Typ Quadrat hinzufügen. Also wirbt das im Grunde für andere Menschen. Hey, jemand muss mir sagen, wo ich meine Stücke anfangen werde, okay? Der Friede braucht jetzt auch eine Nummer. Wir machen einfach Nummer eins. Richtig. Also werden wir so etwas tun. Das ist also etwas komplizierter. Irgendeine interessante Sache. Und lassen Sie uns über diese Verwendung des Schlüsselworts dies im Konstruktor sprechen. Wir haben darüber gesprochen, dass früher in der nicht wirklich darüber gesprochen. Also lassen Sie mich hier ein bisschen darüber reden. Und lassen Sie uns einfach ändern, was wir hier haben. Also habe ich diese Dinger angerufen, damit wir keine Nummer gleich Nummer haben. Aber mit meinem kleinen Wieder Faktor-Tool wieder, das ist illegal, oder? Also hast du gesehen, dass es gekommen ist und es eine Namenskollision ist. Es ist eigentlich nicht illegal, aber es ist ein bisschen neugierig hier, richtig, wir haben hier die Nummer. Wir haben hier eine Zahl, und dann haben wir Zahl gleich Zahlen. Wie, was in der Welt vor sich geht? Äh, im Allgemeinen, wenn Sie mehrere Variablen haben, haben wir hier Nummer und Sie haben die Nummer hier. Derjenige, der Ihnen am nächsten ist, hat Vorrang, richtig? Also, was wir hier sagen, ist, dass wir die Nummer zwei selbst zuweisen, oder? Die Zuordnung zur variablen Zahl hat keine Auswirkung, weil wir sagen, Zahl ist gleich Zahl und es ist diese Zahl. Wie kann ich sagen, dass ich das für diesen hier bin? Ich rede von dieser Nummer, richtig. Also, was Sie tun können, ist sagen, diese Punktnummer, und das qualifiziert sie. Sie können das Gleiche hier machen. Diese Position, vielleicht lassen Sie es einfach so. Das ist auch legal. Aber wenn du diesen Punkt sagst, beziehe ich mich auf die Variable. Das ist eigentlich ein Attribut der Klasse. Ok, die hier oben ist. Ich spreche hier unten nicht über irgendwelche lokalen Variablen. Wenn Sie also diesen Punkt sagen, ist dies eine spezielle Notation, die Sie in Java verwenden können, um auf die Attribute zu verweisen , die Sie hier draußen haben. Alles klar, jetzt machen wir den Spieler, aber für den Spieler, um ein Stück zu erstellen, das ich brauchte, brauchte ich Startplatz. Aber ich kenne keine Startpunkte als Spieler. Also werde ich nur schlagen und sagen: Weißt du was? Wenn du mich erschaffst, musst du an einem Startplatz vorbei. Also lasst es uns schreiben. Vielleicht ergibt das einen Sinn. Also, öffentlicher Spieler, ich brauche meine Farbe, die eine Schnur ist. Und dann brauche ich jemanden, der mir sagt, wenn sie mich erschaffen, wenn ich geboren bin, muss ich wissen, wo ich meine Stücke hinlegen soll. Richtig. Diese dunkle Farbe ist also gleich Farbe. Rechts und wieder können Sie übrigens sehen, Eclipse-Farben, die Farben, die Farben, Farben, Farben, die Variablennamen. Das hier ist blau. Kannst du das sehen? Das ist blau und das hier ist blau und das ist braun und das ist braun. Also versucht es dir zu sagen. Hey, diese Farbe bezieht sich auf diese Farbe, aber diese, weil Sie diesen Punkt in der Front setzen, bezieht sich eigentlich auf diese eine Art von interessant. Und dann ist dieser Punkt Frieden ein neues Stück. Wir werden uns ein Stück erschaffen. Es ist unser erstes Stück. Wir nennen es einfach eins, und dann haben wir hier Startplatz. Also, wenn Sie gerade gesehen haben, dass ich Eclipse AutoKorrektur für mich gemacht habe, tun Sie das, indem Sie den Kontrollraum drücken, richtig? Das ist also ein bisschen ein interessantes Konstrukt hier in unseren Spielerkonstruktoren. Jemand passiert an einem Startplatz. Ich halte mich nicht am Startplatz fest. Ich gebe es keinem meiner persönlichen Attribute zu. Ich gebe es an mein Stück weiter. Diese Art von einem interessanten Design. Es ist nicht ungewöhnlich, und es ist nicht etwas. Es gibt nichts Besonderes daran. Es ist nur eine andere Art, es jetzt zu tun. Die Verwendung dieser Punkte, wir haben das am Anfang nicht getan, als wir durchmachten. Aber das ist eigentlich ziemlich üblich in Java, und ich würde sagen, persönlich würde ich sagen, dass es eine ziemlich gute Angewohnheit gibt, damit wir zurückgehen und den Aktienwert sagen können Jetzt können wir es so lassen und wir müssen das sagen, diesen Wert, weil der Wert es ziemlich üblich ist, dass die Leute ihm den gleichen Namen geben, weil die Werte eine wackelige Sache richtig zu sagen. Also meine Verschiebung alle Zehe muss wieder einmal Factoring oder Umbenennung eher tun, und ich ändere es zu diesem Punktwert Ursache Das ist eine extrem übliche Möglichkeit für Leute, ihre Konstruktoren zu definieren . Also ist es wirklich gut für euch, sich daran zu gewöhnen. In Ordnung, haben wir jetzt noch jemand? Das traurige Spiel. Lassen Sie uns darüber reden, was hier steht. Es hat einen Standardkonstruktor, der muss. In Stan Sheet. Es ist drei Attribute der Spieler des Platzes im Deck, die Decks einfach. Es ist nur die Schuld. Konstruktor. Das Quadrat will eine Zahl haben und da wir gerade nur ein Quadrat haben, ist eins eine gute Zahl und der Spieler will eine Farbe. Lass es uns einfach blau machen und es will Quadrat beginnen. Da es gerade nur ein Quadrat gibt, ist das das einzige Quadrat. Wir müssen ein Startplatz sein, also versuchen wir es. Also gehen wir in die traurige Spiel Öffentlichkeit. Das Spiel tut mir leid. Dies ist ein Standardkonstruktor, und wir werden sagen, äh, äh, dieses nicht Deck natürlich Deck. Das ist leicht zu sagen, dieses quadratische Quadrat. Denken Sie nun daran, Way Square hat eine Zahl in Es ist Konstruktor. Schauen wir uns das noch mal an. Es ist Konstruktor nimmt eine ganze Zahl. Hier ist, was passiert, wenn Sie die Parameter hier nicht übergeben, heißt es, Hey, Sie haben keinen Konstruktor Default Constructor Square. Sie müssen ein *** wie whoops hinzufügen. Ja, tut mir leid. Setzen wir die Nummer eins ein. Okay, jetzt ist es passiert. Jetzt geht die rote Linie weg und dann der Spieler, weil er Spieler kannte und wir sagten, Lassen Sie uns in der Farbe blau geben und wird auf dem Platz passieren. Ja, als Startplatz. Da es nur ein Quadrat gibt, gibt es nur einen Ort, wo sie anfangen können, und das wäre genau dieser Platz, Ordnung. Ich glaube, wir haben jetzt überall Konstruktoren. Das Deck, die Karte, das Deck, der Frieden, der Spieler, das Spiel und das Quadrat. Ordnung, also im nächsten Abschnitt, was wir tun werden, ist das Hinzufügen von Methoden und Methoden oder wo die Arbeit tatsächlich erledigt ist, und am Ende des nächsten Abschnitts wird eine laufende Simulation haben. 10. 06d Objects: Okay, willkommen im letzten Abschnitt dieses Kapitels, Abschnitt D. Wir werden über Methoden am Ende dieses Kap Abschnitt sprechen wird unsere Simulation hobbling entlang haben . Zumindest wird es etwas tun. Nun, das sah aus. Fangen wir einfach wieder an. Okay, Willkommen zum letzten Abschnitt in diesem Kapitel Abschnitt D, über Methoden. Also waren Methoden, wo die Aktion ist, richtig? Im Moment haben wir also eine Reihe von Klassen erstellt, also haben wir unsere Konzept-Lineup. Dann legen wir einige Daten in Form von Attributen ein, und Sie kennen sie zueinander. Und dann haben wir Konstruktoren hinzugefügt, damit wir sie erstellen können, und das ist alles großartig. Aber sie machen immer noch nichts. Und Methoden sind, wo die Aktion ist. Richtig? Also, was wir hier tun werden, ist in diesem Kapitel der Struktur von Methoden und Methodenmeldungen zu sprechen . Das ist also nur ein bisschen Terminologie. Also hier bin ich, in etwas Code, Ich erstelle einen Spieler und ich sage, Spieler Punkt nehmen eine Wendung. Wir nennen das Senden einer Nachricht an das Spielerobjekt dieser kleine Punkt hier auf der linken Seite steht . Es ist der Name des Objekts oder der Instanz, und auf der rechten Seite ist es der Name der Nachricht. Was bewirkt das? Es ruft tatsächlich eine Methode für diese Klasse auf. Die Player-Instanz ist also eine Instanz des Typs „Capital P Player-Klasse“. In der Spielerklasse gibt es also eine Methode namens Take a Turn. Und dann wird es einen Code geben, der läuft. Okay, also lasst uns zuerst darüber reden, wie Methoden Luft geschrieben. Die Signatur, die die erste Zeile ist, hat drei verschiedene Komponenten. Es gibt Theatermodifikator, der öffentlich oder privat ist. Dann gibt es den Rückgabetyp, so dass Methoden Werte zurückgeben können, die sie nicht müssen. Und wenn sie das Wort void dort nicht benutzen, so gibt es immer etwas in dieser Position. Und dann ist die dritte Sache der Name der Methode. Nehmen Sie eine Wendung, die Sie kongest bilden den Namen so, wie Sie wollen, und dann in den Klammern, kann es Parameter geben, die wieder übergeben werden. Das Schöne am Schreiben und Klassen, dass alle Methoden in der Klasse die Attribute der Klasse sehen können . So hat eine Spielerklasse eine Farbe in einem Stück. Wenn Sie also sagen, nehmen Sie eine Wendung, können Sie hier auf den Frieden zugreifen. Ich sage dem Frieden sechs Schritte, und Sie können die Farbe hier drucken. Ich drucke oder Sie können hier auf die Farbe zugreifen. Ich drucke es aus. Ein Debug-Protokoll, richtig? Wenn die Methode tatsächlich einen Rückgabewert hat, also ist es keine Leere in der zweiten Position, dann müssen Sie das Rückgabe-Schlüsselwort an der als letzte Zeile der Methode verwenden und sagen, Dies ist der Wert, den ich zu Whoever zurückkehren werde nannte diese Methode und wir werden es in einer Minute ein wenig genauer betrachten. Okay, zuerst reden wir jetzt über die Zugangsmodifikatoren. Wir sprachen über öffentliche und private. Es gibt einige andere, aber diese Luft, diese Art von zu extremen. Und was bedeutet Öffentlichkeit? Öffentlich bedeutet ,dass , Code und andere Dateien dieses Mitglied dieser Klasse sehen können. Also hier haben wir die Methode, die öffentlich ist, und das bedeutet, wenn Sie in einer anderen Quellcodedatei sind, können Sie sagen, dass Spieler Punkt eine Wendung nehmen, die genau richtig mit privat kompiliert. Also hier haben wir diese, die Farbe, die String-Farbe als private Attribute. Wenn du in einer anderen Datei bist und du sagst, Spielerpunktfarbe, das nicht funktionieren. Compiler wird das kennzeichnen, und das wird nicht kompilieren. Also für diesen Anfang, na ja, ist die Standardposition für die meisten Menschen ist, alle ihre Attribute privat zu machen und ihre Methoden öffentlich zu machen. Und das ist ein toller Ausgangspunkt. Und später in der Klasse wird über ein wenig mehr Raffinesse sprechen. Okay, und dann können Methoden Parameter nehmen. Wenn ich also dem Spieler sagen möchte, dass er sechs Slots bewegen soll, gebe ich diesen Parameter ein, wenn ich die anrufe, wenn ich die Nachricht hier schicke. Und das bedeutet, dass ich in der Methode diesen Parameter Haarmanager als Schritte deklarieren muss. Und dann innerhalb des Codes dieser Methode kann ich natürlich den Wert verwenden, der in den Parameterschritten übergeben wurde kann ich natürlich den Wert verwenden, der in den Parameterschritten übergeben wurde. Wir sprechen noch einmal über das Schlüsselwort. Also noch einmal, wenn ich explizit über die Tatsache sein möchte, dass dieses variable Stück das Stück ist, das ein Attribut dieser Klasse ist, kann ich diesen Punkt davor setzen, Uh, in diesem Fall, weil es kein anderes Variablennamenstück gibt, versteht der Compiler, wenn Sie einfach Frieden sagen , dass es dieser ist. Aber diesen Punkt zu setzen ist ein macht es explizit, dass Sie über diesen sprechen. Also hier bei diesem Punktstück und dieser Punktfarbe hier drinnen, gebe ich diese dunkle Farbe zurück, abhängig von wirklich persönlichen Stil. Manche Leute verwenden diesen Punkt gerne für alles, da er sich in dieser Datei auf dieser Folie befindet. Manche Leute benutzen das nie. Stott und andere Leute benutzen es sagen, nur im Konstruktor, oder nur, wenn es eine Art von Mehrdeutigkeit gibt, die sie wollen, dass sie deutlich machen. Es ist wirklich eine Frage des persönlichen Stils. Ich denke, dass dieser Punkt ist eine Art Zitat unquote offiziell, was empfohlen wird. Aber natürlich Ah, wir Entwickler sind ziemlich faul, und wir machen diesen Stopp nicht gerne ständig. Wenn wir das nicht brauchen. Jetzt kann es manchmal hilfreich sein, Ihren Code ein wenig klarer zu machen. Hier haben wir eine Methode in der Spielerklasse namens Kampf mit einem anderen Spieler, richtig, also haben wir sie hier ein bisschen Gladiatorenstil, und der Kampf mit der Methode druckt einfach aus. Hey, meine Farbe wird gelesen und deine Farbe ist blau oder was auch immer die Farben sind. Also beide Spieler, sowohl der aktuelle als auch der andere, der weitergegeben wird. Beide haben eine Farbvariable. Es ist also ein wenig seltsam in dieser Methode, weil Sie sich auf zwei verschiedene beziehen, also können Sie diese Punktfarbe und andere Punktfarbe sagen. Recht und Farbe natürlich ist natürlichein Attribut des Klassenspielers. Also bin ich im Uhren-Spieler. Ich kann es direkt referenzieren, obwohl es privat ist. Ähm, aber dann ist das Unklarheiten, von welcher Farbe du redest, oder? Das ist also eine sehr gute Verwendung des Schlüsselworts dieses. Und wie wir in der Übung für den vorherigen Abschnitt darüber gesprochen haben ,sehen Sie diese Punktnotation viel, und Konstruktoren wie dieses, äh, Muster,das Sie hier sehen. , sehen Sie diese Punktnotation viel, und Konstruktoren wie dieses, äh, Muster, Waren Sie in einer Farbe vorbeigegangen? Und der Konstruktor weist das einfach einem der Attribute der Klasse zu, die extrem häufig ist , also werden Sie dies überall sehen, und im Allgemeinen, wenn Sie diese Doc-Farbe sagen wollen, Es ist wahrscheinlich schön, dieses Stoppstück zu sagen, nur um es parallel zu machen. Dieses Code-Snippet tat es nicht, aber es ist ein wenig lästig, diese Punktfarbe zu sehen und dann einfach Frieden. Und dann gibt es vielleicht 1/3 1 1/4 1 Wenn Sie diese 10.1 von ihnen verwenden möchten, verwenden Sie wahrscheinlich diesen Punkt alle, nur um es lesbarer zu machen. Okay, Getter und Zentren Luft spezifische Arten von Methoden, die auf Attribute zugreifen Nun, eigentlich ist es nicht notwendig, dass die Zugriffsattribute, aber sie fast immer dio, um, Aber wenn Sie eine Methode Andjaba schreiben, die etwas bekommt und etwas festlegt, ist dieser Typ einer Methode eine besondere Sache, und es erstellt, was als Eigenschaft bekannt ist. Nun kommt diese Idee einer Eigenschaft aus einer Spezifikation namens Java Beans Specifications. Richtig? Irgendwie. Wissen Sie, Java bezieht sich auf Kaffee, und dann gibt es wie Kaffee, Bohnen, Regen, Regen, äh, und was das bedeuten würde, wenn Sie sehen, dass öffentliche Zeichenfolge Farbe erhält, Sie erstellen eine Eigenschaft namens Color Lower Casey mit dem Typ der Zeichenfolge, und dann die Tatsache, dass es einen Getter und ein Zentrum gibt, bedeutet, dass diese Eigenschaft gerade gelesen wird . Worüber in der Welt reden wir hier? Nun, es gibt viele Werkzeuge und Bibliotheken, die an diesem Muster arbeiten. Und es gibt eine Menge, ah Drittanbieter-Code, den Sie da draußen verwenden können, wo Sie sagen, äh, mein Spieler hat eine Eigenschaftsfarbe und sein Wert ist rot und der Code wird das tatsächlich übersetzen . Okay, rufen Sie die Farbe der Spielerobjekt Sackgasse in der Zeichenfolge auf. Rot. Richtig. Also, ähm, das ist etwas, Sie werden eine Menge Getter und Zentren sehen oder super häufig für die speziell für Attribute. Und , du kannst nicht beide wirklich brauchen,wie du eine schreibgeschützte Eigenschaft haben kannst. Also sagen wir, Sie wissen, für unseren Spieler, wir setzen die Farbe im Konstruktor, richtig? Vielleicht wollen wir nie, dass der Spieler seinen Konstruktor ändert. Also dann gibt es keinen Grund, der ein Zentrum zur Verfügung stellt. In der Tat wäre das eine schlechte Idee, ein Zentrum zur Verfügung zu stellen, weil ein anderer Programmierer eines Tages tatsächlich die Farbe eines vorhandenen Spielers festlegen könnte , und Sie möchten nicht, dass das passiert. Also gib ihnen kein Zentrum richtig. Und in wirklich seltsamen Fällen haben Sie vielleicht ein Recht, nur Eigentum. Vielleicht gibt es keinen Getter, aber es gibt nur ein Zentrum, das irgendwie ungewöhnlich ist, aber ich nehme an, es könnte passieren. Okay, das ist also die Mechanik, die Syntax der Zentren. Jetzt kommen wir zurück zu unserer Design-Frage, die lautet: Nun, Nun, welche Methoden? Es tut mir leid mit Methoden. Welche Methoden sollten wir schreiben und welche Methoden gehen wohin, und tatsächlich ist dies wirklich eine tiefgreifende Frage, wenn Sie anfangen, in objektorientiertes Design zu suchen. Im Allgemeinen sollten Sie Methoden in die Klassen einfügen, die über die erforderlichen Daten verfügen, um die Methode zu erfüllen. Das ist der Punkt der Objekte. Es gibt eine Reihe von Mustern, die die Greifmuster genannt werden. Es steht für allgemeine Verantwortung, Zuordnung Software-Muster. Sie können diese online nachsehen. Dieser spezielle Satz wird hier das Expertenmuster aus dieser Liste von Grasmustern genannt . Das ist nicht Teil dieser Klasse. Ich meine, wir versuchen wirklich, uns auf den Job einer Sprache zu konzentrieren, also werden wir nicht darauf eingehen. Aber wenn Sie ein wenig mehr über Design lernen wollen, ist das ein großartiger Ort, um jetzt zu beginnen, denn das ist eine Art tiefgreifende Frage. Wir werden in den Folien durchgehen, wo die Methoden für unser Projekt gehen, so dass, bevor Sie gehen, um das Spiel zu programmieren, es ist keine vollständige Überraschung oder ein komplettes Geheimnis. Wie wird das gemacht, richtig? Es gibt also ein bisschen, el. Einige davon sehen Sie möglicherweise in den Folien oder in den folgenden Folien oder in der Übung. Also hier haben wir zwei Boxen, ein Spiel namens sorry game und einen Spieler namens Player One. Und die Boxen sind Instanzen repräsentieren, und wir wissen dies, weil sie unter dem Label sind, ist in der UML unterstrichen. Die Bezeichnung mir die zugrunde liegenden Mittel. Es ist eine Instanz, richtig? Wir sehen, dass sie durch eine Leitung verbunden sind, und es gibt eine Art von Sache hier. Nehmen Sie eine Kurve, die entlang des Schilds mit der Richtung der Ära gleitet. Das ist eine Botschaft. Das heißt, das Spiel sendet eine Nachricht an den Spieler namens Take a Turn. Was in der Welt bedeutet das? Also irgendwo im traurigen Spiel, können wir nicht von diesem kleinen Snippet sagen, aber irgendwo in der traurigen Spielklasse, es sagt Spieler nicht eine Wendung nehmen, weil eigentlich Platte sagen sollte, um vollkommen konsistent zu sein. Das sollte sagen, Spieler eins hier in sagen, Nehmen Sie eine Wendung. Und dann, natürlich, wissen wir, dass das Senden einer Nachricht an einen anderen, ein Knopf, der von Klassenspieler überprüft wird, die Take a Turn-Methode für diese Klasse aufrufen wird. Dies ist also die UML-Syntax zum Senden einer Veröffentlichung. Einer von ihnen. Es gibt mehrere Sündensteuern, um Methoden zu zeigen, die aufgerufen werden, denn wieder sind die Methoden und Nachrichten wirklich so kompliziert, Teil von, ah, hallo Design. Wenn Sie also eine Klasse in Java ausführen, beginnt sie mit der Hauptmethode richtig? Aber wo sollten wir die Hauptmethode setzen? Weil wir die Hauptmethode irgendwie überall dort einsetzen können, wo wir wollen. Und in der Regel gibt es. Es gibt ein paar Möglichkeiten, von denen Sie denken, dass Sie sehr häufig sehen werden. Einer ist, dass einige Leute eine Klasse namens Main einfach Toe Host erstellen, die Hauptmethode oder die kreative Klasse namens Anwendung oder Läufer oder so etwas, und sie setzen die Hauptmethode in ihre oder sie werden eine Art Top-Level-Klasse verwenden. Also, wie eine Stunde pro Projekt, haben wir diese Klasse namens Sorry Spiel, die eindeutig wie die große Klasse ist. Diese Art von besitzt alles und ist thean seit dem Spiel selbst. Und so können wir, nur für unsere Zwecke. Also wollen wir mehr Klassen erstellen, wird nur die stat die Hauptmethode in das traurige Spiel setzen . Also, was tun Sie in der Hauptmethode mit einer komplizierten, wissen Sie, eine etwas komplexere Anwendung hier, wo wir mehrere Klassen haben. Nun, Sie erstellen ein paar Objekte, und dann bringen Sie sie in Gang, richtig. Also, äh, nochmal, Entschuldigung. Das Spiel spielt hier zwei Rollen. Eins ist, wo wir die Hauptmethode setzen. Könnte überall sein, aber es macht Sinn, es dorthin zu bringen. Das ist ein guter Ort, Teoh. Verstecken Sie es. Und dann wird das traurige Spielobjekt oder die traurige Spielinstanz irgendwie die oberste Ebene sein , die Wurzel unserer Hierarchie. Es ist die große, die große Elternklasse. Also werden wir in Stan. Sie hat ein bedauerndes Spielobjekt gegessen und wir werden es sagen, Teoh, gehen oder spielen, ausführen oder laufen oder beginnen, oder, du weißt schon, eine Art Methode wie die in der traurigen Spielklasse. Also hier in diesem Code-Snippet, wir erstellen Entschuldigung Spiel, und sie sagten, Gamed out play. Alles klar, das ist vernünftig, denn wir wissen Sie, Sie sagen im Allgemeinen, dass Sie ein Spiel spielen, also ist das Spiel wahrscheinlich der beste Methodenname. Und natürlich bedeutet das auf dem traurigen Spiel woanders in dieser Datei. Da dies die Geschichte in der Klasse ist, müssten Sie eine Methode erstellen. Coldplay. Was passiert also in der Spielmethode? Nun, Spieler wechseln sich abwechselnd, und sie würden alle tun, was die Spieler tun, wenn sie eine Wendung nehmen. Jetzt haben wir nur einen Spieler, also lassen wir sie fünf Runden nehmen. haben wir nur einen Spieler, Und so gehen wir. Sind vier Schleife, die wir vor gelernt. J ist der Loop-Zähler. Also gehen wir von 0 zu 5 und wir sagen, Spieler Punkt nehmen eine Wendung. Oh, beachten Sie, dass sich der Methodenname von Play geändert hat, um hier zu gehen. Tut mir leid. Was passiert also, wenn der Spieler eine Wendung nimmt? Nun, du musst solche Dinge tun. Du musst eine Karte vom Deck holen und dann dein Stück entlang der Quadrate bewegen. So viele in Zahlen. Richtig. Also im Moment überlegen wir nur alle Karten. Gerade den Frieden später nach vorne gebracht, werden wir einige interessantere Dinge tun. Okay, wir haben hier ein paar Probleme. Zunächst einmal kann der Spieler das Deck nicht sehen. Es hat keine Sicht auf das Deck, rechts und Ball. Also, wer geht es jetzt gut? Nur das traurige Spiel hat Sicht auf das Deck. Aber denken Sie daran, vorherige Folie. Das traurige Spiel ist derjenige, der dem Spieler sagt, eine Wendung zu nehmen. Richtig? Also, da das Spiel das Deck hat, könnte es tatsächlich das Deck an den Spieler übergeben, wenn es sagt, nehmen Sie eine Wendung. So sehen wir das auf der nächsten Folie. Wie das funktioniert. Aber die andere Sache ist der zweite Teil der Spieler. Verantwortung hier ist auch eine große Herausforderung. Wie bewegen Sie den Frieden? Der Frieden kennt seinen eigenen aktuellen Standort, oder? Der Frieden kennt seinen eigenen aktuellen Standort, Wir legen das hin und, äh, äh, die Karte weiß, wie viele Schritte zu mir sind, oder? Also brauchen wir beide Daten, um den Frieden zu vollenden, und so müssen wir einen von ihnen tun lassen. Und welche sollten wir haben? Tun Sie es. Es ist eine gute Frage. Also, wenn das Spiel spielt und sagt Spieler, die Sie an der Reihe nehmen, können wir im Deck passieren. Also haben wir diese Art modifiziert, um OK zu sagen, übergeben Sie im Deck hier an die Spieler des Spielers hat jetzt das Deck, und ich kann eine Karte aus dem Deck ziehen. Also lassen Sie uns eine Methode ziehen auf das Deck und gibt eine Karte zurück. Und jetzt wir zwischen der Karte und dem Frieden, können wir herausfinden, wie man den Frieden bewegt. Und so könnten wir entweder sagen, Frieden haben, Verantwortung übernehmen und die Karte als Parameter übergeben oder weil die Karte die Verantwortung übernehmen und das Stück als Parameter übergeben. Wir werden die Karte willkürlich in diesem Schritt übernehmen lassen. Nur weil das, was wir in späteren Kapiteln tun werden, einfacher und interessanter sein wird wenn wir es so machen, anstatt das Stück in den Warenkorb zu geben. Also wieder, ich benutze irgendwie zukünftige Kenntnisse toe, um diese Design-Entscheidung zu treffen. Okay, also haben wir gerade erfunden, Stück Dot bewegt sich ausgekleidet, ziehen, um, wieder in das Deck. Das Zeichnen der Karte ist einfach, da es nur eine Karte gibt, so dass Sie sie vorerst zurückgeben. Das wird im nächsten Kapitel interessanter. Ähm, aber ein Stück zu bewegen ist seltsam, weil es nur ein Quadrat gibt, wie du die Position ändern sollst , aber , äh, wir wissen nicht, wie das geht, weil es nur eine Punktzahl. also dem Stück sagst, Wenn dualso dem Stück sagst,dass er eine bestimmte Nummer verschieben soll, drucken wir einfach aus. Hey, ich bin auf diesem Platz und hole die Nummer des Platzes und drucke das aus, okay? Und dann wieder im nächsten Kapitel, als wir mehrere Quadrate hatten, nun , lassen Sie das Stück bewegen. Das wird viel schöner, Ordnung. Mit dieser Einführung ist es an der Zeit, das Projekt wieder zu machen. Es gibt detaillierte Anweisungen in der Anleitung Booklet, die Ihnen genau zeigen, was zu tun ist, wenn Sie irgendwie stecken bleiben und am Ende dieses Spiels sollte es laufen. Es ist nicht wieder interessant, denn es gibt nur ein Stück, ein Quadrat, einen Spieler, eine Karte, als wäre es irgendwie langweilig. Aber in den nächsten Kapiteln werden wir das reparieren und es viel interessanter machen. Also mach weiter und pausiere das Video. Jetzt gehen Sie Ihre Übung und wenn Sie fertig sind in der letzten Hälfte dieses Videos kommen zurück und arbeiten das Projekt zusammen. Okay, hoffentlich hattest du die Chance, diese Übung zu machen. Werfen wir einen Blick. Hier ist die Übungsbroschüre und es beginnt mit dem, was wir vorher gesagt haben. Lassen Sie uns eine Hauptmethoden des traurigen Spiels hinzufügen. Erstellen Sie eine Instanz und sagen Sie, dass sie abgespielt werden soll. In Ordnung, also gehen wir zu unseren Lippen. Ich muss zur Sonnenfinsternis gehen. Also sagten wir, wir werden jetzt die Hauptmethode in das traurige Spiel setzen, im Allgemeinen und immer wieder, das ist eine Art reine Konvention. Die Hauptmethode geht an der Unterseite. So öffentlicher statischer Junge kann sich daran erinnern, dass wir über so lange gesprochen haben und hier Kunst nicht können. Okay, also wem kümmert sich das alles? Aber was wir tun werden, ist zu sagen sorry, Spiel Spiel, weil neue Sorry Spiel. Und wir werden Spiel sagen. Ich zweifle, spielen. Okay, ein paar Dinge darüber. Also zunächst einmal, einige Leute bekommen ein wenig verwirrt darüber, warum ich ein trauriges Spiel in der traurigen Spielklasse erschaffe , wie das ein bisschen seltsam ist. Denken Sie daran, wenn Sie eine Hauptmethode haben , ist das, was eine statische Methode genannt wird, und wir haben noch nicht über Statik gesprochen, also kommen wir später dazu. Aber wirklich statische Methoden Luft irgendwie wie Floater. Sie könnten fast überall dort sein, wo wir eine andere erschaffen könnten. Wie wir in den Folien gesagt haben, die hier eine andere Klasse namens Hauptklasse erstellen und die Hauptmethode dort platzieren könnten . Oder ich könnte es sagen. Ich könnte diese Methode in das Auto setzen wollte klassifizieren. Das würde mir seltsam erscheinen, aber dem Compiler würde es egal sein, oder? Obwohl sich die Hauptmethode in der traurigen Spielklasse befindet, ist sie irgendwie getrennt von ihr. zweite Sache, die hier interessant ist, ist, sobald wir dies eingeben, sagt der Compiler. Ja, du hast es versaut. Es hat diese rote Linie hier und sagt: Du weißt, was du tust, ist falsch. Nun, das liegt daran, dass wir das irgendwie von oben nach unten implementieren, und wenn wir hier unsere neuen Nachrichten eingeben und die Playnachricht an die Spielinstanz senden , haben wir diese Methode noch nicht geschrieben, Also die Compiler, bereits nach vorne schauen und Hey sagen, es gibt keine Spielmethode. Alles klar, was? Das werden wir tun. Es steht also „Entschuldigung“. Kommen wir zurück zu diesem und sagt Okay, jetzt müssen wir eine Spielmethode hinzufügen, bei der wir dem Spieler sagen, dass er eine Wendung nehmen und im Deck passieren soll. Und darüber haben wir auf den Folien gesprochen. Nun, äh, das Spiel ist eine Instanz von Tut mir leid. Spiel. Dies ist also die richtige Datei, um die Wiedergabemethode hinzuzufügen. Also lass es uns öffentlich machen. Boyd spielen, wenn Sie ein Spiel spielen, Was tun Sie? Nun, im Moment, mal sehen. Welchen Brief benutzen sie hier? Ich Null. Ich segne sie. 55 Umdrehungen reichen jetzt für unser Spiel. Das könnte man in Zukunft immer mehr oder weniger machen. Und wir werden sagen, Spieler, wir haben nur einen Spieler, der eine Wendung macht, und wir wissen, dass sie das Deck brauchen werden. Richtig. So sehen wir, dass wir hier sagen, nehmen Sie eine Wendung. Sie sagten: Sie sich einfach ab. Okay, nehmen wir das Boot, nur um konsequent zu bleiben. Okay, also sagen wir dem Spieler, er soll an der Reihe sein, und hier ist das Kartenspiel. Also passierten wir die Autos an den Spieler und sagen: Nimm wieder dran. Der Compiler wird wütend, weil dies ist, dass Sie keine Take-Turn-Methode auf dem Player haben. Und ja, ich verstehe, dass wir das noch nicht getan haben. Ok? Also gehen wir zum Spieler und lassen Sie uns das tun. Also werden wir hinzufügen, um abwechselnde Methode zu nehmen. Der Spieler zieht eine Karte und sagt dem Stück, sich zu bewegen. Ordnung, also gibt es mehr Diskussionen darüber da drin, wird es dir nicht nur vorlesen, sondern die öffentliche Klinge wechseln sich ab, und wir gehen im Deck vorbei. Also, wir würden keine Karte vom Deck ziehen. Hoppla. Das Deck der Leute. Gott zeichne eine andere Methode, die wir noch nicht geschrieben haben, also wird es rot. Und jetzt möchte ich sagen, die ich brauche, um den Frieden zu bewegen, und ich muss die Stücke Ort kennen, und ich muss wissen, die Karten Wert. Irgendwie muss ich diese beiden Typen miteinander mischen und sie dazu bringen, die Arbeit für mich zu erledigen. Ähm, du willst immer faul sein, eine Objektorientierung. Ich will die Arbeit nicht machen. Ich will nicht, wie, wie, die Position und den Wert der Karte bekommen und es für mich selbst herausfinden. Ich will, dass sie es tun. Du denkst, du bist der Boss, oder? Du brauchst die Arbeit nicht zu erledigen. Also, ähm, wir können entweder an das Stück delegieren, waren die Karte in diesem Fall wieder, wir werden sagen, Lassen Sie uns an die Karte delegieren, weil es die Stücke machen wird. Das wird das Design später etwas interessanter machen. Also werde ich sagen, Karte Punkt bewegen und übergeben Sie die Stückkarte, die dieses Stück bewegen. Und die Karte selbst weiß, wie weit sie bewegt werden kann. Jetzt haben wir noch keine Move-Methode, also ist das bedauerlich. Und jetzt fragen sie dich auch hier, lasst uns aussprechen, dass dieser Spieler an der Reihe ist. Und wieder, das ist nicht wirklich notwendig, damit das Ding funktioniert. Aber wir müssen hier eine Debug-Ausgabe setzen. Oder wir werden nicht wissen, ob unser Code funktioniert, oder? Ja. Also lasst uns, äh, das Paarsystem rauslegen. Drucken Sie Lynn. Hoppla. Ähm, sagen wir , Spieler spielt keine Rolle, was genau Ihr Typ hier ist, aber es sollte sein, äh, aber es sollte sein, äh,beginnt. Es ist wiederum so etwas. Also, wenn wir den Code ausführen, wird etwas auf dem Bildschirm ausdrucken sagen: Ja, Ja, ein Spieler bewegt sich tatsächlich. Das ist gut. Okay, ähm, wir müssen die Umzugsmethode in der Karte definieren, weil wir zwei neue Methoden haben, die jetzt gelesen werden. Drawling Verschieben. Okay, ähm, Zeichnen wird einfach sein, aber gehen wir weiter. Folgen Sie den Anweisungen hier, und wir müssen die Verschiebungsmethode in der Karte definieren. Anweisungen hier, Aber wir haben nur ein Quadrat. Es gibt keine Möglichkeit, sich zu bewegen. Also werden wir die Methode erstellen, bei der es eine Aussage drucken muss, um zu zeigen, dass es richtig genannt wurde. So möchten wir auch die Position der Stücke und die Stückzahl und ihren Standort drucken. Aber da der Frieden als beide Informationen benötigt, sollten wir das an den Frieden delegieren. Also in der Karten-Methode, werden wir sagen, Schinken spielt eine Karte mit diesem Wert. Und dann werde ich einfach dem Frieden sagen, um seinen Standort zu drucken. Richtig? Also gehen wir auf die Karte. Wir machen die Karte hoch. Öffentlich verschieben. Boyd, bewege das Stück wieder gut. Wir können nicht wirklich bewegen, weil es nur ein Quadrat gibt. Es ist ziemlich langweilig, aber was ist die Spielkarte? Okay, also, ähm, du sagst Spielkarte, äh, Wert. Und dann haben wir diesen Wert. Du hättest diesen Punktwert von 12 sagen können und dann sollen wir den Frieden bitten, seinen Standort zu drucken, sobald wir fertig sind, eso irgendwann zu bewegen. Zwischen diesen beiden Aussagen werden wir den Code für die Bewegung setzen, wenn wir mehr als ein Quadrat mit dem Code in für die Bewegung haben . Sonst sagen wir, drucken Sie Ihren Standort, Mr. Piece. Nun, das Stück will seinen Standort setzen wird seine Nummer und die Quadrate Zahl drucken . Richtig. Also werden wir sagen OK, also drucken Sie den Standort im Stück nach oben. Entschuldigung. Das ist nicht die Friedensklasse. Dies ist ein Stück Klasse Öffentlichkeit. Vermeiden Sie Prinz Standort. Sag, äh, Frieden. Und dann würden wir nicht an seiner Zahl ist Lippen machen ein Stringer ist auf Platz. Und jetzt möchte ich die Quadrate Nummer, die das Quadrat Position genannt wird. Und ich möchte sagen, Nummer zu bekommen, weil ich möchte, dass ich die Nummer aus dem Quadrat ziehen und drucken möchte. Es sieht aus. Ich kann nicht einfach Positionspunktnummer sagen, weil diese Zahl privat ist. Also, was jetzt steht, ist das okay? Jetzt haben wir noch mehr Probleme, oder? Wir kriegen es nur. Scheint, als würden wir mehr Fehler bekommen. Haben hier keine Fortschritte gemacht, aber jetzt wollen wir eine get number Methode zu dieser Position hinzufügen. Objekt, das ein Quadrat ist, wie Finsternis mir sagen, und wir sehen das von einem Paar. Also lasst uns auf den Platz gehen und sagen, get number. Das ist nur ein Getter, wie wir auf den Folien gesprochen haben, oder? Wir wollen also nicht, dass die Leute die Nummer des Platzes ändern können. Das wäre eine Katastrophe. Aber eso haben wir es privat. Um, hat es kann nur im Konstruktor festgelegt werden, aber wir wollen, dass die Leute wissen, was die Zahl ist. Es ist also kein Schaden, hier einen Getter zu haben, okay? Und so haben wir jetzt diese eine rote Zahl gesehen, die besagt, dass die Methode Draw für den Typ Deck undefiniert ist . Also haben wir das vergessen. Gehen wir hier rüber. Und wenn jemand eine Karte vom Deck zieht jetzt hier haben wir endlich einen Rückgabewert. Wenn ich anrufe, ziehe auf das Kartendeck. Ich möchte, dass mir eine Karte zurückgeschickt wird, um eine Karte zu ziehen. Nun, natürlich, im Moment gibt es nur eine Karte. Also drehen wir einfach ihre Karte? Nein, aber langweilig. Okay, wir haben alle unsere Fehler hier unten beseitigt. Beachten Sie, wenn Sie Probleme haben, eine Eclipse zu haben, die anzeigt, wo plötzlich sie alle Fehler verschwunden sind. Wir hatten einige rote Fehler, die Compilerfehler waren, und wir hatten einige gelbe, die sagten: Hey, Hey, du hast einige Variablen, die du definierst. Tun Sie so etwas nicht. Sicher, dass du das getan hast, oder? Ja, uns geht's gut. Ok. Also, jetzt sollten wir in der Lage sein, unser Spiel zu laufen und etwas sollte passieren. So etwas. Und die Art, wie Sie das tun, ist, dass Sie die Hauptmethode finden, die das traurige Spiel ist, richtig? Entschuldigung. Spielklasse enthält die Hauptmethode, so sollten Sie in der Lage sein, alle Clips? Richtig? Klicken Sie auf das sorry Spiel. Holen Sie sich dieses große Menü hier unten. Es wird als Java-Anwendung ausgeführt. In Ordnung. Klicken Sie darauf, dass es ausgeführt werden soll. Und wenn wir es richtig gemacht haben, sehen wir es. Also Frieden eins ist auf Platz ein Spieler blau beginnt an der Reihe. Und das ist nicht die Spitze. Es tut mir leid. Ok. Spieler Blue fängt an, eine Karte mit dem Wert drei zu spielen, und Frieden eins landet auf Quadrat eins , und dann spielt Spieler Blau einen anderen Zug seine Karte von Wert drei und Spieler eins ist auf Quadrat eins. Es gibt also nur ein Quadrat. Und es gibt nur eine Karte, die die Werte immer drei und der Frieden bleibt auf Platz eins. Okay, wir reparieren das. Aber unsere kleine Simulation funktioniert jetzt. Diese Art von Ausgabe ist ein wenig verwirrend. Wir können hier ein paar leere Zeilen setzen, also sagen wir, gehen wir zurück zum traurigen Spiel, nachdem der Spieler eine Wendung nimmt. Lasst uns eine leere Leerzeile einlegen, damit es ein bisschen leicht zu sehen ist. Nein, wenn ich zu einer Klasse ging, hat es keine Hauptmethode wie Quadrat. Und ich sagte: „ Lauf wie mal sehen, die Sonnenfinsternis ist wie Wovon redest du?“ Vielleicht kannst du vielleicht auf dieses Menü gehen und etwas herausfinden. Aber weil das traurige Spiel eine Hauptmethode hat, wenn ich sage ausführen, wie es mir diese Option Java-Anwendungen gibt. Okay, ich kann die Hauptmethode ausführen. Richtig? Okay, jetzt gibt es eine kleine Pinellas A-Liste. Eine leere Linie zwischen jedem Zug. Also, das hilft ein bisschen zu sehen, was los ist. Und natürlich könnten Sie drucken. Sie haben die Nummer. Ich höre den Loop-Zähler, ich damit Sie ausdrucken können Start-Turn-Nummer. Oder ich schätze, diese sind nicht in diese Runde gedreht oder so. Als ob du um das Brett gehst. Richtig. Also um Nummer eins, jeder Spieler nimmt eine Runde um Nummer zwei. Jeder Spieler nimmt eine Runde. Du könntest auch diese Nummer ausdrucken. Hier. Sie kongenial Ihre Ausgabe, um es so aussehen zu lassen, wie Sie wollen. Okay, aber das beendet das Kapitel sechs über Objekte, Klassen, Konstruktormethoden, Attribute. Und wir haben jetzt ein Arbeitsprogramm, das aus sechs verschiedenen Klassen in einem Objekt während des Programms besteht. Also herzlichen Glückwunsch. Wir fangen wirklich an, da reinzukommen. 11. 07 Arrays: Willkommen zu Kapitel sieben a Raise. Hier beschäftigen wir uns mit mehr als einer Instanz gleichzeitig. Also bis jetzt, unser Spiel ist irgendwie langweilig, weil wir nur ein Quadrat, ein Stück, einen Spieler haben ein Stück, . Wir werden nicht mehr als einen haben. Lassen Sie uns also einen Blick auf eine der ersten Lösungen werfen, die Jobangebote dafür sind, nämlich Strahlen, die im Grunde Gruppen von Objekten sind. Wie man sie erstellt, wie man auf sie zugreift. Zum Beispiel Zum Beispiel hatten wir nur eine Instanz eines bestimmten Typs. Zum Beispiel hatten wir nur einen Spieler. Und jetzt sagen wir, wir wollen mehr als einen Spieler, damit du deinen ersten Versuch so machen und sagen Spieler ein Spieler zu Spieler drei Und du könntest damit für Spieler davonkommen. Aber das könnte etwas schwieriger für so etwas wie die Quadrate sein, denn es gibt 60 davon. Und das Eingeben von quadratischem Nullquadrat, ein Quadrat bis zu Platz 60 könnte, äh, irgendwie Ah, keine angenehme Aufgabe sein. Und auch Sie könnten eine vermissen und dann, aber es stellt die Frage, was, wenn es 600 wie, Sind Sie wirklich gehen, um dort sitzen und tippen Sie 600. Es muss einen besseren Weg geben. Geben Sie die Arrays ein, so dass ein Array ein anderer Objekttyp ist, also ist es auch ein Objekt. Das enthält im Grunde eine Reihe von Verweisen auf andere Objekte. Also, was Sie oben sehen, ist eine Reihe von Spielern. Sieht aus, als hätte es vier Schlitze, und es hält Referenzen auf vier andere Spielerobjekte. Spieler ein Spieler zu Spieler, drei Spieler für in halten alle Referenzen in einem Objekt. So sehen, wie das aussieht, also sind das Markenzeichen einer Raise und Java die eckigen Klammern. Also, wenn Sie ein Array deklarieren, wie in der ersten Zeile hier sagen Sie Spieler eckige Klammer, eckige Klammer. Und das ist rot wie eine neue Reihe von Spielern, rechts oder ein Spieler-Array, wie Sie stehen wollen, und dann wird der Name dieses Objekts Spieler genannt. Also, wenn Sie eine Erhöhung erklären, Ihre immer mit den eckigen Klammern und dann eine Erhöhung Luft auch Objekte wie Spieler oder Karten oder so etwas, und so müssen Sie sie mit dem neuen Operator erstellen. Also hier sehen Sie neue Spieler, aber statt der Runde der Eltern, wie Sie normalerweise haben. Wenn Sie ein Objekt erstellen, eine Erhöhung, nehmen Sie die eckigen Klammern und innerhalb der Partiturklammern, müssen Sie einen Imager setzen, der die Größe des Regens sagt. Die Größe des Strahls muss also zu dem Zeitpunkt bekannt sein, wenn Sie das Array und sein unveränderliches Array erstellen , es kann danach nicht geändert werden. Dies ist, wir werden später herausfinden, ist einer der größten Nachteile einer Rosinen im nächsten Kapitel wird dieses Problem auch beheben. Jetzt eine der interessantesten Eigenschaften, die mit den Strahlen kommen. Jedes Array hat eine Eigenschaft Kultlänge, die eine schreibgeschützte Eigenschaft ist, die sagt, was es Größe. Also, wenn wir diesen Code ausführen, den wir hier haben, und wir sagen, dass Spieler neue Spieler für und dann später gleich sind, sagen wir, dass Spieler ausdrucken, die ausdrucken werden für Wie können Sie auf eine Gehaltserhöhung zugreifen? Nun, also erste Zeile gibt es die Standardmethode, ein Array zu erstellen. Jetzt haben wir vier Slots für Spieler in unserem Strahl, den wir erstellt haben, und jetzt auf der zweiten Legacy, Spieler von Null gleich neuen Spieler, so dass die Zahl an diesem Punkt innerhalb der eckigen Klammern. Das nennt man den Index des Arrays. Eine Sache, die hier zu bemerken ist, dass, ja, die Strahlen sind indiziert, um bei Null zu beginnen. Also für ein Array von Länge für, wie dieses Spieler-Array, die Stimmzettel Indexnummern gehen 0123 Also geht es von Null zu einer Länge minus eins. Du denkst vielleicht, dass das unglücklich ist. Ich denke, das ist auch unglücklich. Dies ist ein Teil der Aufgabe ist die Linie, die von der Programmiersprache C-Sprache kommt und dann sehen , es gibt viele wirklich gute Gründe, warum Sie erhöhen sollten bei Null beginnen. Aber diese Gründe sind in Java verschwunden, aber wir haben das Erbe von Null Offset entfernt. Also nur etwas, woran man sich gewöhnen muss, dass das Schiff an dieser Stelle gesegelt ist. Eso nein, Ich habe einen Spieler erstellt und es dem Regen hinzugefügt. Was ist, wenn ich es später wiederhaben will, damit ich mit dem Spieler reden kann? Sie können auf die Elemente des Arrays auf die gleiche Weise zugreifen, wie Sie ihnen zugewiesen haben. Hier sehen Sie, der dritten Zeile, sehen Sie Spieler von Null. Wir sagen, Spieler P entspricht Spielern eine Null und jetzt p Punkte desselben Objekts, das in Spielern von Null war . Jetzt ist eines der anderen Dinge, die Sie in einem Array haben, dass nicht jeder Indexwert erlaubt ist. Richtig? Das ist also ein Spieler-Array der Größe vier. Also 0123 sind erlaubt. Was passiert, wenn Sie sagen, dass Spieler von sechs gleich neuen Spieler sind? Nun, was passiert, ist das. Dies kompiliert gut, aber wenn Sie es zur Laufzeit ausführen, wird dies eine Ausnahme für Array-Index außerhalb der Grenzen Ausnahme auslösen. Wir haben noch nicht wirklich über Ausnahmen gesprochen, aber das ist seine Art, Ihnen zu signalisieren, dass etwas schief gelaufen ist. Wir haben noch nicht wirklich über Ausnahmen gesprochen, Die Tatsache, dass Java die Array-Indizes zur Laufzeit überprüft und sicherstellt, dass Sie die von Ihnen festgelegten Grenzen nicht überschreiten können , ist tatsächlich eine wirklich gute Sache. Diese Art von ah ray Overflow Bugs waren eine riesige Quelle für die Hacking-Angriffe in Programmen die geschrieben wurden und C und C plus, wo Sie tatsächlich Spieler von sechs tun können und es wird gut laufen. Grundsätzlich, wenn Sie die Arrays den Re-Index über die Länge des Arrays laufen lassen, dann haben Sie einige fast zufällige Zugriff auf den Speicher des Computers, und Sie können eine Menge Schaden anrichten. Also, als das, als der Job herauskam und sie sagten, wir werden binden, überprüfen Ola Raise zur Laufzeit. Und wenn du einen schlechten Index reinstellst, wird es eine Ausnahme werfen, die wirklich als eine großartige Sache angekündigt wurde. Okay, nochmal, nur um diesen Punkt nach Hause zu fahren. Wenn Sie ein Array erstellen , werden die Elemente nicht erstellt, oder? Also, wenn Sie sagen, äh, Spieler Array-Spieler gleich einem neuen Spieler von vier, erhalten Sie ein Array mit vier Slots, aber es sind noch keine Spieler drin. Es ist gebaut, um Spieler unterzubringen. Sie können Spieler darin setzen, aber es gibt noch keine Spieler. Es ist so, als würde man einen Tisch mit vier Platzeinstellungen einstellen. Das ist toll, aber es gibt noch keine Leute dort. Sie brauchen die Leute, die sich hinsetzen. Nur die Stühle dort zu setzen, schafft keine Menschen eso in der unteren Hälfte. Sie sehen hier ist, wie Sie die Spieler erstellen und füllen das Array. Sie haben Ihr I von 0 bis 4 beendet und das ist sehr häufige Syntax für Schleife I gleich Null. Ich weniger als vier ich plus. Und dann sagen Sie, Spieler von I gleich neue Spieler nie für neue Spieler erstellt und sie den Slots zugewiesen . +0123 Innerhalb des Arrays kann diese Syntax für eine Erhöhung ein wenig variieren. Die in der oberen Zeile ist die, die ich dir gezeigt habe. Ich denke, das ist irgendwie am intuitivsten. Aber du kannst es. Wenn Sie ein Array deklarieren, können Sie tatsächlich die eckigen Klammern neben den Variablennamen setzen. Ich mag dieses hier nicht wirklich, weil es wie die Variablen aussieht und verletzen, und man muss hier rüber schauen, um zu sehen, wie ein Gewicht. Es ist ein Bild oder ein Strahl, also kümmert ich mich nicht wirklich darum. Eine weitere interessante Sache, die Sie tun können, wenn Sie eine Gehaltserhöhung erklären, können Sie. Wenn Sie die Werte bereits kennen, können Sie sie einfach in geschweifte Klammern schreiben. Also neues Interesse in diesem Fall müssen Sie keinen Index geben, weil Java auf das schaut, was in diesen geschweiften Klammern ist und OK geht, schau, es gibt 123, also wird dies ein Interim A der Größe drei für Sie erstellen und es mit dem Werte auf 34 5 Und tatsächlich können Sie sogar weiter gehen, als den neuen Hinweis zu verlassen. Hier. Es ist ein implizierter Konstruktoraufruf, den Sie in Zahlen sagen, gleich geschweifte Klammer 34 5 , derdie gleiche Struktur wie diese darüber erstellt , der . So werden Sie diese verschiedenen Arten von Sündensteuern von Zeit zu Zeit sehen. Wissen Sie, im Allgemeinen werden Programmierer die kürzesten, meisten Touristen in Steuern bevorzugen . Aber eine Sache, die wir irgendwie auf Haar berührt haben und explizit hervorrufen wollen, ist, dass eine Erhöhung Objekttypen wie Spieler halten kann. Weißt du, verschiedene Klassen, die du geschrieben hast, oder sie können primitive Typen wie Bisse halten. Verdoppelt, Longs, jene Arten der primitiven Typen, die in die virtuelle Java-Maschine integriert sind. Okay, das ist also ziemlich einfach. Sieh dir eine Gehaltserhöhung an, aber unser Projekt wird etwas komplexer. Das erste, was wir uns ansehen werden, ist, unser Wissen über Quadrate zu verbessern. Also im Moment haben wir ein Quadrat, aber wir wissen, dass es 60 davon gibt. Die Quadrate, Die Anzahl der Partituren ändert sich nie. Die Partituren waren immer in der gleichen Reihenfolge. Sie bewegen sich nicht auf dem Brett oder so. Es ist also ein ziemlich guter Kandidat, ein Array für zu verwenden, also müssen wir 60 Quadrate erstellen, die ein Array von 60 durchlaufen und sie alle in der Schleife füllen . Und das erste Quadrat wird das Startquadrat rechts nennen. Und wir starten einfach die Spieler auf diesem Platz. Und jetzt sollten wir in der Lage sein, unsere Stücke um das Brett zu bewegen. Wenn wir die Karte ziehen, sollten wir uns bewegen können. Ich hatte drei Schlitze. Ähm, aber wie genau hat das funktioniert? Richtig. Wir wissen also, dass der Frieden seinen eigenen Standort kennt. Das ist ein Quadrat. Es weiß also, dass es sich lohnt. Es zieht eine Karte, die drei Schritte sagt, und jetzt müssen wir drei Schritte voraus. Und wenn Sie sich erinnern, wir gaben die Verantwortung, den Frieden auf das Auto zu bewegen, weil das Auto, um die Anzahl der Quadrate tatsächlich bewegt werden, aber die Karte weiß nicht, was Quadrat ist. Drei Schritte voraus. Also, wie sollen wir das machen? Es gibt viele Möglichkeiten, wie du dieses Problem lösen könntest, aber wir werden uns für eins entscheiden. Das ist eine Art sehr elegante Verwendung von Objektorientierung. Was wir sagen werden ist, dass jeder Platz seinen benachbarten Platz kennt, der nächste Platz. So, wie Quadrat Nummer eins, weiß es, dass es von Quadrat Nummer zwei gefolgt. Und es hat einen Verweis auf das folgende Quadrat. Und jetzt, wenn ich auf Platz 1 bin und sage, Hey, ich muss umziehen. Wohin gehe ich als Nächstes? Der Platz kann es dir sagen. Oh, hier, hier ist die Punktzahl Nummer zwei. Und wenn ich dann auf Platz Nummer zwei bin, kann ich sagen, OK, wo jetzt? Platz Nummer drei und es wird mich entlang der, ähm, bewegen Sie mich so entlang der Tafel. Also gehen wir jetzt in unser Labor und verwandeln Quadrate in ein Array. Dies ist ein bisschen komplexer aus einer Lektion als wir zuvor getan haben. Oh, sind komplexe Übungen. Lesen Sie also unbedingt die Anweisungen, die mit dem Labor geliefert werden. Fallen Sie das entlang und wenn Sie bereit sind, gehen Sie voran und pausieren Sie die Videoaufnahme jetzt und geben Sie die Übung zu versuchen. Wenn du fertig bist, kannst du das Video wieder starten und wir machen es alles zusammen, Ordnung. Ich hoffe, Sie können diese Übung ziemlich gut durchstehen. Werfen wir einen Blick. Schauen wir uns zunächstdie Übungsanweisungen hier an, und es spricht ein wenig über die Design-Herausforderung und wie wir es tun werden. zunächst Schauen wir uns zunächstdie Übungsanweisungen hier an, Und ich hoffe, du hast das gelesen. Hoffe, dass alles Sinn macht, wird es irgendwie kommentieren, wie wir durchgehen. Ähm, also machen wir die Create Squares Sache und es steht, als erstes, was die Quadratklassen jetzt dieses neue Feld namens nächstes Quadrat vom Typ Quadrat mit dem Getter in einer Mitte haben werden. Also lasst uns die quadratische Klasse finden. Ich habe das abgewiesen, damit es nicht ablenkt. In Ordnung, also haben wir neue Attribute. Lassen Sie mich wissen, wie man Attribute macht. Wir haben das schon mal gemacht. Privater Platz, nächster Platz. Okay, also mag Ihnen das etwas seltsam erscheinen, dass ein Quadrat ein Attribut von auch einem Quadrat hat, aber es ist eigentlich ein sehr nützliches, objektorientiertes Paradigma. Holen Sie mich wirklich gerne diese Art der Bewegung auf dem Brett zu verwenden, weil es Sie wirklich dazu bringt , über Objekte nachzudenken und wie sie sich zueinander beziehen. Jetzt haben sie gesagt. Wir wollen, dass sie in die Mitte ein fauler Programmierer ist. Ich werde die Clips benutzen, um das zu tun. Und ich werde Quellcode sagen, und es heißt Getter und Zentren generieren und ich möchte nur das nächste Quadrat machen. Stellen Sie die da hin und boom. Jetzt kommen wir als Nächstes. Natürlich als nächstes, wo es sie nicht genau dahin gebracht hat, wo ich auf mich gehofft habe. Ich mag den Konstruktor an der Spitze zu haben. Ich wollte wieder zum Bau gehen. Da ist es, wo. Erwarten Sie, es zu finden. Okay, cool. Nun, das nächste ist seine. Gehen Sie in die traurige Spielklasse. Ändern Sie den Feldnamen Quadrat von einem Quadrat zu einem Array von Quadraten, und dann werden wir die Erstellung der Partituren zu verschieben, weil ein bisschen ein Chaos in eine Methode namens erstellen Quadrate. Also ist es diese beiden Dinge zu tun. Also statt eines Quadrats hier, werden wir auf jedem der Quadrate haben. Denken Sie daran, das bedeutet geschweifte Klammern. Anstatt es quadratisch zu nennen, nenne ich es Wo ist, äh, das macht ein bisschen mehr Sinn. Und wir sagten, wir werden all diese Arbeit in einer Methode ausführen, die private Methode namens Create Squares genannt wird . Okay, also, ähm, wir reden später ein bisschen mehr. Welche privaten Methoden sind Member vermeiden bedeutet, dass diese Methode nichts zurückgibt . Es wird etwas Arbeit machen, aber es gibt keinen Rückgabewert zurück. Beachten Sie, dass wir jetzt einen Compiler haben. Darauf kommen wir ein wenig später zurück, okay? Eigentlich bitten sie dich, das sofort zu beheben. Also lasst uns gehen die Schaffung des einzelnen Quadrats ersetzen und stattdessen erstellen Quadrate. Also nehmen Sie die ganze Zelle und sagen, erstellen Quadrate. Dort gehen wir den Weg, wenn Sie neu sind, um wieder zu verfinstern, die Art und Weise, wie ich die kleine automatische Vervollständigung gemacht habe, war durch einen Kontrollraum . Okay, also in der Kiste Squares-Methode, werden wir ein Array von 60 für jeden erstellen und als nächstes werden wir ein Quadrat erstellen und es dem nächsten zuweisen. Und dann müssen wir wieder eine Schleife machen und die nächste quadratische Eigenschaft festlegen. Also lasst uns festhalten. Lass uns nicht zu viel auf einmal machen. Also werden wir zuerst den variablen Quadraten zuweisen, was heißt, Sie könnten diese Punktquadrate sagen, wenn Sie das für alles verwenden wollen. Neue quadratische Anordnung der Größe 16. Okay, jetzt zweiter Schritt Schleife von 0 bis 59 hinzufügen im Quadrat. Lehren Sie eins. Also lasst uns einfach eine Notiz schreiben. Haare, Lippen, begründen. Squares schreibt eine 4.0 um weniger als null. Ich könnte das tun. Großartig. Ich plus Plus. Und dann werde ich das tun. jedoch Wir kommenjedochin das, was wir magische Zahlen nennen. Also ist diese Nummer 60 und diese Nummer 60 besser gleich, oder du wirst mit Bugs oder Abstürzen in deinem Programm enden, richtig? So wirklich Brad Programmierung Celtic Teoh doppelte Zahlen wie diese in Ihrem Code. Das ist wie, Nun, die müssen 60 sein. Jeder muss wissen, dass irgendwann jemand diese Methode eingeben und anfangen könnte, sich damit zu und nicht zu erkennen, dass, wenn sie sich ändern, wir jetzt 65 verwenden. Sicher, das ist in Ordnung. Sie tun das und vergessen, dass sie nicht sehen, dass hier unten noch 60 sind. erwarten sie vielleicht nicht. Und jetzt haben Sie ein großes Meeting, Dieser Albtraum. Es gibt also ein paar Möglichkeiten, das zu lösen. Wir könnten hier eine Variable erstellen, besuchten Ihre Anzahl der Quadrate und weisen Sie es 60 oder wenn wir unser Quadrat ausüben wollen . Es tut mir leid. Unser Rennen und Steuern etwas, das wir in den Folien gelernt haben. Lass uns das machen. Ersatzteile. Äh, Sie daran, Wir wissen, dass, sobald Sie Quadrate erstellt haben, dann hat es die als Längeneigenschaft. Diese Nummer 60. Wenn ich diese Nummer ändere, ändert sich diese Zahl. Richtig? Dies ist also ein sehr sicherer Weg, dies zu tun. Die variable Länge kann in keiner davon geändert werden. Also sagen wir Quadrate. Welchen Index werden Sie nun auch unterschreiben? Nun, die variablen Augen nehmen alle Werte von 0 bis 59. Das ist das Nächste, das wir gewonnen haben. Und wir sagen neue quadratische Quadrate, erinnerst du dich? Ich will ihre Nummer wissen, weil sie gerne ausdrucken. Ich bin auf Platz 12 oder so etwas. Der Spieler. Also gehen wir in den Anhängen Welker. Okay, jetzt ist die andere Sache, die alle brauchen, ihr nächstes Quadrat. Jetzt denken Sie vielleicht, und das wurde in der Anleitung für das Labor besprochen. Vielleicht sollten wir das dem Konstruktor des Platzes hinzufügen und sagen, Quadrat muss in seinem nächsten Platz übergeben werden . Aber weil die Quadrate in einer Schleife lüften. kannst du nicht tun. Mit anderen Worten, um wie für Quadrat eins das nächste zu streicheln Wo wird quadratisch sein, um es zu sehen, um Quadrat zu erstellen, bevor Sie quadratisch eins erstellen, oder Sie können es nicht richtig übergeben? Schließlich erhalten Sie bis zum Ende der bis zum Futter, sagen Sie, Oh, Oh, Quadrat 60 oder ich Quadrat 59 das nächste Quadrat Null. Also muss ich Score Null erstellen, bevor ich Platz 59 erstelle. Und Ellen, Ellen, ich bin in einer Schleife. Ich kann es nicht tun. Also müssen wir es auf zwei Arten tun, um hier Schleifen zu machen. Also stehen wir, um den Platz zu bekommen. Jetzt werden wir sagen, gesetzt, um die nächste quadratische Eigenschaft sein. Also lasst uns anfangen, für gleich Null einzuschleifen. Ich sah weniger aus als, äh, was wir finden werden, wenn wir bis zum Ende kommen. Haarquadrate, Link Clips Okay, ich habe vergessen, dass ich weiß, dass hier etwas fehlt. Ich bin sicher, ihr habt gesehen, dass ich Schwierigkeiten hatte, es auszuwählen. In Ordnung. Können wir das alles in einer Schleife machen? Lasst uns das versuchen. Wir können damit anfangen und sagen: Okay, Okay, also will ich. Beginnen wir mit Quadrat-Null. Hallo. Ist gleich Null. Okay. Und so wird sagen, äh, Quadrat, Nennen wir es das aktuelle Quadrat gleich Quadrate. Null. Jetzt benutzen wir die Ray Ups. Tut mir leid, mein Bett. Partituren von mir erhöhen jetzt die Ray-Zugriffs-Notation Das nächste Quadrat nach Quadrat I Es ist voll von nächsten Quadrat. Rufen Sie mich an, ich plus was? Okay. Und so wollen wir jetzt sagen Und so, zum Beispiel, wenn ich gleich Null ist, haben wir Kurt-Quadrate. Score Null. Nächste Quadrate eins. Und wir wollen sagen, aktuelle Quadrat. Anfang nächsten Platz zum nächsten Platz, könnten Sie sagen, huh? Problem gelöst. Siehst du das Problem hier? In Ordnung. Ich werde von einem Wert von 0 bis 59 reichen. Genau wenn ich 59 gleich bin, werden ausziehbare Quadrate von 59 sein, dann werden wir nach Quadraten von 60 suchen . Aber hier gibt es keine 60. Richtig? Wenn Sie diesen Code ausführen, erhalten Sie diesen gefürchteten Array-Index außerhalb der Grenzen Ausnahme. Und Sie können es versuchen und sehen, ob Sie es glauben, sehen, ob Ihnen das passiert. Aber ich versichere Ihnen gut, damit wir das wirklich machen können? Wir müssen einen früher aufhalten. In Ordnung, also werde ich ein Minus eins dort setzen. Also, jetzt werde ich von 0 zu 58 gehen, richtig? Und so, äh, das hinterlässt Platz 59 ohne sein nächstes Quadrat. In Ordnung, also müssen wir das von Hand erledigen. Also sagen Quadrate von jetzt, wir wollen Nummer 59 bekommen. Wenn ich 59 tippe, erbt mehr magische Zahlen, weil es eins kleiner sein muss. Richtig? Also was? Stattdessen werde ich Quadrate in dieser Länge minus eins machen. Okay, jetzt kann ich das tun. Könnte net sein. So Quadrate von 59, was das ist. Ausdruck von Werten zu Das ist ein Quadrat, also kann ich Methoden direkt auf dem Quadrat aufrufen. Ich mag erscheinen. Wir haben die Quadrate aus dem Array genommen und sie einer lokalen Variablen zugewiesen. Das müssen wir eigentlich gar nicht tun. Mal sehen, viel dieser Aufstieg nächsten Platz und wir wissen, dass der nächste, wo für Quadrat 59 Platz Null ist . Richtig. Also sagen wir Quadrate von Null. Okay, es ist diese Syntax-Hervorhebung Weg. In Ordnung. Ich hoffe, das ergibt Sinn für Sie. Dies ist ein bisschen ah, wissen Sie, erfordert ein wenig Gedanken hier, um diesem Code zu folgen. Und ich habe es ziemlich schnell durchgemacht. Aber Sie können es sich ansehen, wenn Sie es immer noch nicht bekommen, können Sie einige Debug-Anweisungen hinzufügen. Denken Sie daran, jedes Quadrat hat eine Zahl damit verbunden, und Sie können die Quadrate Zahl erhalten, indem Sie sagen: Wie heißt es? Werfen Sie einen Blick. Holen Sie sich die Nummer auf dem Platz. Okay. Und dann können Sie hier ein paar Druckaussagen setzen und sagen, äh, aktuelle Quadrat ist gleich Quadrat der get number, rechtes Quadrat, das Nummer bekommt. Aber dies wird Ihre Quadrate für den ordnungsgemäßen Betrieb des Spiels einrichten, wo jedes Quadrat über seine nächste Nummer weiß. Jetzt haben wir noch eine Kompilierung hier drüben. Sehen Sie diesen kleinen roten Kerl hier und es steht: Okay, Okay, wir brauchen Mitglied. Der Spieler braucht auch dieses Startquadrat. Also, im Moment, nehmen wir unsere Quadrate und sagen wir, Score Null ist die Starts, wo für alle Spieler gerade jetzt, es gibt nur einen Spieler. Nächstes Kapitel wird mehrere Spieler haben, um, für unsere Version von sorry, wir können sie alle auf dem gleichen Platz beginnen, oder Sie können ein wenig aufwändiger und beginnen zwischen verschiedenen Quadraten. Es spielt keine Rolle. In Ordnung, das ist nach all dem nur die halbe Arbeit. Ein bisschen geistige Gymnastik jetzt müssen wir den Frieden bewegen. So können wir endlich den Frieden bewegen. Denken Sie daran, wir sagten, wir werden es tun. Wir haben diese Verantwortung bereits auf die Karte übertragen. Und wieder, das mag gerade ein wenig konterintuitiv erscheinen, aber wenn wir uns im Projekt bewegen, werden Sie sehen, dass es einen Grund dafür gibt. Also zuerst müssen Sie sie und Zentrum für den Standort der Friedensklasse zu bekommen. Haben wir vorher nicht einen von denen korrigiert? Werfen wir einen Blick. Haben wir nicht. Also haben wir eine, äh, Position. Sie nannten es hier. Standort sieht so aus, als würde es manchmal Standorte genannt. Manchmal Position. Aber machen wir das, was wir vorher getan haben, und sagen, äh, Quelle. Generieren Sie Getter und Zentren und lassen Sie uns es zuletzt setzen. Ich mag meine Getter und Zentren unten unten. Okay, da gehen wir. Also jetzt haben wir eine get Position in der eingestellten Position unten unten. Gut. Die Karte muss also wissen, wo das Quadrat ist. Also für die Karte, tun wir dies, indem wir die Stücke aktuellen Standort für das Netz für seine der aktuellen Standorte fragen . Wo für das nächste Quadrat. Mal sehen, was das bedeutet. Also hier sind wir in der Karte. Wir machen im Moment nichts richtig. Also, was müssen wir tun, um diese Bewegung zu tun? Denken Sie daran, wie wir es tun werden, um zu sagen, quadratischer Start, Standort ist gleich Stück, die Position bekommen, vielleicht sollte es Startpositionen nennen. Diese Nomenklatur ist eine ähnliche Position. OK? Und jetzt, was auch immer der Wert dieser Karte ist, es ist eine ganze Zahl, die wir jedes Mal so etwas sagen werden. Wir werden vor den Leuten Null I weniger als dieser Aktienwert plus plus. Also nochmal, wir machen nur eine Schleife. Wie wenn der Wert drei ist, gehen wir +123 mal so, ich werde den Wert +012 übernehmen Wir sind nicht wirklich egal, was die Werte sind. Und dann sagen wir, Mal sehen, vielleicht sollten wir das nicht. Vielleicht sollten wir diese Position Zeit nennen und ein Quadrat bewegen. Was wir sagen werden ist, äh, die Position ist gleich Position. Ich habe das X-Quadrat bekommen, oder? Also verwende ich hier die gleiche Variable. Vielleicht ist das etwas verwirrend. Und ich kann sagen, ähm, ich denke, es wird nur Justus verwirrend machen, wenn ich es mehr mache. Aber so fangen wir mit dem Platz an. Das ist die Position, dass die Position, die die Stücke auf dann sagen wir, Geben Sie mir Ihr nächstes Quadrat und wir nehmen das Quadrat und wir weisen es zurück auf die Position. Variabel rechts. Wir machen das mehrmals, und wenn wir fertig sind, müssen wir das Stück informieren. Wir haben dem Stück nicht gesagt, dass er eine neue Position hat, also wird es wieder gut machen. Das ist ein bisschen. Wir kommen ein bisschen mehr in die Objektorientierung. Wir haben die einzelne variable Position und wir füllen diese Variable zuerst mit der aktuellen Position des Friedens. Und dann gehen wir durch diese Schleife. Aber wir sagen, OK, lass mich das Quadrat fragen. Gib mir deinen nächsten Platz und ich benutze das. Und ich habe den Wert der Position damit ersetzt. Als nächstes wo und dann tun Sie das wieder und ich mache das wieder, so dass Schritte mich auf dem Brett drei Mal. In Ordnung, lassen Sie uns unsere Probleme überprüfen. Rat. Keine Probleme. Was mir das sagt, ist, dass, wenn ich versuche, das Spiel zu laufen, mal sehen, ob das funktioniert. Okay, lass es uns vom Top-Spieler lesen. Blau beginnt an der Reihe Spielkarte des Wertes. Drei Stück eins ist jetzt auf Platz drei. In Ordnung. Spieler Blue beginnt wieder an der Reihe. Denken Sie daran, es gibt immer noch nur einen Spieler, der Wert spielt. Drei. Denken Sie daran, da noch, nur eine Karte hat Wert drei, und jetzt ist es auf Platz sechs und dann ist es auf quadratischer Nacht, und dann ist es auf Platz 12. Dann, seit wo? 15. Richtig? Wir haben das Spiel in fünf Runden gehalten, aber jetzt können Sie sehen, wie sich die Teile tatsächlich um das Brett bewegen. Es landet auf verschiedenen Plätzen, Ordnung, also hoffe ich, dass alles für dich Sinn macht. Lassen Sie uns zusammenfassen, was wir hier haben, also lernten wir von einer Gehaltserhöhung. In diesem Kapitel. Eine Erhöhung kann mehrere Variablen desselben Typs enthalten, so dass es sich um primitive Werte oder Objektwerte handeln kann. Sie könnten eine Reihe von Imagern oder eine Reihe von Quadraten haben, eine Reihe von Spielern sehr nützlich. Also, wenn wir uns unser Projekt noch einmal ansehen wollen, gehen wir zurück zum traurigen Spiel hier und schauen uns an. Wir haben 60 Quadrate, aber wir verfolgen sie nur mit einer Variablen hier, richtig? Es sind nur Quadrate. Er bekam nicht die Hilfe wie Square Null Quadrat ein Quadrat zu Quadrat drei, was ein echter Albtraum wäre. Und hier ist ein bisschen Ah Kung Fu involviert und das Quadrat einzurichten, was bedeutet , dass das Füllen des Arrays einfach war, richtig? Dies ist wie toter einfacher Code hier, der die nächste quadratische Eigenschaft setzt, diese Idee, dass die Quadrate voneinander wissen. Es ist ein wenig verdrehen Sie Ihren Geist ein wenig schwer, um Ihren Kopf umwickelt zu bekommen, aber es ist eigentlich ziemlich unkompliziert. Wir machen sie alle. Wir nehmen die Behandlung das letzte Quadrat als Sonderfall, so dass wir es nicht tun Wir stoppen nicht die nächste früh, und dann behandeln wir das letzte Quadrat als Sonderfall, aber Sie erhöhen eine wirklich nützliche jetzt. Das große Problem mit den Rays besteht darin, dass die Größe beim Erstellen des Arrays bekannt und deklariert werden muss und nicht geändert werden kann. Also im nächsten Kapitel wird eine andere Datenstruktur betrachten, die mehrere Werte von ah enthält , gegebenen Typ. Und es löst viele Probleme, die wir mit der Erhöhung haben, die Unfähigkeit, sie zur Laufzeit größer und kleiner zu machen. Alles klar, wir sehen uns im nächsten Kapitel. 12. 08 Kollektionen: In Ordnung, willkommen zu Kapitel acht Sammlungen. Eine andere Möglichkeit, Bündel von Instanzen zu tun. Also eine Gehaltserhöhung, unsere super bequem. Aber sie haben ein paar Probleme, oder? Vor allem das in Steuern. Ein bisschen peinlich, wie all diese eckigen Klammern und geschweiften Klammern und Dinge etwas seltsam. Und der große ist natürlich, natürlich, dass Sie die Größe kennen müssen, wenn Sie das Array erstellen, und Sie können es nicht ändern, sobald es erstellt wurde. Also, das ist eigentlich ein wirklich großes Problem. Uh, also hat Java ein Framework namens Sammlung Spring Arbeit, das diese Probleme löst. Es gibt viele verschiedene Arten von Sammlungen in diesem Kapitel wird die häufigste aussehen , die die Liste ist. Wenn man sich das anschaut und auf die linke Seite schaut und man sagt, ich habe keine Reihe von vier Spielern und dann der fünfte Spieler auftaucht, was soll ich tun? Nun, ich kann nicht 1/5 Spieler zu einem Vier-Spieler-Array hinzufügen. Ich muss einen neuen erschaffen. Wäre es schön, wenn er das selbst arrangiert? Wie wenn Sie versucht haben, 1/5 Spieler hinzuzufügen, würden Sie sehen, wie hier auf der rechten Seite. Ich möchte nur, vielleicht verdoppelt seine Größe und, Sie wissen schon, fügt einen Spieler, dass Spieler fünf zu Schlitz Nummer fünf. Und dann müsste ich mir keine Sorgen machen. Ich will mich mit dem ganzen Chaos auseinandersetzen. Nun , genau das sind Sammlungen. Also Sammlungen. Es gibt ein ganzes Collection-Framework in Java, und sie fallen in verschiedene Typen. Eins sind Listen. Dies sind eine Art von Sammlung, die die Reihenfolge bewahrt. Also denken Sie daran, wie Honore Sie die Indizes wie 01234 haben und Sie können auf die Zustandsquadrate im Array durch ihren Index zugreifen , so dass weniger arbeiten sehr ähnlich wie die Dinge in einer bestimmten Reihenfolge gebracht wurden, und sie behalten ihre Reihenfolge. Ein Satz ist ein Sammlungstyp, der keine Bestellung hat, aber eine andere Eigenschaft hat und in die Sie keine Duplikate einfügen können. Wenn Sie also hinzufügen, äh, Sie wissen, dass Zwanziger dazu zählt, wird es die 2. 1 rauswerfen. Und dann gibt es eine andere Art von Sammlung namens Maps, die ein Schlüsselwertspeicher in ein wenig anderen Bestie ist als die Liste in diesem Sinne. Aber fangen wir mit Listen an, denn das ist wahrscheinlich die häufigste. Und im Grunde können Sie sich eine Sammlung als, ah, Objekt vorstellen ah, , das Honore einfach umschließt und es verwaltet, wenn es voll wird. Es erstellt eine neue mit einer größeren Größe und kopiert die Daten in den neuen ARY. Also hier ist, wie Sie Liste verwenden. Also zunächst einmal, sagen wir, wir wollen A anstelle einer Reihe von Spielern erstellen, wir wollen eine Liste von Spielern erstellen. Okay, die Syntax hier wird ein wenig verwirrend, weil es Dinge gibt, über die wir noch nicht gesprochen haben, aber wir verwenden den Typ hier Liste und dann haben wir diesen Winkel Klammer Player. So lesen Sie. Dies ist eine Liste von Spielern. Diese eckigen Klammern bezeichnen, was sie eine generische Schnittstelle nennen, und wir haben noch nicht über Generika gesprochen, so dass es ein wenig später im Kurs kommen wird. Ähm, und dann sagst du wieder Neue Array-Liste des Spielers. Man kann sagen, das ist ah, regenlos, die Spieler hält. Aber warte, warum ist die Liste hier? Und ein Realist hier ist das nicht merkwürdig? Nun, das muss mit Liste gehen ist die Schnittstelle. Eine Array-Liste ist der konkrete Typ. Das macht wahrscheinlich noch keinen Sinn für Sie, aber wir werden darüber sprechen, nur in ein paar Kapiteln von jetzt an, um Schnittstellen zu betrachten und wie das funktioniert. Aber das ist der richtige Weg, um eine Liste von Spielern zu deklarieren, also lassen Sie es uns einfach so machen und, naja, schauen Sie, wir werden diese Syntax untersuchen, während wir durchgehen. Wenn du also einen neuen Player zu einer Liste hinzufügen möchtest, wie machst du das? Sie? Es gibt eine Anzeigenmethode, die Sie aufrufen und einen neuen Player erstellen. In Ordnung, das kannst du. Das wird nur den Spieler am Ende der Liste hinzufügen. Und wenn Sie den Player auf einen bestimmten Index setzen möchten, wie Sie es in einem Array tun, dann könnten Sie sagen, Verwenden Sie die set-Methode und Sie sehen Spieler, die setzen. Und in der nächsten Nummer zwei, hier ist ein neues Spielerobjekt, das man dort reinlegen kann. Wenn Sie einen Spieler an einem bestimmten Index erhalten möchten, können Sie sagen, Get in sie. Übergeben Sie diesen Imager-Index dort, und es wird den Spieler zurückgeben, so dass der erste Spieler bei Index Null sein würde. Richtig. Der zweite Spieler wird es in der nächsten sein. Es ist Sarah, also ist es immer noch ein Null-Offset-Array-Paradigma Null Offset-Index. Genau wie ein Rasierer Jetzt, normalerweise, wenn Sie Listen verwenden, gehen Sie normalerweise nicht durch die Verwendung der get-Methode und übergeben Imager wie Sie es in einem Array tun . Es gibt elegantere Möglichkeiten, damit umzugehen. Nehmen wir an, hier haben wir eine Liste von Spielern und es ist ein Array weniger als wir hinzugefügt haben. Einige Spieler, Ähm, und wir wollen jetzt zu jedem Spieler gehen, um ihnen zu sagen, dass sie ihre Biegung nach rechts nehmen . Es gibt eine Syntax dafür, die für einen Spieler in Spielern so aussieht. So ist der Doppelpunkt rot ist im Spieler. Nehmen Sie an der Reihe. Das ist also eine Art Abkürzung für diese Art von vier Schleifen in Text, die wir mit den Rays verwendet haben . Und wieder definieren Sie Ihren lokalen variablen Player Player. Also dieser Spieler und dieser Spieler der gleichen Variablen rechts, und das kommt aus den Listenspielern und der Doppelpunkt sagt dem Compiler im Grunde. Okay, ich möchte, dass Sie diese Liste von Spielern durchlaufen, von Null zum Ende der Liste gehen und sie mir eine der Zeit geben, die sie in diese Schleife übergeben , richtig? Eine Sache, die hier nicht genannt wird, das ist eigentlich interessant in Java zu beachten. Sobald Sie gesagt haben, dass dies eine Liste der Spieler ist, müssen Sie den Namen Player nicht in die Winkel Klammern setzen. Als du in Stan bist, hat sie die Array-Liste gegessen. Okay, du kannst, wenn du willst, aber das ist im Allgemeinen Leute tun das nicht, weil es nur eine Menge von Tippen ist, in Ordnung, Ordnung, also könntest du es auf die alte Art machen. Und das ist wie, okay, äh, es ist eine Rate für meine gleich Null auf die Größe des Spielers. In einer Liste von Elementen heißt die Methode, um die Größe der Liste zu erhalten, Größe versus Honore, wo sie Länge genannt wird. Das ist also ein wenig bedauerlich, dass Java verschiedene Wörter wählte, um die Länge der verschiedenen Arten von Sammlungsgrößen zu erhalten. Aber so ist es, also könntest du eine for-Schleife schreiben, wo ich von Null zu Größe gehe, und dann könntest du die Spieler bekommen, die ich indizieren und ihm sagen, dass er eine Wendung wie diese nehmen soll. Aber ich denke, Sie sehen, dass diese Syntax hier ein bisschen eleganter, weniger wordy ist . Lassen Sie uns Schritt eingeben und verfolgen. Dann diese Art von Sache. Wir haben eine vollständige durchgeblasene for-Schleife mit den drei Klauseln, etc. Es gibt andere Möglichkeiten, es zu tun. Reden dazu. Du könntest rüber kommen. Wir werden sie hier nicht übergehen, aber es gibt Generatoren und weit zurück in den Tag in Bewunderung von Java. Eine Daten. Das sind sehr alte Schule. Sie werden das im Allgemeinen nicht sehen, es sei denn, Sie sehen sich wirklich alten Code an. Okay, also, uh, Liste ist eine Klasse, und die Leute haben viele Methoden geschrieben, genau wie unsere Klassen viele nützliche Methoden haben. Auch Liste. Und wir haben die Methoden wie get set and add bereits gesehen und auch die Methodengröße, um die Größe der Liste darüber hinaus zu erhalten . Neben denen gibt es zum Beispiel zum Beispiel überhaupt einen. Also ich habe eine andere Liste, und ich möchte alles auf der Liste zu dieser Liste hinzufügen. Ich könnte einfach das Ganze übergeben, und es wird alle von ihnen löschen die Liste, leert sie aus und wird alles los, kehrt zurück zu einer leeren Liste. Sie können fragen, ob eine Liste bestimmte Objekte enthält, die Sie haben, wissen Sie, eine Liste von Spielern, und ich und ich haben einen bestimmten Spieler. Ich habe den blauen Spieler hier drüben, und ich sage, Warte, ist der blaue Spieler in dieser Liste? Lassen Sie mich fragen. So enthält ist eine Methode, mit der Sie fragen können. Sie können das Array fragen, oder es tut mir leid. Sie können die Liste der leeren fragen. Sie können ein Objekt aus der Liste entfernen, und Sie können es auch mit einem sogenannten Komparator sortieren, der sich ein wenig später ansehen wird . Okay, jetzt, Nachteil gegenüber einer Gehaltserhöhung ist, dass sie keinen Präsidenten halten können, also kannst du keine Liste von Int oder Double oder Floats oder so etwas machen. jedoch Es gibtjedocheinen Typ namens Integer Capital I Integer, der eher eine Klasse als ein Primitiv ist. Diese Luft, genannt Job, ist Rapper-Klassen, und es gibt eine ganze Sache, über die zu reden Wir werden auch in einem späteren Kapitel darüber reden . Aber wenn Sie zum Beispiel Primitive wirklich benötigen , wie numerische Berechnungen, werden Sie wahrscheinlich eine Erhöhung verwenden möchten, weil die Rapper-Klassen, wie Integer, ein wenig langsamer sind als seine. Und wenn Sie eine numerische Berechnung machen, wo Sie wissen, 10 Millionen darin Sie wahrscheinlich nicht indigene verwenden wollen, weil das für so viele Zugriffe viel langsamer sein wird , dann enden Sie einfach. In diesen Fällen, wie wenn Sie wissenschaftliche oder numerische Berechnungen durchführen, Sie wahrscheinlich immer noch das Rennen nutzen. Aber für die Standard-Art der Business-Programmierung, oder wie unsere Spielsimulation hier, wollen Sie definitiv Listen verwenden. Okay, das reicht also, um anzufangen. Wir müssen immer noch an Orten, wo wir einen Gegenstand haben, wo es wirklich mehr als einen gibt. Die Spieler in den Karten, Ordnung, also werden wir unser Homosexuell unser Simulationsspiel ändern, um eine Liste von Spielern zu haben und das Deck zu haben, um eine Liste von Karten zu haben. Jetzt gibt es noch einen Platz, der übrig ist, dass die Stücke sind, wie ein Spieler mehr als ein Stück haben könnte. Für den Moment werden wir einfach in Ordnung sein, dass der Spieler nur ein Stück hat. Wir können ihn immer noch auf dem Brett bewegen. Sie können immer noch miteinander konkurrieren. Es wird immer noch interessant Spiel sein. Also noch einmal. Äh, Sie können das Video hier pausieren, zu Ihrem Projekt gehen, den Anweisungen folgen, denn wieder, das ist es etwas involviert. Übung im Vergleich zu den früheren in der Klasse. Und ich werde nur Sie können das Video hier pausieren. Und wenn du fertig bist, komm zurück und dann arbeiten wir gemeinsam daran. In Ordnung. Nun, willkommen zurück. Mal sehen, wie wir diese Liste Übungen machen können. In Ordnung, also, ähm, wir müssen an Orte. Schauen wir uns unsere Anweisungen an. Zuerst kommen wir zu weit von den Anweisungen, gehen Sie zum traurigen Spiel. Entfernen Sie das Spielerattribut in einer Liste von Spielern. Okay, also kommen wir zurück zu unserem Spiel. Ich hoffe es. Ich war im Sternenspiel, was? In Ordnung. Da steht, dass wir keinen Spieler haben. Wir werden einen gelisteten Spieler haben, also listen sie auf. Dann werden wir es Spieler nennen. In Ordnung? , Eines der Dinge,die Sie sofort sehen werden, ist sein Job behauptet, er weiß nicht, was Listen sind. In Ordnung. Dies ist das erste Mal, dass wir eine Klasse aus dem Job einer Bibliothek verwenden und wir müssen einen kleinen Arbeiter durchführen, der die Klasse importiert und was das bedeutet, ist, dass wir Java sagen müssen , was, weil es viele Klassen dort draußen namens List, die wir dem Compiler mitteilen müssen, von welchem wir reden. Jetzt gibt es viele Möglichkeiten, dies zu tun nach Liste, können Sie Ihren Cursor dort setzen und Steuerbereich drücken, und es wird eine kleine Dialekte Sache auftauchen. Welche Liste wollen Sie? Uh, eine andere Möglichkeit, es zu tun, ist über dieses Quellmenü, rechts, Klick auf Quelle. Und es gibt hier etwas namens organisierte Importe, die kontrollierte Verschiebung oh, Kontrollkapital O in Fenstern. Und wenn Sie das tun, tut es tatsächlich dasselbe. Es ist in Ordnung. Welche Liste wollen Sie? Es bringt diesen Auswähler auf und was wir wollen, ist Java dot Sie bis zu dieser Liste. Okay, also diese Dinge wie Job, die Sie bis Java, dass ein Deputy beruhigt, dass Sonnenpunkt-Tools nicht so springen , dass Sie sagen, dass diese Luft Wasser genannt Pakete werden wieder über Pakete in einer späteren Klasse sprechen . Aber diese drei Listenklassen unterscheiden sich alle sehr, sehr voneinander. Also möchten Sie sicherstellen, dass Sie Job bekommen, dass Sie bis zu dieser Liste, OK, OK, so stellen Sie sicher, dass Sie ausgewählt haben, haben Sie fertig und jetzt die rote Linie verschwindet. Was ist nun passiert? Schau dir den oberen Teil deines Codes an. Es gibt jetzt eine Importanweisung. Dies ist Import Java Util-Liste. Wir werden mehr darüber reden, wenn wir über Pakete sprechen. Aber das sagt nur dem Compiler, wenn ich Liste sage, die meine Rede aufführte, dass ich über Java-Util-Liste spreche. In Ordnung, also wenn das aus dem Weg ist, haben wir jetzt ein Problem hier und es steht ,dass , es so etwas wie Spieler nicht mehr gibt. Also seine Spieler richtig? Aber Spieler sind nicht gleich einem neuen Spieler, oder? Und wie es sagt, wird es eine Array-Liste sein, richtig? Also lasst uns ah, was wird das behalten? Weil ich das später benutzen werde, aber ich sage jetzt neu ein Realist. Das gleiche Problem. Ray-Liste ist rot, weil Java nicht weiß, was Array weniger ist. Ich weiß nicht, wovon du jetzt redest. Ich werde die andere Methode Kontrollraum machen und es steht Ray List. Aber das ist die, die ich will. Und es füllt es so aus, und es setzt den Typ Player wieder ein. Die Tatsache, dass der Spieler bereits hier ist. Joppa versteht es. Dies ist eine Liste ihrer A-Liste von Spielern, so dass Sie tatsächlich löschen können und es wird nicht rot. Job ist damit zufrieden, oder? Also ist es wie, OK, du kannst es so oder so tun. Im Allgemeinen wird dies Diamond Syntax genannt. Wenn du es so machst, ist das der bevorzugte Weg. Nur weil es wieder weniger Unordnung in Ihrem Code gibt, als ob Sie den Spieler nicht zweimal deklarieren müssen. Und es ist ein bisschen Wir sprachen über magische Zahlen im vorherigen Kapitel. Es ist ein bisschen eine magische Typ-Deklaration wie dieser Spieler, und er ist gleich dieser hier drin. Oder wenn Sie, wenn Sie etwas anderes eingeben, wenn Sie in Square tippen wird brechen. Sagte, es mag das nicht. Alles klar, jetzt steht da, um , okay, wir reden darüber. Lassen Sie uns zwei Spieler blau in grün erstellen. Sie können beide auf dem ersten Platz beginnen. Okay, großartig. Also denken Sie daran, wie wir dies mit Spielern tun dot Add So können wir sagen, dies, nicht Spieler. Du musst es richtig buchstabieren. Fügen Sie einen neuen Player hinzu. Okay, nun, hier ist ein neuer Spieler. Nehmen wir Purcell. Das brauchen wir nicht mehr. Schneiden Sie das hier rein. Also ich erstelle einen neuen Spieler, Haare an Ort und Stelle und Übergabe direkt an die Anzeigenmethode So können Sie sicherlich gesagt haben Spieler P gleich neuen Spieler und dann sagen Spieler, dass Ad P, das ist völlig in Ordnung. Aber du brauchst es nicht wirklich. Du kannst es einfach so machen. Es ist wieder ein bisschen eine Abkürzung. So zeigt Ihnen einige Abkürzungen und wir sagten, eine blaue und eine grüne. Okay, jetzt haben wir einen blauen Spieler im Grünen Player. Jetzt sind wir beide abgereist, und wir haben sie beide auf dem Quadrat Null beginnen lassen. Das ist in Ordnung. Wenn Sie möchten, dass Ihr grüner Spieler auf einem anderen Platz wie Platz 15 beginnt oder was auch immer, wissen Sie, vierter Weg herum oder so, können Sie es ändern. Das ist in Ordnung. Ich werde keine Probleme in diesem Zettel im Rial Sorry Spiel verursachen. Wenn ein Spieler-Objektiv im selben Quadrat das andere ist, klopfst du diesen Spieler oft schickst ihn zurück zu ihr nach Hause. In unserer Simulation werden wir nicht so anspruchsvoll werden. Die Tatsache, dass die Spieler in der gleichen Punktzahl beginnen, bedeutet also nichts. In Ordnung? Jetzt notiert es den Compiler und Anweisungen. Beide beachten, dass die Ebenenmethode unterbrochen ist. Alles klar, denn wir waren fünfmal herum, bis der Spieler an der Reihe ist. Nehmen Sie an der Reihe, nehmen Sie fünfmal an der Reihe. Aber jetzt haben wir mehrere Spieler. In jeder Runde müssen wir also die Spieler haben, die jeder Spieler an der Reihe ist, richtig? Also müssen wir das tun, was wir über Iterieren über die Liste der Spieler gesprochen haben. Denken Sie daran, dass die vier Schleifen-Syntax von den Folien. Also für Spieler P in Spielern, werden wir an der Reihe so sein. Es ist offensichtlich, dass es ein bisschen schöner aussieht. Okay, also das ist Ah, denk daran, wenn wir spielen, machen wir fünf. Wie du diese Runden nennst. Ähm, und ich muss das so nennen, dass wir hier eine Kompilierung haben. Das ist, ich weiß es nicht. Ein Spieler heißt Du nennst es P? Ja, das war mein Fehler. Das sollte Spieler sein. Tut mir leid. Okay, jetzt ist es glücklicher Dieser Brief, ich das ist wie die Anzahl der Runden, die richtig gespielt haben. Du könntest diese Runde anstelle von mir anrufen, wenn du es wolltest. Auf dann schleifen wir über die Spieler. Denken Sie daran, die Spieler Luft in einer Liste. So wird das Wasser erhalten und blaue Spieler gehen zuerst und dann grüne Spieler zu gehen. Richtig? Und wenn du es wolltest, könntest du hier oben noch eine Hilfe aufstellen, äh, Startplatz. Und dann hallo. Richtig. Also, wenn unsere Ausgabe auf dem Bildschirm jedes Mal, wenn wir mich angefangen haben, würde es sagen, „ Hey, wir beginnen Ground Null. In der Tat wird es gehen 20035 oder 034 gegeben sind für Blei. Okay, das kümmert sich um das traurige Spiel, wo wir jetzt unser Spiel von einem Spieler auf zwei aufgerüstet haben . Und natürlich natürlich könnten wir hier so viele Spieler machen, wie wir wollen. Wir könnten 1/3 Spieler, Spieler, Spieler, roter Spieler, gelber Spieler, weißer Spieler, schwarz und bei so vielen wie wir wollen Mitgliederlisten können so viele Spieler halten, wie Sie möchten, rechts hinzufügen . Sie bleiben in derselben Reihenfolge, in der Sie sie deklarieren. Also rufst du an. Fügen Sie die 1. 1 an der zweiten am 3. 1 Uh hinzu, sie bleiben in der Reihenfolge, in der Sie sie zur Hauptliste hinzugefügt haben. In Ordnung. Eine weitere Sache zu tun, um dieses Ding zum Laufen zu bringen, ist ein wirklich Deck von Karten, und dieses wird ein wenig komplizierter als auch. Ein Zit sprach oben in den Anforderungen Teil des Abschnitts. Wir müssen wirklich Stapel von Karten und Sie denken darüber nach. Wenn Sie ein Kartenspiel spielen, haben Sie den Ziehstapel und den Ablagestapel. Du wählst eine Karte über dem Tropfen, ich spiele sie, und dann wirfst du sie auf den Ablagestapel. Und wenn der Ziehstapel leer wird, wurden Dinge gemischt, um zu verwerfen. Stapel und diese Karten gehen zurück werden zum Ziehstapel, richtig? Versuchen wir also, das ein wenig in unserem Code zu simulieren. Also haben wir, äh, die Decksklasse. Werfen wir einen Blick darauf, wie Deck es aussieht. Die Minute, in der es sehr langweilig ist. Es hat eine Karte, und wenn Sie ziehen, gibt es die Karte zurück. Na gut, machen wir es ein bisschen besser. Wir müssen Karten auflisten. Also lasst uns die Karte, die diesen Ziehstapel genannt wird, in einer privaten Liste von Karten, die als Ablagestapel bezeichnet werden. Alles klar, und ich werde da sein. Ich habe meine Kontrollschicht gemacht. Nein. Zwei. Wichtig. Die Listenklasse. Großartig und lassen Sie uns sehen, was sie hier im Konstruktor sagen, erstellen Sie die beiden Array-Listen. In Ordnung, also nicht mehr von diesem Unsinn. Wir werden sagen, Draw Stapel gleich neue Bereitschaftsliste und verwerfen Stapel gleich einem neuen Realisten. In Ordnung, beachte, dass ich diesen Punkt nicht benutzt habe. Du könntest den Stott benutzen. Auch bemerkt, dass Job. Unsere Eclipse färbt die Variablennamen, so dass Sie sehen können, dass dies blau und blau ist. Und diese Art, um Ihre Aufmerksamkeit zu lenken, wie, hey, dieser Ziehhhaufen in diesem Ziehstapel. Dasselbe, richtig? Das ist es, worauf Sie sich beziehen. Sie könnten eine lokale Variable namens Draw Stapel erstellen, die das überschreiben würde, und sie wird anders gefärbt. Aber gehen wir nicht zu weit weg, okay? Wir müssen ein paar Karten erstellen. Lassen Sie uns Werte von 1 bis 12 machen und vier von jedem machen. Also werden wir hier zwei Schleifen brauchen, eine, bei der der Wert von 1 bis 12 geht und die andere, die nur vier zählt, um dafür zu erstellen. In Ordnung. Und dann sagt es, nachdem Sie Karte erstellt, um den Ziehstapel hinzugefügt. Also lasst uns das machen. Wir werden einfach die Karten erstellen. Sie könnten dies in eine separate Methode einfügen, wie wir es zum Erstellen der Quadrate getan haben, aber es ist nicht ganz so kompliziert. Wir wollen also Werte von 1 bis 12 erstellen. Also lassen Sie uns diesen Variablenwert anstelle von I nennen und sagen wir, es beginnt bei einem und wir können kleiner als oder gleich 12 sagen. Richtig? Und so wird nun der Wert des Wertes von 1 bis 12 liegen. Und wir sagten: Für jeden Wert jeder Karte schaffen wir vier. Also für diesen, wir brauchen nur ein generisches für Loop Null I weniger als vier durch, weil Plus, für mich, es war eine Karte. Hard neue Clips, neue Karte des Wertes direkt aus Ich schreibe, weil ich vier Karten, die Wert 14 Karte , dass Wert für Kreditwert machen möchte . Drei bis hinauf durch das Deck. Okay, so und dann sagte es bei jeder Karte zum Tropfen. Ich werde also sagen, Draw, Stapel sieht. Alles in Ordnung? Ich habe die Karte. Großartig. Nein, es geht darum, das Spiel hier ein bisschen interessanter zu machen sagen: Nun, Nun, zu sagen: Nun, wir könnten es so lassen, aber die Karten spielen so, als hätten wir vier und dann vier zwei. und vier drei und dann vier Vieren und immer noch sehr langweilig sein. Das Spiel war sehr vorhersehbar. Also lasst uns jetzt die Karten mischen. Wir brauchen eine zufällige Bestimmung hier, wo wir diese Dinge randomisiert machen wollen. Ähm, das ist ein bisschen über das hinaus, was wir tun wollen. Es stellt sich heraus, dass es eine Klasse in Java gibt, die Sammlungen Sammlungen genannt wird. So wird rot, weil wir es nicht importiert haben. Ich werde den Weltraum kontrollieren. Und es ist seine Aufgabe, dass Sie bis diese Sammlungen und es hat eine Methode namens Shuffle, wo es eine Liste mischt. Also werde ich den Drop krank mischen, Ordnung. Es ist nicht etwas, über das wir in der Folie gesprochen haben sie nur Ihre Aufmerksamkeit darauf lenken. Hier. Es ist eine sehr nützliche Sache. Wir werden in der späteren Lektion über die Kollektionsklasse sprechen. Es hat einige nützliche Methoden, wie Shuffle, zum Beispiel. Okay, jetzt müssen wir den Ziehstapel aktualisieren, weil der Ausfallende gerade den Leihwagen zurückgab . Es gibt keine Karte mehr, also machen wir es so, wie wir es im wirklichen Leben machen, richtig? Also, äh, lasst uns das schnappen. Und wir sagen , , wir brauchen eine Karte. Flips Karte Karte Karte gleich Drop. Ich bekomme Null, richtig. Es wird die erste Karte vom Ziehstapel bekommen, und das entfernt sie aus dem Drop krank. Jetzt wollen wir diese Karte an die Person zurückgeben, die die Ziehmethode direkt an den Anrufer anruft . Wir wollen Rückgabekarte sagen, aber denken Sie daran, was in der realen Welt passiert. Du nimmst die Karte vom Ziehstapel und legst sie dann auf den Ablagestapel, richtig? Also verlieren wir es nicht, denn jetzt haben wir es aus dem Drop entfernt, den ich auflisten werde. Und wenn wir nichts tun, ob wir es aus den Augen verlieren, richtig, richtig, also sagen wir den Ablagestapel und die Karte. an das Wenn duan dasechte Leben denkst, sagst du, ich ziehe die Karte und dann spiele ich sie. Und wenn ich fertig bin, verwerfe ich es, wenn Sie es in Java nicht in dieser Reihenfolge tun können. Weil die return-Anweisung immer die letzte Anweisung der Methode sein muss, richtig? Sie können nicht ziehen Sie die Karte zurückgeben und dann später abwerfen. So wie das. Syntax macht in Arbeitslosigkeit keinen Sinn, daher müssen Sie die return-Anweisung am Ende setzen. In Ordnung? , Ich frage mich,ob jemand ein Problem damit sieht, oder? Wenn wir lange genug spielen, wenn wir genug Spieler aufnehmen und genug Runden gehen, wird der Ziehstapel leer werden, oder? Und wenn wir hier sind, was wird passieren? Wenn wir „Drop“ sagen, bekomme ich Null. Und wenn es keine Karten auf dem Ziehstapel gibt, bekommen wir einen dieser Index außerhalb der Grenzen. Ausnahmen, richtig? Ähnlich dem, was wir auf dem A-Ray-Kapitel gesehen haben, und es wird unser armes kleines Programm abstürzen. Also lasst uns darüber nachdenken, was wir tun wollen. Ja, der Ziehstapel ist leer. Was sollen wir tun? Dieser kleine Platz? Da ist etwas Platz. Hier. Machen Sie das, damit Sie ein bisschen mehr von dem sehen können, was ich tue. Okay, nun, was machst du im wirklichen Leben? Wenn der Ziehstapel leer ist, greifen Sie den Ablagestapel? Du mischst es und du machst das zum Tropfen krank. Also lassen Sie uns diese Operation neu mischen, weil ich die Karten neu mischen werde. Nun, was ist Umshuffle? Es wird eine kleine Hilfsmethode sein, die wir hier jetzt hinzufügen werden. Ich könnte das einfach eintippen, aber ich zeige dir noch mehr Eclipse hier. Es gibt mir es, unterstreicht den Rant und sagt: Hey, Hey, es gibt keine Methode. Kalte Umrüstung. Wovon redest du? Und dann gibt es Ihnen einige schnelle Korrekturen, von denen vielleicht Sie diese Methode erstellen möchten. Es ist wie, Nun, ja, in der Tat, das tue ich. Sieh dir das an. Also, jetzt musste ich nicht private void reshuffle eingeben, es tat es. Und es hinterließ diese hilfreiche kleine Hand hier und sagte: Hey, Hey, vergiss nicht, dass du hier einen Code einfügen musst. Ich habe nur eine automatisch generierte Methode für Sie, aber es gibt nichts. Okay, wir verstehen es. In Ordnung. Also, was ich hier tun möchte, ist, dass ich alle Karten aus dem Drop krank nehmen und dann zurück. Es tut mir leid. Vom Ablagestapel und dann zurück zum Ziehstapel. Dann mischen Sie sie. Mischen Sie es noch einmal. Richtig. So erinnern Sie sich an sie Die Methoden, die wir sahen, können wir sagen, ziehen, pflügen und alle aus dem Ablagestapel, so dass nimmt alle Karten, die Luft in den Ablagestapel bewegt sie in den Ziehstapel. Jetzt ist hier etwas, wo sich Objekte im Computer von Objekten im wirklichen Leben unterscheiden. Im wirklichen Leben ist eine Karte entweder ein Empire Lee oder die andere. Es kann nicht in beiden Pfählen gleichzeitig sein. Aber in diesem im Computerspeicher kann es wie der Ziehstapel und der Ablagestapel können beide einen Verweis auf die gleiche Karte haben. Und das ist das Problem, das wir jetzt haben, ist, dass die Karten in diesem Moment alle auf beiden Stapel sind . Nun, das wollen wir nicht. Wir versuchen, Teoh den Ablagestapel zu leeren und alles in den Ziehstapel zu legen, damit wir sagen können „ Abwerfen Stapel Punkt klar? Wir haben diese Methode auf den Folien gesehen. In Ordnung. Jetzt ist der Ablagestapel wieder leer, und wir sind alle gut. Das letzte Problem, das wir haben, ist, dass die Karten immer noch in der gleichen Reihenfolge sind, wie sie das erste Mal durch das Deck waren , und es könnte Spaß machen, die Dinge ein wenig zu ändern. Also lassen Sie uns unsere Shuffle-Methode wieder verwenden, richtig? Werden Sie krank. Okay, jedes Mal, wenn wir zuerst eine Karte zeichnen, prüfen wir, ob es ein Tropfen ist. Ich leere von der vorherigen Runde. Wenn dies der Fall ist, lassen Sie uns eine Neumischung durchführen, die alle Karten im Ablagestapel zurück in den Ziehstapel zieht und ihn dann mischt . Also bekommen wir eine andere Reihenfolge, so dass es ein wenig interessanter macht. Und dann ziehen wir die Karte von der Oberseite des Decks, hinzugefügt zum Ablagestapel von ihnen. Karte wurde an die Person zurückgegeben, die angerufen hat. Alles klar und Details dazu waren natürlich natürlich in Ihren Notizen hier, also könntest du also könntest dues dir ansehen und es ziemlich genau verfolgen. Aber ich glaube, wir haben alles. Lassen Sie uns unsere Probleme Tab überprüfen. Keine Compiler-Probleme. Also lasst uns versuchen, unser sorry Spiel zu laufen und sehen, was passiert. Bewegen Sie, was schnell war. In Ordnung, schauen wir uns mal an. Startrunde Nullspieler Blau beginnt an der Reihe. Es hat einen Wert 11 Seife. Acht Spieler bewegt sein Stück von Quadrat Null auf Quadrat 11. Spieler Green bekam auch eine 11. Jetzt stimmt etwas nicht hier. Jeder hat elf bekommen. Mal sehen. Was haben wir falsch gemacht? Ähm, hat einen Haufen gemischt. Okay, mal sehen, wer die Karte dieses Stück zeichnet oder den Spieler, denke ich. Und Karte bewegt Stück. Mm. Äh, huh. Ich sehe das Problem hier. Vielleicht hast du es schon erwischt. Wenn wir eine Karte ziehen, die ich hier geschrieben habe, ziehen gestapelt. Holen Sie sich Null. Damit wird die Karte an der ersten Position auf Null gesetzt, aber sie wird sie nicht wirklich aus dem Deck entfernt. Richtig? Die Methode, nach der ich suche, wird entfernt. Okay. Tut mir leid. Lass uns unser kleines Ding noch mal laufen. Und jetzt ist es ein bisschen interessanter. Startrunden hier spielt der Spieler blau die Wertkarte. 10 landet auf Platz 10. Spieler grün erhält Wert. Drei landen auf Platz drei. Ab Runde erhält ein Spieler blau Karte des Wertes eins. Und jetzt bekommt Spieler Green eine Karte mit einem Wert von sechs und geht auf Abwärtslinien. Und jetzt gibt es hier ein bisschen Konkurrenz. Und am Ende enden wir mit Spieler grün trouncing Spieler Blue 43 zu 27. Also, Spieler ah, blau hatte etwas Pech hier mit den zwei und einer Sechs und ah, eins und die drei der drei der Grünen. Aber jedenfallshat Spieler Green diese Runde gewonnen, also gehen wir zurück zu unserer Diashow. Aber jedenfalls Spieler Green diese Runde gewonnen, Dies ist zusammengefasst Sammlungen, die wir sahen gelöst das Problem der festen Größe Problem einer Rate. Denken Sie daran, wenn Sie ein Array erstellen, müssen Sie sagen, dass wie viele Elemente, die haben werden, Aber wenn wir eine Liste erstellt haben, müssen wir nicht sagen, dass wir nur weiterhin Objekte zur Liste hinzufügen, bis wir das Gefühl Wir sind richtig gemacht. Außerdem hat die Liste viele andere nützliche Meth-Methoden und, wie Größe und überhaupt, und löschen und entfernen Sie Set-Methoden, für die viele von ihnen nicht existierten. Eine Erhöhung Listen der gängigsten Version von Java-Sammlungen und in diesem Stuhl. Aber wir sahen das Entfernen von Iterationen über Objekte in einer Liste. Alles klar, wir sehen uns im nächsten Kapitel. 13. 09 PolymorphismAndInterfaces: Okay, willkommen in Kapitel 9, wo wir über Polymorphismus und Schnittstellen sprechen, wie man mit verschiedenen Arten von Dingen umgeht . Ok. So oft, was wir tun. Software. Wir haben verschiedene Arten von einem einzigen Konzept, wie wir verschiedene Arten von Tieren, verschiedene Arten von Fahrzeugen, verschiedene Arten von Spielern oder Menschen oder Mitarbeiter. Und manchmal ist es ein bisschen ein Trick, alle Variationen im Auge zu behalten. In objektorientierten Sprachen gibt es also eine Einrichtung namens Polymorphismus, die uns hilft, damit umzugehen. Und dann sind Job-Schnittstellen eine wichtige Möglichkeit, polymorphe Techniken zu implementieren. Lass uns durchgehen und sehen, was das alles bedeutet. Es kommt also wirklich mehrere Arten von Dingen im Software-Programm für die Beispiele in den Folien hier, wir werden über, Ah, Ah, Art Software, die eine Liste von Menschen unterhält, ein Liste von Benutzern oder Mitgliedern oder etwas, und wir möchten sie kontaktieren, und sie haben jeweils eine Reihe von Kontaktmethoden. So könnte eine Kontaktmethode sein, die E-Mail per Text Facebook-Nachricht, Twitter, Instagram zu kontaktieren, was auch immer die verschiedenen Kontaktmethoden sind Sie hinzufügen möchten. Und wie behalten Sie den Überblick über all das, wenn Sie jemandem eine Nachricht senden möchten, woher wissen Sie das? Woher wissen Sie, wie man es macht? Basierend auf der Kontaktmethode? Nun, der einfache Weg ist, irgendwie eine Reihe von, wenn sonst Aussagen zu machen . Also hier gibt es eine Methode namens Send a Message dieser Kontaktmethode und Sie sagen, Nun, Nun, wenn es sich um eine E-Mail handelt, wenn der Kontakttyp oder die Kontaktmethode E-Mail ist, dann wissen Sie, machen Sie etwas anderes per E-Mail. Wenn es Text ist, dann kontaktieren Sie den Text oder wenn es Facebook ist, dann tun Sie das. Und Sie können einfach alle verschiedenen Arten von Kontaktmethoden aufzählen. Und Sie wissen, dass das sicher funktioniert. jedoch jedoch Wenn Sie jedochandere Operationen ausführen müssen, sagen wir, dass Sie sich ebenfalls authentifizieren müssen. Nun, die Art, wie Sie mit dem E-Mail-Server oder dem SMS-Server oder dem Facebook-Server angeben die Luft anders als auch. Also, jetzt brauchst du einen anderen. Wenn sonst Dinge für die Authentifizierungsmethode blockiert werden, können Sie sehen, wohin dies führen wird. Es wird am Ende über deinen ganzen Code schleichen. Also, wenn sonst Blöcke, die blockiert diese Luft fein, außer sie haben eine Menge Probleme. Sie neigen dazu, sich selbst durch Ihren Code zu replizieren, wie wir in der vorherigen Folie gesehen haben, und noch schlimmer, es schafft mehrere Wartungspunkte. Jedes Mal, wenn Sie eine Art von Kontaktmethode hinzufügen oder entfernen, müssen Sie sich daran erinnern, wo alle diese, wenn sonst Blöcke alle diese Switch-Blöcke sind, und stellen Sie sicher, dass Sie sie ändern, Ordnung. Und wenn Sie eine vermissen, können Sie eine echte Katastrophe in Ihren Händen haben. Sie sind auch hässlich und schwer zu lesen, wie sie neigen dazu, wirklich lang und wirklich detailliert und wirklich eklig zu werden. Und so haben Sie eine Methode, die alle Details über das Senden einer Nachricht an Facebook und die Details über das Senden einer Nachricht an SMS-Server und die Details über das Senden einer Nachricht an UNE E-Mail-Server hat die Details über das Senden einer Nachricht an SMS-Server und die Details über das Senden einer Nachricht . Und das ist eine Menge Details, um in eine kleine Methode zu schlagen, oder? Und wenn du das alles hast, wird es einige Ähnlichkeiten zwischen einigen der Fälle geben. Und so ist es wirklich schwer, der Versuchung zu widerstehen, etwas von diesem Code zu abstrahieren und an die Spitze zu setzen . Und jetzt all die verschiedenen Fälle. Luft-Paar zusammen. Und wenn Sie diesen Code für einen Fall bearbeiten, brechen Sie möglicherweise eine Reihe anderer Fälle. Und in jedem ging, uh, wenn Sie gute Q A-Praktiken haben, wenn Sie es ändern, diese Methode, die Blöcke für alle verschiedenen Kontakttypen hat und Sie wirklich besser alle testen , weil Sie möglicherweise führte einen Fehler in diese Methode ein. Wer weiß, was da drin passiert ist? Und so wird Ihr Cue 18 wahrscheinlich alles testen wollen. Und das ist eine Rolle beginnt Last gerollt werden, wenn es viele verschiedene Arten gibt. Lassen Sie uns also einen besseren Weg in objektorientierten Sprachen finden. Wir hatten diese Idee namens Polymorphismus, die gebaut ist, um dieses Problem zu lösen. Also folgten wir diesem Prinzip, dass auf Objekt wie ein Manager ist. Sie wollten delegieren. Sie machen die Arbeit nicht gerne selbst. Diese Methode, die wir auf dem ersten Satz von Methoden gesehen haben, die all diese Details wie das hatten, ist nicht der richtige Weg, dies zu tun. Sie wollen den Test jemandem anderen geben, also ist es, als ob wir diese Kontaktmethodenobjekte bekommen. Können wir ihnen nicht einfach sagen, sie sollen die Nachricht senden. Sie wissen, welchen Typ sie richtig sind, wie das E-Mail-Kontaktmethodenobjekt. Er weiß, dass es für E-Mail ist. Es ist in seinem Namen. Warum macht die E-Mail nicht? Warum muss ich es tun? Und was wir wollen, ist, dass alle verschiedenen Kontaktmethodenobjekte unterschiedlich reagieren wenn wir die gesendete Nachrichtenmethode abhängig von ihrem Typ aufgerufen haben, Sie kennen Ihr Facebook oder Twitter oder SMS, sie tun verschiedene Dinge, die Polymorphismus. Das Wort bedeutet viele Formen, und so bedeutet es, dass, wenn Sie denselben Nachrichtenbefehl senden, die verschiedenen Objekte unterschiedlich reagieren. Es gibt viele verschiedene Formen zitieren unzitiert auf ihre Reaktion, oder? Also, wie sieht es Code aus? Lasst uns hier drauf gehen. Also, zuerst, uh, was wir versuchen wollen, mit Polymorphismus zu erreichen, ist in dieser großen, hässlichen Methode, die wir vor einer Minute eine Nachricht an die Übergabe eines Kontaktmethodenobjekts gesendet haben. Jetzt wollen wir nur eine polymorphe Nachricht senden. Wir wollen nur sagen, Hey, Hey, kontaktieren Sie Objekte, senden Sie Ihre Nachricht und das Kontaktobjekt wird basierend auf seinem Typ das Richtige tun. Und wir als aufrufender Code müssen hier nicht wissen, welche Art von Kontaktmethode es ist. Das ist der entscheidende Punkt. Das reduziert die Komplexität in dieser Methode. Und als Bonus ist unsere Methode zu einer Codezeile zusammengebrochen. Also ist es irgendwie schwer. Teoh. Vermasselt das, richtig? Es gibt keine Vorhersage, dass es nicht viele Fehler in dieser Methode gibt. Ordnung, InOrdnung,damit dies funktioniert, nehmen wir an, wir haben eine Klasse, die E-Mail-Kontaktmethode genannt wird und dann eine andere Klasse haben. Es heißt Textkontakt Methode, und dann werden wir haben, wissen Sie, Facebook und Twitter es Zentrum. Wir haben eine ganze Reihe dieser Kontaktmethode Objekte. Damit dieses Gut funktioniert, müssen sie alle eine Meth-Methode namens Send Message haben, richtig? Und so muss jede Nachricht jede Methode genau als öffentliche Void-Nachricht bezeichnet werden, und wenn sie nicht den gleichen Methodennamen haben, wird es richtig brechen. Nehmen wir an, einem Jahr stellen Sie einen neuen Programmierer ein und Sie sagen ihnen, dass sie Twitter hinzufügen sollen. Sind Sie sicher, dass sie wissen, dass es öffentliche Lücken und Nachrichten genannt werden muss? Sie wissen das vielleicht nicht einmal, und sie könnten es falsch buchstabieren oder vielleicht einen anderen Wert oder so etwas zurückgeben oder ihm einen Parameter geben und dann wird es nicht funktionieren. Es wird die Nachricht brechen. Wie behalten Sie diese Methodensignaturen bei und sinken? Nun, hier kommen Schnittstellen ins Spiel, also im Job. Aber wir haben diese Sache namens Schnittstellen, die wie eine Klasse aussieht. Hol meinen Cursor hierher. Es ist also wie anstelle von Kontaktmethoden der öffentlichen Klasse, ist die Kontaktmethode der öffentlichen Schnittstelle Alles klar, also ist es eine andere Art von Tier, die einer Klasse ähnlich ist, aber in einer Schnittstelle können Sie Methodensignaturen definieren ohne nim, sieht Plantation eine öffentliche Leere senden Nachricht und dann ein zynisches Recht. Es endet dort. Es gibt keine geschweifte Klammer. Es gibt keine Codezeilen. Und das ist, was in Java und allgemein, wird dies eine abstrakte Methode genannt. Es ist, als würde ich sagen, es gibt eine Methode namens Nachricht senden, aber ich sage Ihnen nicht, was es tut. Und dann die einzelnen Klassen wie E-Mail-Kontakt, Methode, Text, Kontaktmethode, sie werden zitieren unquote implementieren diese Schnittstelle und haben eine Methode mit dieser Methodensignatur . Mal sehen, wie das aussieht. In Ordnung, so hier ist E-Mail Kontakt Method Class und Textkontakt Method Klasse. Wir haben dieses neue Schlüsselwort hier namens Implementierungen, so dass jede Klasse auf Schnittstelle implementieren kann. Und wenn Sie das tun, bedeutet das, dass Sie die Methode haben müssen, die die Schnittstelle deklariert. Oder der Compiler wird dies als Za-Warnung kennzeichnen. Es gibt eine weitere PCC hier, was dieser lustige Blick auf die Überschreibung ist. Okay, was? Das so im Job. Aber Dinge, die mit bei beginnen, werden als Anmerkungen bezeichnet, und es ist irgendwie wie Metadaten. Im Allgemeinen ist es eine Anweisung an den Compiler, obwohl jetzt nicht immer, aber nein. An diesem Punkt ist es, und wir werden später über Anmerkungen sprechen. Aber im Grunde, was das sagt, ist, dass hey, ich erwarte, dass diese Methode in dieser Schnittstelle erscheint, oder? Es sagt also, ich übersetze, dass , diese Methode, die in der Schnittstelle erscheint. Und wenn Sie es hier falsch schreiben, oder Sie oder diese Methode existiert diese Methode nicht in der Schnittstelle. Dann benachrichtigt der Compiler Sie auch gut. In Ordnung, also schauen wir es uns nochmal an. Die Compiler helfen Ihnen also, diese Methodensignaturen synchron zu halten, sobald Sie auf der Schnittstelle implementieren. Wenn Sie die Methode hier nicht in den Körper legen, erhalten Sie einen Compilerfehler. Es wird sagen, Hey, Hey, Sie implementieren Kontaktmethode, aber Sie müssen keine Nachrichtenmethode in Ihrer Klasse senden, als wäre das ein Fehler und dasselbe für die Überschreibung. Ah, Anmerkung da. Also, selbst wenn Sie an einem anderen Ort in der Textkontaktmethode hatten, selbst wenn Sie eine Nachrichtenmethode definiert hatten, wenn Sie eine andere hier hatten und Sie sagen, beim Überschreiben senden einer Textnachricht senden, na ja, das existiert nicht hier in der Kontaktmethode. Dies wird also auch die Compiler-Warnung generieren. Zwischen dem Implementieren der Schnittstellen und dem Markieren der Methoden mit Override bei Override hilft es Ihnen, den Compiler zu informieren, wenn Ihre Methodensignaturen nicht synchron sind. Wenn mit Ihren Klassendefinitionen etwas nicht stimmt, erhalten Sie eine Compilerwarnung oder einen Fehler, und dies verhindert, dass Sie weiter gehen. In Ordnung. Ein paar Dinge über Schnittstellen, die Sie nicht in Standform halten können, also können Sie nicht sagen, Kontaktmethode ist eine neue Kontaktmethode. Richtige Schnittstellen können nicht in Stan Sheeted sein. Jetzt gibt es einen alten Chuck Norris Witz darüber, wie hart Chuck Norris ist. Wird Chuck Norris, Canon Stan? Sie aß Schnittstellen. Aber nein, wir können nicht, weil was würden Sie tun, wenn Sie dieses Objekt, dieses Kontaktmethodenobjekt hätten und Sie Nachricht senden aufgerufen haben. Es gibt keinen Methodenkörper hier, oder? Es ist nur ein Semikolon, also würde das Ding nicht wissen, was zu tun ist. Es ist also Sinn, dass es unsinnig ist, eine Instanz einer Schnittstelle zu erstellen. Also, was machen wir? Nun, wir erstellen diese konkreten Typen, also hier ist der Standardweg, dies zu tun. Sie haben Kontaktmethode. Methode Nummer eins ist eine neue E-Mail-Kontaktmethode Kontaktmethode mit zwei gleich neuen Textkontaktmethode . Also hier sagen wir, dass der Typ Kontaktmethode ist und die Klasse diese spezifische ist. Der Typ bezieht sich also darauf, welchen Typ Sie dem Compiler sagen, dass die Variable so ist, dass diese Variable Methode eine Art von Kontaktmethode ist, zu der eine Art von Kontaktmethode eine Art von Kontaktmethode ist. Aber die Klasse, die Sie in Stan Sheeting sind, diese Luftklassen hier, neue E-Mail-Kontakt-Methode, neue Textkontakt-Methode, so dass Sie Typen können Schnittstellen, Kriegsklassen und von jetzt an für vorher, Wir haben schon immer Klassen wie Spieler Spieler gleich neuen Spieler gesehen, oder? Es war also der gleiche Typ wie die Klasse, als Stan schattierte. jedoch Variablentypen könnenjedochKlassen oder Schnittstellen sein. Und wenn du und Stan Shade, ein Objekt muss eine Klasse sein, die du nicht ertragen kannst, hat sie Schnittstellen gegessen. Nun ist der Grund, warum diese Syntax funktioniert, weil une männliche Kontaktmethode ist, ah, Kontaktmethode, richtig? Also, wenn Sie sagen, Kontaktmethode Methode eine ist neu. E-Mail-Kontaktmethode Nun in E-Mail-Kontaktmethode ist eine Kontaktmethode, also ist es keine Lüge, richtig, richtig, Und der Grund, warum dies Ihnen hilft, es zu tun, indem Sie Ihren Mantel sauber halten, indem Sie die Kontaktmethode in eine Interface-Typ ist, dass Sie sehr generischen Code schreiben können. Also hier ist ein Code unten, der nur in Bezug auf die Kontaktmethode geschrieben wird. Es gibt also eine Liste von Kontaktmethoden, und sie könnten E-Mail-Kontaktmethoden, Textkontaktmethoden, Facebook-Kontaktmethoden sein Textkontaktmethoden, , die alles sein könnten, aber Sie erhalten sie nur als eine Liste von Kontaktmethoden . Also wieder, der Typ der Liste ist Kontaktmethode. Jetzt kannst du sie einfach durchreißen und sagen, Nachricht senden. Dieser Code ist also sehr generisch, sehr einfach schwer zu Bugs einzufügen, weil Sie nicht mit allen Variationen zwischen Text und E-Mail und Facebook und Twitter zu tun haben . Sie durchlaufen nur diese Kontaktmethoden, und alles, was Sie über sie wissen, ist, dass sie eine Methodenkulte und eine Nachricht haben. Wir feuern einfach weg. Sie alle gleich zu behandeln, ist der große Vorteil, polymorphe Typen und polymorphe Methodensignatur zu haben, so dass Sie nichts über die Details wissen müssen. Sie wissen nur, dass sie diese Methodensignatur haben, und Sie nennen es in Ordnung. Also einige Ratschläge hier erinnern, dass die E-Mail-Kontaktmethode eine Kontaktmethode ist. Oder genauer gesagt, sagen Sie, ist eine Art von Kontaktmethode, und die Kontaktmethode ist im allgemeineren Typ in der E-Mail. Kontaktmethode offensichtlich ist offensichtlichspezifischer, richtig, also möchten Sie immer versuchen, Ihren Code so generisch wie möglich zu halten. Je generischer Ihr Code ist, desto weniger Fehler wird er haben, desto weniger Gründe müssen Sie ihn ändern. Wenn alles Großbritannien in Bezug auf Kontaktmethoden ist und Sie die E-Mail-Kontaktmethode hinzufügen oder löschen,müssen Sie weniger Änderungen vornehmen. Wenn alles Großbritannien in Bezug auf Kontaktmethoden ist und Sie die E-Mail-Kontaktmethode hinzufügen oder löschen , Dann, wenn Sie das gedreht haben, die Art E-Mail-Kontaktmethode überall bestreut. Richtig. Also, wenn Sie Objekte erstellen, die Sie polymorphe Lee verwenden werden, machen Sie die Variable zum Interface-Typ wie folgt, wie Kontaktmethode, und formen Sie stattdessen die tatsächliche konkrete Unterklasse so mit dem konkreten Klasse wie diese. Alles klar, nur sehr schnell. Falls Sie an der UML interessiert sind, nennen sie diese Verallgemeinerungsspezialisierung und sie ist so bezeichnet. Ähm, Sie haben diese Form der Luft vor uns bedeutet tatsächlich etwas in El Also dieses geschlossene Dreieck unser Kopf bedeutet Verallgemeinerungsspezialisierung, oder Leute nennen es Jen-Spezifikation, weil es zu viele Silben auf der Strichlinie bedeutet Schnittstellenimplementierung. Die durchgezogene Linie würde Klassenvererbung bedeuten, und wir werden darüber im nächsten Kapitel sprechen. Wir haben noch nicht darüber gesprochen, und der Pfeil zeigt immer von der, äh, äh, spezifischeren Klasse auf die generischere Klasse. Alles klar, das lustige aussehende Ding in den Winkelklammern oben. Das nennt man ein Stereotyp. Und das ist eine andere UML-Art zu sagen, Hey, dieses Ding ist eine Schnittstelle, okay? Und nicht in der UML, aber in Bezug auf die Terminologie, werden Sie diese Begriffe Subtype und super eng hören. In der Tat, Es ist ziemlich schwer, über Schnittstellen zu sprechen, ohne diese Begriffe zu verwenden. Aber die spezifischere Sache wird der Subtype genannt, und die generischere Sache ist der Super-Typ, bei dem das speziellere Konzept der Subtyp im generelleren Generalized ist, ist der Super-Typ, Und wenn wir im nächsten Kapitel zur Vererbung kommen, hören Sie eine Superklasse. Und Unterklasse, wenn Sie tatsächlich Schnittstellen haben, ist nicht genau richtig, sagen Sie Superklasse, aber die Leute tun es immer noch. Sie werden auch von, ah, Elternklasse oder Elterntyp und Kind hören ah, . Sie hören auch Vorfahren und Nachkommen. Also verwenden wir dieses Ding so wie fast wie eine Terminologie eines Stammbaums. Und denken Sie daran, zurück zur UML, die Pfeile zeigen immer in die Richtung der Abhängigkeit, Also der Kontakt bedeutete diese Schnittstelle. Denken Sie daran, es nichts über E-Mail-Kontaktmethode weiß, aber in der E-Mail-Kontaktmethodenklasse, heißt es, implementiert Kontaktmethode, so dass es über Kontaktmethode weiß. Wenn jemand diese Datei löscht, wird diese Datei nicht richtig kompilieren, da sie nicht weiß, welche Kontaktmethode ist. In Ordnung. Mehr Kontroverse. Es gibt eine Namenskontroverse mit Schnittstellen manchmal uh, es ist nicht klar, was Sie diese Dinge nennen möchten, denn sagen wir, Sie haben eine Personenklasse, und aus irgendeinem Grund müssen Sie eine Schnittstelle für die Personenklasse erstellen. Wie nennst du es? Sie haben den Begriff Person bereits verwendet. Also, wie können wir zwei Dinge haben, die Person genannt werden? Richtig? Es gibt also eine Möglichkeit, dies zu tun, wo Leute die Schnittstelle genannt haben. Ich persönlich. Ich denke, das kam aus Microsoft, aber ich stehe für Schnittstelle, natürlich. Und dann wird die eigentliche Klasse Person genannt. Manche Leute hassen dies mit Rache, und was sie lieber sagen, ist die Schnittstelle sollte Person genannt werden. Und dann kann die Klasse wie Person Simple genannt werden, was für die Umsetzung der Person steht, richtig? Es spielt keine Rolle. Es ist wahrscheinlich gut, einen dieser Stile auszuwählen, wenn es auf diese Weise herauskommt und ihm folgt. Aber es gibt Sie, wo Sie diese beiden Namenskonventionen ziemlich viel sehen werden. Okay, gehen wir auf unser Projekt. Lassen Sie uns diesen Schritt in Aktion sehen, damit wir dem Projekt eine neue Anforderung hinzufügen. Wir werden zwei verschiedene Arten von Karten haben. Einige Karten, bewegen Sie den Spieler vorwärts und einige bewegen den Spieler rückwärts Jetzt, nur übrigens, Ich sagte, dass das sollte anfangen zu schreien, um Sie Polymorphismus, richtig? Wenn du hörst, sage ich, dass es zwei Arten von Karten gibt. Denken Sie daran, die erste Folie des Kapitels war, Manchmal haben wir mehrere Arten von etwas. Also hier haben wir zwei Arten von vorwärts beweglichen Karte und rückwärts bewegliche Karte, und sie haben unterschiedliche Verhaltensweisen. Man bewegt die Pele oder vorwärts Mom bewegt den Spieler rückwärts. Okay, das schreit nach einer Schnittstelle und nach Polymorphismus, richtig? Denken Sie daran, in dem Spieler, wenn wir sagen, Nehmen Sie Ihren Zug, zieht er ein Deck von der Karte und es steht, Kopf Karte bewegt dieses Stück. In Ordnung. Ich möchte diesen Code nicht ändern. Ich möchte, dass das sehr generisch bleibt. Das ist ein Mitglied. Sieh dir das an. Der Spieler weiß nicht, welche Art von Karte er hat weiß nicht, ob es vorwärts oder rückwärts , ? Die Karte weiß, und er sagt, dass die Karte den Frieden bewegt hat, und weil es verschiedene Arten von Karten gibt, werden sie das Richtige tun, richtig? Also gehen wir weiter, um einen Blick darauf zu werfen. Zunächst einmal, wie sollen wir uns rückwärts bewegen? Das klingt nach einem Albtraum. Richtig? Also erinnerst du dich, wie wir uns vorwärts bewegt haben? Wir würden den Platz bitten, den nächsten Platz zu geben, und dann wäre das ein Schritt vorwärts. Und das machen wir. Wenn die Karte eine Nummer fünf hätte, machen wir das fünfmal. Als Nächstes. Als Nächstes, Nächstes, Nächstes, Nächstes, und dann wären wir fünf Punkte voraus. Also folgen wir diesem Paradigma, um rückwärts zu gehen? Wir werden nach dem vorherigen Platz fragen. Ähm , das ist eigentlich ziemlich einfach einzurichten. Denn wenn Quadrat Nummer zwei hier das nächste Quadrat für Quadrat Nummer eins ist, bedeutet das, dass Quadrat Nummer eins das vorherige Quadrat für Quadrat Nummer zwei ist, richtig? Keine Ausnahmen von dieser Regel, es funktioniert immer so. Es ist wie für diejenigen von Ihnen, die einige Datenstrukturen es ist eine doppelt kennen, verlinkte Liste. Richtig? Wie sollen wir die Quadratklasse ändern? Was? Wir hatten bereits die nächsten quadratischen Attribute. Wir werden das vorherige Quadrat als neue Attribute hinzufügen. Und dann, wenn Sie das nächste Quadrat hier setzen, haben Sie Quadrat eins und Quadrat, wie gleich nebeneinander in der gleichen Methode. Also, wenn wir sagen, dass das nächste Quadrat gleich als nächstes ist. Wir können einfach sagen, ob dieses Quadrat das nächste Quadrat für mich ist, dann bin ich der vorherige Platz für ihn. Also werde ich es so einstellen, oder? Wenn Sie über diese Codierung nachdenken, schauen Sie sich sie an und können sie darstellen oder was auch immer Sie tun möchten. Sie können sich verpflichten, dass dies gut funktioniert. Okay, also gehen wir ins Projekt. Wir werden eine Kartenschnittstelle erstellen, zwei Arten von Karten. Uh, das ist wieder ein bisschen involviert. Also ermutige ich Sie, den Anweisungen zu folgen oder wenn Sie viel mehr Vertrauen haben, können Sie einfach direkt in sie kurbeln. Was wir jetzt wieder tun werden, wie üblich, ist Ihr Composite-Video. Und wenn du mit deinem Projekt fertig bist, komm zurück und ich gehe mit dir durch das Projekt. Selbst wenn du nicht gerne mit mir beim Projekt mitverfolgen willst,hast du es vielleicht funktioniert. Selbst wenn du nicht gerne mit mir beim Projekt mitverfolgen willst, Es ist dir egal, meine Erklärung zu hören. Das ist in Ordnung. Aber nachdem wir das getan haben, gibt es noch ein paar weitere Folien in diesem Kapitel. Einige fortgeschrittene Themen zu Schnittstellen. Vergessen Sie nicht, sich diese Folien anzusehen. Okay, also stellen Sie sicher, dass Sie nach der Überprüfung des Projekts zurückkommen. Also machen Sie jetzt und dann Pause, wir kommen wieder zusammen, wenn Sie fertig sind, und wir werden über dieses Projekt reden. Na gut, gut, willkommen zurück. Lass uns das Projekt machen. Also rufen wir unser kleines, dass wir das kleine bisschen größer machen können. Hier sind die Anweisungen für dieses Kapitel mit Schnittstellen und es spricht darüber, dass wir zwei Arten von Karten haben werden . Wir haben eine Vorwärtskarte in der Rückwärtskarte. Ähm, es macht auch die Ausrede im Voraus. Wir nehmen die Karte von der Vorwärtskarte und kopieren sie einfach in die Rückwärtskarte und ändern sie dann . Das ist kein gutes Software-Engineering. Aber es gibt nicht viel, was wir tun können, bis zum nächsten Kapitel, wenn wir eine neue Syntax in Java lernen , die uns helfen wird, alle duplizierten Code loszuwerden. Okay, also versuchen wir es. Lass es uns tun. Umgekehrtes Viertel. Also zuerst machen wir das Ding, über das wir in den Folien gesprochen haben, und fügen das vorherige Quadrat hinzu. Richtig? So sagt es, dass eine vorherige quadratische Eigenschaft und dann in den zusätzlichen Code in der Mitte. Also haben wir den nächsten Platz. Privater Platz, schätze ich. Quadrat. Richtig. Und wenn wir das nächste Quadrat setzen, wenn dieses Quadrat mein nächstes Wort ist, als ich bin, dass Quadrate vorheriges Quadrat. Jetzt brauchen wir Getter und Zentren, bevor wir das tun. Richtig? das fast vergessen. Also, äh, zweitens, lass es mich tun. Ich muss mit der rechten Maustaste klicken, um Quelle zu sagen. General Motors und Zentren für vorheriges Quadrat setzen am Ende der Datei. Okay, cool. Im Moment konnte ich dorthin zurückkehren, wo ich war, und ich wollte sagen: Wenn die nächste Punktzahl mein nächstes Quadrat ist, dann bin ich sein vorheriger Platz. Also sage ich, nächstes Quadrat, das ist das vorherige für mich. Und ich erinnere mich, wie beziehe ich mich auf mich selbst? Ist das richtig? Also diese Art von Methoden waren Ihre Weißt du, ein Quadrat, das mit einem anderen spricht, ist ein bisschen manchmal verwirrend. nachdenkst, Aber wenn du darübernachdenkst,ob du damit arbeitest, wirst du dich davon überzeugen, dass dies das richtige Warten ist, um das einzurichten. In Ordnung, gehen wir in den Wagen. Also wollen wir den ganzen Code, den wir im Auto haben, in die Klasse jetzt und jetzt nehmen, die Vorwärtskarte wird Also die Art und Weise, wie wir dies tun werden, ist mit dem i d Easy Factoring. Nun, das ist ein bisschen, dass es andere Möglichkeiten gibt, diese Arbeit zu erledigen. Ich wollte Ihnen das Wieder Factoring-Tool zeigen. Es schafft tatsächlich ein wenig Bereinigung für uns, wie wir sehen werden, wenn wir durch das Projekt gehen . Vielleicht haben Sie das schon gesehen, aber , es ist nur eine Möglichkeit,es zu tun. So ist es ein sehr Faktor Umbenennen Karte Ford Auto sein. Ich meine, du könntest es vorwärtsbewegliche Karte nennen oder so etwas. Das ist in Ordnung. Wie auch immer du es nennen willst. Okay, also jetzt haben wir Vorwärtskarte und bemerkte, dass es den Namen der Klasse geändert hat. Es hat sich auch geändert. Ähm, der Name der Datei auf dem Dateisystem, wenn Sie so aussahen, ist jetzt Vorwärtskarte Punkt Java, richtig? Andernfalls funktioniert es nicht, wenn Sie nicht den gleichen Namen haben. Und jeder Ort, an dem die Karte im Code erschien, wurde auch in Vorwärtskarten geändert. Hat eine globale Suche gemocht. Und ersetzen im Grunde Okay, Jetzt müssen wir die Karte rückgängig machen. Nun, jetzt betrügen wir, richtig, richtig, damit ich diese Vorwärtskarte schnappen kann, die ich kontrollieren kann. Sehen Sie? Zum Kopieren. Und ich kann kontrollieren, dass es eingefügt wird. Ich werde sagen, Rückwärtswagen. Okay, das ist schlechte Programmierung, dass wir es in diesem Kapitel und im nächsten Kapitel machen werden, ich verspreche, dass Sie das beheben werden. Okay, also Rückwärtswagen. Hoppla. Hast du es kapiert? Holen Sie sich jeden los. Und es sagt, was Sie in Vers-Karte tun möchten, ist, anstatt sich vorwärts zu bewegen, indem Sie das nächste Quadrat verwenden , möchten Sie rückwärts bewegen, indem Sie das vorherige Quadrat verwenden. Also wirklich, alles andere hier kann vorerst gleich bleiben. Außer wir ändern diese Methode in Gruppen vorherige. Im Moment bewegt diese Karte die Teile auf dem Brett nach hinten. Irgendwie interessant. In Ordnung. Ähm, nein, ich muss das Deck aktualisieren, denn im Moment erstellt das Deck nur Vorwärtskarten. Wir können keine Rückwärtskarten hinzufügen. Also schauen sie auf das Deck, sind wieder Factoring, hatten einige Fallout hier. Also, wenn ich mir die Liste der Karten auf der Liste hier, es sagt Vorwärtskarte, werfen Stapel Vorwärtskarte, fallen krank. Also kann ich keine Rückwärtskarten hinzufügen, weil dies ein konkreter Typ ist. Ich möchte hier einen generischen Typ haben, damit ich beide Arten von Karten zu meinen Listen hinzufügen kann. Richtig. Also hier kommen wir und schaffen seine Kartenschnittstelle. Okay, Schule das ein wenig. In Ordnung, wir werden eine Schnittstellenkarte erstellen, und dann werden wir beide von unserer Vorwärts- und Rückwärtskarte die Schnittstelle wieder implementieren lassen. Es gibt andere Möglichkeiten, dies zu tun, aber, ähm, lassen Sie uns einfach gehen mit diesem Pfad wird neue Schnittstelle sagen, Ordnung? Und sehen Sie, dass es öffentliche Schnittstellenkarte jetzt sagt. Ok, großartig. Und dann wollen wir unsere Umsetzung Aussagen in Geräte Karte und erste Karte Momente bekommen . Jetzt bemerken Sie. Im Moment hat das nicht wirklich so viel gewonnen, denn denken Sie daran, wir sagten, dass Schnittstellen weg sind, um Methodensignaturen zu deklarieren und alles synchron zu halten. Es gibt keine Methodensignatur hier. Es ist nur Karte. Okay, das werden wir natürlich reparieren . Aber was wir jetzt im Deck tun können, ist, dass wir gehen können und wir diese zu sehr generischen Dingen zurückmachen können . In Ordnung, also wechselt er zurück, diese Luft ist kaputt, weil eigentlich also wechselt er zurück, diese Luft ist kaputt, weil wir eigentlichnoch nicht über Generika gesprochen haben, aber du brauchst das nicht wirklich. wir eigentlichnoch nicht über Generika gesprochen haben, Nehmen wir die einfach raus und wir werden dieses Problem nie haben. wieder ab Java sieben, glaube ich, dass Sie den Typ nicht zweimal eingeben müssen. Wenn dies eine Liste von Karten ist, dann ist dies eine Array-Liste von Karten. Das weiß er von diesem. Aber wir haben nicht wirklich von Generika gesprochen. Ok, großartig. Also haben wir all diese Sache bekommen, und jetzt steht es auch, wir müssen die Ziehmethode reparieren, weil die Ziehmethode Vorwärtskarten sagt. Ja, du hast recht. Ich möchte in der Lage sein, Vorwärts- und Rückwärtskarten zurückzukehren. Ok? Und sieh dir hier an. Es gibt noch vier Karten. Das ist es, worüber ich gesprochen habe. Unser Wieder Factoring war ein bisschen zu aggressiv, und es änderte all diese Dinge, die wir eigentlich nicht ändern wollten. Ähm, aber das tat es trotzdem. Okay, jetzt ist alles amerikanisch. Es gibt einen Fehler in der Spieler zu bekommen, dass. Aber wir haben nicht wirklich irgendwelche Rückwärtskarten von allem, was wir hier erstellen, erstellt sind Vorwärtskarten . Nun, hier ist ein anderer Ort, der gegen den Rat verstößt, den wir auf den Folien hatten. Richtig? Wir wollen wirklich nur Karte sagen. Alles klar, das ist ein bisschen generischer. Alles klar, was wir tun werden, die Anforderungen sagen, Karten mit Wert Nummer vier sollten umgekehrte Karten sein . Richtig. Also können wir das tun, indem wir sagen, okay, wenn der Wert gleich vier ist. Okay, wir werden eine Sache machen, sonst machen wir das. Aber wir haben es früher getan, Sie möchten es vielleicht umgekehrt machen und sagen, ob Werte vorher nicht gleich sind, weil die Vorwärtskarte wirklich der übliche Fall ist, richtig? Vielleicht ist es besser, den gemeinsamen Fall an die Spitze zu stellen. Hoppla. Tut mir leid. Und jetzt wollen wir das nur in Rückwärtswagen ändern. Ok? Nun, Sie wollen vielleicht ein wenig Wieder Fabrik hier zu tun. Sehen Sie, dass der Tropfen, den ich hinzufügen werde, für beide gleich ist. Du könntest das aus dem Block ziehen, wenn du Teoh willst. wir uns jetzt keine Sorgen. Eigentlich haben sie das hier in diesem Licht getan. Also lasst uns das machen. Ich sage, Schau, beide haben eine Zugkraft, Pfähle, nicht hinzufügen. Also lassen Sie mich das hier und jetzt bewegen, denn wir sind der Schnitt, der Wert, den die variable Karte innerhalb dieser geschweiften Klammern definiert ist. Es ist hier draußen nicht mehr sichtbar. Das Bereichsmitglied des Bereichs in Aufträgen zwischen geschweiften Klammern. So können Sie nicht Sie sind in der Lage, diese Variable nicht zu sehen. Also musst du es hier aufstellen. Es ist eine Karte, richtig? Und dann mussten Sie diese Variable anstelle der Variablen verwenden, die wir dort deklariert haben. Sehen Sie jetzt, wie es hervorhebt. Alle vier dieser Karten beziehen sich auf genau dieselbe Variable, richtig? Während es vorher war, gab es eine individuelle Karte in jedem der inneren der Blöcke. Okay, irgendjemand? Das ist wirklich nicht das, worüber wir hier reden wollen. Wir haben alles geändert, um jetzt ein paar Rückwärtskarten und ein paar frühere Karten zu haben. Und jetzt müssen wir zur Spielerklasse gehen und den Fehler beheben, den wir dort sehen. Was ist los? Nun, okay, das erste, was ich sehe, ist, ja, schau, ich will keine Vorwärtskarten. Es sind nur Karten. Und jetzt wird es sagen: Nun, Nun, warte eine Minute. Es sagt, es gibt keine Methode Kult Bewegung in Typ-Karte. Jetzt könntest du, und ich bekomme das in der Sonnenfinsternis, nur indem ich über das rote Ding schwebe. Also haben wir nicht wirklich nie auf dieses Problem zurückgekehrt. Wir haben die Methoden, die wir brauchen, nicht wirklich zur Kartenklasse hinzugefügt, oder? Oder die Kartenschnittstelle. Das hier ist irgendwie cool. Ich kann einfach darauf klicken und es für mich tun lassen, richtig? Erinnern Sie sich an die meisten Dinge, die wir hatten in der leichten verwendet das Wort Öffentlichkeit vor. Es ist eigentlich nicht notwendig für Schnittstellen wird darüber sprechen, wenn wir zurück zu den Folien. Aber jetzt haben wir diese Methode zur Kartenschnittstelle hinzugefügt. Und jetzt, wenn Sie sich erinnern, was wir tun sollten, ist wirklich, dass wir diese Annotation rechts überschreiben, um das nur so zu markieren , ja, das ist eine Methode von der Schnittstelle Kommen. Also, wenn wir jemals zurück gehen und schauen wir es uns an, wenn ich jemals aus irgendeinem Grund diese Methode von der Schnittstelle entferne, werde ich einige bekommen. waren keine Fehler hier, die sagen, Hey, du sagtest, das ist überwältigend, aber es ist jetzt nicht okay. Natürlich will ich das nicht aufgreifen, also lasse ich es wieder rein. In Ordnung? Und jetzt bekommen wir atmig Ende hier Nummer Schritt 14 sagt laufen und sehen, ob es funktioniert. Richtig. Ok. Also denken Sie daran, unsere Hauptmethode tut es leid. Spiel richtig, gut runter. Gehört oben. Es gibt unsere Hauptmethode. Ich werde mir das schnappen und sehen, ob wir uns selbst rennen lassen können, wenn wir uns etwas zurückziehen lassen. Wir werden die Klasse nicht gerettet haben. Entschuldigung. Da gehen wir und sehen, ob sie Dating Vieren wählen. 563 11 4 Hier geht's. So beginnend Runde zwei Spieler Boot blau. Wählen Sie die drei und es bewegt sich auf Platz 20 und Nr. Eins um drei. Spieler blau wählte eine vier und ich ging zurück zu Platz 16. Es funktioniert. Sie können die Spieler sehen, um jede andere Kraft hier zu sehen. Noch nicht. Das läuft unsere Simulation wieder und sehen, ob wir andere Vieren sehen. Keiner. Diesmal hatten sie viel Glück. Führen Sie es noch einmal aus. Es ist alles randomisiert. Also, hier geht's. Oh, hier ist ein guter. Spieler. Grün fängt an. Die erste Karte, die sie abholen, ist eine Vier, also müssen sie rückwärts durch das Quadrat 59 58 57 56 bewegen. Also sind sie schon hinter dem Startplatz auf der ersten Kurve. So wahrscheinlich grün verloren. Wir sind bis zum Ende gekommen. Rot war auf für ein blaues ist auf 40 und grün war auf 19. Also hat Green noch vier hier abgeholt. Das ist wirklich bedauerlich. Also gingen sie wieder zurück. Also, ja, sie wurden in diesem Spiel aufgeblasen. Okay, ich hoffe, das macht Sinn für das Projekt. Gehen wir zurück zum leichten, denn es gibt ein bisschen mehr, über das ich mit Ihnen über Schnittstellen sprechen möchte. Okay, eine Sache ist also, dass Schnittstellen geerbt werden können. Also gehen wir zurück zu dem, was wir auf den Folien hatten. Erinnerst du dich an die Kontaktmethode Schnittstelle? Angenommen, wir hätten noch einen. Wir haben nicht authentifizierte Kontaktmethode, wo Sie mit dem Benutzernamen Passwort anmelden müssen . Ich kann diese Schnittstelle die Kontaktmethode erweitern lassen. Was das bedeutet, ist diese Schnittstelle authentifizierte Kontaktmethode hat alles, was Kontakt Met Method selbst hat plus diese neuen Methoden zur Definition hier. Was bedeutet das, wenn ich eine Klasse schreibe, die authentifizierten Kontakt implementiert, bedeutet, dass ich beide Methoden tun muss. Ich muss Nachricht von der Kontaktmethode senden, und ich muss mich von dieser anmelden, richtig? Oder sonst bekomme ich diese Compilerfehler, damit Sie tatsächlich ein Ganzes haben können. Wir nennen das eine Hierarchie. Die ganze Hierarchie von Schnittstellen wie einer Schnittstelle, die eine andere erweitert erweitert , um, um, und auf verschiedene Weise kombiniert. Und dann können Sie Ihre Klassen sie implementieren lassen. Äh, wie so in Ordnung. Ein weiteres Merkmal von Schnittstellen, die irgendwie neu in der Arbeit ist. Eine Welt, die wir uns aufstellen, um das Problem hier zu lös 14. 10 Erinnerungen: Alles klar, willkommen zu Kapitel 10 über Erbschaft. Im vorherigen Kapitel haben wir gesehen, wie Schnittstelle als polymorphe Supertypen erhalten wird. Aber wir können auch Klassen für den gleichen Zweck verwenden. Wenn wir dies tun, sprechen wir nicht über die Implementierung von Schnittstellen. Wir sprechen über das Erben von Klassen. Also, wenn dieses Kapitel Jobs, Klassenvererbung und einige der Probleme, die damit einhergehen, wie abstrakte Klassen, Konstruktorverkettung, Methodenüberschreiben und einige andere Funktionen. Wenn Sie also Schnittstellen verwenden, führt dies manchmal zu einer Menge doppelter Implementierung. Nehmen wir ein Beispiel hier mit unserer Kartenschnittstelle. Es hat eine Get-Value-Methode und daher die Forward-Karte und die Reverse-Karte, die diese Schnittstelle implementieren, müssen beide eine Get-Value-Methode haben. Jetzt wissen wir, dass es genau dort auf die gleiche Weise umgesetzt wird. Beides. Das sind beide Klassen. Wir werden ah, Wertattribute ein privates haben , und dann haben wir einen öffentlichen Getter-Wert, diese Attribute zurückgibt , und wir tun es genau auf die gleiche Weise in beiden Klassen. Und wenn wir mehr Klassen hätten, die Karte implementieren, machen wir genau dasselbe immer und immer wieder, und das scheint keine zufriedenstellende Lösung zu sein. Also hier verwenden wir eine abstrakte Kartenklasse als die super enge. Und so wie eine UML-Notiz, diese durchgezogene Linie, die die Linie hier von gestrichelt in der vorherigen Folie auf Volumenkörper geändert hat. Das zeigt an, dass der Super-Typ dort, die abstrakte Karte eine Klasse anstelle einer Schnittstelle ist. Aber in diesem Fall können wir tun, weil wir Klasse als Super-Typ verwenden, wir können den Code tatsächlich verschieben, den Wert in diese Klasse vergessen, und wir können die privaten Attribute, die Wert genannt werden, in die Klasse verschieben. Und wir können den Getter auch in dieser Klasse implementieren. Und auf diese Weise in den Unterklassen, in Vorwärtskarte und Rückwärtskarte können wir in den Unterklassen, in Vorwärtskarte und Rückwärtskartediese Methode erben und wir müssen sie nicht wirklich in diesen Klassen eingeben. Okay, was bedeutet das alles? Eine Menge neuer Jargon hier. Lassen Sie uns zuerst den Jargon überprüfen. Okay, hier sehen wir, durch das Diagramm, das wir sehen, gibt es ein Super-Typ Essen und ah, etwas namens Bar, das gerade von ihm erbt. Wenn wir über sie gehen und links sind die allgemeinen Begriffe Verallgemeinerung und Spezialisierung, richtig? Fu ist allgemeiner. Bar ist spezialisierter, aber die Leute benutzen alle Arten von Wörtern dafür, also wirst du es reden. Man kann hören, wie Leute Super-Typ und Subtyp in Bezug auf Lebensmittel-Embargo sagen. Ihre Leute sprechen über die Eltern und das Kind, sogar über den Vorfahren und den Nachkommen. Sie hören, dass all diese Wörter Luft ziemlich gut zwischen Schnittstellenimplementierung und Klassenvererbung verwendet werden. Aber wenn Sie über Klassenvererbung sprechen, können Sie auch Superklasse in der Unterklasse sagen. Offiziell, wenn Essen eine Schnittstelle wäre, würden Sie es nicht eine Superklasse nennen. Du würdest es einen Super-Typ nennen. Obwohl ich sagen werde, dass die Menschen in der Branche alle diese Diagrammbegriffe fast austauschbar verwenden . Aber ich dachte nur, dassall diese Luft jetzt so , dass ziemlich synonyme Synonyme Was bedeutet es, von einer anderen Klasse zu erben ? Nun, so sieht es aus. Auf der linken Seite sehen Sie die abstrakte Kartenklasse und es sieht wie eine normale Klasse aus. Es hat den Inter-Wert und den Getter-Get-Wert , der den nach Butte zurückgibt und dann von der Klasse in der Vorwärtskartenklasse zu erben . Hier haben wir das Schlüsselwort erweitert und wir sagen erweitert und dann den Namen der Superklasse. Es sieht also viel wie Schnittstellenimplementierung aus, oder? Außer, bevor wir sagten, Geräte. Jetzt sagen wir, erstreckt sich rechts. In diesem Fall ist das abstrakte Gericht eine Superklasse. Die Vorwärtskarte ist die Unterklasse, und wir sagten, dass die Vorwärtskarte die Get-Wert-Methode erbt. Was bedeutet das genau? Also schauen wir uns das an. Wir erstellen eine Vorwärtskarte, okay? Und dann nehmen wir die Karte und wir können Wert darauf rufen. Nun, das ist sehr interessant. Wenn wir zurück gehen, wenn wir uns die Vorwärtskarte Klasse betrachten, gibt es keine Methode namens get value hier. Richtig? Aber Sie können dies tun, weil die get-Wert-Methode, obwohl sie in der vier D-Kartenklasse nicht existiert, sie in ihrer Superklasse in der abstrakten Kartenklasse existiert. Richtig? Wenn Sie dies tun, wenn Sie sagen, Card dot get value, der Code, der ausgeführt wird, ist der Code, der tatsächlich in dieser Superklasse in diesem Fall als abstrakte Karte geschrieben ist. Und das gilt natürlich natürlich für alle Unterklassen in abstrakter Karte. In unserem Fall sprechen wir über Reverse-Karte, aber es könnte mehr geben und sie alle würden diese Get-Value-Methode erben. Okay, lass uns darüber reden, wie der Polymorphismus hier funktioniert. Also hier haben wir drei verschiedene Aussagen, und die 1. 1 natürlich ist in Ordnung. Sie können immer sagen, Vorwärtskarte Karte gleich neue Vorwärtskarte. Jedes Objekt, das Sie auf diese Weise tun können, wie Klassenname etwas entspricht einem neuen Klassennamen, der immer funktioniert. Aber auch hier können wir Polymorphismus anwenden. Denken Sie daran, dass abstrakte Karte die Generalisierung oder der Super-Typ ist. So können wir abstrakte Karte hier auf der linken Seite als Typ der Variablen setzen. Und dann können wir eine Vorwärtskarte erstellen, und das funktioniert gut, weil leisten Karte ist ein abstraktes Herz. Es ist ein Subtyp der abstrakten Karte. Das ist also eine faire Aussage, aber es funktioniert nicht in die andere Richtung, oder? Dies wird nicht kompilieren, weil eine abstrakte Karte kein Vorwärtsauto ist eine Beziehung funktioniert nur eine Richtung. Das ist also etwas, an das man sich erinnern kann. Die Typen Ihrer Variablen, wie hier auf der linken Seite, müssen immer allgemeiner sein als die tatsächlichen Klassen, die spezifischen Klassen, in denen Sie sich befinden, Stan Sheeting und im Allgemeinen und objektorientierte Sprachen. Sie möchten die Typen Ihrer Variablen so allgemein wie möglich halten, da dies den Code vereinfacht und die Wartung ziemlich vereinfacht. Aber die einzige Zeit, in der Sie wirklich brauchen, um die genaue Unterklasse anzugeben, die Sie verwenden möchten, ist, wenn Sie den Konstruktor aufrufen. Es gibt keinen polymorphen Konstruktoraufruf. Sie müssen tatsächlich den Namen der Klasse eingeben, die Sie hier erstellen möchten. Das ist also Konstruktion. Zeit ist die einmalige Zeit, in der Sie wirklich wissen müssen, ob es sich um einen Vorwärtscarter oder eine Rückwärtskarte handelt. Aber danach könnten Sie es einfach als abstrakte Karte bezeichnen, und es sollte das Richtige tun. Okay, überschreibende Methoden. Also sagen wir, hier ist meine abstrakte Klasse abstrakte Karte und sie hat diese nette get value Methode. Aber ich habe jetzt einen Fall, in dem ich das Verhalten der Superklasse nicht verwenden möchte, richtig. Ich will es ändern. Ich möchte eine manipulierte Karte erstellen, die immer einen bestimmten Wert zurückgibt. Nun, ich kann das tun, ich kann diese Methode überschreiben, so dass ich diese Methode einfach wieder eingeben kann, öffentlich und Wert erhalten kann. Und jetzt kann ich meinen manipulierten Wert zurückgeben. Dies gibt also immer 42. Ich könnte natürlich natürlich jede Implementierung dort platzieren und dann mit der Override-Annotation versehen, damit der Compiler es überprüfen kann, um sicherzustellen, dass ich es richtig geschrieben habe . Aber das nennt man Überschreiben einer Methode. Und in jeder der Unterklassen können Sie immer entscheiden, die Superklassen Implementierung für eine bestimmte Methode nicht zu verwenden und eine neue Implementierung zu schreiben, die Sie für diese Klasse nur jetzt wünschen, in diesem Fall in der Rig-Karte, haben Sie diese neue erhalten Wert Vorwärtskarte und Rückwärtskarte. Verwenden Sie immer noch die Superklassenmethode von abstrakter Karte, richtig? Das wirkt sich nicht auf sie aus. In Ordnung, jetzt, mit ah Super-Klassen und Unterklassen, gibt es einige interessante Fragen, die nicht auftauchen, wenn Sie EM-Schnittstellen verwenden und auf diese achten. Denn wenn du ein Interview machst, wird es sehr wahrscheinlich, dass sie dir diese Frage stellen werden. Ich stelle den Leuten diese Frage im Allgemeinen ständig. Wenn ich sie interviewe, aber schauen wir mal. Hier gibt es vier verschiedene Fälle. Nun, ich möchte es besuchen. Also sagen wir, ich sage Lebensmittelobjekt gleich neues Essen und dann rufe ich Objekt aus Druck. Beachten Sie nun, dass beide eine Druckmethode haben, oder? Es gibt eine Druckmethode in der Lebensmittelklasse, die Essen Prinzen. Und es gibt eine Druckmethode in der Balkenklasse, dass Prince Bar und Bar Fu richtig erweitert? Und ich habe es auch hier drüben markiert. Wenn ich das mache, was passiert dann? Nun, ich denke, das ist ziemlich offensichtlich. Es wird Essen drucken, oder? Weil es das ist, was Lebensmittel tun. Sie drucken Essen jetzt, was ist mit dem hier? Ich sage, Nahrungsobjekt ist ein neuer Balken. Und dann sage ich, Objekt, dass drucken. Denk darüber nach. Wird das Essen drucken, oder wird das Bar drucken? Okay, wenn du Bar gesagt hast, hast du jetzt Recht, warum ist das dann? Das hier ist der Schlüssel, den man verstehen muss. Die Klasse des Objekts, das Sie hier erstellt haben, ist ein Balken, weil Sie den neuen Balken gesagt haben Wenn Sie den Konstruktor aufgerufen haben, haben Sie die Java-Laufzeitumgebung angewiesen, ein Balkenobjekt zu erstellen. Dies ist, was Bar Objekte dio rechts Hier ist die Bar Klasse. Die Tatsache, dass Sie ihm die Variable gegeben haben, ist die Art Essen irgendwie irrelevant. Eine Möglichkeit, darüber nachzudenken, ist, dass die Typen der Variablen wirklich für den Compiler am Quellcode im Unternehmen sind , wissen Sie, im Quellcode für die Kompilierungszeit, aber zur Laufzeit, Was Sie haben Objekte wie diese sind. Diese Typreferenzen sind zur Laufzeit nicht vorhanden. Okay, das Wichtigste hier ist, dass du eine Bar erstellt hast. Was ist, wenn wir es anders machen? Und wir sagten, Barobjekt ist ein neues Essen. Was würde das drucken? Nun, hoffentlich kribbeln deine Spidey Sinne daran, weil das nicht richtig funktioniert? Ah, Fu ist keine Bar. Eine Bar ist ein Essen, oder? Essen ist nicht zu verlängern. Bar Bar erweitert Essen und Sie können nicht haben Fu verlängert Bar Rinde sendet Lebensmittel in einer Endlosschleife wie das. Als würde das auch nicht funktionieren. Das ist also ein Trick, den man nicht funktioniert. Und dann ist das letzte, denke ich, denke ich,wahrscheinlich auch ziemlich einfach. Wenn Sie sagen, dass Balkenobjekt gleich einem neuen Balken ist, was wird es drucken? Nun, das wird Bar drucken, oder? Also ist der Fall Nummer zwei derjenige, der derjenige ist, der sollte, wenn Sie dieses Recht haben, bedeutet das, dass Sie Polymorphismus verstehen. Und das ist toll, weil viele Leute, es dauert eine Weile Zehe. Stellen Sie das heraus. Wenn Sie mir nicht glauben, gehen Sie voran und geben Sie diesen Code in Eclipse oder was auch immer ich d ein. Sie verwenden und fummeln damit und sehen, ob Sie es zum Laufen bringen können und sehen, was passiert. Okay, nur eine Superklasse. Basierend auf dieser letzten Folie denken Sie vielleicht, nun, nun, denken Sie vielleicht, nun,das wird schon komplexer als Schnittstellen, die wir nicht diese Art von seltsamen, äh, wissen Sie, welche Methode führt Fragen aus, wenn wir Schnittstellen verwendet haben? Und ja, das stimmt. Es ist komplizierter. Und wenn eine Unterklasse mehrere Superklassen erweitern könnte, würde sie wirklich verwirrend werden. Und es gibt objektorientierte Sprachen wie C plus, zum Beispiel, wo Sie mehrere Superklassen haben können und es wirklich verwirrend wird. Und die Art und Weise, wie sie dies in Java lösen, war einfach zu sagen, Sie wissen, was Sie nur von einer anderen Klasse erben können. Dies ist eine grundlegende Einschränkung des Auftrags der virtuellen Maschine. Du kannst es nicht umgehen. Wenn Sie also Schnittstellen implementieren, können Sie so viele implementieren, wie Sie möchten und Sie können sie einfach durch Komma trennen. Also hier haben wir Klasse Foo implementiert ein Komma geworden Sehen Sie können so viele gehen, wie Sie möchten. Sie müssen alle diese Methoden implementieren, die in A B und C angegeben sind Wenn Sie jedoch eine andere Klasse erweitern, Sie bei der Verwendung der Vererbung erhaltenSie bei der Verwendung der Vererbungnur einen Schuss. Okay, Sie können also nur eine Superklasse erweitern. Man kann nicht sagen, d üblich, dass nicht funktioniert. Es spielt keine Rolle, wie gut du bist. Du fragst vielleicht, was ist mit Chuck Norris? Kann er mehrere Klassen erweitern? Und die Antwort ist nein, nicht einmal Chuck Norris kann es tun. Das ist also eine grundlegende Einschränkung von Java, Ordnung, wann sollten Sie Vererbung verwenden? , Im Gegensatz zu der Art,wie ich das hier motiviert habe, sollten Sie die Vererbung nicht ausschließlich verwenden, um Code wiederzuverwenden. Wenn man sich zwei Klassen anschaut und sagt: Oh, Oh, sieh mal, sie haben die gleiche Methode. Lasst uns Vererbung benutzen. Das ist nicht die richtige Idee. Okay, Uh, benutze es nur, wenn die Unterklasse ein Typ der Superklasse ist, richtig? wenn man sagen kann, dass Vorwärtskarte eine Art abstrakter Karte ist oder eine Bar ein Essen oder so etwas ist, muss es so funktionieren. Und noch strenger ist das, was sie das Listen-Scott-Substitutionsprinzip nennen oder auch als 100% -Regel bekannt. Und das heißt, die Unterklasse muss in der Lage sein, 100% von dem zu tun, was die Superklasse macht , ohne den Client ausflippen zu lassen. Richtig? Was in der Welt rede ich hier? Also lassen Sie uns Beispiel nehmen, Dies ist eine, die ein heißes Thema der Diskussion war 20 25 Jahren, als die Menschen gerade in Objektorientierung. Denn in der Mathematik sagen wir immer: Nun, Nun, ein Quadrat ist ein Rechteck, richtig? Und so könntest du sofort nachdenken. Okay, Goodman Square Klasse kann von Rechteck-Klasse erben. Und die Frage, die ich hier stellen möchte, ist wie, Ist das wirklich eine gute Idee für die Objektprogrammierung? Und ich werde hier argumentieren, dass neu das keine gute Idee ist. Und der Grund dafür ist das. Werfen Sie einen Blick auf diesen Code. Nehmen wir an, ich habe eine Variable R, die als Rechteck eingegeben wird, also weiß ich, dass das Objekt, auf das das zeigt, entweder ein Rechteck oder eine seiner Unterklassen ist , richtig? Ich weiß es nicht, weil ich nur Rechteck sind und ich muss es nicht wissen, weil es polymorph ist. Richtig? Also schau dir diesen Mantel an, ich sage Oder bekomme ich mit und ich ziehe den Strom heraus mit und dann sage ich, sind dot get area und ich ziehe den aktuellen Bereich heraus und dann setze ich die Breite des Rechtecks auf das Doppelte der Strom mit. , Was glaubst du,wird mit dem Gebiet geschehen, von dem, was du über Rechtecke weißt? Nun, wenn Sie ein Rechteck nehmen doppelt seine mit dem Bereich verdoppelt nach rechts. Aber was, wenn dieses Rechteck eigentlich ein Quadrat wäre? Angenommen, wir hatten diese Vererbung Beziehung Quadrate einen Subtyp von Rechteck und es war ein Rechteck oder gleich neues Quadrat. Und dann haben wir das getan. Wenn Sie die Breite eines Quadrats verdoppeln, verdoppelt sich die Höhe auch im Bereich Vierfacher. Okay, wenn dieser Code hier, der in Rechtecken geschrieben wird, erwartet, dass der Bereich verdoppelt wird er wirklich überrascht sein, wenn er sich vervierfacht, und es könnte einen wirklich schlechten Fehler verursachen. Wenn Sie also über polymorphe Beziehungen, Unterklassen-Superklassenbeziehungen in einem Objekt während einer Programmiersprache nachdenken , die Sie nicht mögenkönnen , die Sie nicht mögen , ist das ein anderer Satz von Einschränkungen als die mathematischen Einschränkungen über. Wissen Sie, Square folgt den gleichen Regeln wie ein Rechteck, und wenn Sie dies weiter untersuchen wollen, wenn diese Art von Intrigen Sie, gibt es eine Praxis namens Designed by Contract, die begann in dieser Programmiersprache namens Eiffel, wo Sie festlegen können, was sie Vorbedingungen nennen und Bedingungen im Grunde Verträge über die Methoden veröffentlichen , und Sie können auf der Ebene des Quellcodes angeben, wie Sie und Ihre Unterklassen handeln. Sie können in diesem Fall nachweisen, dass ein Quadrat den Vertrag eines Rechtecks nicht erfüllen würde. Okay, wir gehen hier nicht weiter hinein. Wenn das etwas ist, das Sie interessiert, gehen Sie nach oben entworfen von Vertrag, die Programmiersprache Eiffel, und es ist absolut faszinierend, wenn dieses Zeug scheint interessant für Sie. Aber in Bezug auf die tägliche pragmatische Programmierung, ja, Sie müssen nicht wirklich in OK eintauchen, aber jetzt haben Sie vielleicht eine Frage im Kopf. Es ist wie, OK, großartig Also müssen wir Wertmethode erhalten, die Ihre gemeinsame Implementierung ist, die alle Unterklasse verwendet. Aber was ist, wenn ich eine andere Methode habe, die eher wie eine Schnittstelle ist, wo ich sicherstellen möchte , dass alle meine Unterklassen diese Methode haben, aber ich kann nicht. Es gibt keine Standardimplementierung. Es ist wirklich eher wie eine Schnittstellenmethode. Also hier sage ich, dass Oh meine Karte, Nein, Mit ihrem speziellen oder nicht, sie alle einen Boolean auf die spezielle Methode zurückgeben. Aber sind sie besonders oder unhörbar? Es hängt von der Art des Wagens, so dass die Methode nach unten in Thean Plantation der Methode gehen muss nach unten in den spezifischen Typ gehen. Großartig. Also, wie machst du das? Nun, das nennen wir abstrakte Methoden. Okay, also haben wir hier eine abstrakte Methode, und zuerst müssen wir die Klasse als abstrakt markieren. Das bedeutet, dass die Klasse nicht vollständig ist, und der Grund, dass sie nicht vollständig ist, ist, dass wir eine abstrakte Methode haben. Also hier ist das abstrakte Schlüsselwort für die Methode, das besagt, dass ich diese Methode deklariere, aber ich habe keine Implementierung, die ihr anbietet, Schau, wie es mit nur einem Semikolon endet. Es sieht genau wie eine Schnittstellenmethode aus, mit Ausnahme des Schlüsselworts abstrakt und tatsächlich, in einer Schnittstelle, alle Methoden oder abstrakt. Wir müssen einfach nicht die Schlüsselarbeit hinzufügen, denn wenn der Compiler das sieht, ist es eine Schnittstelle, die sie automatisch als abstrakt markiert. Aber in einer Klasse müssen Sie abstrakt sagen, und wir kommen dazu, wenn wir eine Methode in einer Klasse haben, die abstrakt ist, gibt es keine Implementierung dafür. Also müssen wir die Klassen abstrakt markieren, um dem Compiler zu sagen. Hey, du kannst nichts davon erschaffen, denn wenn du jemals anrufst, wüssten wir nicht, was wir tun sollen, oder? Wenn Sie also eine Nab Strack-Klasse erweitern und jetzt sehen, warum ich die abstrakte Karte der Superklasse aufgerufen habe, müssen Sie Implementierungen für alle abstrakten Methoden bereitstellen. Wenn Sie nicht denken, dass Sie Ihre eigene Klasse als abstrakt markieren müssen, also sagen wir, Sie hätten nicht in seinem Special hier. Dann würden Sie sagen, öffentliche abstrakte Klasse Vorwärtskarte erweitert abstrakte Karte, aber Sie müssen das eine oder andere tun. Sie müssen die Schnittstellen implementieren, wo Sie Ihre Klassen abstrakt markieren müssen. So abstrakte Klassen. Was ist mit ihnen los? Also zuerst da und sie sind genau wie Schnittstellen, in denen sie nicht sein können. Stattdessen hat sie es gegessen. Okay, Allerdings gibt es anders als Unterzustände sind Schnittstellen darin, dass sie Zustand haben können. Also sahen wir in unserer abstrakten Kartenklasse. Es hat diese Wertattribute und hat eine Methode namens get value, die auf dieses Attribut zugreifen kann, genau wie eine reguläre Klassenschnittstellen das nicht tun können. Okay, also können abstrakte Klassen abstrakte Methoden haben. Das ist genau wie Schnittstellen. Und sie können auch konkrete Methoden. Beton ist das Gegenteil von abstrakt. Es bedeutet, dass die Methode, die eine Implementierung hat, die wie Standardmethoden und Schnittstellen ist, hier immer noch einen Unterschied gibt. In dieser Schnittstelle können Methoden nicht auf einen Zustand des Objekts zugreifen, oder? Sie haben keine Attribute wie Klassen. In Ordnung. Jetzt hören Sie vielleicht das Wort Vererbungshierarchie. Dies ist eine Vererbungshierarchie, und dies ist eine besonders häufige, wo oben auf einer Schnittstelle. Okay, sagen wir, unsere Karte, äh, Box hier stellt eine Schnittstelle dar, und die Schnittstelle gibt alle öffentlichen Methoden an, die diese ganze jeder in dieser Hierarchie jetzt dem nächsten entsprechen muss Ebene nach unten. Wir haben eine abstrakte Klasse, weil einige der Methoden in diesem Fall Wert erhalten, eine Implementierung haben, die in allen Unterklassen gemeinsam ist. Und so haben wir den gemeinsamen Code in die abstrakte Klasse verschoben, so dass er nur einmal und dann unten eingegeben wird. Wir haben die konkreten Klassen angegeben, die alle spezifischen Implementierungen von allen Methoden bereitstellen , die in diesem Fall übrig sind, Theis Special Methode, richtig? Und so, übrigens, zurück zur Terminologie. Hier verwenden Menschen Vorfahren und Nachkommen. Also aus der Sicht, sagen wir eine Rückwärtskarte. Die Karte ist ein Vorfahre, oder ? Abstrakte Karte ist die übergeordnete Klasse Karte ist einer seiner Vorfahren und die gleiche Sache von der Karte, dass das Kind abstrakte Klasse abstrakte Karte ist, aber die Nachkommen sind Vorwärtskarte in umgekehrter Karte um, Nachkommen. Wirklich. Ich meine, es ist wirklich wie ein Stammbaum, wie all deine Kinder und Enkel und Urenkel deine Nachkommen sind und deine Eltern und deine Großeltern und deine Urgroßeltern sind deine Vorfahren , und wir verwenden die Wörter auf die gleiche Weise ein Objekt während, die Leute sagen, Sie wissen, Ihre Großelternklasse. Manchmal hört man Leute sagen, dass es Enkelkindklasse gibt. Alles klar, nichts zu reden ist Sichtbarkeit. Jetzt. Jetzt haben wir diese Schlüsselwörter öffentlich und privat verwendet. Diese Luft als Zugriffsebene Modifikatoren im Auftrag als Fleck bezeichnet. Wenn wir über Vererbung reden, bringen wir eine Maurin mit, die „Geschützt“ heißt. haben wir noch nicht gesehen. Das werden wir in nur einer Minute sehen. Und wofür sind diese Dinger? Wir haben dieses Problem bislang durch diese Klasse gerückt, aber das ist eine Art Sicherheitsmerkmal, die entweder den Zugriff auf den Code gewährt oder blockiert, je nachdem, wo der zugreifende aber das ist eine Art Sicherheitsmerkmal, Code Lippen hat. die entweder den Zugriff auf den Code gewährt oder blockiert, je nachdem, wo der zugreifende Alles klar, wir werden sehen, wie das in der nächsten Zeile funktioniert. Ich möchte Sie nur wissen lassen, dass es mit dem, was ich Ihnen über Sichtbarkeit zeigen werde, noch mehr zu reden gibt. Aber das tun wir nicht. Wir müssen zu diesem Zeitpunkt nur über öffentliche, private und geschützte Themen sprechen. Aber im nächsten Teil, in Teil zwei der Klasse. Nun, es gibt einen anderen Weg. Es gibt eine andere Ebene des Zugriffs, über die wir reden können. Okay, hier ist eine Klasse mit drei Mitgliedern, ihre Attribute privat, öffentlich geschützt. Jetzt habe ich hier nur Attribute gezeigt, weil es kompakter ist, auf die Folie zu setzen. Aber Methoden können auch öffentlich, privat, privat, geschützt sein. Okay, das gilt also für alles, was innerhalb einer Klasse ist. Es kann immer mit einer Art Zugriffsebene Modifikator markiert werden. Was meinen sie? In Ordnung, also ist es etwas als privat markiert, das nur aus Code innerhalb der Klasse sichtbar ist. Sie sehen also, wie wir diese Klasse haben, eine Klasse, und es gibt geschweifte geschweifte Klammer. Jeder Code, der zwischen diesen geschweiften Klammern geschrieben wird, kann diese Variable sehen. Sie können tatsächlich auf den Wert davon zugreifen, den Wert davon ändern, den Wert davon lesen. Jeder Code, der außerhalb dieser geschweiften Klammern ist, wie in einer anderen Klasse irgendwo, kann nicht darauf zugreifen. Also ist es, ah, ah, versteckt in seinem Privaten für diese Klasse. Okay, übrigens, dieses Wortmitglied, das irgendwie aus dem Nichts aufgetaucht ist. Wir haben Attribute wie diese. Wir haben Methoden insgesamt. Diese Luft genannt Mitglieder jede Art von Entität, die innerhalb der Klasse lebt, wird als Mitglied dieser Klasse bezeichnet . Es ist irgendwie ein Oberbegriff. Alles klar, geschützte Mitglieder können sehen, sind für jeden sichtbar, der private Methoden sehen kann. Es gibt also Mitglieder. Sie sind alle innerhalb der geschweiften Klammern der Klasse innerhalb des Bereichs dieser Klasse sichtbar. Aber geschützte Mitglieder sind auch in den Unterklassen sichtbar, oder? Wenn Sie also eine andere Klasse und die öffentliche Klasse erstellen, erweitert meine Klasse eine Klasse, würden Sie in der Lage sein, direkt auf das Namensattribut zuzugreifen, das für Sie sichtbar ist. In Ordnung. Sie wären nicht in der Lage, auf die Code-Attribute selbst als Unterklasse zuzugreifen, da sie privat ist , Okay, und dann öffentlich ist, was Sie vielleicht denken. Es ist von überall sichtbar. Egal, ob Sie sich in der Klasse oder außerhalb der Klasse der Unterklasse oder einer anderen Klasse befinden, Sie könnten das name-Attribut sehen und ihm Werte zuweisen und den Wert und solche Dinge lesen . Daher verwenden wir die Sichtbarkeitsmodifikatoren. Wir versuchen, den größten Teil unseres Staates privat zu machen, weil der Staat im Allgemeinen konsistent gehalten werden muss , und wir wollen nicht, dass externer Code direkt mit unserem Staat herumläuft weil sie ihn wahrscheinlich richtig brechen werden. Und wenn wir darüber nachdenken, eine Klasse zu entwerfen, die unterklassifiziert werden soll. Wir verwenden geschützte Methoden und geschützte Attribute ziemlich viel, damit die Unterklassen auf die Interna der Klasse zugreifen können , um ihr Verhalten zu ändern. Richtig. Das Entwerfen von Klassen, um robust unterklassifiziert zu werden, ist ziemlich fortgeschrittene Fähigkeiten. Und es gibt viele Bücher, die Sie darüber lesen können. Eine Menge Literaturliteratur da draußen. Okay, das ist eine Menge Zeug. Es gibt noch mehr zu reden, aber lassen Sie uns hier eine Pause machen und ein wenig davon in unserem Projekt machen, damit Sie sehen können, wie es funktioniert. Es gibt noch mehr zu reden, aber lassen Sie uns hier eine Pause machen und ein wenig davon in unserem Projekt machen, damit Sie sehen können, wie Und hoffentlich wird das dazu beitragen, in Ihrem Gehirn ein wenig zu zementieren. Also haben wir unser Projekt in einem schlechten Zustand gelassen, in dem wir den Code von der Vorwärtskarte in die Rückwärtskarte kopiert und eingefügt haben, und wir haben eine Zeile geändert. Das ist nur ein schrecklicher Weg Teoh Code. Reparieren wir das jetzt, also gehen wir in die Übung. Was wir tun werden, ist eine abstrakte Superklasse für die Karten zur Verfügung zu stellen, und wir werden den ganzen gemeinsamen Code in die abstrakte Superklasse verschieben, damit wir ihn nicht überall duplizieren müssen. Alles klar, es ist ein bisschen knifflig, wie man das macht. Vielleicht möchten Sie vielleicht den Übungsnotizen folgen, wenn Sie denken, dass Sie es ohne das tun können , haben Sie es. Und wenn wir fertig sind,kommen wir zurück zu den Folien, und es gibt noch ein paar Themen, die wir behandeln müssen. Und wenn wir fertig sind, kommen wir zurück zu den Folien, Wenn Sie also nicht mit den Übungen folgen, stellen Sie sicher, dass Sie mit dem Video bleiben und ein wenig weiterleiten, um zum Rest der Folien zu gelangen . Aber für jetzt, lasst uns in mein I D gehen was hier ist, Okay, ich brauche die Updates nicht und lasst uns einen Blick darauf werfen, was Project sagt. Das erste, was wir tun werden, ist, die Wertattribute zu verschieben. Ordnung, also hier haben wir die Arbeit hier eingebracht. Wir werden eine neue Klassik erstellen, eine Klasse namens abstrakte Karte. Wir werden die Kartenschnittstelle implementieren. Uh, das wird uns einen Haufen rüber geben, und dann machen wir einen Abstract und verbinden ihn dann mit den Unterklassen, also ist das ein ziemlich großer Teil der Arbeit, mit dem wir anfangen können. Wir werden die neue Klasse namens abstrakte Karte erstellen? Nein, wenn Sie suchen, sehen Sie, dass ich das Häkchen hier setzen und es abstrakt machen könnte. Ich werde das nicht tun, nur weil ich Ihnen einige Dinge im Editor zeigen möchte, während wir gehen. Aber im Allgemeinen würden Sie wahrscheinlich weitermachen und das tun. Okay, also haben wir eine abstrakte Karte, und wir sagten was? Wir wollen, dass dies Auto zu implementieren. Alles klar, Großartig. Und hofft, Komplimente Karte. Und jetzt bekommen wir eine große unscharfe rote Linie, und es sagt, uh, uh, und es sagt, uh, abstraktes Herz muss bewohnen haben, haben die geerbte abstrakte Methodenkarte dot bewegt sich wie, Nun, ich bin nicht bereit dafür noch, also lasst uns das einfach zu einer abstrakten Klasse machen, okay? Jetzt kompiliert es. Das ist genau das, worüber wir auf den Folien sprechen. Entweder müssen Sie die Methode implementieren, oder Sie müssen Ihre Klasse abstrakte Vorwärtskarte in der Rückwärtskarte deklarieren. Jetzt, statt der Umsetzung Karte, gehen abstrakte Karte zu verlängern. Und wieder gibt es ein S da. Das ist richtig. - Karte In Ordnung. Ähm, das wird es retten. Geh rüber zur Rückwärtskarte. Wir brauchen hier keine Geräte Karte mehr, weil abstrakte Karte Karte implementiert. Okay, wir befinden uns jetzt in einer Vererbungshierarchie, wie wir es auf den Folien gesehen haben. Und die Tatsache, dass Rückwärtskarte erstreckt abstrakt Hard. Eine abstrakte Karte implementiert Karte bedeutet, dass die Karte immer noch einer unserer Vorfahren Super-Typen ist, oder ? Also müssen wir es nicht nochmal deklarieren. Sie könnten es wieder in verschiedenen Karten deklarieren. Man könnte sagen, äh erweitert abstrakte Karte Verbesserungen hart. Aber das ist überflüssig. Und im Allgemeinen werden Sie das nicht sehen. Okay, zurück zu unseren Anweisungen hier. Also haben wir das getan und es steht: Welchen gemeinsamen Code können wir bewegen? Nun, wir können die Wertattribute verschieben. Es ist also sein Verschiebungswertattribut und lösche es aus den beiden Schrittklassen. Also, anderen Worten, wir reden darüber, genau hier sind wir. Vielfältige Karte Lassen Sie uns das jetzt ausschalten. Das wird ein paar Sachen brechen. Also setzen Sie das da und wir gehen zur Vorwärtskarte und sagen: Ja, Ja, das wollen wir nicht. Dies ist duplizierter Code. Lasst uns es loswerden. Ok, großartig. Und es steht, wer? Wir haben eine Reihe von Fehlern erstellt. Also, worum geht es in der Luft? Es gibt Luft über den Unterklassencode, der versucht, auf diesen Wert zuzugreifen, oder? Also sagen wir hier „Wert“. Wert hier schätzen ihre, aber es kann es nicht mehr sehen. Richtig? Also, was müssen wir tun? Nun, das liegt daran, dass wir es als privat gelassen haben. Also ändert man sich zu geschützt Sagen Sie das. Und jetzt haben wir eine Vorwärtskarte und wir haben Vers-Karte und alles funktioniert jetzt gibt es eine andere Sache, die wir sehen. Und das war in den Folien, über die wir gesprochen haben. Wir auch Wert Methode zu erhalten. Also lasst uns das auch bewegen. Lassen Sie uns wieder auf abstrakte Karte gehen und wir haben diese get value Methode. Und das haben wir da. Und dann können wir es auch von der Vorwärtskarte entfernen. Okay, also werden wir jetzt die Duplikation loswerden. Das war trivial, aber trotzdem ist es Duplizierung. Großartig. Alles klar, die Move-Methode. Das ist jetzt ein bisschen schwieriger. Was wir hier haben, ist diese Move-Methode in Forward-Karte, und diese Move-Methode in Reverse-Karte ist genau das gleiche. Außer für diesen Methodenaufruf, richtig? Und so können wir es nicht in die Superklasse verschieben, wie es ist. Variante müssen wir uns irgendwie damit auseinandersetzen. Das ist richtig. Smack tupfen Mitte in der Mitte unserer Methode hier und was sie in den Klassen empfehlen , es ist hier. Übungsnotizen ist es, eine neue Methode namens Finden Sie das folgende Quadrat, angesichts der aktuellen Punktzahl erstellen. Also, wovon rede ich hier? Also werde ich hier sein. Ich habe diesen Abschnitt hervorgehoben. Ich werde sagen, extrahierte Methode hier. Mal sehen, ob ich diese extrahierte Methode zum Arbeiten bringen kann. Rufen Sie es an. Finden Sie folgendes Quadrat. Ok. Sagt die private Methode, die hier genannt wird, und dann kann ich dasselbe in der Ford-Klasse nach vielen Quadratmetern tun. Also ich okay, ich weiß, was ich finde, ist, dass diese Klasse in dieser Klasse, äh, diese Move-Methode und diese Move-Methode genau die gleichen sind. Richtig? Also sagt, mach das Gleiche im umgekehrten Quadrat und überprüfe, dass die Move-Methode genau gleich ist . Und lassen Sie es in die Superklasse verschieben. Okay, jetzt kannst du auch erwarten, dass dich das einigen Fehlern überlässt, oder? Also, aber lasst uns das zuerst in Gang bringen. Nehmen Sie das und wir gehen auf abstrakte Karte und wir setzen die Move-Methode hier oben. Ok. Großartig. Nun, also haben wir sofort ein Problem. Nun, halten Sie fest, bevor wir das tun. Hab es da. Gut. Rückwärtskarte Nehmen wir die Move-Methode heraus. Denn jetzt ist es ganz nah. In Ordnung. Sieht gut aus. Und das ist gelb. Es sagt: Hey, Hey, niemand nennt diese Methode und eine abstrakte Karte. Es sagt, ich weiß nicht, was diese Methode ist. Also wisst ihr, was die Antwort darauf ist? Wir müssen eine abstrakte Methode in die Superklasse setzen. Richtig. Was wir hier sagen, ist, dass alle Unterklassen, die wir mir sagen müssen, wie man zum folgenden Platz kommt. Manchmal geht man vorwärts, manchmal geht man zurück. Vielleicht gibt es andere Implementierungen, die Sie sich vorstellen können. Aber was wir hier tun werden, ist geschützt, weil wir wollen, dass das in diesem abstrakten Quadratsichtbar abstrakten Quadrat ist. Nach dem Quadrat. Uh, Quadrat kommt. Ich schätze, wir könnten es Position nennen. Es spielt keine Rolle. Ok, großartig. Also jetzt meine abstrakten Kartenklassen glücklich? Genau so würdest du es tun. Aber jetzt waren diese beiden Typen kaputt. Was beschweren sie sich darüber? Nun, Sie können die Sichtbarkeit nicht reduzieren. Das bedeutet also, dass diese Methode geschützt ist. Äh, Sie können eine geschützte Methode überschreiben, die geschützt ist, um sie geschützt zu halten. Oder du könntest es öffentlich machen. Aber du kannst es nicht verstecken. Du kannst es nicht privat machen. Also müssen wir dies auf geschützt ändern. Wir wussten das nicht, als wir anfingen, aber das ist okay. Und während wir dabei sind, sagte das die Überschreibung, nur um sicherzustellen, dass wir nicht versaut haben, okay, es wurde nicht rot. Das heißt, wir haben es richtig geschrieben und das Gleiche hier. Machen wir das schützend und lassen Sie uns hier rein- und rüber. Okay, gut. Jetzt haben wir all diese Dinge. Uh, wir haben die Über-eine Anmerkung. Lassen Sie uns unser Spiel laufen, nur um sicherzustellen, dass es immer noch funktioniert, dass wir nichts kaputt gemacht haben. Okay, da gehen wir. Auf schauen wir uns unsere Konsole an. Wir sehen, dass es jetzt richtig funktioniert, da die Technik, die wir hier verwendet haben , woSie , wo eine abstrakte Methode erstellen, die von der Mitte der Superklassenmethode aufgerufen wird. Es ist eigentlich ein Designmuster, das als Template-Methodenmuster bezeichnet wird, wobei die Verschiebungsmethode für alle Unterklassen gleich ist. Aber es gibt einen Schritt mitten in der Mitte, wie Sie wissen, welches der nächste Platz ist, auf den Sie gehen können. Das variiert je nachdem, ob es sich um eine Forward-Karte oder um Ihr Narben-Recht handelt. Dies wird also die Template-Methode genannt. Verschieben ist eine Vorlagenmethode. Dies wird als feine fallende Noten bezeichnet, eine Hook-Methode genannt. Und dann implementieren Sie in den Unterklassen die Hook-Methode, richtig? Also ist man vorheriges Quadrat, wenn man rückwärts geht, wenn man vorwärts geht, um das nächste Quadrat zu gehen. Das ist also ein ziemlich raffiniertes Objekt. Der Iran hat dieses kleine Problem umgesetzt. Wir haben diese komplizierte Move-Methode, die jetzt an einem Ort in der Superklasse ist. Wir haben keinen Schnitt und Paste, und die Rückwärtskarte in der Vorwärtskarte enthält jetzt eindeutig. Sehr nett. In Ordnung, gehen wir zurück und lassen Sie uns unsere Übung beenden. Also haben wir hier noch ein paar weitere Themen zu besprechen. Also, zunächst einmal, ähm, eine Sache, die wir noc 15. 11-Schlussfolgerung: Okay, willkommen zum Abschluss von Teil eins von Professional Java, Kapitel 11. Also herzlichen Glückwunsch. Sie haben Teil eins dieser dreiteiligen Serie beendet, in der wir über grundlegende Java- und Objektorientierung gesprochen haben , nur um sich an all die Dinge zu erinnern, an die Sie gearbeitet haben. Sie haben viel harte Arbeit in diesem Teil geleistet. Wir gingen über die wir installieren Job und gingen über die grundlegende Architektur und Java-Ökosystem. Wir sprachen über Entwicklungsumgebungen und installierte eine von denen für unsere Projekte nach dem hallo World Project und ein wenig Überprüfung der Syntax-Highlights und Fummeln damit , sprang wir in das Fleisch von diesem Teil, der war Klassen und objektorientiertes Design, das wir verwendet haben, um zu erhöhen. Wir haben Kollektionen verwendet. Wir haben polymorphische polymorphe Aufrufe mit Schnittstellen erstellt, und dann haben wir diese erweitert, um Vererbung und abstrakte Klassen zu verwenden. So haben Sie bisher einen großen Bruchteil der objektorientierten Leistung von Java gesehen. Wenn Sie noch an Bord sind und Sie etwas oder Teil zwei lernen möchten, wird an der Mechanik von Java arbeiten . So sind die Kernsprachmerkmale, die noch Teil der Struktur der Sprache sind, aber nicht wirklich objektorientiert per se sind. Und dann werden ein Haufen der Kernbibliotheken, die die Schiffe mit einigen der wichtigsten beschäftigen, sich ansehen, weil diese Luft wirklich integraler Bestandteil Ihrer täglichen Arbeit ist. Wenn das für dich gut klingt, sehe ich dich in Teil zwei. Und vielen Dank, dass du Teil eins durchgekommen bist. Ich weiß es wirklich zu schätzen. Ich hoffe, das war interessant für Sie. Und wir sehen uns mittlerweile in Teil zwei.