Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten? (https://www.delphipraxis.net/181764-designfrage-liste-selber-schreiben-oder-von-tlist-oder-tlist-t-ableiten.html)

DeddyH 8. Sep 2014 10:55

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Günther hat am Samstag aufgepasst ;)

Der schöne Günther 8. Sep 2014 11:00

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Oh ja. Jetzt brauche ich nur noch diese Clean Code-Armbändchen. Oder ich lasse mir CLEAN CODE so auf die Finger tätowieren.

mh166 8. Sep 2014 11:03

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1271566)
Solche Doppelimplementationen von Interfaces kann man dann wiederum mit einer Delegation auf eine andere implementierende Klasse auflösen (siehe reserviertes Wort implements).

Zugegeben: bei meiner Suche nach Lösungen bin ich ja, wie gesagt, auch schon bei den Interfaces gelandet. Aber irgendwie war für mich die OH-Seite dazu wenig verständlich. Hab dann einfach bei Delphi-Treff das Tutorial zu Interfaces angeschaut. Hättest du eventuell ein kleines Beispiel, wie ich mir das vorstellen kann? =)

Zitat:

Zitat von Uwe Raabe (Beitrag 1271566)
BTW, könnte es sein, daß du in deinen abgeleiteten Klassen das override unterschlagen hast?

Öhm ... kööönnte wohl sein. :pale: War wohl doch etwas zu pseudo, der Code. 8-)

Zitat:

Zitat von Der schöne Günther (Beitrag 1271567)
Ein- und Ausgabe von und nach irgendwohin tackere ich mir selbst auch oft an Klassen, die es eigentlich nicht haben sollten. Ich will dich davor bewahren, so zu enden wie ich:
Es ist, wie der Name schon sagt, eine Liste. Kein Webserver-Response-Ausleser. Irgendwann hast du einen Webserver, der dir die Daten anders formatiert. Dann musst du deine Liste von Arbeitnehmern anpassen, nur weil sich ein Webserver geändert hat?

Ich gebe zu ... das ist durchaus plausibel und nachvollziehbar. =)

Zitat:

Zitat von Der schöne Günther (Beitrag 1271567)
Grade wenn man einmal damit angefangen hat verleitet es immer weiter, die Klasse mit Dingen aufzublähen die sie nicht haben sollte. Irgendwann kommt eine Methode
Delphi-Quellcode:
massenentlassung()
welche anhand von irgendwelchen Kriterien Arbeitnehmer auswählt und sie entfernt. Sie stecken zwar in der Liste, aber die Liste selbst hat auch nicht die Filterung zu treffen, wer entfernt wird. Das nur als Beispiel. Schuster, bleib bei deinen Listen (höhö).

Sag das nicht zu laut – so eine Funktion würde unser Betrieb sicher gern mal implementiert sehen. :D

Zitat:

Zitat von DeddyH (Beitrag 1271568)
Günther hat am Samstag aufgepasst ;)

Gabs hier im Forum was aufzupassen? =) Da würde ichs mir gern mal durchlesen, vielleicht ist ja auch für mich was nützliches bei. :stupid:

Der schöne Günther 8. Sep 2014 11:27

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Zitat:

Zitat von mh166 (Beitrag 1271571)
Gabs hier im Forum was aufzupassen? =) Da würde ichs mir gern mal durchlesen, vielleicht ist ja auch für mich was nützliches bei. :stupid:

Das war ein Verweis auf Bernd Uas Vortrag "Besseren Code mit Delphi" vorgestern auf den Delphi-Tagen in Bonn. Ansonsten geht das Buch Clean Code in die selbe Richtung :-)


PS: Die beiden mittleren Zitate waren von mir, werden aber Uwe zugeschrieben. Verrückte Welt. Wenigstens haftet er jetzt juristisch für alle daraus entstehenden Schäden.

mh166 8. Sep 2014 14:47

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1271574)
Das war ein Verweis auf Bernd Uas Vortrag "Besseren Code mit Delphi" vorgestern auf den Delphi-Tagen in Bonn.

Ist es geplant, davon eine Aufzeichnung online zu stellen? Oder gibt es diese vielleicht ja sogar schon? :stupid:

Zitat:

Zitat von Der schöne Günther (Beitrag 1271574)
PS: Die beiden mittleren Zitate waren von mir, werden aber Uwe zugeschrieben. Verrückte Welt. Wenigstens haftet er jetzt juristisch für alle daraus entstehenden Schäden.

Da hab ich mich wohl verzitiert. :oops: Ist jetzt gefixed und du damit ab sofort wieder haftbar. :lol:

Uwe Raabe 8. Sep 2014 15:09

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Zitat:

Zitat von mh166 (Beitrag 1271640)
Zitat:

Zitat von Der schöne Günther (Beitrag 1271574)
Das war ein Verweis auf Bernd Uas Vortrag "Besseren Code mit Delphi" vorgestern auf den Delphi-Tagen in Bonn.

Ist es geplant, davon eine Aufzeichnung online zu stellen? Oder gibt es diese vielleicht ja sogar schon? :stupid:

Dieses Jahr gab es leider keine Aufzeichnungen :(

Dejan Vu 8. Sep 2014 17:44

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Das Buch 'Clean Code' ist wirklich zum empfehlen. Die deutsche Version ist sehr gut geschrieben und verständlich. Gehört ins Regal wie früher Donald Knuth.

Uwe Raabe 8. Sep 2014 17:46

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Zitat:

Zitat von Dejan Vu (Beitrag 1271673)
Gehört ins Regal wie früher Donald Knuth.

Wieso früher?

mh166 8. Sep 2014 18:19

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1271642)
Dieses Jahr gab es leider keine Aufzeichnungen :(

Das ist natürlich sehr schade. :(

Dürfte ich dich eventuell aber noch einmal um ein Beispiel für diese Delegation der Implementation von Interfaces bitten? :) Ich find irgendwie nix, dass ich so wirklich verstehe. :oops:

Der schöne Günther 8. Sep 2014 18:31

AW: Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?
 
Kurzfassung:
Delphi-Quellcode:
   // Delegiert das Krachmachen an einen TKrachmacher
   TWurstfabrik = class(TInterfacedObject, IKrachmacher)
      private var
         myKrachmacher: IKrachmacher;
      protected
         property krachDelegate: IKrachmacher
            read myKrachmacher
            implements IKrachmacher;
      public
         constructor Create();
   end;
Langfassung:
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

{$R *.res}

uses System.SysUtils;

type
   IKrachmacher = interface
   ['{CB618B3C-8057-4349-8CA3-8047907671A8}']
      procedure macheKrach();
   end;

   TKrachmacher = class(TInterfacedObject, IKrachmacher)
      public procedure macheKrach();
    end;

   // Delegiert das Krachmachen an einen TKrachmacher
   TWurstfabrik = class(TInterfacedObject, IKrachmacher)
      private var
         myKrachmacher: IKrachmacher;
      protected
         property krachDelegate: IKrachmacher
            read myKrachmacher
            implements IKrachmacher;
      public
         constructor Create();
   end;


{ TKrachmacher }

procedure TKrachmacher.macheKrach;
begin
   case Random(3) of
      0: WriteLn('<Ratter, ratter, quietsch>');
      1: WriteLn('*entweichender Dampf*');
      2: WriteLn('*heulende Sirene*');
   end;
end;

{ TWurstfabrik }

constructor TWurstfabrik.Create();
begin
   inherited Create();
   myKrachmacher := TKrachmacher.Create();
end;

var
   myKrachmacher: IKrachmacher;

begin
  try
   myKrachmacher := TWurstFabrik.Create();
   myKrachmacher.macheKrach();
   myKrachmacher.macheKrach();
   myKrachmacher.macheKrach();

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

  ReadLn;
end.
Syntaxmäßig ein bisschen lang.
Delphi-Quellcode:
implements
kann man nur auf (eigentlich überflüssige) Properties anwenden, nicht direkt auf Felder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 Uhr.
Seite 2 von 3     12 3      

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