AGB  ·  Datenschutz  ·  Impressum  







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

OOP mit Delphi!

Ein Thema von powderfun · begonnen am 7. Sep 2003 · letzter Beitrag vom 7. Sep 2003
Antwort Antwort
powderfun

Registriert seit: 7. Sep 2003
5 Beiträge
 
#1

OOP mit Delphi!

  Alt 7. Sep 2003, 15:36
Hallo!
Ich wollte eine Vererbung in Delphi machen! Aus irgendwelchen Gründen klappt das aber nicht bei mir! kann mir jemand vielleicht helfen? das wäre eht super! Muss ich denn die prozeduren und funktionen usw., die ich vererben will in protected schreiben? ich habe sie nämlich in private stehen!
Vielen dank
Anja
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: OOP mit Delphi!

  Alt 7. Sep 2003, 15:37
Zeig mal deine Klassenstruktur.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
powderfun

Registriert seit: 7. Sep 2003
5 Beiträge
 
#3

Re: OOP mit Delphi!

  Alt 7. Sep 2003, 15:43
Delphi-Quellcode:
Unit UBruch;


Interface

Type
  TBruch = Class
    Protected
      Z, N : Integer;
      Procedure Kuerzen;
    Public
      Constructor Create (EZ, EN : Integer);
      Function Zaehler_gekuerzt : Integer;
      Function Nenner_gekuerzt : Integer;

  End;

  TGBruch = Class(TBruch)
  Private
     E : integer;
     procedure kuerzen;
  Public
     Function Z_ges : integer;
  end;


Implementation

Procedure TBruch.Kuerzen;
{Euklidischer Algorithmus}
Var
  NZ, NN : Integer;
  Rest : Integer;
Begin
  NZ := Z; NN := N;
  Repeat
    Rest := NZ Mod NN;
  If Rest <> 0
    Then Begin
           NZ := NN; NN := Rest
         End;
  Until Rest = 0;
  Z := Z Div NN;
  N := N Div NN;

End;

Procedure TGBruch.kuerzen;
 begin
 inherited kuerzen;
 Z := Z mod N;
 E := Z div N;
 End;

Constructor TBruch.Create (EZ, EN : Integer);
Begin
  Z := EZ; N := EN;
End;

Function TBruch.Zaehler_gekuerzt : Integer;
Begin
  Kuerzen;
  Zaehler_gekuerzt := Z;
End;

Function TBruch.Nenner_gekuerzt : Integer;
Begin
  Kuerzen;
  Nenner_gekuerzt := N;
End;



 Function TGBruch.Z_ges : Integer;
 Begin
  Kuerzen;
  Z_ges := E;
 end;


End.
[edit=Christian Seehase] Delphi-Tags hinzugefügt. Bitte künftig selber machen. Danke Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
powderfun

Registriert seit: 7. Sep 2003
5 Beiträge
 
#4

Re: OOP mit Delphi!

  Alt 7. Sep 2003, 15:44
Delphi-Quellcode:
unit PBruchhaupt;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, UBruch;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Button2: TButton;
    Panel3: TPanel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Bruch: TBruch;
  GBruch: TGbruch;
  E : integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Bruch := TBruch.Create(StrtoInt(Edit1.Text),StrtoInt(Edit2.Text));
  Panel1.Caption := IntToStr(Bruch.Zaehler_gekuerzt);
  Panel2.Caption := IntToStr(Bruch.Nenner_gekuerzt);
  Panel3.caption := IntToStr(GBruch.Z_ges);
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  Bruch.Destroy;
  Close;
end;

end.
[edit=Christian Seehase] Delphi-Tags hinzugefügt. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
aogwaba

Registriert seit: 21. Aug 2003
16 Beiträge
 
#5

Re: OOP mit Delphi!

  Alt 7. Sep 2003, 17:35
Hi,
Zitat:
Muss ich denn die prozeduren und funktionen usw., die ich vererben will in protected schreiben? ich habe sie nämlich in private stehen!
Nein brauchst du nicht, private, public, protected und published sind Zugriffsbeschränkungen nach aussen.
Was klappt den nicht bei den Klassen?
Die Syntax scheint OK!
Hier:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Bruch := TBruch.Create(StrtoInt(Edit1.Text),StrtoInt(Edit2.Text));
  Panel1.Caption := IntToStr(Bruch.Zaehler_gekuerzt);
  Panel2.Caption := IntToStr(Bruch.Nenner_gekuerzt);
  Panel3.caption := IntToStr(GBruch.Z_ges);// hier müsste es krachen, GBruch scheint nicht createt zu sein
end;
cu
waba
  Mit Zitat antworten Zitat
powderfun

Registriert seit: 7. Sep 2003
5 Beiträge
 
#6

Re: OOP mit Delphi!

  Alt 7. Sep 2003, 17:41
Oh super, danke!
Wie kann man denn das createn? Geht das genauso wie bei dem UBruch?
Kenn mich leider noch net so gut damit aus, hab gerade erst mit OOP angefangen (1 Stunde in der schule)...
viele Dank für die Hilfe!!!
  Mit Zitat antworten Zitat
aogwaba

Registriert seit: 21. Aug 2003
16 Beiträge
 
#7

Re: OOP mit Delphi!

  Alt 7. Sep 2003, 17:56
na genauso:
Delphi-Quellcode:
var myGBruch:TGBruch;
mybruch:TBruch;
begin
myGBruch:=TGBruch.create(1,1);// erzeugt instanz von TGBruch
myBruch:=TBruch.create(1,1);//erzeugt Instanz von TBruch

myBruch.free;
myGBruch.free;
end;
die Klasse TGBruch hat keinen eigenen Konstructor, weswegen der Konstructor der überschriebenen Klasse (TBruch) aufgerufen wird.

cu
waba
  Mit Zitat antworten Zitat
powderfun

Registriert seit: 7. Sep 2003
5 Beiträge
 
#8

Re: OOP mit Delphi!

  Alt 7. Sep 2003, 18:47
Und wo schreibe ich das hin?
ich habe das jetzt in die Unit Bruch geschrieben.
Irgendwie kommt aber trotzdem die gleiche fehlermeldung wie vorher.
Der erkennt die GBruch.Z_ges in der Unit PBruchhaupt nicht zu finden.
Woher weißt du das eigentlich alles?
Vielen Dank nochmal für deine Hilfe!!!
Ist echt super nett!!!
  Mit Zitat antworten Zitat
aogwaba

Registriert seit: 21. Aug 2003
16 Beiträge
 
#9

Re: OOP mit Delphi!

  Alt 7. Sep 2003, 19:21
da wo du die globale Variable 'GBruch' deklariert hast, in der Form-Unit. zb. in die ButtonClick-Routine:

Delphi-Quellcode:
 GBruch := TGBruch.Create(StrtoInt(Edit1.Text),StrtoInt(Edit2.Text));
  Panel1.Caption := IntToStr(GBruch.Zaehler_gekuerzt);
  Panel2.Caption := IntToStr(GBruch.Nenner_gekuerzt);
  Panel3.caption := IntToStr(GBruch.Z_ges);
  gbruch.free;
woher ich das weiss, hab die OH gelesen

cu
waba
  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:50 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