Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Dies ist ein von KI übersetzter Beitrag.

제이온

[Objekte] Kapitel 1. Objekte, Design

  • Schreibsprache: Koreanisch
  • Referenzland: Alle Länder country-flag

Sprache auswählen

  • Deutsch
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

Von durumis AI zusammengefasster Text

  • In der Softwareentwicklung ist die Praxis wichtiger als die Theorie, und durch einfache Programme kann man die Bedeutung objektorientierten Designs erkennen.
  • Am Beispiel einer Ticketverkaufsanwendung wird erläutert, wie man durch Reduzierung der Abhängigkeiten und Kopplung zwischen Objekten flexiblen Code schreibt, und die Unterschiede zwischen prozeduraler und objektorientierter Programmierung werden verglichen.
  • Objektorientiertes Design führt zu veränderbarem Code, und Objekte sind selbstverwaltende Entitäten, die für ihre eigenen Daten verantwortlich sind. Die Abhängigkeiten zwischen kooperierenden Objekten müssen angemessen verwaltet werden.

Einführung

Robert L. Glass argumentierte, dass die Praxis der Theorie vorangeht. Besonders in der Softwareentwicklung ist die Praxis ein typisches Gebiet, in dem die Praxis der Theorie vorausgeht. Entwickler lernen am meisten, wenn sie sich mit konkretem Code beschäftigen und ihre Hände schmutzig machen. Daher wollen wir die Theorie und Konzepte für einen Moment zurücklassen und uns ein einfaches Programm ansehen.


Implementieren einer Ticketverkaufsanwendung

  • Wir planen eine kleine Veranstaltung zur Werbung für ein kleines Theater.
    • Veranstaltungsdetails: Verlosung von kostenlosen Eintrittskarten für ausgewählte Zuschauer
  • Gewonnene Zuschauer müssen von den Verlierern getrennt werden.
    • Gewonnene Zuschauer: Eintauschen der Eintrittskarte gegen ein Ticket
    • Verlierer: Kauf des Tickets mit Geld



Was ist das Problem?

Robert Martin beschreibt drei Funktionen, die ein Softwaremodul (unabhängig von der Größe, ein beliebiges Element, aus dem ein Programm besteht, wie z. B. eine Klasse, ein Paket oder eine Bibliothek) haben sollte.


  • Funktioniert während der Ausführung einwandfrei.
  • Existiert für Änderungen.
    • Änderungen sollten mit minimalem Aufwand möglich sein.
  • Kommuniziert mit Menschen, die den Code lesen.
    • Entwickler sollten den Code leicht lesen und verstehen können.


Die obige Ticketverkaufsanwendung erfüllt die erste Einschränkung, dass sie korrekt ausgeführt wird, aber die Ziele Änderungsfreundlichkeit und Kommunikation sind nicht erfüllt.


Code, der die Erwartungen nicht erfüllt

Betrachten wir die Gründe, warum das Ziel der Kommunikation nicht erfüllt wird.


  • Die Aufgabe der enter() Methode der Klasse Theater
    • Das Theater überprüft die Tasche des Zuschauers, um zu sehen, ob sich eine Einladung darin befindet.
    • Wenn sich eine Einladung in der Tasche befindet, wird der Verkäufer angewiesen, das Ticket, das im Kartenschalter aufbewahrt wird, in die Tasche des Zuschauers zu legen.
    • Wenn sich keine Einladung in der Tasche befindet, wird der Verkäufer angewiesen, den Ticketpreis aus der Tasche des Zuschauers zu nehmen, das Ticket zu kaufen und das Ticket in die Tasche zu legen.
  • Aus Sicht des Zuschauers muss er zusehen, wie das Theater als Dritter willkürlich in seine Tasche greift, Geld nimmt und ein Ticket hineingibt.
  • Aus Sicht des Verkäufers muss er zusehen, wie das Theater als Dritter ohne Erlaubnis den Ticketpreis im Kartenschaltermanipuliert.
  • Verständlicher Code ist Code, dessen Verhalten nicht stark von unseren Erwartungen abweicht. Das Theater in unseremBeispiel weicht jedoch von unseren Erwartungen ab.
    • Der Zuschauer sollte das Geld aus seiner eigenen Tasche nehmen und es an den Verkäufer zahlen, um ein Ticket zu erhalten.
    • Der Verkäufer sollte das Ticket direkt aus dem Kartenschalter nehmen und es an den Zuschauer übergeben und das Geld vom Zuschauer entgegennehmen, um es im Kartenschalter aufzubewahren.
  • Außerdem müssen Sie sich an viele Details erinnern, um die enter() Methode zu verstehen.
    • Audience hat eine Bag.
    • Bag enthält Bargeld und Tickets.
    • TicketSeller verkauft Tickets im TicketOffice. Im TicketOffice werden Geld und Tickets aufbewahrt.


Code, der anfällig für Änderungen ist

Die enter() Methode geht von zwei Bedingungen aus.

  • Der Zuschauer trägt immer eine Tasche mit sich, um Bargeld und Einladungen aufzubewahren.
  • Der Verkäufer verkauft Tickets nur am Kartenschalter.


Wie wäre es mit folgenden Situationen?

  • Der Zuschauer hat möglicherweise keine Tasche dabei.
  • Der Zuschauer könnte eine Kreditkarte anstelle von Bargeld verwenden.
  • Der Verkäufer könnte Tickets außerhalb des Kartenschalters verkaufen.


Um beispielsweise die erste Anforderung zu erfüllen, müssen wir das Bag-Objekt der Audience entfernen und die enter()- Methode der Klasse Theater anpassen. Dies liegt daran, dass die Klasse Theater zu sehr von der Tatsache abhängt, dass der Zuschauer eine Tasche trägt und der Verkäufer Tickets nur am Kartenschalter verkauft. Wenn sich eines dieser Details ändert, müssen sowohl die entsprechende Klasse als auch die abhängige Klasse (z. B. Theater) geändert werden.


Dies ist ein Problem, das mit der Abhängigkeit zwischen Objekten zusammenhängt, und die Abhängigkeit impliziert den Einfluss auf Änderungen. Da das objektorientierte Design jedoch darauf abzielt, eine Gemeinschaft von Objekten zu erzeugen, die sich gegenseitig abhängen und zusammenarbeiten, sollten wir Abhängigkeiten nicht einfach entfernen, sondern dieminimal notwendige Abhängigkeitenbeibehalten und unnötige Abhängigkeiten entfernen.


Wenn es zu viele Abhängigkeiten zwischen Objekten gibt, spricht man von hoher Kopplung. Je höher die Kopplung zwischen zwei Objekten ist, desto höher ist die Wahrscheinlichkeit, dass sie zusammen geändert werden müssen. Daher ist das Ziel des Designs, die Kopplung zwischen Objekten zu verringern, um ein Design zu erstellen, das leicht zu ändern ist.


Das Design verbessern

Das Theater muss nicht wissen, dass der Zuschauer eine Tasche dabei hat und der Verkäufer Tickets am Kartenschalter verkauft. Das Theater möchte nur, dass der Zuschauer ins Theater kommt. Daher müssen wir den Zuschauer dazu bringen, das Geld und die Einladung in seiner Tasche selbst zu verwalten, und den Verkäufer dazu bringen, die Tickets und den Preis am Kartenschalter selbst zu verwalten, so dass sie selbständige Einheiten werden.


Die Autonomie erhöhen

Ein Objekt, das nur eng miteinander verbundene Aufgaben ausführt und nicht verwandte Aufgaben an andere Objekte delegiert, wird als hohes Kohäsionsniveau bezeichnet. Wenn Sie selbständige Objekte erstellen, die ihre eigenen Daten selbst verwalten, können Sie die Kopplung reduzieren und die Kohäsion erhöhen.


Prozedurale und objektorientierte Programmierung

  • Prozedurale Programmierung
    • Die enter() Methode von Theater ist ein Prozess, während Audience, TicketSeller, Bag und TicketOffice Daten sind.
    • Die Platzierung von Prozessen und Daten in separaten Modulen wird als prozedurale Programmierung bezeichnet.
    • Es gibt viel Code, der unserer Intuition widerspricht. (z. B. Der Zuschauer verwaltet sein Geld und seine Einladungen selbst.)
    • Es ist schwierig, den Einfluss von Datenänderungen zu begrenzen.
    • Die Verantwortung wird zentral verwaltet. (Theater verwaltet alles.)
  • Objektorientierte Programmierung
    • Die Platzierung von Daten und Prozessen im selben Modul wird als objektorientierte Programmierung bezeichnet.
    • Wir können Code schreiben, der unserer Intuition entspricht.
    • Der Einfluss von Datenänderungen kann durch Kapselung effektiv eingeschränkt werden.
    • Jedes Objekt ist für sich selbst verantwortlich.


Es kann noch verbessert werden.

  • Die Bag-Klasse der Audience-Klasse ist immer noch ein passives Wesen, das von der Audience-Klasse herumgeschleppt wird, daher muss die Bag-Klasse in ein selbständiges Objekt umgewandelt werden.
  • Auch das TicketOffice der TicketSeller-Klasse wird von TicketSeller willkürlich verwaltet. TicketOffice muss in ein selbstständiges Objekt umgewandelt werden.
    • Allerdings führt die Änderung zu einer zusätzlichen Kopplung zwischen TicketOffice und Audience.
    • Wie bei solchen Designs müssen wir sorgfältig die Vor- und Nachteile abwägen. In diesem Fall könnten wir vereinbaren, TicketOffice zu einem einigermaßen passiven Objekt zu machen, um die Kopplung zu Audience zu reduzieren.



Ja, das ist eine Lüge!

  • Auch wenn etwas in der Realität passiv ist, wird es in der objektorientierten Welt zu einem aktiven und selbständigen Wesen.
  • Es ist ratsam, die Personifikation zu verwenden, um passive Objekte als etwas zu betrachten, das lacht, spricht und sich ärgert.


Objektorientiertes Design

Warum ist Design notwendig?

  • Design ist die Anordnung von Code.
  • Gutes Design ist in der Lage, die heute benötigten Funktionen vollständig zu erfüllen und gleichzeitig zukünftige Änderungen reibungslos zu bewältigen.


Objektorientiertes Design

  • Änderungsfähiger Code ist leicht verständlicher Code.
  • Das objektorientierte Paradigma hilft uns, Code so zu schreiben, wie wir die Welt sehen.
  • Objekte sind selbständige Wesen, die für ihre eigenen Daten verantwortlich sind.
  • Ein großartiges objektorientiertes Design ist ein Design, das die Abhängigkeiten zwischen zusammenarbeitenden Objekten angemessen verwaltet.


Quellen

  • Objekte
제이온
제이온
제이온
제이온
[Objekte] Kapitel 2. Objektorientierte Programmierung Dieses Dokument beschreibt die objektorientierte Programmierungsmethodik zur Implementierung eines Filmreservierungssystems. Es behandelt Konzepte wie Zusammenarbeit, Objekte, Klassen, Vererbung, Polymorphismus, Abstraktion und Komposition. Es werden Meth

28. April 2024

[Effektives Java] Artikel 6. Vermeiden Sie unnötige Objekterstellung Dieser Leitfaden behandelt die Vermeidung unnötiger Objekterstellung in Java. Für unveränderliche Objekte wie String und Boolean ist es empfehlenswert, Literale zu verwenden, und für reguläre Ausdrücke sollten Sie Pattern-Instanzen cachen. Auto-Boxing kan

28. April 2024

[Effektives Java] Item 1. Statische Fabrikmethoden in Betracht ziehen Statische Fabrikmethoden sind eine flexible und effiziente Möglichkeit, Instanzen zu erstellen, anstatt Konstruktoren zu verwenden. Sie können benannt werden, Instanzen zurückgeben, die bestimmten Bedingungen entsprechen, und die Leistung durch Caching ve

27. April 2024

[Nicht-Hauptfach, Überleben als Entwickler] 14. Zusammenfassung der häufigen technischen Vorstellungsgesprächsinhalte für Einsteiger Dieser Leitfaden ist für die Vorbereitung auf technische Vorstellungsgespräche für Einsteiger. Hauptspeicherbereich, Datenstrukturen, RDBMS und NoSQL, prozedurale und objektorientierte Programmierung, Überladen und Überschreiben, Seitenersatzzustände, Pro
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3. April 2024

Menschliche Phänomene, der Maßstab für unternehmerische Entscheidungen - Teil 2 Dieser Artikel stellt einen phänomenbasierten Ansatz vor, der menschliches Verhalten als Grundlage für unternehmerische Entscheidungen verwendet. Dieser Ansatz hilft Unternehmen, die Bedürfnisse und Wünsche ihrer Kunden zu verstehen und differenzierte Wac
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

7. Mai 2024

Was halten Sie von meiner Idee? Die Bedeutung einer Idee geht über den bloßen kreativen Gedanken hinaus und hängt davon ab, welchen Einfluss sie auf den Alltag anderer hat und welche Bedeutung sie vermitteln kann. Ausgehend von Heideggers philosophischer Perspektive können wir den wahre
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

7. Mai 2024

"Love is in the Air" Staffel 2 und Organisationskultur: Die Kraft der Beobachtung - 2 Anstatt sich bei der Verbesserung der Organisationskultur auf externe Berater zu verlassen, sollten Unternehmen die Organisationskultur durch "interne" Beobachtungen wie Mitarbeiterinteraktionen, räumliche Anordnung und Symbole analysieren und Veränderung
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

9. Mai 2024

"Love Is Blind" Staffel 2 und Organisationskultur: Die Kraft der Beobachtung - 1 Der "Vordere Stuhl" im Wartezimmer des Krankenhauses ist ein Wertversprechen, das durch die Rücksichtnahme der Krankenschwester geschaffen wurde, kollidiert aber mit dem Wert der Patientenfokussierung des Arztes und zeigt die Realität der Organisationskul
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

9. Mai 2024

Wie können Technologieunternehmen "Metaverse" vorbereiten? Die Heldengeschichte des Spielers "Let Me Solo Her" im Spiel "Elden Ring" zeigt, dass Technologieunternehmen bei der Verfolgung des Metaverse nicht nur technologische Errungenschaften berücksichtigen sollten, sondern auch bedeutsame Beziehungen zu den Spi
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

8. Mai 2024