AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

BCB: Problem mit abstrakter Klasse

Ein Thema von messie · begonnen am 5. Feb 2006 · letzter Beitrag vom 5. Feb 2006
 
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: BCB: Problem mit abstrakter Klasse

  Alt 5. Feb 2006, 18:20
Zitat von messie:
Muss ich, wenn ich nach diesem Prinzip vorgehen benutzen will immer den Weg über eine abgeleitete Klasse gehen?

Käme mir etwas merkwürdig vor...
Sorry wenn du jetzt den Eindruck vom Oberlehrer hast oder so, aber abstrakte Klassen werden dir sicherlich häufiger begegnen und sind gar nicht so unwichtig. Deshalb kurz die Erklärung, warum du die nicht direkt instanziieren kannst.

Eine abstrakte Klasse kann Methoden besitzen, die sind abstrakt. Das heißt du hast erstmal eine ganz normale Klasse und für die gilt auch einfach alles, was für eine normale Klasse gilt. Dann kommt aber noch ein wenig dazu, nämlich die abstrakten Methoden. Für diese sagst du nur, wie sie heißen und was für Parameter sie bekommen. Wie sie implementiert werden, dass steht dann noch gar nicht fest, gibt einfach nur die Signatur.
Würdest du jetzt eine Instanz von dieser Klasse erzeugen, würden diese nicht implementierten Methoden natürlich nicht funktionieren. Also geht das erst gar nicht.

Wo ist der Sinn? Abstraktion. Jeder nicht abstrakte Nachfahre hat auf jeden Fall die Methoden mit diesen Signaturen, aber wie genau die implementiert werden, kann dir egal sein. Wenn du zum Beispiel Daten speichern willst, könntest du einen Container schaffen, der alles mögliche aufnimmt, einfach mit einem Add(Element : TElement) oder etwas C-Like add(TElement element).
Ist dies eine abstrakte Methode der Klasse TContainer, könntest du jetzt eine THashList, TLinkedList und ein TArray ableiten, die zwar alle diese Methode implentieren, aber völlig anders jeweils.
Die THashlist, könnte wirklich mit Hashcodes arbeiten, die TLinkedList eine verkettete Liste sein und nun ja, TArray ist auch klar.
In deinem Programm benutzt du einfach nur ein TContainer und egal was du für einen Nachfahren bekommst, es würde funktionieren. Und dich interessiert in der Regel einfach nicht, wie gespeichert wird, hauptsache schnell und es funktioniert.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz