AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Klasse Rechteck von Quadrat ableiten oder umgekehrt?
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse Rechteck von Quadrat ableiten oder umgekehrt?

Ein Thema von Chris P · begonnen am 4. Jun 2007 · letzter Beitrag vom 4. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#1

Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 09:56
Hi Leute,

ich stehe vor folgender Aufgabe:

"Man hat zwei Klassen Quadrat und Rechteck zur Darstellung geometrischer Objekte.
Sollte man nun die Klasse Quadrat von der Klasse Rechteck ableiten? Oder umgekehrt? Warum?"

Also so viel erstmal zur Aufgabengabenstellung.

Ich habe mir gedacht, dass das Quadrat ja ein spezielles Rechteck ist mit der Eigenschaft das die Länge gleiche der Breite ist.

Man kann also sagen, dass die Klasse Rechteck eine Verallgemeinerung und die Klasse Quadrat eine Spezialisierung ist.


Ich würde dann sagen, dass Rechteck die Basisklasse ist und die Klasse Quadrat die Ableitung.


Was meint ihr dazu?
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 09:57
Zitat von Chris P:
Ich habe mir gedacht, dass das Quadrat ja ein spezielles Rechteck ist mit der Eigenschaft das die Länge gleiche der Breite ist.

Man kann also sagen, dass die Klasse Rechteck eine Verallgemeinerung und die Klasse Quadrat eine Spezialisierung ist.


Ich würde dann sagen, dass Rechteck die Basisklasse ist und die Klasse Quadrat die Ableitung.


Was meint ihr dazu?
Richtig.
TQuadrat= class(TRechteck)
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 10:01
Seh ich genauso.
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
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 10:20
man sollte immer vom Allgemeinen ins Spezielle ableiten.

Also die Elternklassen sind allgemeiner gehalten, als die Kindklassen.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
ulrich.b

Registriert seit: 21. Sep 2005
Ort: Kattau (AT)
79 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 10:48
Echt witzig diese Frage. Vor einem Jahr bin ich vor derselben gestanden. Ich musste für mein Studium in Java genau dieses Problem lösen. Ich habe es in der Abgabe dann auch so gemacht wie ihr es vorgeschlagen habt, und es auch der Rest der Welt sieht (class Quadrat extends Rechteck).

Doch das Institut für "Computer Languages" an der TU Wien sieht das anders!!! Die reden davon, dass zwar eine Vererbungsbeziehung in die eine Richtung existiert (Quadrat => Rechteck) jedoch eine sg. "Reale-Welt Beziehung" in die andere (In der Mathematik ist ein Rechteck mit selben Seitenlängen ein Quadrat). => Nach dem Comp Lang Institut darf man beide nicht voneinander ableiten. Man darf höchstens eine Oberklasse (oder Interface) (benannt mit zB. "Viereck") für beide mit Funktion wie "Draw()", "GetLength()" oder "SetWidth()" zur Wiederverwendung von Code erstellen. Ich hab diese Meinung zur Kenntnis genommen, bin aber nicht wirklich damit einverstanden. Punkte habe ich dann trotzdem keine bekommen *g*!
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#6

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 10:57
Dann hätte ich es so gemacht

Delphi-Quellcode:
TGeometrischeForm = class
  TViereck= class(TGeometrischeForm)
    TRechteck = class(TViereck)
      TQuadrat = class(TRechteck)
    TParallelogramm = class(TViereck)

//usw
Richard Mahr
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 11:10
Hätte es auch zuerst so gemacht : Rechteck -> Quadrat. Hätte ich den Code allerdings geschrieben, dann wäre schon aufgefallen, dass das Institut Recht hat ! Ein Quadrat ist zwar schon ein spezielles Rechteck, aber das braucht (anders als das Rechteck) keine zwei Seitenlängenangaben, sondern nur eine !! Es ist also unnötig für das Quadrat eine geerbte überflüssige Seite mitzuschleppen.

Also so hätte ich das gemacht : TViereck -> TRechtwinkliges Viereck.

Das nächste wäre eine Verzweigung :

Delphi-Quellcode:
TRechteck = Class (TRechtwinkligesViereck)
  SeitenlaengeA,
  SeitelaengeB :...

TQuadrat = Class (TRechtwinkligesViereck)
  SeiteLaenge,
Wenn man sich das nämlich mal weiter überlegt : beim Quadrat brauche ich für Fläche lediglich sqr. Beim Rechteck aber SeitenLaengeA * SeitenLaengeB. Umfang usw. geht in ähnliche Richtung. Das läuft also doch viel weiter auseinder, als man im ersten Moment denkt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 11:15
Ja und? Bei einem gleichschenkligen Dreieck bräuchte ich auch nur 2 Seitenangaben und schon kann ich alles was ich von TDreieck erben könnte nicht mehr nutzen, da ich nicht mehr davon ableiten darf? Hallo?

Bei einem gleichseitigen Dreieck darf ich dann alles nochmals implementieren, was ich beim Dreieck und beim gleichschenkligen Dreieck schon implementiert habe? Wozu?

Grundlegend: Die Routinen von TRechteck und vom allgemeinen Dreieck gelten und funktionieren genauso bei den anderen Fällen. Es ist nur eine Vereinfachung in Form a = b hinzu gekommen, aber das ändert nichts an den Formeln - die werden dadurch nicht falsch.

Warum sollte ich also z.B. die Formeln 3 mal implementieren (Beispiel Dreieck bzw. 2x Beispiel Rechteck) anstatt die vorhandenen zu nutzen?

Und dein Argument ist keins: Die Seiten können auch protected deklariert werden und erst mit der richtigen Endform veröffentlicht werden.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 11:27
Muetze, wie das in der Praxis aussieht ist eine ganz andere Sache. Es gibt nicht überall protected, override usw. Ob der jeweilige Linker in der Lage ist, alles überflüssige wirklich restlos zu entfernen, wer weiß ? Gehe jedenfalls davon aus, daß die richtige Sparte gewählt wurde und die ist eben in diesem Fall nicht "Object Pascal".
Gruß
Hansa
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Klasse Rechteck von Quadrat ableiten oder umgekehrt?

  Alt 4. Jun 2007, 11:42
Zitat von Hansa:
Es gibt nicht überall protected, override usw.
Es wurde nach OO Programmierung gefragt und zum OO Sprachumfang gehört nunmal ein gewisser Satz an OO Mitteln.

Zitat von Hansa:
Ob der jeweilige Linker in der Lage ist, alles überflüssige wirklich restlos zu entfernen, wer weiß ?
Was hat dies mit dem anderen zu tun?
  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 21:11 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