AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Property

Ein Thema von FabianClassen · begonnen am 13. Apr 2009 · letzter Beitrag vom 13. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
FabianClassen

Registriert seit: 8. Apr 2009
Ort: Schleiden
57 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit Property

  Alt 13. Apr 2009, 11:49
Hi
ich wollte mich heute etwas mehr mit der OOP in Delphi auseinander setzen.
Ich selbst kann schon C++ und Java und dadurch dürfte das eigentlich kein Problem sein.
...
Nun sind mir die Propertys besonders neu ... in C++ und Java muss ich ja mit Gettern und Settern arbeiten.
Naja Propertys scheinen mir da auch nicht groß was anderes zu sein ... quasi ein Konstrukt, was automatisch erkennt, ob der Getter oder der Setter aufgerufen werden soll.

Nun habe ich folgende winzige Klasse entwickelt um mir das Prinzip der Propertys vor Augen zu führen ... aber ich erhalte eine komische mir noch nicht ganz klare Ausgabe:


Ford Focus
200
Ford Focus
320


Hier ist mein Delphi Code ... Mir ist bewusst das ich vll die Klasse besser in eine andere Unit ausgelagert hätte ... aber zu Übungszwecken reichts ja

Delphi-Quellcode:
program Klassentest_Projekt;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAuto = class
    private
      FGeschw: Integer;
      FName: string;
      function GetGeschw: Integer;
      procedure SetGeschw(Value: Integer);
      function GetName: string;
      procedure SetName(Value: string);
    public
      property Geschwindigkeit: Integer read GetGeschw write SetGeschw;
      property Name: string read GetName write SetName;
      constructor Create(Name: string);
  end;

function TAuto.GetGeschw: Integer;
begin
  Result := FGeschw;
end;

procedure TAuto.SetGeschw(Value: Integer);
begin
  FGeschw := Value
end;

function TAuto.GetName: string;
begin
  Result := FName;
end;

procedure TAuto.SetName(Value: string);
begin
  FName := Name;
end;

constructor TAuto.Create(Name: string);
begin
  FName := Name;
end;

var
  Auto: TAuto;

begin
  { TODO -oUser -cConsole Main : Hier Code einfügen }
  Auto := TAuto.Create('Ford Focus');
  Writeln(Auto.Name);
  Auto.Geschwindigkeit := 200;
  Writeln(Auto.Geschwindigkeit);
  Auto.Name := 'Porsche Turbo';
  Auto.Geschwindigkeit := 320;
  Writeln(Auto.Name);
  Writeln(Auto.Geschwindigkeit);
  Readln;
end.
Wieso kommt da nun so eine komische Ausgabe.
Ich habe doch den Namen des Autos auf 'Porsche Turbo' gestellt.
Hängt das vll irgendwie mit dem constructor zusammen.
Anders kann ich mir das nicht vorstellen.

Ich hoffe ihr könnt mir helfen ... na klar könnt ihr das ist bestimmt nur irgendein dummer Fehler
Danke schonmal im vorraus.

MFG
FC
Fabian Claßen
Eins habe ich erkannt - ich werde immer Schüler bleiben, ein Leben lang
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit Property

  Alt 13. Apr 2009, 11:55
In der Methode SetName ist ein kleiner Fehler:

Delphi-Quellcode:
procedure TAuto.SetName(Value: string);
begin
  FName := Value;
end;
Ich würde im Konstruktor immer den konstruktor der Superklasse aufrufen (auch wenn es hier unnötig ist)

Delphi-Quellcode:
constructor TAuto.Create(Name: string);
begin
  inherited Create;
  FName := Name;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
FabianClassen

Registriert seit: 8. Apr 2009
Ort: Schleiden
57 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Problem mit Property

  Alt 13. Apr 2009, 11:59
oh ... das ist jetzt peinlich
So ein dummer Anfängerfehler
Hätte ich besser nicht gesagt, dass ich Java und C++ eigentlich ganz passabel kann


Auf jedenfall vielen Dank.

MFG
FC
Fabian Claßen
Eins habe ich erkannt - ich werde immer Schüler bleiben, ein Leben lang
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Problem mit Property

  Alt 13. Apr 2009, 12:02
Glaub mir sowas passiert nicht nur Anfängern.

In deinem Fall könntest du auf die Getter/Setter auch verzichten und gleich an die privaten Felder durchreichen:

property Name: string read FName write FName;
Markus Kinzler
  Mit Zitat antworten Zitat
FabianClassen

Registriert seit: 8. Apr 2009
Ort: Schleiden
57 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem mit Property

  Alt 13. Apr 2009, 12:06
Ah ... das ist ja praktisch.
Da erspare ich mir viel Schreibarbeit.


Danke ...

MFG
FC


PS: Demnächst ist das Kontrolieren der Variablenamen mein erster Schritt beim Debuggen
Fabian Claßen
Eins habe ich erkannt - ich werde immer Schüler bleiben, ein Leben lang
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem mit Property

  Alt 13. Apr 2009, 12:09
Ich danke der automatischen Codeerzeugung :p
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
FabianClassen

Registriert seit: 8. Apr 2009
Ort: Schleiden
57 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Problem mit Property

  Alt 13. Apr 2009, 12:13
Zitat von quendolineDD:
Ich danke der automatischen Codeerzeugung :p
Ob du es glaubst oder nicht
Tippen ist besser zum lernen

... ok ... ab und zu nutze ich Codevervollständigung und Co. auch ganz gerne
Vielleicht auch was öfter.

MFG
FC
Fabian Claßen
Eins habe ich erkannt - ich werde immer Schüler bleiben, ein Leben lang
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Problem mit Property

  Alt 13. Apr 2009, 12:14
Richtig von wegen automatische Codeerzeugung, du kannst auch einfach schreiben:property Name: string read FName write FName; Dann drückst du Strg + Shift + C und Delphi erzeugt dir automatisch unter private:FName: string; Und es geht noch besser, wenn du das schreibst:property Name: string read GetName write SetName; Dann erzeugt dir Delphi vollautomatisch die Prozedur SetName und die Funktion GetName, inkl. Gerüst. Du musst dann nur noch den Code unten hineinschreiben.

Das geht nicht mit Personal Editions, nur mit Professional Versionen und Turbo Delphi (auch Explorer), was du ja hast.

Mit Strg + Shift + C kannst du dir auch zu einer oben in der Deklaration geschriebenen Prozedur das Gerüst unten erstellen lassen. Und mit Strg + Shift + Pfeil hoch/runter wechselst du zwischen Deklaration und Implementierung einer Methode.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
FabianClassen

Registriert seit: 8. Apr 2009
Ort: Schleiden
57 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Problem mit Property

  Alt 13. Apr 2009, 12:17
Danke.
Das probiere ich gleich mal aus.

Mal ne Frage ... wo kann ich diese IDE-Specials nachgucken ... bzw. wo sind die in der Hilfe?
Wäre nett wenn du mir das sagen könntest. Ich suche zwar selber mal ... aber ... naja.

MFG
Fab
Fabian Claßen
Eins habe ich erkannt - ich werde immer Schüler bleiben, ein Leben lang
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Problem mit Property

  Alt 13. Apr 2009, 12:20
In der Hilfe von Turbo Delphi gib einfach diese Adresse ein, ich hab grad schnell nachgeschaut:
Code:
ms-help://borland.bds4/bds4ref/html/KeyMappingsDefault.htm
Das ist aber nicht besonders ausführlich was solche Tricks angeht.
Sebastian Jänicke
AppCentral
  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 19:26 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