Nun, der beste Weg, um zu lernen, besteht darin, Code tatsächlich in Aktion zu sehen, also genug Theorie, lass uns tatsächlich unsere
eigene Klasse programmieren.
Ich lösche einfach alles und fange von vorne an.
Und sagen wir, wir arbeiten für eine Spielefirma und diese Spielefirma hat all diese Zaubererspiele, die
sie entwickeln wollen, fast wie Harry Potter.
Wie können wir nun darüber und objektorientierter Programmierung nachdenken?
Nun, das erste, was wir brauchen werden, ist, dass die Spieler schreiben.
Jeder Spieler hat einen Charakter, den er spielen muss.
Also erstellen wir hier eine Klasse und nennen sie Spieler.
Beachten Sie auch hier die Namenskonvention, da es sich um eine Klasse handelt.
Und.
Eine andere Regel ist, dass Sie normalerweise Singular und nicht Plural sein wollten, also können Sie keine Spielercharaktere
sagen, weil ich meine, es ist eine Blaupause von dieser Blaupause.
Wir werden viele Charaktere erschaffen, aber das werden Objekte sein.
Also Spielercharakter, einzeln im Singular.
Nun, hier drin werde ich ein paar Dinge tun und ich werde Sie warnen, das wird zunächst verwirrend
aussehen.
Aber ertrage es mit mir.
Ich werde es erklären.
Wir werden einen Unterstrich definieren, Unterstrich darin, Unterstrich, Unterstrich.
Jetzt hier drin sagen wir selbst.
Und dann gib ihm einen Namen, den Namen des Charakters von hier, wir werden Callon noch einmal machen.
Und sagen Sie einfach den Namen von Self Doc.
Entspricht dem Namen.
Oh, Junge, was ist hier gerade passiert?
Auch hier halte ich es zurück, zu erklären, was dies bewirkt, und schreibe einfach ein paar weitere Codezeilen, damit es ein
bisschen mehr Sinn macht.
Ich werde hier eine weitere Methode schreiben und, sagen wir, eine Run-Methode definieren, die jeder
Spieler hier ausführen kann.
Ich werde noch einmal dieses seltsame Selbstwort haben und dann einfach hier drinnen, sagen Sie Print.
Ron.
In Ordnung, also habe ich gerade diese Klasse erstellt, sie ist immer noch irgendwie verwirrend, wir wissen nicht wirklich,
was das ist, was das Selbst ist und dieser ganz neue Look.
Aber ignorieren wir das für eine Sekunde und sagen wir einfach.
Spieler.
Man wird den Spielercharakter gleichstellen und diesen Spieler instanziieren.
Damit wir den Player drucken und sehen können, was mit diesem Player los ist.
Wenn ich klicke, laufe.
In Ordnung, ich bekomme einen Fehler, es ist ein Tippfehler, sagt INET, dass ein erforderlicher Positionsargumentname fehlt.
In Ordnung, machen wir hier eine Pause und sehen, was hier passiert.
Sie sehen dieses Inet.
Methode ist eine spezielle Methode.
Sie sehen hier die beiden Unterstreichungen.
Dies wird als Dundar-Methode oder magische Methode bezeichnet, und wir werden ein spezielles Video dazu haben.
Aber wenn wir eine Klasse erstellen, sehen Sie dies normalerweise ganz oben.
Und dies wird oft als Konstruktormethode oder Init-Methode bezeichnet.
Und das ist bei jeder Instanziierung automatisch kalt.
Denken Sie daran, Instanziieren bedeutet, dass wir die Klasse aufrufen, um ein Objekt zu erstellen.
Wenn ich dies tue, wird automatisch alles ausgeführt, was in diesem Codeblock enthalten ist.
Wenn ich dies durchführe, sehen Sie, dass ich um 9:00 Uhr hier auf Zeile 9 die Luft online bekomme, und
als ich versuchte, den Spielercharakter zu instanziieren.
Es läuft darin und versucht dann, den autodidaktischen Namen gleich dem Namen zu machen, aber das Problem ist, dass
ich es nicht einem Argumentnamen gebe, und das liegt daran, dass wir, wenn wir ihn aufrufen, alles akzeptieren, was nach
self kommt als Parameter.
Das heißt, wir müssen ihm einen Namen für diesen Charakter geben, also sagen wir, der Name ist Cindy, wenn ich hier auf Ausführen klicke.
Gut.
Es sieht so aus, als hätte ich einen Spielercharakter, und tatsächlich zeigt es mir sogar, dass es sich um
ein Objekt an diesem Speicherort handelt.
Auf unseren Computern befinden sich hier also der Spieler, der Charakter, der Spieler eins.
Nun, sehr cool, aber was ist dieses Self-Keyword und wofür ist dieser Code online?
Dies ist eine Möglichkeit für uns zu definieren, was sich selbst auf den Spielercharakter bezieht. Es bedeutet, hey, dies bezieht sich auf
diesen Spielercharakter, den wir erstellen werden.
Spieler eins, und ich möchte, dass der Name der Selbsttäuschung gleich dem Parameternamen ist.
Also, wenn ich hier den Namen ihrer Tochter spiele und auf Laufen klicke.
Ich bekomme Cindy und warum ist Cindy?
Nun, weil ich ihr den Perimeter-Player-Charakter gegeben habe und als ich ihn instanziiert habe, habe ich den Namensparameter
übergeben.
Der Standardparameter ist self, wenn ich es tue.
Und in Klassen sehen Sie hier, dass der Standard, der immer der erste Parameter ist, wenn wir eine Methode
definieren, self ist.
Und jetzt gebe ich dem Autodidakt meinen Namen, hey, was ist, wenn ich das hier entferne und auf Ausführen klicke?
Sie sehen, dass Objekt hat keinen Attributnamen.
Denn damit ich sagen kann, hey, ich möchte, dass der Spieler einen Namen hat, muss ich Autodidakt sagen, weil sich
selbst auf Spieler 1 bezieht.
Wenn Sie sich also erinnern, als wir eine Liste hatten, mussten wir DOT machen und dann sagten wir, hängen Sie an, was jemand
geschrieben hat, diesen Append-Code.
Und im angehängten Code heißt es self dot.
Nehmen wir an, zur Liste hinzufügen und self bezieht sich auf das, was sich links vom Punkt befindet.
Auf diese Weise ermöglicht es uns, einen Verweis auf etwas zu haben, das in diesem Fall noch nicht erstellt wurde.
SPIELER eins Und lassen Sie sie wissen, dass, wenn es erstellt wird, wenn wir instanziieren,
ich möchte, dass Sie sicherstellen, dass Spieler eins dieses Namensattribut hat, damit, wenn ich einen anderen Spieler und Spieler
erstelle, Tom der Spieler sein wird.
Wenn ich den Namen des Players ausdrucke und auf Ausführen klicke.
Ich habe zwei verschiedene Spieler mit zwei verschiedenen Namen.
Ich war in der Lage, denselben Code zu verwenden, aber unterschiedliche Werte zu haben, weil self jedes Mal, wenn ich dies
instanziiere, sich auf den ersten Spieler eins, dann den ersten zweiten Spieler auf jetzt selbst als eines dieser Dinge bezieht.
Das wird wirklich sehr schwer zu verstehen.
Und Sie müssen sich dieses Video möglicherweise ein paar Mal ansehen.
Aber der Schlüssel hier sollte Ihnen klar sein.
Das heißt, ich kann nur einmal Code schreiben.
Denken Sie an unsere Hauptauslosung.
Ich wiederhole mich nicht und kann es dynamisch machen, indem ich sage, dass diese Daten, die wir für das Objekt
erstellen, dynamisch sind und sich ändern werden, je nachdem, was wir ihnen geben.
Damit ich verschiedene Spieler mit unterschiedlichen Attributen erstellen kann.
Aber verwenden Sie immer noch den gleichen Code.
Nun, ich kann hier mehrere Dinge haben, ich kann zum Beispiel H haben, und
noch einmal kann ich sagen, dass Autodidaktalter gleich Alter ist und dann muss Cindy bestehen, sagen wir 44 und Thomas, 21.
Damit hier noch einmal, wenn ich H.
Sie haben unterschiedliche Attribute.
Denken Sie also daran, dass dies Attribute oder Eigenschaften sind, die diese Objekte haben, und Sie können darauf zugreifen, indem Sie
die Punktnotation ausführen und dann auf die Eigenschaft selbst zugreifen.
Sie sehen, dass ich hier keine Klammern habe, weil es keine Methode ist.
Es ergreift keine Maßnahmen.
Es heißt einfach, hey, ich möchte auf dieses Attribut zugreifen.
Wenn ich hier punktiere, sagt es mir tatsächlich mein Redakteur und wir haben das Symbol für, hey, Sie haben Zugriff auf das
Attribut, das Alter und den Namen.
Und tatsächlich habe ich auch Zugriff, um die Methode auszuführen, sodass ich sie ausführen kann, wenn ich klicke.
Denken Sie daran, eine Ausführung ist eine Methode, also bekomme ich diese gebundene Methode, aber sie gibt nichts aus, sie führt
keine Aktion aus.
Also müssen wir noch einmal die Klammern hinzufügen, schlagen, ausführen.
Und sieh dir das an, ich kann laufen, dann bekomme ich keine, dann einundzwanzig, warum bekommen wir das?
Nicht, weil dies eine Funktion ist, die nichts zurückgibt, wenn eine Funktion nichts zurückgibt.
Was bekommen wir?
Wir bekommen nicht.
Also kann ich vielleicht einfach sagen Return done, wenn ich auf "Run" klicke.
Da gehst du.
Wir haben Don eins laufen lassen.
Nun, eine letzte Sache, bevor ich dieses Video beende, das Interessante hier ist, wenn ich Spieler eins und dann Spieler
zwei mache, das drucke und auf Ausführen klicke.
Sie werden sehen, dass ich den Spielercharakter bekomme.
Aber das Objekt, jedes dieser Objekte, Spieler eins und Spieler zwei, sind ein anderer Speicherort.
Ich kann also einen Code, eine Blaupause verwenden, um mehrere Spieler zu erstellen, aber diese Spieler sind
nicht gleich.
Sie sind nach derselben Blaupause entstanden, aber sie leben an verschiedenen Orten in der Erinnerung.
Und das macht Sinn, oder?
Wir wollen nicht, dass Tom und Cindy derselbe Spieler sind.
Sie sind zwei verschiedene Spieler.
Auf diese Weise können wir die Dinge sicher aufbewahren.
Und alles, was ich zum Beispiel Spieler 2 hinzufüge, sagen wir, Spieler 2 kann jetzt angreifen.
Und Angriff wird nur eine Eigenschaft sein, die jetzt 50 ist, wenn ich hier nicht angreife, das hat auch der
Spieler.
Angriff, aber wenn ich einen Wyandotte-Angriff spiele.
Ich bekomme einen anderen.
Objekt hat kein Attribut Angriff.
Ich hoffe, Sie beginnen die Macht von Klassen zu erkennen, auch wenn es zunächst schwer zu verstehen
sein mag, die Macht wird offensichtlich, wenn wir in der Lage sind, diese Blaupause zu erstellen, die wir jetzt immer und
immer wieder verwenden können, um unsere eigenen Objekte zu erstellen .
Lassen Sie uns im nächsten Video mehr erkunden.