AGB  ·  Datenschutz  ·  Impressum  







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

Konstruktor

Ein Thema von hotkey · begonnen am 21. Mär 2012 · letzter Beitrag vom 22. Mär 2012
Antwort Antwort
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#1

Konstruktor

  Alt 21. Mär 2012, 18:17
Hallo , ich schreibe morgen eine Klausur und mir ist eingefallen , dass ich etwas nicht kann.

Wenn ich eine Klasse habe und zum Beispiel in dieser Klasse die Eigenschaften x,y :integer habe auf private und eine zweite Klasse erschaffe , die von der ersten diese Eigenschaften erben soll , kann ich keine Methoden aufrufen.

Also :

Delphi-Quellcode:
  tgeo_objects = class
end;

    TViereck = class(Tgeo_objects)
      private
     x,y:integer;
    public
      procedure setx;
      procedure sety;
      function getx:integer;
      function gety:integer;
  
   end;

  TDreieck = class(TViereck)
  private
   x,y:integer;
  
  public
   procedure setx;
   procedure sety;
   function getx:integer;
   function gety:integer;
Ich weiß , das ist nicht richtig OOP , ist aber auch nicht "wichtig" , in der Klausur wird auf was anderes mehr gesetzt.

Wenn ich jetzt zum Beispiel.

procedure tdreieck.setx schreibe , dann erkennt er das nicht.

Ich habe ja auch noch keine Instanz von Tdreieck erzeugt , aber wie und wo erzeuge ich das , um x und y in der Dreieck Klasse zu manipulieren.

Für Tviereck hatte ich eine Instanz erzeugt. Ist aber die Oberklasse und die Eigenschaften müssen nicht vererbt werden.

Wo also muss ich mydreieck := Tdreieck.create raufklatschen , damit er procedure tdreieck.setx zum Beispiel erkennt ?

Danke schon im Voraus.
Felix

Geändert von hotkey (21. Mär 2012 um 18:25 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Konstruktor

  Alt 21. Mär 2012, 18:27
Delphi-Quellcode:
tgeo_objects = class
end;

    TViereck = class(Tgeo_objects)
    private
      Fx,Fy:integer;
    public
      procedure setx( ax: Integer);
      procedure sety( ay: Integer);
      function getx:integer;
      function gety:integer;
    published
      property x: Integer read getx write setx;
      property y: Integer read gety write sety;
   end;

  TDreieck = class(TViereck)
  end;
...
  procedure TViereck.setx( ax: Integer);
  begin
      Fx = ax;
  end;
  ...
Markus Kinzler
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#3

AW: Konstruktor

  Alt 21. Mär 2012, 18:35
Das mit procedure Tviereck.setx funktioniert ja bei mir , aber sobald ich x,y von Viereck vererbe kann ich mit dem Punkt-Operator Tdreieck.setx diesen Befehl nicht ausführen , da er sagt , dass x nicht erkannt wird , obwohl es ja vererbt wird Tdreieck = class(tviereck) wie löse ich das blöde Problem ?
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Konstruktor

  Alt 21. Mär 2012, 19:01
Du weißt aber, was private, protected, virtual, override usw. bedeuten?
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
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#5

AW: Konstruktor

  Alt 21. Mär 2012, 19:08
Bis jetzt hatten wir nur protected , private und public.

Spielt das eine Rolle für die Problemlösung , wenn ich fragen darf ?
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Konstruktor

  Alt 21. Mär 2012, 19:15
Ich denke schon, oder soll jede abgeleitete Klasse ihr eigenes SetX usw. haben? Wenn ja, wozu dann erben?
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
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 21:25 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 by Thomas Breitkreuz