AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Nachfahr-Klasse sieht private-Member der Vorfahrklasse?
Thema durchsuchen
Ansicht
Themen-Optionen

Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

Ein Thema von Codehunter · begonnen am 7. Okt 2011 · letzter Beitrag vom 7. Okt 2011
Antwort Antwort
Daniel
(Co-Admin)

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

AW: Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

  Alt 7. Okt 2011, 11:35
Menno. Das wollte ich auch schreiben.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#2

AW: Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

  Alt 7. Okt 2011, 11:36
Menno. Das wollte ich auch schreiben.
Da weiß man mal was, und dann...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.284 Beiträge
 
Delphi 12 Athens
 
#3

AW: Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

  Alt 7. Okt 2011, 11:37
Was ist "strict private"? Ich kenne das nicht, gibts das schon in D5 und D7? In der Hilfe find ich auch nix dazu.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.875 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

  Alt 7. Okt 2011, 11:41
Das wurde erst später eingeführt, um eine bessere Kompatibilität mit dem Verhalten zu anderen Sprachen zu erhalten. Wenn ich mich richtig ersinne mit D10 (D2006)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

  Alt 7. Okt 2011, 12:05
Aber normalerweise sollte man auch nur eine Klasse in eine Unit machen, weil das dann eine logische und physische Einheit ist. Also ich mache es immer so.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

AW: Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

  Alt 7. Okt 2011, 13:40
ich sehe überhaupt kein Problem in diesem Verhalten. Die Deklaration zweier Klassen im gleichen Gültigkeitsbereich (hier Interface Sektion einer Unit) bestimmt die Sichtbarkeit aller Variablen, Konstanten, OOP Konstrukte. Möchte man dies nicht so muß man die Klassen in eigene Units auslagern. Es ist aber eher so, das wenn der Programmierer sich dafür entschieden hat zwei Klassen in der gleichen Unit zu deklarieren, das diese beiden Klassen zusammengehörig sind. Man möchte explizit das in den Blackboxen, sprich Mehtoden der Objekte, Zugriff auch auf die privaten Felder der kompletten Klassenhierarchie, die man vorherig deklariert hat, möglich ist.

Es ist also nur eine Frage des Verständinisses beim Programmierer und seinen Designzielen. Vom Verständniss her sollte klar sein das diese Kapselung/Sichtbarkeiten nicht nur für OOP gilt sondern für alle Sprachfeature von PASCAL. Könnte man eine Klasse ganz privat innerhalb einer Methode/Procedure deklarieren dann wäre das die Fortsetzung des Sichtbarkeitskonzeptes wie es jetzt schon existiert. Dies Sichtbarkeitsebenen sind "Program/Library" -> "Unit" -> "Interfacesection/Implementationsection der Unit" -> "Klassen/Methoden/Procedure Deklaration" -> "Methoden/Procedure-Implementation" -> "nested Functions" -> "begin end" -> "Unterblöcke wie if then begin end; Schleifen usw."

Es ergibt sich also eine modulare Hierarchie, sowohl als Dateistruktur wie auch innerhalb dieser Quelltexte als Syntax der Programiersprache, die gerade bei PASCAL ziemlich strikt hierarisch ist und an Hand derer auch die Sichtbarkeiten und damit Kapselung definiert ist. Anders ausgedrückt: ich liebe PASCAL weil auch die "graphische" Orientierung dessen was man im Quelltext schreibt ein wichtige Funktion hat. PASCAL besteht nicht nur aus einer Syntax sondern auch aus "Formatierungs-Regeln" die uns die Struktur des gesammten Quelltextes viel besser vestehen lässt.

Mit der späteren Einführung von "strict private" hat man das als Sprachfeature umgesetzt um noch gezielter die Sichtbarkeiten, und damit Fehlervermeidung, beeinflussen zu können.

Beides halte ich für sinnvolle Instrumente.

Gruß Hagen

Geändert von negaH ( 7. Okt 2011 um 13:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nachfahr-Klasse sieht private-Member der Vorfahrklasse?

  Alt 7. Okt 2011, 14:36
*zustimm*

Gut, andere mögen es auch schön finden, daß man Header und Implementation in C nochmals in getrennten Dateien ablegt (*.h und *.c), aber am Ende dafür alle Header sich in einem großen Mischmasch vereinen.


PS: Es gibt auch strict protected, mit den selben Einschränkungen ... nur bei public und published hat man es sich erspart (wäre ja auch vollkommen sinnlos gewesen)
Ein Therapeut entspricht 1024 Gigapeut.
  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 15:19 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