AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Berechnungsergebnise verschiedener Klassen zusammenführen
Thema durchsuchen
Ansicht
Themen-Optionen

Berechnungsergebnise verschiedener Klassen zusammenführen

Ein Thema von EdAdvokat · begonnen am 24. Apr 2018 · letzter Beitrag vom 25. Apr 2018
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Berechnungsergebnise verschiedener Klassen zusammenführen

  Alt 24. Apr 2018, 11:54
.. ja, das könnte z.B eine generische ObjectList<TKarte> sein.
Der "AlleKartenListe" könntest Du Deine Kartenklassen (eins, zwei) übergeben.

Oder Du baust Dir eine Warenkorbklasse die intern eine generische ObjectList verwendet.
Der Warenkorb kann dann den Gesamtpreis bereitstellen.

Grüße
Klaus
Klaus

Geändert von Klaus01 (24. Apr 2018 um 12:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Berechnungsergebnise verschiedener Klassen zusammenführen

  Alt 24. Apr 2018, 12:44
Ich hatte einen ähnlichen Gedanken:
Delphi-Quellcode:
uses ..., System.Generics.Collections;

type
  TBase = class
  strict private
    FAnzahl: integer;
    class var FInstances: TObjectList<TBase>;
    class constructor Create;
    class destructor Destroy;
    class function GetTotal: integer; static;
  public
    constructor Create; virtual;
    destructor Destroy; override;
    property Anzahl: integer read FAnzahl write FAnzahl;
    class property Total: integer read GetTotal;
  end;

  TEins = class(TBase)

  end;

  TZwei = class(TBase)

  end;

...


class constructor TBase.Create;
begin
  FInstances := TObjectList<TBase>.Create(false);
end;

constructor TBase.Create;
begin
  inherited Create;
  FInstances.Add(self);
end;

destructor TBase.Destroy;
var
  idx: integer;
begin
  idx := FInstances.IndexOf(self);
  if idx > -1 then
     FInstances.Delete(idx);
  inherited;
end;

class destructor TBase.Destroy;
begin
  FInstances.Free;
end;

class function TBase.GetTotal: integer;
var
  lBase: TBase;
begin
  Result := 0;
  for lBase in FInstances do
    inc(Result, lBase.Anzahl);
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
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Berechnungsergebnise verschiedener Klassen zusammenführen

  Alt 24. Apr 2018, 14:54
Danke DaddyH, zwar habe ich noch nicht alles verstanden, doch ich experimentiere damit bereits herum und versuche so hinter den tiefen Sinn Deines Quelltextes zu gelangen. Die Generics und auch die Anwendung von class-Methoden sind für mich noch Neuland. Jedenfalls rechnet er die in zwei edit-Felder eingegeben Anzahl-Werte zusammen.Na das ist ja schon mal was!
Ich versuche mich mit solchen theoretischen Tests an die Problematik heranzutasten, um dann damit eine praktische Anwendung zu erstellen. Doch da muss ich nochmals ein gutes Tutorial finden.
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Berechnungsergebnise verschiedener Klassen zusammenführen

  Alt 24. Apr 2018, 15:06
Das jetzt lang und breit zu erklären fehlt mir die Zeit, aber stell Dir die Objektliste als ein "klassenglobales Feld" vor, das für die Basisklasse sowie alle abgeleiteten Klassen gilt. Näheres dazu findest Du hier: http://docwiki.embarcadero.com/RADSt...lassenmethoden
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
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Berechnungsergebnise verschiedener Klassen zusammenführen

  Alt 24. Apr 2018, 17:13
Das ist verdammt harte Kost. Ich habe noch immer nicht verstanden, welche Vorteile mir die Arbeit mit Klassenmethoden gegenüber der bislang praktizierten OOP bringt, also was ist der Vorteil dieser Weiterentwicklung für den Programmierer mal unabhängig von Objectlisten usw.?
Was kann ich besser mit class function xyz oder class procedure xyz gegenüber function xyz oder procedure xyz bei der Programmierung grundsätzlich erreichen? Ich verstehe durchaus, dass es nicht einfach ist, soetwas hier zu erklären, doch mit entsprechender Literatur sieht es weniger gut aus.
Ich habe mich bereits an Marco Cantu in engl. herangemacht, doch das ist verdammt schwer für mich alten Zausel. Es ist ja nur für mich als Hobbyist.
Norbert
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.495 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Berechnungsergebnise verschiedener Klassen zusammenführen

  Alt 24. Apr 2018, 17:33
Hallo,
soweit ich das beurteilen kann, meine ich dass Du Klassenmethoden hier nicht nehmen sollst. Eine TKarte repräsentiert eine einzelne Karte und sollte von anderen Karten nichts wissen.
Du kannst das wie Du ja auch schon hast in das formular tun, das aber nur wie bei deinem Beispiel wenn es ganz einfach ist. Sonst schlage ich eine separate Klasse TKarten vor, die die einzelnen Karten enthält und auch die Aufrechnung vornimmt. Ob dann da intern eine ObjectListe oder wie auch immer drin ist, sollte von außen nicht mehr sichtbar sein.

Nochmals zu Klassenmethoden: ich halte die für fast so schlimm wie globale Methoden. Man sollte diese nur einsetzen wenn es unbedingt nötig ist.

PS.: Der Trend geht übrigens wieder weg von OOP
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Berechnungsergebnise verschiedener Klassen zusammenführen

  Alt 24. Apr 2018, 17:52
Du kannst das wie Du ja auch schon hast in das formular tun, das aber nur wie bei deinem Beispiel wenn es ganz einfach ist. Sonst schlage ich eine separate Klasse TKarten vor, die die einzelnen Karten enthält und auch die Aufrechnung vornimmt. Ob dann da intern eine ObjectListe oder wie auch immer drin ist, sollte von außen nicht mehr sichtbar sein.
Meinst Du ggf. folgende Lösung, die ich vormals bereits vorgenommen habe: https://www.delphipraxis.net/191102-...inokarten.html
bitte dort die letzte Variante ansehen.
Mit den jetzigen theoretischen Versuchen wollte ich dieses alte Projekt ggf. so neu programmieren, dass ich für jeden Rang oder Loge (Kinokarten) eine gesonderte class bilde und so das Projekt neu erstelle.
Das ist wohl nicht ganz so einfach wie ich dachte.
Wohin geht denn nun der Trend, wenn weg von OOP?
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Berechnungsergebnise verschiedener Klassen zusammenführen

  Alt 24. Apr 2018, 18:02
Sonst schlage ich eine separate Klasse TKarten vor, die die einzelnen Karten enthält und auch die Aufrechnung vornimmt. Ob dann da intern eine ObjectListe oder wie auch immer drin ist, sollte von außen nicht mehr sichtbar sein.
Und der Mehrwert gegenüber der Klasseneigenschaft liegt genau worin?
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
Antwort Antwort


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 00:42 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