AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Interfaces + Factorys
Tutorial durchsuchen
Ansicht
Themen-Optionen

Interfaces + Factorys

Ein Tutorial von stahli · begonnen am 29. Jan 2015 · letzter Beitrag vom 22. Feb 2015
Antwort Antwort
Seite 1 von 2  1 2      
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#1

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 09:51
PS: Was der TRoutedStreamHandler macht, erschließt sich mir auch nicht.
Ich habe das so verstanden, dass TRoutedStreamHandler "entscheidet" welcher der tatsächlichen anderen Handler-Klassen (die ihm im OnCreate eingeflöst werden) die Anfrage nun bearbeitet. Wäre aber nett zu sehen, wie es bei ihm im Inneren aussieht, denn auch wenn ich glaube verstanden zu haben was er macht, weiß ich nicht wie.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 10:00
wie es bei ihm im Inneren aussieht
Genau das ist der Punkt, wenn man mit Interfaces arbeitet.
Sofern man sich an die Regeln hält, dass die Implementierungen der Interfaces sich gemäß der Spezifikationen verhalten, ist es unerheblich, was sie intern machen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.355 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 10:25
Ja gut, aber das kann auch auf eine einfache Klasse oder Prozedur zutreffen:

Delphi-Quellcode:
procedure LiesDatenEin(Param: Integer);
begin
  case ParamOderRechteOderIrgendwas of
    1: LiesXML;
    2: LiesCSV;
    3: LiesWWW;
  end;
end;
Hier ist es für die Benutzung der Prozedur auch unerheblich, was sie intern macht.

Solche Beispiele finde ich daher ungünstigt, da sie den zu erklärenden Sachverhalt nicht herausgelöst von anderen/allgemeineren Aspekten auf den Punkt bringen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 2. Feb 2015 um 11:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 12:58
Ja gut, aber das kann auch auf eine einfache Klasse oder Prozedur zutreffen:

Delphi-Quellcode:
procedure LiesDatenEin(Param: Integer);
begin
  case ParamOderRechteOderIrgendwas of
    1: LiesXML;
    2: LiesCSV;
    3: LiesWWW;
  end;
end;
Hier ist es für die Benutzung der Prozedur auch unerheblich, was sie intern macht.
Nicht ganz richtig - in deinem Beispiel ergibt sich aus dem übergebenen Parameter, was sie intern tut.
Bei einem Interface sollte bei einem IKannFliegen.Flieg immer klar sein, was diese Methode macht.
Dementsprechend ist für den Aufrufer der Methode egal, obs durch Flügelschlagen oder Nachbrenner zünden passiert - hauptsache das Ding fliegt.

Wenn man sich nicht drauf einlässt, dass ein Interface (genau wie eine abstrakte Klasse) eine Abstraktion ist - kann man die Geschichte mit den Interfaces auch gleich wieder vergessen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 13:36
Vielleicht sollte man Interface einmal definieren (falls ich hier Mist schreibe, möge man mich bitte korrigieren): es handelt sich dabei lediglich um eine Vereinbarung, d.h. hinter so einer Interface-Variablen steckt letzten Endes irgendetwas, was die im Interface deklarierten Methoden und Eigenschaften aufweist. Worum es sich dabei konkret handelt (TDings, TBums oder TWuppdi) spielt überhaupt keine Rolle. Das ist somit noch etwas abstrakter als eine abstrakte Klasse, denn dort weiß ich zumindest, dass es sich um eine Ableitung davon handeln muss. Bei Verwendung von Interfaces hingegen muss keine Klassenhierarchie eingehalten, sondern sie können auf einer beliebigen Vererbungsebene implementiert werden.
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
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 14:06
wie es bei ihm im Inneren aussieht
Genau das ist der Punkt, wenn man mit Interfaces arbeitet.
Sofern man sich an die Regeln hält, dass die Implementierungen der Interfaces sich gemäß der Spezifikationen verhalten, ist es unerheblich, was sie intern machen.
Bei den Interfaces ja, aber bei den Klassen die diese implementieren ist dies dann aber doch interessant, wenn man was lernen will, wie ich in dem Fall. Schließlich kommen diese Klassen ja nicht einfach aus dem Nirgendwo, nur weil ich ein Interface erstellt habe. Gerade in den Klassen wird doch dann die eigentliche "Arbeit" gemacht.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 14:40
Bei den Interfaces ja, aber bei den Klassen die diese implementieren ist dies dann aber doch interessant, wenn man was lernen will, wie ich in dem Fall. Schließlich kommen diese Klassen ja nicht einfach aus dem Nirgendwo, nur weil ich ein Interface erstellt habe. Gerade in den Klassen wird doch dann die eigentliche "Arbeit" gemacht.
Schon, ist aber für die Thematik hier (Interfaces und Factories) irrelevant.
Denn wie DeddyH korrekt angemerkt hat, handelt es sich bei den Interfaces um Vereinbarungen, dass das Dings dahinter etwas bestimmtes macht.
So wie aus ner Steckdose Strom kommt, ob der aus Wind, Sonne, Wasser, Kohle oder Kernkraft gewonnen wird,
ist für die Funktion des Geräts, was du anschließt nicht ausschlaggebend.

Ich erwähne das, weil es im Umgang mit Interfaces wichtig ist, sich nicht auf irgendwelche Implementierungsdetails zu verlassen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 14:42
Ich erwähne das, weil es im Umgang mit Interfaces wichtig ist, sich nicht auf irgendwelche Implementierungsdetails zu verlassen.
Klar, sehe ich auch als wichtig an. Dennoch: Gerade als Einsteiger fragt man sich schon - und völlig zurecht - wo denn am Ende die Arbeit getan wird, wie man also dann die jeweiligen Klassen implementiert. Und auch das gehört zu einem Einstieg in Interfaces.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 14:51
Ich erwähne das, weil es im Umgang mit Interfaces wichtig ist, sich nicht auf irgendwelche Implementierungsdetails zu verlassen.
Klar, sehe ich auch als wichtig an. Dennoch: Gerade als Einsteiger fragt man sich schon - und völlig zurecht - wo denn am Ende die Arbeit getan wird, wie man also dann die jeweiligen Klassen implementiert. Und auch das gehört zu einem Einstieg in Interfaces.
Das ist aber mMn schon in den Videos von Stahli erklärt worden - die Implementierung des TRoutedStreamHandler würd ich nich gerade ins Interfaces 101 packen
Das zu erklären wäre - um bei dem Beispiel von der Steckdose zu bleiben - so, als ob ich jemandem der nen Haushaltsgerät an ne Steckdose anschließt, erklären müsste, wie nen Atomkraftwerk funktioniert
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

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

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#10

AW: Interfaces + Factorys

  Alt 2. Feb 2015, 15:05
Die wesentliche Grundidee der Objektorientierung ist Information Hiding,
auch Datenkapselung genannt. Der Nutzer soll nur gewisse Gebrauchswerte
kennen, die er ausschließlich verwendet. Er weiß über den internen Ablauf nichts.
Beispiel Tabelle: Die Nutzerfunktionen seien Eintragen eines Elementes und Abfragen,
ob ein Item Element der Tabelle ist. Je nach Anwendungsfall kann das nun unterschiedlich
implementiert werden, als lineare Liste, als Hashtabelle, als Datenbank etc.
Zumindest in dieser Hinsicht ist Delphi keine objektorientierte Sprache,
so wie auch C# und insbesondere Java das nicht sind.
In dem hier verwendeten Kontext sind Interfaces nun die Krücke, mit der versucht wird,
das nachträglich in Delphi hinzubekommen. Das geht aber nur auf der syntaktischen
Ebene, denn es gibt in diesen Sprachen keinerlei Mittel, mit denen man die Semantik
auf der abstrakten oder Nutzerebene ausdrücken kann. Die Benennung einer Prozedur
als "Flieg" hindert doch niemanden daran, die als "Schwimm" zu implementieren. Um auf
das oben angedeutete Beispiel zurückzukommen: Was passiert, wenn ein Element
mehrfach eingetragen wird? Ist es dann nur einmal drin? Wie reagiert die Funktion Abfragen,
wenn das Element nicht in der Tabelle vorhanden ist? Ohne Einsicht in die Implementierung
lassen sich diese Informationen nicht gewinnen. Man kann durch die Verwendung von Interfaces
oder abstrakter Klassen sicher einiges entkoppeln, aber letztendlich bleibt der Einblick in das
Innere einer Klasse unverzichtbar, wenn man in Delphi & Konsorten programmiert, leider.
  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 16:55 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