AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Einige Methoden in mehreren Klassen verwenden?

Einige Methoden in mehreren Klassen verwenden?

Ein Thema von Pseudemys Nelsoni · begonnen am 26. Apr 2005 · letzter Beitrag vom 29. Apr 2005
Antwort Antwort
Seite 3 von 4     123 4   
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 26. Apr 2005, 23:47
Ich muss um Verzeihung bitten, wenn meine Postings bisher etwas ...naja klangen. Das war eher locker flockig gemeint . Ich denke ich habe das Problem an sich durchaus verstanden. Aber ich glaube ich weiss was mit zu obigem Schluss getrieben hat:
Zitat von Pseudemys Nelsoni:
dann müsste ich ja jede Klasse die die Methoden braucht von dieser ableiten.... ich muss aber schon von TCLientSocket ableiten...
Anhand dieses Beispiels nahm ich an, dass du unterschiedliche Klassen erstellt, die alle und auch nur von TClientSocket erben, und nichts anderem. Sehe ich das richtig, dass TClientSocket nur ein Beispiel war? Wenn nicht, dann blicke ich noch immer wohl nicht voll durch.

Zitat von Pseudemys Nelsoni:
In deinem Beispiel hätte TMainClass wie auch TClass1 nämlich von TClientSocket geerbt. Bloss brauch ich das in letzterer Klasse kaum.
Du musst von TClientSocket ableiten, brauchst das aber in einer tieferen Ableitung nicht mehr? Warum musst du dann erst überhaupt von TClientSocket ableiten?

Aber ich glaube etwas was man "generischen Vorfahrentyp" nennen könnte, wäre was du suchst oder? (Ist mir noch nie unter gekommen )
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#22

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 00:21
@ST: Ich versuchs mal, danke

@dizzy

Zitat:
Du musst von TClientSocket ableiten, brauchst das aber in einer tieferen Ableitung nicht mehr? Warum musst du dann erst überhaupt von TClientSocket ableiten?
Vielleicht habe ich mich auch ein ewnig unverständlich ausgedrückt, wenn dem so ist, dann sorry

Es ist nicht so das ich in einer tieferen ableitung keinen ClientSocket mehr brauche, denn ich leite nicht noch einmal von einer Klasse ab. Es geht darum das ich eine Klasse in 2 _verschiedenen_ Klassen benutzen kann.

Um nochmal mein Beispiel zu nennen:

Delphi-Quellcode:
TMethodClass = class(TObject)
private
  function func1: Integer;
  function func2: Integer;
  function func3: Integer;
end;
Das wäre meine Methoden-Klasse die ich innerhalb einer Klasse brauche die bereits schon von TClientSocket ableitet:

Delphi-Quellcode:
TAnotherClass = class(TClientSocket)
end;
^^^^ in diese Klasse möchte ich nun aber auch noch von TMethodClass ableiten damit ich dessen Methoden benutzen kann.

So etwas wie:

Delphi-Quellcode:
TAnotherClass = class(TClientSocket, TMethodClass)
end;

Aber das geht wohl nicht...


Danke für deine Hilfe trotzdem
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Fossibaer58809
Fossibaer58809

Registriert seit: 20. Aug 2004
Ort: Lüdenscheid
50 Beiträge
 
Delphi 2007 Professional
 
#23

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 01:03
Hallo zusammen,

eventuell ergibt sich eine Lösung im Zusammenhang mit den oben erwähnten Interfaces, eben durch "Delegieren an eine Eigenschaft vom Typ einer Klasse" (siehe OH, mit Beispiel).

Gruß
Michael
Michael Küper
Der Kreis ist eine Figur, bei der an allen Ecken und Kanten gespart wurde.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#24

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 01:04
Zitat von Pseudemys Nelsoni:
...Aber das geht wohl nicht...
So nicht. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#25

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 01:21
Ich wollte dir gerade einen kleinen Bleisitift basteln. Doch mein D7 fand es irgendwie cooler abzurauchen.

Ich habe dir noch ein klitzekleines Beispiel gefriemelt. Aus obengenanntem Abkacker ist mir die
Lust am Kommentieren vergangen. Die Bezeichner dürften aber, zusammen mit der minimalen Funktionalität ( ), selbstklärend sein.

Im Endeffekt leiten alle Klassen von einem Vorfahren ab.
Spätere Ableitungen implementieren ein Interface durch das sie generisch behandelt werden können.
Angehängte Dateien
Dateityp: zip multiinherited_158.zip (3,4 KB, 26x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Fossibaer58809
Fossibaer58809

Registriert seit: 20. Aug 2004
Ort: Lüdenscheid
50 Beiträge
 
Delphi 2007 Professional
 
#26

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 01:28
Auch ich habe eben auf Grund meines Postings eine kleine Demoapp gebastelt.
Sie hängt hier dran.

Gruß
Michael
Angehängte Dateien
Dateityp: zip test_129.zip (210,5 KB, 29x aufgerufen)
Michael Küper
Der Kreis ist eine Figur, bei der an allen Ecken und Kanten gespart wurde.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#27

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 03:37
Ich denke ich komme der Sache näher

Hatte gerad auch noch eine kleine Idee dazu, die aber (in meiner Version) voraussetzt, dass Parameterliste und evtl. Rückgabetyp der einzuerbenden Methoden alle gleich sind. Vielleicht lässt sich das ja auch noch umbasteln... Ist grad zu spät um da noch qualifiziert weiter zu denken

Hier mal was mir grad in den Sinn kam:
Delphi-Quellcode:
type
  TCFunc = function(a, b: Integer): Integer of object;

  TMethodClass = class
  public
    class function Add(a, b: Integer): Integer;
    class function Sub(a, b: Integer): Integer;
  end;

  TMyClass = class
  private
    FMethods: TMethodClass;
    function GetMethod(s: String): TCFunc;
  public
    property Method[s: String]: TCFunc read GetMethod; default;
  end;

implementation

{ TMethodClass }

class function TMethodClass.Add(a, b: Integer): Integer;
begin
  result := a+b;
end;

class function TMethodClass.Sub(a, b: Integer): Integer;
begin
  result := a-b;
end;

{ TMyClass }

function TMyClass.GetMethod(s: String): TCFunc;
begin
  if s = 'Addthen result := FMethods.Add
  else
  if s = 'Subthen result := FMethods.Sub;
end;

// Anwendung

procedure TuWas;
var
  tmp: TMyClass;
  x: Integer;
begin
  tmp := TMyClass.Create;
  x := tmp.Method['Add'](2, 3);
  x := tmp.Method['Sub'](x, 5);
  // Leider klappt, trotz default-tag folgendes nicht:
  x := tmp['Add'](2, 3);
  x := tmp['Sub'](x, 5);
  // Der Compiler meckert, aber ich kann nicht nachvollziehen warum :\
  tmp.Free;
end;

end.
Naja, wollts nur nicht vorenthalten haben - evtl. lohnt es sich ja doch da weiter zu denken.


Gudde Nacht,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#28

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 10:48
Moin zusammen

Soweit ich das beurteilen kann - und das kann ich (AUS! Robert) - ist die lösung von Fossibaer58809 die, die der ausgangsfragestellung am nächsten kommt, wenn sie sie nicht sogar komplett erfüllt. Das gefrimel von robert und dizzy ist zwar cool, aber echt nicht so elegant wie diese delphi-'delegates'. *und.hopp.und.weg*

Weiter so! Ich liebe solche threads, wo über elementares geredet wird und nicht über klickie-gelöt
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#29

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 11:42
Jo, interface implementierende properties sind schon irgendwo cool.

In meinem Bleistift sollte die Property (Name) aber nur vom Besitzer der versteckten Instanz gehandhabt werden.
Es sollte ja kein Umdenken nötig werden um in späteren Ableitungen damit umzugehen. (Deshalb ja auch ein fixer RefCount von 1 )
Genau da verlässt man IMHO die Möglichkeiten einer implementierenden property.

Wie gesagt, die Idee ist sau cool. Die Technik dahinter auch.
Ich denke dass wäre eine verflucht elegante Lösung gegen das leidige Problem der Typisierung/Generalisierung bei eigenen Collections.
Also wie es in .Net mit der expliziten Implementierung erfolgt.
Code:
  void IList.Add(object value)
  {
     Add(MyItemType(value));
  }

  public void Add(MyItemType value)
  {
     ...
  }
Danke nochmal, gefällt mir immer mehr...
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#30

Re: Einige Methoden in mehreren Klassen verwenden?

  Alt 27. Apr 2005, 12:10
Zitat von Robert_G:
...
Wie gesagt, die Idee ist sau cool. Die Technik dahinter auch.
Ich denke dass wäre eine verflucht elegante Lösung gegen das leidige Problem der Typisierung/Generalisierung bei eigenen Collections.
Also wie es in .Net mit der expliziten Implementierung erfolgt.
Code:
  void IList.Add(object value)
  {
     Add(MyItemType(value));
  }

  public void Add(MyItemType value)
  {
     ...
  }
Danke nochmal, gefällt mir immer mehr...
Welche idee? und welche technik? Hab grad den kontext verloren, bzw. weiss jetzt nicht auf wen du das beziehst.
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:56 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