2011-01-06 15 views
0

Das Wort abstrakt ist, wenn wir über eine Queue-Klasse oder eine Klasse sprechen. Eine Klasse ist abstrakt oder? Wie wird das Wort abstrakt in der Programmierung verwendet? Etwas, das abstrakt ist? Was bedeutet das?Zusammenfassung in der Programmierung

Antwort

5

Zusammenfassung in OO wird verwendet, um anzugeben, dass die Klasse nicht direkt instanziiert werden kann und vor Instanziierung geerbt werden muss. Wiki erklärt dies schön.

4

Abstrakt bedeutet, dass Sie eine Idee auf einer oder mehreren Ebenen außerhalb eines bestimmten Beispiels diskutieren, auf das Sie tatsächlich zeigen oder erstellen können.

Soweit es Klassen betrifft, ist eine abstrakte Klasse abstrakt, weil sie nicht instanziiert werden kann. Eine bestimmte Klasse, die instanziiert werden kann, ist konkret und kann ein Beispiel für eine bestimmte abstrakte Klasse sein.

Wenn Ihre Datenstrukturklasse einen 'abstrakten' Datentyp wie eine Queue diskutiert, bedeutet der Lehrer Queue als 'eine FIFO-Datenstruktur'. Etwas weniger absract ist Java's AbstractQueue. Eine konkrete Warteschlange, die Sie „Punkt“ (nicht im Sinne von Zeigern und Gedächtnis, aber in dem Sinne, „Es gibt eine Schlange!“) Java LinkedBlockingQueue

könnte
`Abstract` ... ... ... ... ... ... ... ... ... `Concrete` 
a queue   AbstractQueue    LinkedBlockingQueue 
a group   an infinite group   positive integers 
a car   a Ford  1995 Ford Taurus  My 1995 Ford Taurus VIN# 3489230148230 
0

Abstrakte Klassen können nicht und stattdessen instanziiert werden werden von anderen Klassen geerbt, in der Regel von konkreten. Sie enthalten normalerweise Code, der für das Erben von Klassen üblich ist, um die Codeverdopplung zu minimieren.

0

Ich denke, es kann ein paar Dinge im Zusammenhang mit der Programmierung bedeuten. Aber für mich denke ich daran im Zusammenhang mit virtuellen Methoden, die abhängig vom zugrunde liegenden Objekttyp unterschiedliche Aufgaben ausführen können. Das würde im Gegensatz zu einer Methode stehen, die immer die gleiche, festgelegte Menge von Operationen ausführt.

Tatsächlich gibt es "abstrakte Klassen", bei denen eine oder mehrere Methoden rein virtuell sind, was bedeutet, dass sie nicht von dieser Klasse implementiert werden. Eine solche Klasse kann nicht instanziiert werden. Stattdessen müssen Sie eine neue Klasse daraus ableiten, die die reinen virtuellen Methoden implementiert, und dann können Sie die zweite Klasse instanziieren.

1

Der Begriff "abstrakt" kann je nach Kontext eine ganze Reihe verschiedener Dinge bedeuten.

Die zwei häufigsten Anwendungen von "abstrakt" beziehen sich auf objektorientierte Programmierung. Eine Methode heißt "abstrakt" (oder, in C++ - sprich "rein virtuell"), wenn die Methode keine Implementierung hat. Der Zweck einer abstrakten Methode besteht darin anzugeben, dass Klassen, die von der gegebenen Klasse erben, alle eine Methode mit der angegebenen Signatur haben, aber für diese Methode gibt es kein vernünftiges Standardverhalten. Ein allgemeines Beispiel ist in einer Klassenhierarchie von Formen, dass die Basisklasse für Formen eine abstrakte Methode haben kann, die die Form auf dem Bildschirm zeichnet. Es gibt kein gutes Standardverhalten für das Zeichnen "einer Form" - welche Form hat es? - aber jede individuelle Form wird eine konkrete Umsetzung dieser Funktion haben.

Ein verwandter Begriff ist eine "abstrakte Klasse", eine Klasse, die eine abstrakte Methode enthält. Da die Klasse diese abstrakte Methode enthält, können Sie kein konkretes Objekt dieses Klassentyps haben. Wenn Sie andernfalls versuchen würden, die abstrakte Methode aufzurufen, würden Sie feststellen, dass keine Implementierung damit verbunden ist. In einem ganz anderen Kontext taucht das Wort "Abstrakt" manchmal in dem Begriff "abstrakter Datentyp" auf, der ein Objekt beschreibt, das einige mathematische Operationen unterstützt, ohne notwendigerweise zu erklären, wie diese Operationen implementiert werden . Zum Beispiel sind "Stapel", "Warteschlange" und "Liste" alle abstrakte Datentypen, da sie beschreiben, welche Verhaltensweisen von einem gegebenen Objekttyp erwartet werden, ohne eine Implementierung zu geben (z. B. dynamische Matrix? Verknüpfte Liste? Hash-Tabelle?)

Der Begriff "abstrakt" kommt auch in der "Abstraktion" vor, die eine Vereinfachung eines komplexen Systems in etwas mehr Managables darstellt. Zum Beispiel wird das Netzwerk-Routing normalerweise in eine unterschiedliche Anzahl von "Schichten" unterteilt, von denen jede für die Handhabung eines Teils der Ende-zu-Ende-Kommunikation verantwortlich ist. Jede Schicht wird mit einer bestimmten Aufgabe beauftragt und muss eine Eingabe aufnehmen und eine Ausgabe in einer vorbestimmten Art und Weise erzeugen. Dies ermöglicht es Programmierern auf einer Ebene, alle anderen Ebenen als "Black Boxes" zu behandeln, die die Arbeit auf magische Weise erledigen, vorausgesetzt, dass Sie dem Layer die richtige Form geben oder die Ausgabe eines Layers auf eine bestimmte Art und Weise lesen Sie müssen sich keine Gedanken darüber machen, wie diese Ebene funktioniert.

Hoffe, das hilft!

1

Nun ein gutes Beispiel in OO ist ein Tier, dann würden Sie wie so eine abstrakte Klasse haben:

abstract class Animal 
{ 
    public AnimalType Type { get; set; } 
} 

Jetzt können Sie ein Tier nicht völlig erklären können, müssen Sie eine Klasse, die von einem erbt Tier, wie eine Katze:

class Cat : Animal 
{ 
     public Cat() 
     { 
      Type = AnimalType.Feline; 
     } 
} 

So würde dies nicht funktionieren:

Animal a = new Animal(); 

aber dies würde:

Animal a = new Cat(); 

Also im Grunde, was Sie sagen, das ist eine Basisklasse ist, kann man nicht die eigenen man darauf machen, können Sie mehr Informationen benötigen, sagen eine Klasse, die von ihr erbt. Art von schwer zu erklären, also hoffe das Beispiel hilft!

+1

Wie kommt es, dass das nicht mehr Stimmen bekommen? +1 für das Beispiel. – webdad3

0

Abstraktion ist eine Möglichkeit, zusammengesetzte Objekte aus einfacheren zu erstellen. Eine Funktion kann zum Beispiel eine Form der Blackbox-Abstraktion sein .. wo die inneren Funktionen der Funktion vor dem Benutzer verborgen sind.

Datenabstraktion im Allgemeinen ist eine Methode, die es Programmierern ermöglicht, zu isolieren, wie ein zusammengesetztes Datenobjekt verwendet wird, aus den Details, wie es aus primitiveren Datenobjekten konstruiert wird.

Verwandte Themen