Funktionen der Domänenmodellierung mit OOP



    Einleitung


    Ich möchte darauf hinweisen, dass es für diejenigen, die OOP-Begriffe verwenden, sehr schwierig sein wird, mich zu verstehen. Tatsache ist, dass OOP Konzepte ersetzt hat. In der OOP wird eine Klasse nicht als eine Vielzahl verstanden, wie es in der Mathematik oder Linguistik üblich ist. In OOP ist eine Klasse namens einen Objekttyp wie bei Aristoteles. Es wäre richtig in der PLO statt die Begriff seiner Objektklasse den Begriff zu verwenden , Objekttyp . Sobald Sie mit der richtigen Terminologie ausgezogen sind, ist es sehr schwierig, zu den richtigen Begriffen zurückzukehren. In diesem Artikel werde ich versuchen, denen zu helfen, die sich mit dem von OOP gebrauten Brei aus der Terminologie auseinandersetzen möchten. In meiner Diskussion werde ich die Begriffe im ursprünglichen Sinne und nicht im Sinne von OOP verwenden. Der Begriff Klassewird aus dem logischen Paradigma der Domänenmodellierung entnommen, das wiederum diesen Begriff aus der Mengenlehre entlehnt. Die Begriffe Typ und Instanz werden der Typentheorie entnommen, die auf Aristoteles 'Paradigma der Existenz von Typen aufbaut.

    Für einen OOP-Anhänger ist es sehr schwierig zu verstehen, dass der Begriff Klasseninstanz auf Russisch eine Klasse von Objekten anzeigt und nicht ein Element der Klasse, das mit diesem Begriff übereinstimmt - ein Objekt der Klasse. Für viele, die OOP studiert haben, sind die Begriffe Instanz und Element nicht zu unterscheiden. Gehen wir mit diesen Begriffen sorgfältig um.

    Begriffsbestimmungen


    Term-Instanz


    Eine Instanz ist ein Objekt aus einer eigenen Serie. Das heißt, eine Maschineninstanz ist ein Objekt von mehreren ähnlichen Maschinen. Aristoteles glaubte, dass das Subjekt die Idee der Existenz von Maschinen hat. Diese Idee drückt sich in Form eines abstrakten Objekttyps (Maschinen) aus, der im Bewusstsein der Subjekte existiert. Wenn ein Subjekt auf ein Objekt schaut, vergleicht er das, was er sieht, mit dem Bild, das er in seiner Vorstellung hat (mit der Art der Maschinen), und wenn er ähnliche Merkmale findet, nennt er das Objekt eine Maschine oder eine Instanz einer Maschine. Eine Liste ähnlicher Merkmale nennt Aristoteles Typ. Ein Objekt mit diesen Merkmalen ist eine Instanz dieses Typs.



    Nach der Logik ist eine Instanz einer Klasse ein Objekt aus einer Reihe ähnlicher Klassen. Daher verweist der Begriff Klasseninstanz auf Russisch auf eine Klasse.



    Eine Maschine bezieht sich auf eine Klasse von Maschinen wie folgt: Eine Maschine ist ein Objekt einer Klasse von Maschinen.



    Wenn wir also sagen, wie es in OOP üblich ist, dass eine Maschine eine Instanz einer Klasse von Maschinen ist, stellt sich heraus, dass eine Maschine eine Klasse von Maschinen ist. Zusammenstoß!

    In OOP bezieht sich der Begriff Klasse auf den Begriffstyp. Daher sollte der Begriff Klasseninstanz in OOP folgendermaßen lauten: eine Instanz eines Objekttyps. Dann sieht unser Bild so aus:



    Wenn Sie also den Begriff Instanz einer Klasse treffen, dann wissen Sie, dass dieser Begriff höchstwahrscheinlich von OOP generiert wird und daher eine Art Objekt ist. Außerhalb von OOP bedeutet eine Klasse viele Objekte.

    Begriffselement


    Ein Element ist Teil von etwas. Das Element der Tafel ist der Widerstand, das Element des Beins ist das Knie, das Element der Menge ist das Objekt. Somit kann sich der Begriff Element auf eine Beziehung zwischen zwei Entitäten beziehen. Diese Beziehung kann ein Kompositionslink (ein Maschinenelement ist ein Rad)



    oder ein Klassifizierungslink (ein Element einer Radklasse ist ein Rad) sein.



    Andere Paare falscher Ausdrücke:


    Darüber hinaus sind andere falsche Begriffspaare in der Geschäftsanalyse häufig: ein Ereignis und eine Instanz dieses Ereignisses, ein Prozess und eine Instanz dieses Prozesses, eine Vereinbarung und eine Instanz dieser Vereinbarung. Im Russischen gibt es kein Objekt und keine Instanz dieses Objekts. Es gibt Begriffe für den Objekttyp und eine Instanz dieses Objekttyps.

    Möglicherweise ist die fehlerhafte Verwendung der Begriffe auf die fehlerhafte Übersetzung des Begriffs Instanz aus dem Englischen zurückzuführen. Instanz wird als Beispiel oder als Fall übersetzt, aber nicht als Instanz.

    Wie dem auch sei, sehen wir uns die korrekte Verwendung des Ausdrucks instance an:

    • Eine Elektroneninstanz ist ein Elektron, eine Instanz eines Teilchens vom Elektronentyp oder eine Instanz eines bestimmten Elektronentyps (jedoch keine Instanz dieses Elektrons).
    • Eine Prozessinstanz ist ein Prozess, eine Instanz eines Objekts vom Typ Prozess oder eine Instanz eines bestimmten Prozesstyps (jedoch keine Instanz dieses Prozesses).
    • Eine Instanz eines Ereignisses ist ein Ereignis, eine Instanz eines Objekts vom Typ Ereignis oder eine Instanz dieses Ereignistyps (jedoch keine Instanz dieses Ereignisses).
    • Eine Instanz einer Klasse ist eine Klasse, eine Instanz eines Objekts der Typklasse oder eine Instanz dieser Art von Klassen (jedoch keine Instanz dieser Klasse).

    Diese Aussagen werden im Aristoteles-Paradigma getroffen, wo es Objekttypen und Instanzen dieser Typen gibt, aber keine Objekte und Instanzen dieser Objekte. Ich schrieb über das Aristoteles-Paradigma in einem Artikel: Bekanntschaft mit den Paradigmen der Konstruktion von Domänenmodellen .

    Analogie zur Wissenschaft


    Eine sehr interessante Tatsache sollte beachtet werden. Die Analogie zwischen Religion und Wissenschaft bietet sich an. Ein wissenschaftlicher Ansatz ist entstanden, um die religiöse Beschreibung der Welt auszugleichen. Wenn Sie die Welt in Bezug auf Religion beschreiben, müssen Sie verstehen, dass die Gegenwart Gottes nicht verifiziert werden kann. Die Grundlage des Glaubens ist der Glaube. Der wissenschaftliche Ansatz stellt im Gegensatz zum Glauben das Primat des Experiments. Das heißt, wenn das Experiment die Existenz des Paradieses bestätigt, dann existiert das Paradies. Wenn dies nicht bestätigt wird, ist nicht bekannt, ob es existiert oder nicht. Die Begriffe, die in einem Konzept verwendet werden, werden nicht mit den Begriffen gemischt, die in einem anderen verwendet werden. Zum Beispiel kann man manchmal die These hören, dass jemand die Existenz Gottes bewiesen hat. Aber sobald jemand dies beweist, hört Gott auf, Gott zu sein und wird zu einem anderen Konzept. Daher ist es unmöglich, die Existenz Gottes zu beweisen, und daher ist es unmöglich, den Begriff Beweis in die Religion einzuführen.
    Ebenso gibt es in der Ontologie zwei Ansätze: Einer wurde von Aristoteles erfunden. Das ist Typentheorie. Die zweite wurde im Gegensatz zu den aristotelischen Typen geprägt. Dieser Ansatz wird als logisches Paradigma bezeichnet und verwendet den Begriff Klasse. Diese beiden Paradigmen sind wie Wissenschaft und Religion nicht mischbar. Daher kann der Begriff Klasse nicht in der Typentheorie und der Begriff Typ nicht in der Klassentheorie verwendet werden. Die PLO hat jedoch gegen dieses Verbot verstoßen. Dafür muss er fu sagen.

    In meinen Präsentationen stütze ich mich auf ein logisches Paradigma, in dem es ein Objekt gibt und es viele Objekte gibt, die als Objektklasse bezeichnet werden, aber es gibt keine Begriffe Instanz, Typ und Begriffsklasse im Sinne von OOP. Für eine Einführung in das logische Paradigma kann ich empfehlen, Chris Partridge Business Objects zu lesen : Re-Engineering für die Wiederverwendung , Matthew WestEntwicklung hochwertiger Datenmodelle .

    Die Basis des logischen Paradigmas: Kommunikationsklassifikation und -spezialisierung


    Angenommen, es gibt eine Klasse von Objekten, die Räder genannt werden. Diese Klasse enthält alle Räder der Welt, die waren, sind und sein werden. Per Definition wird die Tatsache, dass ein Objekt dieser Klasse (Rad) zu einer Klasse von Rädern gehört, durch eine Klassifizierungsbeziehung bezeichnet.



    In OOP gibt es keine solche Beziehung, und Sie können sie nicht im UML-Diagramm angeben.

    Es gebe eine Unterklasse (Teilmenge) dieser Klasse - die Klasse der zu untersuchenden Räder (zum Beispiel die Klasse der Räder, die zu einer Maschine gehören). Per Definition wird die Tatsache, dass diese Klasse eine Teilmenge der Klasse aller Räder ist, durch Spezialisierung bezeichnet.



    In OOP wird diese Beziehung zwischen Klassen als Vererbung bezeichnet. Klasse 2 soll von Klasse 1 geerbt sein.



    In der Natur ist Klasse 2 jedoch eine Teilmenge von Klasse 1. Offensichtlich bedeutet dies, dass die Attribute oder Parameter vererbt werden. Die Parameter stehen aber nur in der Typenbeschreibung! Und wieder stoßen wir auf eine Mischung von Begriffen. Klassen können nichts erben. Aber Typen können.

    Zu Zusammenhängen, Spezialisierung und Klassifizierung finden Sie hier: Informationsobjekte oder die Ursache eines Fehlers (Im Abschnitt „Lösung in einem logischen Paradigma“ habe ich gezeigt, wie Sie mit diesen Begriffen einen Themenbereich modellieren können).

    Die Unterteilung in Klassen und Klassenobjekte ermöglicht es mir, alle Objekte der untersuchten Klasse zu betrachten, zum Beispiel die Elefantenklasse (um die Lebensdauer eines der Elefanten, die Länge seiner Stoßzähne in verschiedenen Stadien seines Lebens zu untersuchen) sowie die Elefantenklasse (um die durchschnittliche Lebensdauer der Elefanten und die durchschnittliche Größe zu untersuchen) und Durchschnittsgewicht). Es ist klar, dass ein Elefant der Klasse keine Informationen über die durchschnittliche Lebenserwartung aller Elefanten "wissen" kann. Nur die Klasse der Elefanten "kennt" diese Informationen. Versuchen Sie in Aristoteles 'Paradigma, ein Objekt zu finden, das die durchschnittliche Größe von Elefanten „kennt“, ohne den Begriff Set zu verwenden! Es ist unwahrscheinlich, dass Sie Erfolg haben werden. Wenn Sie ein Analyst sind, müssen Sie daher mit Objekten und Objektklassen arbeiten (Klassen bedeuten jedoch nicht OOP).

    Lassen Sie mich daran erinnern: Eine Klasse in einem logischen Paradigma und eine Klasse in OOP sind zwei verschiedene Dinge. Eine Beschreibung einer Klasse in einem logischen Paradigma ist eine Aufzählung der Objekte dieser Klasse und nicht der Eigenschaften dieser Objekte. In OOP bezieht sich eine Klassenbeschreibung auf eine Beschreibung der Eigenschaften von Objekten, dh auf eine Beschreibung des Objekttyps. Diejenigen, die OOP unterrichten, verbergen nicht die Tatsache, dass eine Klasse in OOP eine Art Objekt ist. Aus diesem Grund wurde der Typ eine Klasse genannt, die nicht bekannt gegeben wurde.

    Beispiel
    Um zu verstehen, warum die Klassendefinition in OOP in der realen Welt nicht funktioniert, führen Sie die einfachste Operation für eine Klasse aus: Erstellen Sie eine Klasse aller Unterklassen dieser Klasse. Versuchen Sie außerdem, auf jede von Ihnen erstellte Unterklasse eine Klassendefinition anzuwenden, die für OOP gilt.

    Beispiel: Lassen Sie uns drei Apfelbäume {1; 2; 3} haben. Das ist eine Klasse. OOP erfordert das Vorhandensein von Objekten dieser Klasse gemeinsamer Features. Lassen Sie es ein Zeichen der Anwesenheit von Äpfeln sein. Erstellen Sie eine Klasse, die aus allen Unterklassen der Klasse dieser Apfelbäume besteht. Diese Klasse besteht aus Klassen: {{leer}; {1}; {2}; {3}; {1; 2}; {1; 3}; {2; 3}; {1; 2; 3}}.



    Das heißt, in dieser Klassenklasse gibt es 8 Elemente. Versuchen Sie, wenn Sie der Definition einer OOP-Klasse folgen, eine differenzierte Beschreibung dieser Klassen zu geben (eine andere ist bedeutungslos). Und das sind Blumen - es gibt nur drei Elemente in der Klasse. Und wenn es 1000 gibt, und wenn es eine abzählbare Menge gibt, und wenn das Kontinuum? Daher gibt es in OOP nicht einmal die einfachsten Operationen für Klassen (Addition und Subtraktion von Mengen).

    Jetzt auch beliebt: