Eine Frage an die OOP-Experten. - Seite 18

 

Einevirtuelle Funktion ist eine Funktionsvorlage, die in einer Basisklasse gespeichert ist und nur in Nachfolgeklassen implementiert werden kann. Klassen können auch virtuell sein. Die virtuellen Klassen, die virtuelle Funktionen enthalten, werden "Schnittstellen" genannt. Zusammen implementieren sie einen der wichtigsten OOP-Mechanismen - den Polymorphismus.

Nur in der Praxis verstehe ich nicht, wohin damit...

 
Georgiy Merts:

Warum sollte das so sein?

Der globale Kernel und OOP schließen sich nicht gegenseitig aus.

Nur die Elemente in den Fenstern sollten in den Fensterklassen gekapselt sein und nicht "für alle sichtbar herumliegen". Nur damit niemand versehentlich "an den falschen Ort" gerät. Es ist sehr einfach, eine Variable zu ändern und dabei einen Fehler bezüglich ihrer Position in einem riesigen globalen Array zu machen, während es viel schwieriger ist, die richtige Schnittstelle abzufragen und dann die gleiche Variable im richtigen Objekt zu ändern und dabei einen Fehler zu machen.

Leider schließen sie sich gegenseitig aus. Ein globaler Kernel impliziert eine globale Sichtbarkeit, wodurch die Notwendigkeit von

(1) Bei der Kapselung von Code. Warum, wenn alles von überall aus zugänglich ist?

(2 ) Überladen von Funktionen. Warum, wenn es einfacher ist, die Arbeit in einem zu erledigen und die Ergebnisse universell sichtbar und zugänglich zu machen?

(3) Polymorphismus. Warum verschiedene Implementierungen unter einer Vorlage verstecken, wenn eine Einheit die Arbeit dieser Vorlagenvarianten übernehmen kann? Der Umfang des Codes wäre geringer und die Syntax wäre um ein Vielfaches einfacher.

Der ganze Sinn von OOP liegt in Folgendem:

1. Entlastung des menschlichen Gedächtnisses. (Er ist schlecht ausgelastet. Es gibt zu viel Syntax).

2. Verteilung der gemeinsamen Arbeit innerhalb eines Teams (jeder kennt einen Teil des Codes, daher gibt es Probleme beim Erstellen und Debuggen).

3. Übertragbarkeit des Codes. (Dies ist wirklich ein Pluspunkt).

4. Marketing. Vertrieb und Verkauf von Entwicklungsumgebungen, Bibliotheken, durch Werbung für verschiedene Gadgets.

 
Реter Konow:

Leider ausgrenzend. Ein globaler Kernel impliziert eine globale Sichtbarkeit, wodurch die Notwendigkeit für

(1) In kapselndem Code. Warum, wenn alles von überall aus zugänglich ist?

(2 ) Überladen von Funktionen. Warum, wenn es einfacher ist, die Arbeit in einem zu erledigen und die Ergebnisse universell sichtbar und zugänglich zu machen?

(3) Polymorphismus. Warum verschiedene Implementierungen unter einer Vorlage verstecken, wenn eine Einheit die Arbeit dieser Vorlagenvarianten übernehmen kann? Der Umfang des Codes wäre geringer und die Syntax wäre um ein Vielfaches einfacher.

Der ganze Sinn von OOP liegt in Folgendem:

1. Entlastung des menschlichen Gedächtnisses. (Er ist schlecht ausgelastet. Es gibt zu viel Syntax).

2. Verteilung der gemeinsamen Arbeit innerhalb eines Teams (jeder kennt einen Teil des Codes, daher gibt es Probleme beim Erstellen und Debuggen).

3. Übertragbarkeit des Codes. (Dies ist wirklich ein Pluspunkt).

4. Marketing. Vertrieb und Verkauf von Entwicklungsumgebungen, Bibliotheken, durch Werbung für verschiedene Gimmicks.

Wer sind Sie, und was wollen Sie beweisen? Dass OOP schlecht ist und ein Haufen Zeug an einem Ort gut ist? Ist das alles, wofür Sie diesen Thread erstellt haben? Oder wollen Sie Ihr Ego stärken, indem Sie Ihr Super-Gedächtnis loben? Klingt für mich wie Ihr Alter Ego. Mehr nicht.
Dann verliert das Thema seine praktische Bedeutung - es kann mit "Seht mich an" überschrieben werden. Es ist nutzlos.

Alles, was man dir sagt, stellst du sofort in Frage, wobei du nicht vergisst, hinzuzufügen, wie du bist und wie es dir geht und dass alles gut und besser ist und dass die ganze Welt dumm ist und andere Dinge, die zu einem ungelernten, belasteten Nihilismus in seiner schönsten Erscheinungsform des Menschen gehören.

 
Artyom Trishkin:

Wer sind Sie, und was wollen Sie beweisen? Dass OOP schlecht ist und ein Haufen Zeug an einem Ort gut ist? Ist das alles, wofür Sie diesen Thread erstellt haben? Oder wollen Sie Ihr Ego stärken, indem Sie Ihr Super-Gedächtnis loben? Klingt für mich wie Ihr Alter Ego. Mehr nicht.
Dann verliert das Thema seine praktische Bedeutung - es kann mit "Seht mich an" überschrieben werden. Es ist nutzlos.

Alles, was man dir sagt, stellst du sofort in Frage, wobei du nicht vergisst, hinzuzufügen, wie du bist und wie es dir geht und dass alles gut und besser ist und dass die ganze Welt dumm ist und andere Dinge , die zu einem ungelernten, belasteten Nihilismus in seiner schönsten Erscheinungsform des Menschen gehören .

Du tust es schon wieder, nicht wahr?)) Ich dachte, du hättest aufgehört, meine Themen zu trollen. Ich kann nicht...)

Wenn jemand persönlich wird, bedeutet das, dass er in der Sache nichts zu sagen hat. Offensichtlich sind die Argumente stichhaltig.
 

Das Argument für OOP ist einfach: Die Menschen brauchen es.

An diesem Punkt können wir das Thema beenden.

 
Реter Konow:

Leider ausgrenzend. Ein globaler Kernel impliziert eine globale Sichtbarkeit, wodurch die Notwendigkeit für

(1) In kapselndem Code. Warum, wenn alles von überall aus zugänglich ist?

(2 ) Überladen von Funktionen. Warum, wenn es einfacher ist, die Arbeit in einem zu erledigen und die Ergebnisse universell sichtbar und zugänglich zu machen?

(3) Polymorphismus. Warum verschiedene Implementierungen unter einer Vorlage verstecken, wenn eine Einheit die Arbeit dieser Vorlagenvarianten übernehmen kann? Der Umfang des Codes wäre geringer und die Syntax wäre um ein Vielfaches einfacher.

Der ganze Sinn von OOP liegt in Folgendem:

1. Entlastung des menschlichen Gedächtnisses. (Er ist schlecht ausgelastet. Es gibt zu viel Syntax).

2. Verteilung der gemeinsamen Arbeit innerhalb eines Teams (jeder kennt einen Teil des Codes, daher gibt es Probleme beim Erstellen und Debuggen).

3. Übertragbarkeit des Codes. (Dies ist wirklich ein Pluspunkt).

4. Marketing. Vertrieb und Verkauf von Entwicklungsumgebungen, Bibliotheken, durch Werbung für verschiedene Gimmicks.

Es handelt sich also um unterschiedliche Dinge.

Ich habe in jedem EA (in der gleichen Liga) - es gibt Objekte mit globalem Geltungsbereich.

Aber Ihr Kernel kann als eine Klasse dargestellt werden, die eine Reihe von Funktionen hat - getter setters, als Ergebnis wird es ziemlich "OOP-ähnlich" sein, aber mit globalem Zugriff. Obwohl, natürlich, ohne die wichtigsten Vorteile der OOP - Kapselung, Vererbung und Polymorphismus.

Was das betrifft, worauf OOP beruht - das erste sollte nicht nur durch das Auslagern von Speicher (und das geht sehr gut), sondern auch durch das Auslagern von Codeunterstützung und -änderung hinzugefügt werden. Außerdem ist es viel einfacher, Entwicklungen wiederzuverwenden, die mit OOP-Design viel einfacher zu nutzen sind als ohne. 4 - Marketing" ist übrigens nur eine Folge dieser sehr viel einfacheren Nutzung.

 
Artyom Trishkin:

Alles, was man dir sagt, stellst du sofort in Frage, wobei du nicht vergisst, hinzuzufügen, wie du bist und dass alles gut und besser ist und dass die ganze Welt ein Idiot ist und andere Dinge, die zu einem ungelernten, belasteten Nihilisten in seiner schönsten Form gehören.

Artem, ich beneide Peter um sein Gedächtnis...

Ganz zu schweigen von der Tatsache, dass Peter versucht hat, einige echte Einsichten zu vermitteln.

 

Informativ, aber nichts für Einsteiger in das ThemaOOP-Muster in Metaphern

rein inhaltlich:Was sind Anti-Patterns?

 
Igor Makanu:

Informativ, aber nichts für Einsteiger in das ThemaOOP-Muster in Metaphern

rein inhaltlich:Was sind Anti-Patterns?

Der zweite Artikel ist nützlicher und meiner Meinung nach eine Pflichtlektüre für alle, unabhängig von der Art der Programmierung, die sie praktizieren.
 
Реter Konow:

Einevirtuelle Funktion ist eine Funktionsvorlage, die in einer Basisklasse gespeichert ist und nur in Nachfolgeklassen implementiert werden kann. Klassen können auch virtuell sein. Die virtuellen Klassen, die virtuelle Funktionen enthalten, werden "Schnittstellen" genannt. Zusammen implementieren sie einen der wichtigsten OOP-Mechanismen - den Polymorphismus.

Nur in der Praxis verstehe ich nicht, wohin damit...

virtuelle Funktionen sind solche, die in einer abgeleiteten Klasse überschrieben werden können. eine Vorlage ist in jedem Kontext anders.

Eine bestimmte Implementierung kann durchaus in einer Basisklasse enthalten sein. oder nicht (wenn die Funktion rein virtuell ist)

Klassen können nicht virtuell sein, sie können abstrakt sein. Es gibt virtuelle Vererbung, aber man braucht sich damit nicht zu beschäftigen.

Die Schnittstelle ist, grob gesagt, eine abstrakte Klasse, die nur rein virtuelle Funktionen enthält.

virtuelle Funktionen sind nur ein Teil des Polymorphismus - dynamischer Polymorphismus. Überladung und Vorlagen sind statisch.

Man kann es überall machen, man lässt es nur alles durch sein flaches Tischdenken durchgehen.

Grund der Beschwerde: