Einzelnen Beitrag anzeigen

foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#1

Versuche Objektorientierung zu lernen

  Alt 18. Feb 2012, 19:23
Delphi-Version: 5
Hi,

ich hab jetzt verschiedene Tutorials gelesen und verstehe meine Fehler trotzdem nicht könntet ihr mir vllt helfen?

unit 1:
Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Unit2;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  Rechnen:TRechnen;
implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  Rechnen:=TAddition.create;
  Label1.caption:=FlaotToStr(Rechnen.calcit(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text)));
  Rechnen.Destroy;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Rechnen:=TSubtraktion.create;
  Label1.caption:=FloatToStr(Rechnen.calcit(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text)));
  Rechnen.Destroy;
end;

end.
unit2:
Delphi-Quellcode:
unit Unit2;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils;

type
  TRechnen=class(TObject)
    public
      constructor create;
      function calcit(a,b:real):real;virtual;
  end;

  TAddition=class(TRechnen);
    public
      constructor create;
      function calcit(a,b:real):real;override;
  end;

  TSubtraktion=class(TRechnen);
    public
      constructor create;
      function calcit(a,b:real):real;override;
  end;

var calcs:TRechnen;
implementation


  function TAddition.calcit(a,b:real):real;
  begin

    result:=a+b;
  end;

  function TSubtraktion.calcit(a,b:real):real;
  begin
    result:=a-b;
  end;

end.
Ja die Fehlermeldung ist denke ich egal(da sie auch nichts hilfreiches aussagt)

Ich möchte halt 2 Zahlen eingeben und dann als Ergebnis entweder den Summanden oder die Differenz bekommen. Das alles mit einer Klasse TRechnen welche weitervererbt wird an die Klassen TAddition und TSubtraktion.

Ich hoffe ihr könnt mir dies erklären.

Außerdem würde ich mich freuen wenn mir jemand nocheinmal mit eigenen Worten den Sinn von inhirated und die genaue Funktionsweise des constructors erklären könnte. (Den constructor braucht man irgendwie um Speicher für die klasse zu reservieren und sie zu erstellen, was bedeutet dies genau? Und inherited ka wird halt manchmal auch hingeschrieben und manchmal nicht...)

PS.: Ich benutze Lazarus falls es da irgendetwas spezielles zu beachten gibt.
mfg
foerster7892

Geändert von foerster7892 (18. Feb 2012 um 20:06 Uhr)
  Mit Zitat antworten Zitat