AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Abgeleitete Klassen

Ein Thema von conti · begonnen am 10. Mai 2007 · letzter Beitrag vom 10. Mai 2007
Antwort Antwort
conti

Registriert seit: 10. Nov 2006
19 Beiträge
 
#1

Abgeleitete Klassen

  Alt 10. Mai 2007, 16:18
Ich habe eine Klasse: THauptklasse mit den "public" Funktionen:
public
A();
B();
C();

... eine Klasse (die aus THauptklasse abgeleitet wurde): TKind_1 mit der Funkt:
D();

... eine 2-te Klasse( die aus THauptklasse abgeleitet wurde): TKind_2 mit der Funkt:
E();

... nun:
K1: TKind_1; // Ich möchte mit K1, D() aufrufen können, aber auch A(), B(), C()
K2: TKind_2; // Ich möchte mit K2, E() aufrufen können, aber auch A(), B(), C()

Das Problem: mir scheint das nicht als reine OOP, mir gefällt es nicht, dass A(), B(), C() "public" sind. Wenn ich "protected" verwenden würde, dann müsste ich in jeder Kindklasse die Funktionen neu definieren?!

Wie sollte ich vorgehen?
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Abgeleitete Klassen

  Alt 10. Mai 2007, 16:28
Hallo,
Zitat von conti:
mir scheint das nicht als reine OOP, mir gefällt es nicht, dass A(), B(), C() "public" sind. Wenn ich "protected" verwenden würde, dann müsste ich in jeder Kindklasse die Funktionen neu definieren?!
nein. Erstens ist das ganz sauber OOP. Zweitens ist der Vorteil von protected ja eben, dass die Funktionen außerhalb private, in der Klasse sowie in allen abgeleiteten Klassen aber frei zugänglich sind.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
conti

Registriert seit: 10. Nov 2006
19 Beiträge
 
#3

Re: Abgeleitete Klassen

  Alt 10. Mai 2007, 16:34
Danke.
D.h. ich soll die Funktionen aus der Hauptklasse als protected definieren, und dann in jeder einzelne Kindklasse implementieren?

Gruss
conti
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#4

Re: Abgeleitete Klassen

  Alt 10. Mai 2007, 16:35
Butter bei die Fische!

Jedes sichtbare Steuerelement hat Funktionen zum Erhalten und zum Ändern der Positionskoordinaten. Es ist doch nur vernünftig, daß diese Sachen public sind, auch in den Nachfahren, denn schliesslich will man auch von aussen die Position ändern können, egal ob es sich nun um ein Editfeld oder ein DBGrid handelt!

(Jaja, schon gut, die Methoden sind in Delphi nicht public, dafür aber die Properties Left und Top, die diese ansprechen... Es soll ja nur als Veranschaulichung dienen.)

Cu,
Udontknow

Edit: Die Sichtbarkeit (private,protected,public) hat nix mit der Implementation zu tun!
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Abgeleitete Klassen

  Alt 10. Mai 2007, 16:36
Nein. Wenn du von außen auf die Funktionen zugreifen willst, musst du public verwenden. Protected nur, wenn es sozusagen eine Hilfsmethode ist, die außerhalb nicht benötigt wird.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Abgeleitete Klassen

  Alt 10. Mai 2007, 16:38
Hallo,
Zitat von conti:
D.h. ich soll die Funktionen aus der Hauptklasse als protected definieren, und dann in jeder einzelne Kindklasse implementieren?
das habe ich nicht gesagt. Wenn Du eine Methode definierst, musst Du sie auch implementieren. Es sei denn, Du legst die Methode als abstract an und überschreibst sie dann in den abgeleiteten Klassen. Wenn die Methode allerdings immer das Gleiche machen soll, ist es natürlich sinnvoll, diese nur einmal in der Basisklasse zu implementieren. Ob die Sichtbarkeit dann private, protected, oder public ist, hängt davon ab, wer die Methode aufrufen dürfen soll: Nur die implementierende Klasse, auch abgeleitete Klassen oder jeder.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
conti

Registriert seit: 10. Nov 2006
19 Beiträge
 
#7

Re: Abgeleitete Klassen

  Alt 10. Mai 2007, 16:45
Ich möchte, dass nur die abgeleiteten Klassen die Funktionen aufrufen können.

Gruss
conti
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Abgeleitete Klassen

  Alt 10. Mai 2007, 16:52
Dann liegst du doch bei protected gar nicht schlecht.
Markus Kinzler
  Mit Zitat antworten Zitat
conti

Registriert seit: 10. Nov 2006
19 Beiträge
 
#9

Re: Abgeleitete Klassen

  Alt 10. Mai 2007, 16:55
Verstanden.
Danke allen.

Gruss
conti
  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 23:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz