AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Forward in Klassen funktioniert nicht

Forward in Klassen funktioniert nicht

Ein Thema von ATS3788 · begonnen am 18. Dez 2014 · letzter Beitrag vom 20. Dez 2014
Antwort Antwort
Dejan Vu
(Gast)

n/a Beiträge
 
#1

AW: Forward in Klassen funktioniert nicht

  Alt 18. Dez 2014, 17:36
Aber um dann miteinander arbeiten zu können, müssen beide einen 3. kennen. ...Warum also einen dritten hinzuziehen, wenn die beiden Klassen zusammengehörig sind und gegenseitig miteinander über den direkten Weg agieren können.
Wegen der Wiederverwendbarkeit, z.B. Zirkuläre Referenzen sind eigentlich nie sinnvoll. Es verbindet beide Klassen unauslöschlich miteinander. Meistens (eigentlich immer) ist es ein Designfehler. Mir fällt kein sinnvolles Beispiel ein, wo zwei *Klassen* sich kennen müssen. A verwendet B, aber B muss A konkret nicht kennen, höchstens ein von A implementiertes Interface. Und -wupps- haben wir die zirkuläre Referenz aufgelöst.

Es gibt mittlerweile (also seit ca. 20 Jahren) Grundregeln moderner Softwarearchitektur, die man befolgen kann oder auch nicht. Nur wenn man sie nicht befolgt, dann muss man sich nicht wundern, wenn man dann in einer Diskussion, die sich am Rande auch um diese Regeln dreht, Gegenargumente bekommt. Oder teilweise Kopfschütteln.

Zitat:
Ich bin für Vorwärts-Deklarationen auch bei Klassen.
Wie fein. Andere Leute finden Bollerwagen toll. Aber das Transportgewerbe setzt gemeinhin auf bessere Lösungen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Forward in Klassen funktioniert nicht

  Alt 18. Dez 2014, 17:40
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
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#3

AW: Forward in Klassen funktioniert nicht

  Alt 18. Dez 2014, 17:49
Es gibt mittlerweile (also seit ca. 20 Jahren) Grundregeln moderner Softwarearchitektur, die man befolgen kann oder auch nicht. Nur wenn man sie nicht befolgt, dann muss man sich nicht wundern, wenn man dann in einer Diskussion, die sich am Rande auch um diese Regeln dreht, Gegenargumente bekommt.
Mich wundert es nicht, wenn ich für meine Meinung Gegenargumente bekomme, aber was mich wundert ist, dass man dann mit Delphi arbeitet, wenn man sich ausschließlich an "Grundregeln moderner Softwarearchitektur" halten will.

Eine Funktion ist immer dazu da, benutzt zu werden.

Kein Mensch würde darauf kommen TPageControl und TTabSheet zu trennen, oder seine komplett selbst programmierte VCL zu benutzen.
Sollte man allerdings tun, wenn man auf die "Grundregeln moderner Softwarearchitektur" besteht.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Forward in Klassen funktioniert nicht

  Alt 18. Dez 2014, 18:03
Eine Funktion ist immer dazu da, benutzt zu werden.
Hmmm. Ein 'goto' auch?

Zitat:
Kein Mensch würde darauf kommen TPageControl und TTabSheet zu trennen,
Doch. Programmierer, die was auf sich halten (oder sich das einbilden), schon. Ein TTabSheet möchte vielleicht einmal in einem anderen Container sein, als in einem TPageControl. Das geht so aber nicht. Wäre das TTabsheet nur abhängig von einem Container, der die notwendigen Methoden des TPageControl implementiert, ginge das.

Zitat:
aber was mich wundert ist, dass man dann mit Delphi arbeitet, wenn man sich ausschließlich an "Grundregeln moderner Softwarearchitektur" halten will.
Och, auch mit Delphi kann man recht sauberen Code produzieren. Man muss einfach nur die Anti-Pattern vermeiden.

Im Übrigen gilt in der modernen Softwarearchitektur auch und besonders, das man bestehende Frameworks benutzen sollte, wenn dies (TOC) günstiger ist, als selbst etwas zu entwickeln. Also verwende ich zähneknirschend die VCL und auch mal so ein in seiner Freiheit eingeschränktes TTabSheet.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#5

AW: Forward in Klassen funktioniert nicht

  Alt 18. Dez 2014, 19:15
Och, auch mit Delphi kann man recht sauberen Code produzieren.
Du widersprichst Dir selbst.

Einerseits sagst Du, dass Forward-Deklarationen von Klassen nicht den "Grundregeln moderner Softwarearchitektur" entsprechen, andererseits verwendest Du Delphi, welches voll ist mit Klassen-Forward-Deklarationen.

Entweder sind dann auch Klassen-Forward-Deklarationen "sauberer Code" oder Dein Programm hat KEINEN sauberen Code, denn Dein Programm besteht zu einem sehr großen Teil aus Delhi-Code.

Du solltest Dich für eine Variante entscheiden.


Zitat:
Kein Mensch würde darauf kommen TPageControl und TTabSheet zu trennen,
Doch. Programmierer, die was auf sich halten (oder sich das einbilden), schon.
Also ich habe ein eigenes TPageControl und ein eigenes TTabSheet und habe es dennoch nicht übers Herz gebracht eine unnötige 3. Klasse zu erstellen, damit sich beide Klassen unterhalten können oder gar in zwei verschiedenen Units ihr Dasein zu fristen.

Eine Funktion ist immer dazu da, benutzt zu werden.
Hmmm. Ein 'goto' auch?
Selbstverständlich.

Auch ein "Goto" war ein sehr gut einzusetzender und effektiver Befehl.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#6

AW: Forward in Klassen funktioniert nicht

  Alt 18. Dez 2014, 20:27
Sir Rufo

Ohhhh Danke Dir, das Object wurde noch nicht erstellt Oooohhhhhhhhhh
Nur warum ging das mit der Lokalen Variablen
dann wäre mir das auch aufgefallen.
Ein schönes Weihnachtsfest.

Zitat:
http://www.delphipraxis.net/183177-d...scheidung.html
Schaut doch mal in den Beitrag von mir. Knapp 700€ für XE7 sind viel Geld
wenn man kein Geld mit Programmieren verdient. Vielleicht habt ihr ja noch
eine gute Idee.
Martin MIchael
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#7

AW: Forward in Klassen funktioniert nicht

  Alt 18. Dez 2014, 21:20
Sir Rufo
Ohhhh Danke Dir, das Object wurde noch nicht erstellt Oooohhhhhhhhhh
Die Antwort hat Dir bcvs bereits auf der 1. Seite im 3. Post gegeben und im Post 16 auf Seite 2 nochmals darauf hingewiesen.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower (18. Dez 2014 um 21:22 Uhr)
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
736 Beiträge
 
Delphi 12 Athens
 
#8

AW: Forward in Klassen funktioniert nicht

  Alt 19. Dez 2014, 06:37
Sir Rufo
Ohhhh Danke Dir, das Object wurde noch nicht erstellt Oooohhhhhhhhhh
Die Antwort hat Dir bcvs bereits auf der 1. Seite im 3. Post gegeben und im Post 16 auf Seite 2 nochmals darauf hingewiesen.
Und ich habe schon gedacht, meine Posts würden irgendwie verschluckt und außer mir sieht sie niemand.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.574 Beiträge
 
Delphi 12 Athens
 
#9

AW: Forward in Klassen funktioniert nicht

  Alt 18. Dez 2014, 21:49
Der Stack existiert immer, egal ob es das Objekt gibt oder nicht,
drum funktionieren lokale Variablen immer.

Globale Variablen liegen auf dem Heap und der ist auch immer da.

Felder (Veriablen in der Klasse) liegen immer in der Klassen-Instanz und ist die weg, dann sind die auch weg.

Die Variable (mit der Klasseninstanz) wird als Self in die Methode reingegeben und solange man nicht auf Self (also auf irgendwas in der Instanz) zugreift, kann auch nichts passieren.
Die Methode wird dann quasi zur Klassen-Methode (class function).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

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 23:57 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