AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wo interface angeben bei virtual abstract?

Ein Thema von freimatz · begonnen am 9. Nov 2022 · letzter Beitrag vom 11. Nov 2022
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.264 Beiträge
 
Delphi 11 Alexandria
 
#1

Wo interface angeben bei virtual abstract?

  Alt 9. Nov 2022, 16:31
Delphi-Quellcode:
type
  IBlub = interface
    ['{986DD1F9-802B-4262-BBAD-10772F0844BC}']
    procedure Bla;
  end;

  TBlubBase = class(TInterfacedObject, IBlub)
    procedure Bla(); virtual; abstract;
  end;

  TBlub1 = class(TBlubBase)
    procedure Bla(); override;
  end;

  TBlub2 = class(TBlubBase)
    procedure Bla(); override;
  end;
Gegeben sei obiger Code. Nun meinte jemand, es wäre besser das Interface IBlub erst bei Ableitungen anzugeben die es auch implementieren (statt alles abstract).
Was meint Ihr? Falls auch warum?

Geändert von freimatz ( 9. Nov 2022 um 18:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.197 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Wo interface angeben bei virtual abstract?

  Alt 9. Nov 2022, 16:42
Ich denke dass ist von Fall zu Fall unterschiedlich. Beides kann Sinn machen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.291 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Wo interface angeben bei virtual abstract?

  Alt 9. Nov 2022, 16:43
Meine Meinung:

Wenn Du das Interface als Fähigkeit ansiehst, die die Klasse unterstützt (ein besserer Name wäre z.B. "ICanBlub"), wird klar, dass es egal ist, auf welcher Basis die Klasse aufgebaut wird. Sie muss eben nur die Fähigkeit haben.
Also solltest Du die Klassen so aufbauen, wie es für Deine Klassenstrukturen günstig ist.
Wie die Interface-Methoden genau implementiert werden ist völlig egal.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.556 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Wo interface angeben bei virtual abstract?

  Alt 10. Nov 2022, 09:01
Eine abstrakte Methode sollte in einer abgeleiteten Klasse immer konkret implementiert werden. Insofern kann das Interface in der Basisklasse angegeben werden, da man davon ausgehen kann, dass die Methode immer aufgerufen werden kann.

Wenn man dies sicherstellen möchte oder die abstrakte Methode nicht in allen abgeleiteten Klassen benötigt und daher auch nicht implementiert, sollte man das Interface erst in den abgeleiteten Klassen hinzufügen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.716 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Wo interface angeben bei virtual abstract?

  Alt 10. Nov 2022, 10:18
oder mehrere in Interfaces aufteilen (voneinander abgeleitet oder nicht)
und dann ohne Abstract (und auch Virtual ist da nicht unbedingt nötig) das jeweilige Teil-Interface erst hinzufügen, wenn es diese Methode gibt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
freimatz

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

AW: Wo interface angeben bei virtual abstract?

  Alt 10. Nov 2022, 12:42
Kathinka rulez
Danke für alle Antworten, insbesondere an Sebastian, dessen Antwort am ehesten meiner Frage entsprach.

In dem konkreten Falle werde ich es wohl so lassen. Es geht da um Strategien die alle in der gleichen unit vorliegen wie auch die Fabrikklasse welche diese erzeugt.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.932 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Wo interface angeben bei virtual abstract?

  Alt 10. Nov 2022, 17:19
Falls es sich hier um high performance Code handeln sollte - unbedingt dies beachten.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.264 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Wo interface angeben bei virtual abstract?

  Alt 11. Nov 2022, 06:54
Danke für den Hinweis - interessant.
Ist bei uns soweit ich es einschätze nicht so releavnt. Anwender bekommen das Programm in Win64. Die Entwicklung geht soweit möglich in 32-Bit, da der Debugger in 64-Bit bei uns oft nicht funktioniert.
  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 14:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf