OOP - Klassen

WarCa
Hey,

Ich habe jetzt in diesem neuen Schuljahr(11.) Informatik gewählt, weil ich mich dafür interessiere. Einziges Prob is mein Info-Lehrer. Er kann einfach nicht unterrichten. Er schaftt es nicht den Stoff zu vermitteln und zudem ist er gähnend langsam und langweilig... Dennoch kann er mir das Interesse an Informatik nicht vergraulen!

Schließlich sind wir jetzt beim Objektorientierten Programmieren angekommen. Erklärt hat er so gut wie gar nichts und aus seinem Beispiel werd' ich nicht so recht schlau. Dennoch hab ich mich hingesetzt und es durch gearbeitet, bis ich es geschafft hab, die Klasse zum laufen zu bringen.

------------ so hat er sie uns gegeben, vervollständigen sollten wir selber:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
unit Paket;

interface

uses sysutils;

type
    PaketKlasse = class(TObject)
      // Konstruktormethode und Destruktormethode
      constructor Create;
      destructor Free;
      //destructor destroy;
    private
      // Variablen
      FGewicht:real;
      FTariftyp:byte;
      FPreis:real;
      // Methoden
      function getGewicht:real;
      function getTariftyp:byte;
      procedure setTariftyp(n:byte);
      function getPreis:real;
      procedure setPreis(x:real);

    public
      // Variablen
      // Methoden
      // Eigenschaften
      property Gewicht:real read getGewicht;
      property Tariftyp:byte read getTariftyp write setTariftyp;
      property Preis:real read getPreis write setPreis;
    end; //von PaketKlasse

// z.B.var Ff:string;

implementation

  constructor PaketKlasse.Create;
  begin
    inherited Create;
    randomize;
    FGewicht:=random(500)
  end;

  destructor PaketKlasse.Free;
  begin
    inherited Free;
  end;

  function getGewicht:real;
  begin
    getGewicht:=Fgewicht
  end;

  function getTariftyp:byte;
  begin
    getTariftyp:=FTariftyp
  end;

  procedure setTariftyp(n:byte);
  begin
     FTariftyp:=n
  end;
      function getPreis:real;
      procedure setPreis(x:real);
end.



------------ das hab ich draus gemacht.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
unit Paket;

interface

uses sysutils;

type
    TPaketKlasse = class(TObject)
    private
      FGewicht:real;
      FTarif:byte;
      FPreis:real;
      function getGewicht:real;
      procedure setGewicht(Gewicht:real);
      function getTarif:byte;
      procedure setTarif(Tarif:byte);
      function getPreis:real;
      procedure setPreis(Preis:real);

    public
      constructor Create(FGewicht:real; FTarif:byte; FPreis:real);
      property Gewicht:real read getGewicht write setGewicht;
      property Tarif:byte read getTarif write setTarif;
      property Preis:real read getPreis write setPreis;
    end;

implementation

  constructor TPaketKlasse.Create;
  begin
    inherited Create;
    self.FGewicht := FGewicht;
    self.FTarif := FTarif;
    self.FPreis := FPreis;
  end;

  function TPaketKlasse.getGewicht;
  begin
    result := FGewicht;
  end;

  procedure TPaketKlasse.setGewicht;
  begin
    FGewicht := Gewicht;
  end;

  function TPaketKlasse.getTarif;
  begin
    result := FTarif;
  end;

  procedure TPaketKlasse.setTarif;
  begin
     FTarif := Tarif;
  end;

  function TPaketKlasse.getPreis;
  begin
    getPreis := FPreis;
  end;

  procedure TPaketKlasse.setPreis;
  begin
    FPreis := Preis;
  end;

end.



Meine Fragen dazu:

1) Kann sich irgendeiner vorstellen, wie das aussehen sollte, mit seiner Klasse? Ich weiss es nicht.

2) Is meins denn so richtig bzw, Stilistisch gut?

3) Was kann ich jetzt damit anfangen? Augen rollen Prozeduren bzw Funk., müssen in die selbe Unit wie die Klasse geschrieben werden, damit sie die Variablen Gewicht, Tarif (oder FGewicht etc, bin mir nicht sicher) etc benutzen können?

4) Kann ich diese Klasse auch in einer anderen Unit aufrufen, kreieren(create)?
Z.B.: in Unit1 die TPaketKlasse von der Unit Paket createn?

Ich hoffe, dass ich mich verständlich genug ausgdrückt habe, sodass ihr versteht was ich meine smile
Bin für jede Hilfe dankbar!!!

MFG Tobias
FastJack2
geht VIEL kürzer, weil du dir die ganzen Funktionen fürs read und write sparen kannst:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
unit Paket;

interface

uses sysutils;

type
    TPaketKlasse = class(TObject)
    private
      FGewicht:real;
      FTarif:byte;
      FPreis:real;
{hier die ganzen funktionen gespart}
    public
      constructor Create(FGewicht:real; FTarif:byte; FPreis:real);
{wenn du hier beim constructor parameter übergibst, musst du sie unten auch mit übergeben !! hab das mal korrigiert}
      property Gewicht: real read FGewicht write FGewicht;
      property Tarif: byte read FTarif write FTarif;
      property Preis: real read FPreis write FPreis;
{die properties greifen jetztdirekt auf die vars zu}
    end;

implementation

constructor TPaketKlasse.Create(FGewicht:real; FTarif:byte; FPreis:real);
//
begin
  inherited Create;
{aber wo hast du das randomize gelassen ?
  so wie es aussieht soll doch das gewicht zufallsgeniert sein ....
  randomize;
  FGewicht:=random(500)
aber dann musst du es aus den parametern herausnehmen ...
}
  self.FGewicht := FGewicht;
  self.FTarif := FTarif;
  self.FPreis := FPreis;
end;

end.




... so würd ichs machen ...

greetz
-FastJack2
WarCa
hi,
erst einmal danke dass du einen blick reingeworfen hast ^^
leider muss ich mich mit dem begnügen was mir mein info lehrer beibringt (was nicht gerade hilfreich is, denn als lehrer ist er nicht so der bringer), nützliches das ich im net finde und was ich so aus dem delphi handbuch rausfische...
die klasse hab ich mit hilfe von 'ner website als vorlage zusammen "gefummelt", das mit randomize hat irgendwie nicht gefunzt und auf der hp wars gar nicht erwähnt, deshalb hab ich's ganz rausgelassen

wenn ich fgewicht zufallsgeneriere, muss self.fgewicht:=fgewicht entfernt werden?

wen kann oder soll ich benutzen um fgewicht bzw gewicht einen wert zu zu weisen?

übrigens; wenn test[1] eine integer array variable is, wie kann ich über den index auf eine stelle in der variable zu greifen? also sowas wie den index [5] von der test[1] var.