Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

SystemWhole-Projekt in Java: JSON-ähnliche Strings parsen und humanoide Maschinen erkennen

Lerne im Rahmen des Cs211-Projekts, wie du JSON-ähnliche Strings in Java ohne externe Bibliotheken parst, Machine-Objekte erstellst und humanoide Eigenschaften sowie Singularitäten identifizierst.

SystemWhole Java JSON parsen ohne Bibliothek Cs211 Projekt 1 humanoide Maschinen erkennen Java Objektorientierung String-Manipulation Java Singularität Maschine Machine Klasse Java PartState Java ShapeAnalyzer Java Projekt Tutorial Programmieren lernen KI Datenanalyse Java für Anfänger Objektorientierte Programmierung

Einführung in das SystemWhole-Projekt

Im Cs211 project 1-system(whole) geht es darum, mit Java ein System zu entwickeln, das JSON-ähnliche Strings verarbeitet und daraus Machine-Objekte erstellt. Diese Maschinen besitzen unterschiedliche Eigenschaften, die es zu analysieren gilt. Deine Aufgabe ist es, humanoide Merkmale zu erkennen und Singularitäten aufzuspüren – also Fälle, in denen die Selbsteinschätzung einer Maschine nicht mit der Analyse des Systems übereinstimmt. Dieses Tutorial führt dich Schritt für Schritt durch die wichtigsten Konzepte und zeigt dir, wie du die Aufgaben strukturiert angehst.

Warum dieses Projekt relevant ist

In einer Welt, in der KI und Automatisierung immer mehr an Bedeutung gewinnen – von ChatGPT bis zu selbstfahrenden Autos – ist das Verständnis von Datenstrukturen und Objektorientierung essenziell. Dieses Projekt simuliert die Verarbeitung von Maschinendaten, wie sie in der Robotik oder bei der Analyse von KI-Systemen vorkommen. Indem du lernst, Strings zu parsen und Objekte zu instanziieren, bereitest du dich auf reale Anwendungen vor, etwa in der Spieleentwicklung oder bei der Verarbeitung von JSON-Daten in Web-APIs.

Grundlegende Klassen und ihre Rollen

Die Klasse SystemWhole

Diese Klasse ist der Dreh- und Angelpunkt des Projekts. Sie verwaltet die JSON-ähnlichen Strings und die daraus erstellten Machine-Objekte. Zu den wichtigsten Methoden gehören:

  • emergencesFromPhenomena(String[] emergences): Speichert die übergebenen Strings.
  • reifyFrameOfReference(): Parst jeden String mithilfe von ShapeAnalyzer und erstellt Machine-Objekte.
  • isHumanoid(Object[] machineProperties): Prüft, ob eine Maschine humanoide Eigenschaften besitzt.
  • identitySingularityMachines() und trackSingularityMachines(): Identifizieren Singularitäten.

Die Klasse PartState

Diese Klasse ist bereits vollständig implementiert und darf nicht verändert werden. Sie kapselt eine einzelne Eigenschaft einer Maschine, z. B. bodyType oder faceType, und deren Wert. Ein PartState-Objekt besteht aus einem property-Namen und einem value (einem Objekt).

Die Klasse Machine

Eine Maschine wird durch ihre Art (kind) und ihre Eigenschaften (properties) definiert. Zusätzlich speichert sie die Ergebnisse der Humanoid-Analyse: humanConstrained (System-Analyse) und humanEmergence (Selbsteinschätzung der Maschine).

Die Klasse ShapeAnalyzer

Dieser Helfer extrahiert aus einem JSON-ähnlichen String die relevanten Daten und erstellt daraus Machine-Objekte. Du musst ihn nicht selbst schreiben, aber seine Funktionsweise verstehen.

Schritt 1: JSON-ähnliche Strings parsen

Deine erste Aufgabe ist es, den Parser zu implementieren. Gegeben ist ein String wie:

{"kind": "Humanoid", "bodyType": "physical", "faceType": "anthropomorphic", "reverie": "biotypical"}

Du musst die Schlüssel-Wert-Paare extrahieren, ohne auf externe Bibliotheken wie org.json zurückzugreifen. Das geht am besten mit String-Methoden wie split(), indexOf() und substring(). Achte auf Anführungszeichen und Kommas. Ein möglicher Ansatz:

  1. Entferne die geschweiften Klammern.
  2. Teile den String an den Kommas auf.
  3. Für jedes Paar: Teile am Doppelpunkt, entferne Anführungszeichen und speichere Schlüssel und Wert.

Beispielcode (Auszug):

String[] pairs = json.substring(1, json.length()-1).split(",");
for (String pair : pairs) {
    String[] keyValue = pair.split(":");
    String key = keyValue[0].trim().replace("\"", "");
    String value = keyValue[1].trim().replace("\"", "");
    // ... weiterverarbeiten
}

Schritt 2: Machine-Objekte instanziieren

Nach dem Parsen erstellst du mit ShapeAnalyzer ein Machine-Objekt. Der Analyzer liefert die Eigenschaften als PartState-Array. Du musst die Machine-Klasse so erweitern, dass sie diese Daten speichert. Achte darauf, dass kind und properties korrekt gesetzt werden. Beispiel:

Machine machine = new Machine(kind, properties);
machine.setHumanConstrained(isHumanoid(properties));
machine.setHumanEmergence(/* aus dem String extrahieren */);

Schritt 3: Humanoide Maschinen identifizieren

Die Methode isHumanoid(Object[] machineProperties) prüft drei Bedingungen:

  • bodyType muss "physical" sein.
  • faceType muss "anthropomorphic" sein.
  • reverie muss "biotypical" sein.

Iteriere durch das PartState-Array und vergleiche die Werte. Nur wenn alle drei Kriterien erfüllt sind, gib true zurück. So stellst du sicher, dass nur Maschinen mit menschlichen Merkmalen als humanoid gelten.

Schritt 4: Singularitäten verfolgen

Eine Singularität liegt vor, wenn die Selbsteinschätzung der Maschine (humanEmergence) nicht mit der Systemanalyse (humanConstrained) übereinstimmt. Das kann z. B. passieren, wenn eine Maschine sich für humanoid hält, aber das System sie nicht als solche einstuft. Implementiere die Methoden identitySingularityMachines() und trackSingularityMachines(), um solche Fälle zu zählen bzw. aufzulisten.

Praktische Tipps und häufige Fehler

  • String-Manipulation: Achte auf escaped Anführungszeichen (\") und führende/trailing Leerzeichen. Nutze trim().
  • Objektvergleich: Verwende equals() statt == für String-Vergleiche.
  • Testen: Erstelle eigene Test-Strings, um verschiedene Fälle abzudecken – auch solche, die nicht humanoid sind.
  • Dokumentation: Lies die Kommentare im bereitgestellten Code genau; sie enthalten oft Hinweise zur Implementierung.

Beispiel aus der Praxis: Vergleich mit einem KI-Assistenten

Stell dir vor, du entwickelst einen persönlichen KI-Assistenten wie Siri oder Alexa. Jeder Assistent hat Eigenschaften: seine Stimme („weiblich“), sein Aussehen („Avatar“), seine Persönlichkeit („freundlich“). Wenn du diese Daten als JSON speicherst und analysierst, gehst du ähnlich vor wie in diesem Projekt. Die Humanoid-Erkennung könnte dann entscheiden, ob der Assistent menschenähnlich genug ist, um in einem bestimmten Kontext eingesetzt zu werden.

Zusammenfassung

Das SystemWhole-Projekt fordert dich heraus, grundlegende Java-Konzepte wie Objektorientierung, String-Manipulation und Datenanalyse anzuwenden. Indem du die Aufgaben in kleine Schritte unterteilst – Parsen, Instanziieren, Prüfen, Verfolgen – meisterst du die Komplexität. Denk daran: Übung macht den Meister. Probiere verschiedene JSON-Strings aus und erweitere das System nach eigenem Ermessen. Viel Erfolg!