In meiner ersten Woche habe ich allgemeine Themen zu OOP erw?hnt, wobei ich in kurzer Zeit einiges über diese Themen lernen konnte Zeitspanne. Allerdings gab es noch Themen zu behandeln. Da dies nur die Grundlagen von OOP sind, bin ich gerade dabei zu entscheiden, ob Java die Sprache sein wird, auf die ich mich 100 % konzentrieren m?chte Auch nach dem Studium muss ich sagen, dass ich aufgrund meiner Erfahrung im Testen eine besondere Vorliebe für das Backend habe, was vielleicht der Fall ist ein Faktor bei meiner Entscheidung sein.
W?hrend dieser zweiten Woche hatte ich nicht viel Zeit, Themen wie Threads, Enums oder Generika zu besprechen, die ich anh?ngig war. Ich bin jedoch mit einem kleinen Projekt weitergekommen, bei dem es um die Simulation eines Restaurants ging, in dem die folgenden Aktionen ausgeführt werden k?nnen:
- Produkte oder Mahlzeiten erstellen ?
- Bestellungen aufgeben basierend auf diesen Produkten und angeben, wie viele davon verbraucht wurden.
- Einzelbestellung anzeigennach dem Hinzufügen.
- Alle Bestellungen anzeigen, mit der Option, so viele Bestellungen hinzuzufügen, wie der Benutzer m?chte.
Ich habe es haupts?chlich erstellt, um alle Aspekte von OOP abzudecken, einschlie?lich der Datenvalidierung, und um die Logik weiter zu praktizieren. Ich habe es fast fertig, füge aber noch Details hinzu; Ich werde es in mein Repository hochladen, sobald es fertig ist.
Zus?tzlich habe ich ein weiteres OOP-Thema und andere Themen behandelt, die ?u?erst nützlich sind.
Welche? Relationale Klassen, Try-and-Catch und Dateien.
Ich werde kurz erw?hnen, wie nützlich diese Themen für mich waren und wie ich ihre praktischen Anwendungen verstehe.
Relationale Klassen
Relationale Klassen sind ein Thema, für das ich einige Zeit gebraucht habe, um es zu verstehen und anzuwenden. Sobald man jedoch den Dreh raus hat, lassen sie sich einfach umsetzen. Ich habe dieses Konzept am h?ufigsten als 1-zu-N-Beziehung verwendet, die verwendet wird, um mehrere Objekte einer Klasse B mit einer Klasse A.
Wenn ich beispielsweise m?chte, dass einAuto mehrere Besitzer hat, ben?tige ich eine Beziehung von der Klasse ?Owners“ zur Klasse ?Cars“.
Im Car-Klassenkonstruktor muss eineListe (ich habe ArrayList verwendet) übergeben werden, und diese Liste wird basierend auf Objekten aus dem Owner-Konstruktor erstellt. Somit wird der Besitzer mit seinen Attributen (Name, Alter, ID usw.) mit einem Autokonstrukteur verknüpft, der Objekte mit diesen Eigenschaften erstellen kann.
Hier ist ein einfaches Beispiel, das zeigt, wie eine 1-zu-N-Beziehung angewendet wird: https://pastebin.com/dX6SDWwp
Dies ist nützlich, wenn Sie bestimmte Objekte mit anderen ?verbinden“ müssen, sodass Sie eine direkte Beziehung haben und sie nicht nur durch Arrays oder eine andere Methode verbunden sind.
Try and Catch ??
Die Verwendung von try und catch in Java habe ich h?ufiger implementiert als in der anderen Sprache, die ich verwendet habe. Ich denke, das liegt daran, dass meine IDE automatisch die Verwendung von Try and Catch für einige Ausnahmen vorschl?gt, die dies erfordern.
Dieses Thema ist einfach ein Highlight im Vergleich zu einer anderen Sprache wie C , wo ich es nur sehr wenig verwendet habe und andere Techniken bevorzugt habe, um Fehler zu vermeiden. Allerdings gew?hne ich mich allm?hlich daran, Try and Catch zu verwenden, um Fehler vorherzusagen und pl?tzliche Systemabstürze zu vermeiden.
Dateien – JSON/GSON – Serialisierung und Deserialisierung ?
Das Arbeiten mit Dateien in Java nahm letztes Wochenende 70 % meiner Lernzeit in Anspruch. Trotzdem habe ich das Gefühl, dass es im Vergleich zu C etwas mehr Informationen und Beispiele gibt, wo ich auch die Dateinutzung mit Matrizen implementiert habe, um Daten zu verwalten, ohne sie neu zu schreiben.
Dies war nützlich für Systeme wie:
- Warenk?rbe
- Bestandsverwaltung
- Bestellungen oder jedes System, bei dem eine Datenspeicherung erforderlich ist.
In diesem Fall muss ich mit Java Objekte verwenden, also beinhaltet dies Serialisierung und Deserialisierung.
Hier ist mir ein gro?er Unterschied aufgefallen, da die Schreibweise stark von der gewünschten Datenart abh?ngt. Mein Hauptproblem, das Stunden der Recherche erforderte, war, dass die Zeichen, die ich in meiner TXT-Datei gespeichert habe, beim ?ffnen der Datei im Bin?rformat erschienen, aber als Zeichen in der Konsole.
Ich habe online herausgefunden, dass eszwei M?glichkeiten gibt, Daten zu lesen und zu schreiben:
- über
- Bytes über
- Zeichen
Objekte direkt übergeben habe.
Ich fühle mich noch nicht sachkundig genug, um die Unterschiede zwischen den verschiedenen Verwendungsm?glichkeiten der Writer- und Reader-Unterklassen zu erl?utern, aber ich arbeite an einer übung aus der Praxis Dabei verwende ich Objekte, die in einer ArrayList gespeichert sind, und lerne, wie man serialisiert und deserialisieren sie mit GSON (um die Objekte in ihrem Zustand innerhalb des Systems in einer .json-Datei beizubehalten) und schreiben diese Daten dann in eine .txt-Datei, um sie als Datens?tze in einem zu speichern organisierter Weg.
Abschluss
Letzte Woche habe ich nicht so viele Fortschritte gemacht, wie ich es mir gewünscht h?tte, aber die Arbeit mit Dateien hat viele Stunden Recherche und Anwendung in Anspruch genommen und Konzeptdifferenzierung, wobei Teile aus jedem Artikel, den ich überprüft habe, entnommen werden, um ein Endergebnis zu erzielen, das ich in einem testen werde ?echtes“ Projekt und erz?hlen Sie, wie es gelaufen ist.
Es ist wichtig zu erw?hnen, dass diese spezielle Handhabung und das von mir erw?hnte Szenario mit GSON und .txt etwas ist, was ich für die Universit?t tun muss. Es gibt jedoch andere M?glichkeiten, wie JPA oder Datenbanken, um damit umzugehen. Es ist nicht unbedingt erforderlich, GSON und .txt zu verwenden, um Daten in einem System zu verwalten.
Es gibt nichts mehr hinzuzufügen: Wenn jemand etwas zu Dateien oder den von mir genannten Themen zu sagen hat, k?nnen Sie gerne einen Kommentar abgeben und Ihre Vorschl?ge teilen!
Viel Spa? beim Codieren! ?
Das obige ist der detaillierte Inhalt vonJava OOP: Woche Das OOP-Abenteuer geht weiter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Der Unterschied zwischen HashMap und Hashtable spiegelt sich haupts?chlich in der Gewindesicherheit, der Nullwertunterstützung und der Leistung wider. 1. In Bezug auf die Gewindesicherheit ist Hashtable Thread-Safe, und seine Methoden sind haupts?chlich Synchronmethoden, w?hrend HashMap keine Synchronisationsverarbeitung durchführt, die nicht mit Thread-Safe ist. 2. In Bezug auf die Nullwertunterstützung erm?glicht HashMap einen Nullschlüssel und mehrere Nullwerte, w?hrend Hashtable keine Nullschlüssel oder -Werte zul?sst, sonst wird eine Nullpointerexception geworfen. 3. In Bezug auf die Leistung ist HashMap effizienter, da kein Synchronisationsmechanismus vorhanden ist und Hashtable für jeden Vorgang eine niedrige Verriegelungsleistung aufweist. Es wird empfohlen, stattdessen eine Concurrenthashmap zu verwenden.

Java verwendet Wrapper-Klassen, da grundlegende Datentypen nicht direkt an objektorientierten Operationen teilnehmen k?nnen und Objektformen h?ufig in den tats?chlichen Bedürfnissen erforderlich sind. 1. Sammelklassen k?nnen nur Objekte speichern, z. B. Listen verwenden automatische Boxen, um numerische Werte zu speichern. 2. Generika unterstützen keine Grundtypen, und Verpackungsklassen müssen als Typparameter verwendet werden. 3.. Verpackungsklassen k?nnen Nullwerte darstellen, um nicht festgelegte oder fehlende Daten zu unterscheiden. 4. Verpackungsklassen bieten praktische Methoden wie String -Conversion, um die Analyse und Verarbeitung von Daten zu erleichtern. In Szenarien, in denen diese Eigenschaften ben?tigt werden, sind Verpackungsklassen unverzichtbar.

StaticMethodsinInterfaces -reisEtroducucuedInjava8toalloytilityFunctionSwitHinTheInterfaceItEp.beejava8, solche Funktionen, dieseparatehelperklassen, führendemTodisorganizedCode.Now, StaticMetheSprovidreefits: 1) theeneNableable -theenableaby

Der JIT -Compiler optimiert den Code durch vier Methoden: Methode Inline, Hotspot -Erkennung und -vergleich, Typespekulation und Devirtualisation sowie die Eliminierung des redundanten Betriebs. 1. Methode Inline reduziert den Anrufaufwand und fügt h?ufig kleine Methoden direkt in den Anruf ein. 2. Erkennung und Hochfrequenzcodeausführung und zentral optimieren, um Ressourcen zu sparen. 3. Typ Spekulation sammelt Informationen zum Laufzeittyp, um Devirtualisation -Anrufe zu erzielen und die Effizienz zu verbessern. 4. Redundante Operationen beseitigen nutzlose Berechnungen und Inspektionen basierend auf den Betriebsdaten, wodurch die Leistung verbessert wird.

Instanzinitialisierungsbl?cke werden in Java verwendet, um die Initialisierungslogik beim Erstellen von Objekten auszuführen, die vor dem Konstruktor ausgeführt werden. Es ist für Szenarien geeignet, in denen mehrere Konstruktoren Initialisierungscode, komplexe Feldinitialisierung oder anonyme Szenarien der Klasseninitialisierung teilen. Im Gegensatz zu statischen Initialisierungsbl?cken wird es jedes Mal ausgeführt, wenn es instanziiert wird, w?hrend statische Initialisierungsbl?cke nur einmal ausgeführt werden, wenn die Klasse geladen wird.

InvaVa, theFinalKeywordPreventsAvariable von ValueFromBeingumedAfterasssignment, ButitsBehaviordiffersForprimitive und ANSPRIMITIVEVARIABLE, FinalMakesthevalueconstant, AsinfinalIntmax_speed = 100; WhirerastsignmentcausaSesSaSesSaSesSaSaSesSaSesSaSaSesSaSaSesSaSesSesirror

Der Werksmodus wird verwendet, um die Logik der Objekterstellung zusammenzufassen, wodurch der Code flexibler, einfach zu pflegen und locker gekoppelt ist. Die Kernantwort lautet: Durch zentrales Verwalten von Logik der Objekterstellung, das Ausblenden von Implementierungsdetails und die Unterstützung der Erstellung mehrerer verwandter Objekte. Die spezifische Beschreibung lautet wie folgt: Der Fabrikmodus gibt Objekterstellung an eine spezielle Fabrikklasse oder -methode zur Verarbeitung und vermeidet die Verwendung von NewClass () direkt; Es ist für Szenarien geeignet, in denen mehrere Arten von verwandten Objekten erstellt werden, die Erstellungslogik sich ?ndern und Implementierungsdetails versteckt werden müssen. Zum Beispiel werden im Zahlungsabwickler Stripe, PayPal und andere Instanzen durch Fabriken erstellt. Die Implementierung umfasst das von der Fabrikklasse zurückgegebene Objekt basierend auf Eingabeparametern, und alle Objekte erkennen eine gemeinsame Schnittstelle. Gemeinsame Varianten umfassen einfache Fabriken, Fabrikmethoden und abstrakte Fabriken, die für unterschiedliche Komplexit?ten geeignet sind.

Es gibt zwei Arten von Konvertierung: implizit und explizit. 1. Die implizite Umwandlung erfolgt automatisch, wie z. B. das Konvertieren in INT in Doppel; 2. Explizite Konvertierung erfordert einen manuellen Betrieb, z. B. die Verwendung (int) MyDouble. Ein Fall, in dem die Typ -Konvertierung erforderlich ist, umfasst die Verarbeitung von Benutzereingaben, mathematische Operationen oder das übergeben verschiedener Werte zwischen Funktionen. Probleme, die beachtet werden müssen, sind: Umdrehung von Gleitpunktzahlen in Ganzzahlen wird der fraktionale Teil abschneiden, gro?e Typen in kleine Typen zu einem Datenverlust führen, und einige Sprachen erm?glichen keine direkte Konvertierung bestimmter Typen. Ein ordnungsgem??es Verst?ndnis der Regeln der Sprachkonvertierung hilft, Fehler zu vermeiden.
