AGB  ·  Datenschutz  ·  Impressum  







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

OOP und ihre Tücken...

Ein Thema von DelphiCreak · begonnen am 8. Sep 2012 · letzter Beitrag vom 9. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
DelphiCreak

Registriert seit: 3. Sep 2008
51 Beiträge
 
Delphi 2007 Enterprise
 
#1

OOP und ihre Tücken...

  Alt 8. Sep 2012, 18:53
Ich arbeite gerade an einem Dateisystem mit funktionen für Zip's etc, und bin darauf auf ein interessantes verhalten gestoßen:

Ich habe mehrere Klassen für eine Datei(noFile, noFile_Permanent, noFile_Memory, noFile_InZip), um eben die verschiedenen Instanzen von Dateien speichern zu können. Die letzten 3 erben nun wiederum von noFile.

Hat man nun allerdings eine Prozedur a la:

Delphi-Quellcode:
function GetOSFile: noFile;
begin
   Result := noFile_Permanent.Create;
end;
Landet man, wenn man die Rückgabe dieser Prozedur anspricht, bei den Prozeduren der BasisKlasse noFile (z.B. habe ich eine Methode Length, die bei noFile = 0 zurückgibt, bei Permanet die Länge der Datei), statt bei denen von noFile_Permanent.

Nun zur eigentlichen Frage: Warum geht das überschreiben der Prozeduren verloren?
Nach meinem Verständnis von OOP sollte man über das Ergebnis doch jetzt die (überschriebenen) Prozeduren von noFile_Permanent ansprechen. Warum ist das nicht so, oder was mache ich falsch?
Dominik C.
Orientierungslos sieht man mehr vom Leben.

Geändert von TBx ( 9. Sep 2012 um 11:01 Uhr) Grund: Titel korrigiert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: OOP und seine tücken...

  Alt 8. Sep 2012, 18:58
Ist das eine reguläre Funktion oder eine Methode? Falls Letzteres, wurde sie in der Basisklasse als virtuell deklariert und in der abgeleiteten überschrieben? Im Übrigen bin ich persönlich kein Freund von Funktionen, die eine Objektinstanz zurückgeben, die sie selbst erzeugen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
DelphiCreak

Registriert seit: 3. Sep 2008
51 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: OOP und seine tücken...

  Alt 8. Sep 2012, 19:00
In der BasisKlasse ist die Prozedur virtual, und die abgeleiteten Klassen überschreiben die Prozedur dementsprechend...
Dominik C.
Orientierungslos sieht man mehr vom Leben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: OOP und seine tücken...

  Alt 8. Sep 2012, 19:05
Nunja, der Rückgabetyp ist ja nun einmal vom Typ noFile. Du könntest diesen aber nach dem Funktionsaufruf auf den "Untertyp" überprüfen. Oder man macht es ganz anders und übergibt noch einen Klassentypen, in der Art
Delphi-Quellcode:
type
  noFileClass = class of noFile;

function GetOSFile(aType: noFileClass): noFile;
begin
   Result := aType.Create;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
DelphiCreak

Registriert seit: 3. Sep 2008
51 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: OOP und seine tücken...

  Alt 8. Sep 2012, 19:13
Werd mal versuchen einen Klassentypen mit einzubauen...auch wenn das imho nicht nötig sein sollte / nichts ändern dürfte...mal schauen

[Edit]
Habs drin gehabt mit klassentyp - keine Veränderung, dann nen Rollback gemacht, und jetzt Läufts...verstehe wer will, ich tus nicht, aber es läuft jetzt.
Dominik C.
Orientierungslos sieht man mehr vom Leben.

Geändert von DelphiCreak ( 8. Sep 2012 um 19:47 Uhr)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: OOP und seine tücken...

  Alt 8. Sep 2012, 20:50
Moin Detlef,

Im Übrigen bin ich persönlich kein Freund von Funktionen, die eine Objektinstanz zurückgeben, die sie selbst erzeugen.
Und wenn sie diese Objekte selber verwalten, wie z.B. TListView das TListItem?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: OOP und seine tücken...

  Alt 8. Sep 2012, 22:26
Moin Christian,

das ist etwas anderes, aber dann ist der Code auch ausführlicher . Als Negativbeispiel sehe ich z.B. GetFormImage an, da man die so ermittelte Instanz selbst freigeben muss, das ist IMO sehr unschön.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: OOP und seine tücken...

  Alt 8. Sep 2012, 22:53
Moin Detlef,

das ist IMO sehr unschön.
dann sind wir uns ja einig
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: OOP und seine tücken...

  Alt 9. Sep 2012, 00:31
Sieht so aus

P.S.: http://www.detlef-heibing.de/program...rueckgabe.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: OOP und seine tücken...

  Alt 9. Sep 2012, 00:39
Ist das eine reguläre Funktion oder eine Methode? Falls Letzteres, wurde sie in der Basisklasse als virtuell deklariert und in der abgeleiteten überschrieben? Im Übrigen bin ich persönlich kein Freund von Funktionen, die eine Objektinstanz zurückgeben, die sie selbst erzeugen.
hmmm, FactoryPattern ... ist eigentlich nicht ungewöhnlich, allerdings so wie es umgesetzt ist ist es keine Factory und da gebe ich dir Recht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz