Page 1 of 2 1 2 LastLast
Results 1 to 15 of 21

Thread: ModelMaker maakt verkeerde code?

  1. #1
    Wie is hier het mannetje?
    Join Date
    Oct 2004
    Posts
    299

    ModelMaker maakt verkeerde code?

    Ik heb dus een klassendiagram in modelmaker gemaakt, echter de code die hiervan voor delphi is gegenereerd lijkt fout te gaan. Een voorbeeld is deze regel code:

    property Id: Integer read GetId;

    Gemaakt door modelmaker inen bepaalde klasse. De foutmelding die delphi nu geeft is: field or method identifier expected.

    Kan iemand me vertellen wat deze fout wil zeggen en hoe ik deze kan voorkomen (wellicht in modelmaker al).

  2. #2
    GetID is geen method noch een field/attribute in de class. MAW GetID is niet bekend.
    We adore chaos because we like to restore order - M.C. Escher

  3. #3
    Wie is hier het mannetje?
    Join Date
    Oct 2004
    Posts
    299
    ModelMaker heeft die ook aangemaakt:
    Code:
    function GetId: Integer;
    En dan:
    Code:
    function TCategory.GetId: Integer;
    begin
    end;

    Dat TCategory is dus de naam van die betreffende klasse.
    Last edited by Dees; 25-Oct-04 at 19:14.

  4. #4
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Kan de betreffende unit(s) posten. Dit lijkt namelijk in orde. Ben je zeker dat de fout zich op de bewuste regel voordoet?
    All methodologies are based on fear. -- Kent Beck.

  5. #5
    Of je bent een ; vergeten bij de regel erboven
    We adore chaos because we like to restore order - M.C. Escher

  6. #6
    Wie is hier het mannetje?
    Join Date
    Oct 2004
    Posts
    299
    Welke ; dan precies?

  7. #7
    Wie is hier het mannetje?
    Join Date
    Oct 2004
    Posts
    299

    Hier de hele door modelmaker gegenereerde code voor deze klasse

    Code:
    unit CCategory;
    
    interface
    
    uses
      SysUtils, Windows, Messages, Classes, Graphics, Controls,
      Forms, Dialogs;
    
    type
      TCategory = class (TObject)
      private
        property Id: Integer read GetId;
        property Name: string read GetName write SetName;
        property ParentCategory: Integer read GetParentCategory write
                SetParentCategory;
      public
        function GetId: Integer;
        function GetName: string;
        function GetParentCategory: Integer;
        procedure SetName(Value: string);
        procedure SetParentCategory(Value: Integer);
      end;
    
    
    procedure Register;
    
    implementation
    
    procedure Register;
    begin
    end;
    
    {
    ********************************** TCategory ***********************************
    }
    function TCategory.GetId: Integer;
    begin
    end;
    
    function TCategory.GetName: string;
    begin
    end;
    
    function TCategory.GetParentCategory: Integer;
    begin
    end;
    
    procedure TCategory.SetName(Value: string);
    begin
    end;
    
    procedure TCategory.SetParentCategory(Value: Integer);
    begin
    end;
    
    
    end.

  8. #8
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Je moet dus wel iets fout gedaan hebben in Modelmaker
    Bedoeling zal wel eerder zoiets zijn:
    Code:
    type
      TCategory = class (TObject)
      private
        function GetId: Integer;
        function GetName: string;
        function GetParentCategory: Integer;
        procedure SetName(Value: string);
        procedure SetParentCategory(Value: Integer);
      public
        property Id: Integer read GetId;
        property Name: string read GetName write SetName;
        property ParentCategory: Integer read GetParentCategory write
                SetParentCategory;
      end;
    All methodologies are based on fear. -- Kent Beck.

  9. #9
    Wie is hier het mannetje?
    Join Date
    Oct 2004
    Posts
    299
    Maar is het niet logisch dat de properties private zijn en dat een andere klasse deze alleen kan opvragen met een (public) functie?

  10. #10
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    Eerder andersom
    !

  11. #11
    Wie is hier het mannetje?
    Join Date
    Oct 2004
    Posts
    299
    Misschien dat ik nu teveel nog in java aan het denken ben?

    Maar is delphi heb je dan dus public properties van een klasse en een andere klasse kan die dan middels een private methode verkrijgen?

  12. #12
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    Nee.. Je kunt die properties toch gewoon aanspreken..
    !

  13. #13
    Originally posted by AllRound
    Misschien dat ik nu teveel nog in java aan het denken ben?

    Maar is delphi heb je dan dus public properties van een klasse en een andere klasse kan die dan middels een private methode verkrijgen?
    Neehoor, dat is algemeen OO. Ook in Java zou je het zo doen. De toegang gaat alleen via properties. De getters en setters van deze properties zijn protected of private.

    Een property is geen field/attribute/variable.
    We adore chaos because we like to restore order - M.C. Escher

  14. #14
    Wie is hier het mannetje?
    Join Date
    Oct 2004
    Posts
    299
    Maar stel dat ik in een tweede klasse de property 'id' wil veranderen, op welke manier zou dat dan gebeuren?

    In java zou dat zoiets zijn: klasse1object.setId(3); of zoiets? Dus dan moet de setter in dit geval public zijn in klasse1 en het id blijft dan private toch?

  15. #15
    In java zijn de get en set methode inderdaad public in tegenstellig tot Delphi.

    In Delphi gebruik je public properties i.p.v get en set methode . Deze property maakt gebruikt van een get en/of set methode. Een property kun je zien als een attribuut dat beveiligd is tegen misbruik. Je spreekt een property ook aan alsof het een attribuut is, maar achter de schermen wordt er een get/of set 'methode' aangeroepen.

    Je moet een property dus ook meer zien als een get/set methode dan als attibuut wat betreft zichtbaarheid en moet dus public zijn. De get en set methode die deze property indirect gebruikt moeten buiten de klasse niet zichtbaar zijn, net zoals een hulpmethode.
    Last edited by Luig?¡; 25-Oct-04 at 17:41.

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. VB naar Delphi code
    By Anders in forum Algemeen
    Replies: 27
    Last Post: 22-Oct-03, 23:52
  2. Replies: 5
    Last Post: 15-Nov-02, 18:06
  3. via code een invoer simuleren in een DBEdit.
    By Richard in forum Algemeen
    Replies: 2
    Last Post: 15-Mar-02, 17:56

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •