Willkommen zurück, Scott Stanley hier. In diesen Lektionen Wir werden einen Blick auf den Imperativ werfen versus deklarative Programmierung, Lambdas, funktionale Schnittstellen und Funktionen auf höherer Ebene. Also in dieser Lektion, werden wir uns speziell ansehen Was ist imperative Programmierung? Was ist deklarative Programmierung? So sehen wir hier, Es gibt ein paar verschiedene Programmierparadigmen, ein paar Ansätze zur Lösung von Programmierproblemen. Den imperativen Ansatz gibt es vermutlich schon länger. Es definiert ein Programm als eine Folge von Anweisungen die den Programmstatus ändern. Sie haben also normalerweise Arbeitsvariablen und Schleifen und normalerweise ziemlich viel Code. Während andererseits deklarativ ist ein Ansatz, der die Logik einer Berechnung ausdrückt ohne seinen Kontrollfluss zu beschreiben. Es ist wie eine Deklaration was du gerne hättest und es einfach so sein lassen, während Imperativ die Ärmel hochkrempeln ist und schreiben Sie eine ganze Menge Code. Und dann wollen sie, dass wir dafür sorgen, dass wir hier sehen dass eine Funktion einen Wert zurückgeben soll basiert nur auf dem Argument und es sollte keine nebenwirkungen haben. Ich meine, es ist die Lehrbuchdefinition einer Funktion. Wenn wir über deklarative Programmierung sprechen, Funktion ist das nächste dass wir anfangen werden, darüber zu sprechen. Wir haben eine Liste von Studententypen, vier Studenten, schätze ich Scott, Tyler, Chris und Edward. Und dann vor jedem Test in der J-Unit-Suite hier Am Ende haben wir eine brandneue Liste von Schülern für jede Prüfung. Auf diese Weise gibt es also keine Reste zwischen laufenden Tests. Die Tests sind auf diese Weise völlig unabhängig. Das ist es also. Das erste, was wir betrachten, ist eine Suche die den imperativen Stil verwendet. Und so werden wir alle Schüler durchlaufen und wir versuchen zu bestimmen wenn derjenige, den jemand sucht, in diesem Fall, sie wollen wissen, ob Eddie Van Halen hier drin ist, sie wollen wissen, ob es existiert. Da ist also unser boolescher 'found = false', also fangen wir pessimistisch an. Nein, es existiert nicht. Und die ID, nach der wir suchen wollen, ist Nummer vier. Da ist also unsere Schleife. Das erste, was wir in der Schleife tun werden Ist dieser Studentenausweis gleich dem, nach dem gesucht werden soll? Wenn ja, sagen wir gefunden gleich wahr und wir brechen aus der Schleife aus und wir würden wahr zurückgeben Wer auch immer gefragt hat, existiert dieser Student? Das ist eine ganze Menge Code. Der deklarative Weg, dasselbe Problem zu lösen Wäre, die Studenten zu fragen, was die Sammlung hier ist die Schülerliste, Fragen Sie die Schüler, ob es enthält Eduard. Und in diesem Fall wäre es wahr. Wenn wir uns also ansehen, wie das funktioniert hat, den Code, anstatt ihn schreiben zu müssen Jedes Mal, wenn Sie dieses Spiel spielen möchten, existiert dieser Student oder nicht, ist im Typ Student enthalten Gleich-Methode. So haben wir früher die natürliche Ordnung eines Schülers gesehen bestand darin, mich mit dem Nachnamen eines anderen Studenten zu vergleichen. Nun, hier haben wir ein Gleichheitszeichen in einen Hash-Code eingefügt was aufgerufen wird wenn Sammlungen nicht enthält aufgerufen wird. Kommen wir also zurück und schauen uns das noch einmal an. Wenn die Sammlung enthält Methode aufgerufen wird, die student equals-Methode wird aufgerufen. Das erste, was es tun wird, ist zu sagen Ist der andere Objekttyp derselbe Typ wie ich? Mit anderen Worten, ich will sichergehen dass ein Schüler mit einem anderen Schüler verglichen wird. Und an diesem Punkt kann ich sagen, ist mein Ausweis gleich diesem anderen Studierendenausweis? Es ist also ein viel saubererer Ansatz. Und wie Sie sehen können, wenn das die Frage ist dass dich jemand fragen möchte, Es ist viel sauberer, nur zu sagen, 'Studenten enthält Sie Edward?' Viel einfacher, das zu tun als diesen ganzen Code zu schreiben. Sehen wir uns hier also ein weiteres Beispiel an und das ist eine zwingende Sortierung mit einem Komparator was wir gesehen haben, glaube ich, Sammlung sortieren Studenten und sortiere sie so. Wenn wir uns also die Schüler anhand des Geburtsdatumsvergleichs ansehen, Nun, da ist es, Wir werden am Ende die Schüler sortieren, zwei Studenten gleichzeitig gegeben durch den Vergleich ihrer Geburtsdaten. Also werden sie jetzt alle sortiert chronologisch nach ihrem Geburtsdatum. Und der deklarative Geschmack davon würde nicht von uns verlangen, dies zu schreiben, das würde es nicht erfordern. Der deklarative Geschmack dieser Art werden wir in der nächsten Lektion sehen. Danke fürs zuschauen. Die nächste Lektion wird Lambda und funktionale Schnittstellen sein.