Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#16

Re: OOP Problem: änderungen werden nicht übernommen

  Alt 26. Dez 2005, 14:53
Modellierung damit meinst du die Klassenstrucktur aufbauen also wie die grundklasse ausehen soll.
Aber ich glaube ich habe verstanden worauf du hinnaus wolltes:
Die objekte arbeiten für sich alleine.
Das interface hat nur public funktionen/proceduren die in jeder abgeleitetn klassen zu sehen sind hier noch mal eine frage:
Können die Klassen die nicht abgeleitet werden die proceduren/funktionen aus dem Interface sehen ? oder können "nur" abgeleitet klassen diese proceduren/funktionen sehen ?

was mich überrascht hat war das du
Delphi-Quellcode:
procedure Test;
var L1 : TObjectList_Array;
    L2 : TObjectList_List;
begin
  L1 := TObjectList_Array.Create;
  L2 := TObjectList_List.Create;
 
  AddToList(L1, TObject.Create);

  AddToList(L2, TObject.Create);
end;
ein Create in einer Procedure aufruftst. das war irgenwie neu für mich.

aber ich denke ich entscheide mich für das Modellieren von Klassen.
also was alle Komponenten auf jedenfall gemeinsamm haben währen bei einer GUI z.b.:

- add, del, draw, repaint
- onDraw, onAdd, onDel, onrepaint
wobei auch Mausereignise könnten ja auch noch jede komponente habe würde ich mal sagen oder ?
wie z.b.:
onMouseDown
OnMouseMove
onMouseUp
OnMouseLave(wenn du mit der Maus die komponenten verlässt)
wobei die tastertur ereignise nicht umebdingt jede komponete haben sollte. z.b. ein Panel braucht keine Taster ereignise aber ein TEdit.

aber was ich an dieser sache immer noch nicht verstehe ist warum das verwalen erst zum schluss kommt.
angenommen du hast jetzt ein paar komponenten geschrieben und die sind soweit fertig. du kannst von jeder dieser komponenten ein instanz erzeugen und benutzten. aber wenn du mehre benutzen möchte musst du die ja auch verwalten z.b. alle zeichnen(evlt. nur die die geändert wurden), bestimmte komponenten löschen oder hinzufügen. evlt. möchtes du von einer einen caption ändern oder so.

Was ich auch nicht verstehe ist warum bei den standart komponenten von delphi der Panel ein Caption hat. den braucht er doch garnicht.

Alle komponenten haben die methoden von dem inteface, aber sie brauchen ja auch noch eigene z.b. ein Memo braucht scollbalken wobei ein Edit keine braucht.(währe auch nicht schlecht).

Wenn ich dein Beitrag verstanden habe geht es darum ersteinmal alle komponenten die ich brauche zu enfernen von standart obj dann TEdit, TLabel, TButton, ..... habe ich entwurfen. dann muss ich mir gedanken machen wie ich sie verwalte, sehe ich das so richtig ?
z.b.
Delphi-Quellcode:
TStdObj = class
private
  FName, FCaption, FTitel:String;
  Fx,Fy,Fw,Fh,Ftag:Integer;
  fbgColor, fvorColor:TColor
public

published
  property Caption; read FCaption; write FCaption
  property name;read fName; write fName
  property Titel;read fTitel; write fTitel
end;
das währe mein Grundobjekt(ersteinmal ohne interface da ich den sinn noch nicht so ganz verstehe)
von dieser Klasse leitet ich nun die TEdit komponente aber TEdit braucht ja kein Caption sondern Text wo man ein Text eingeben kann weil Caption soll ja nur als anzeige dinnen. muss ich jetzt für jeden fall eine weite grund komponente schreiben oder kann ich den Caption verstecken und durch Text ersetzten.

mir geht es ja ersteinaml nur darum eine Klassenstrucktur zu finden die Optimal für eine GUI währe und dann um dann die mit Leben zu füllen.

Ich würde schon sagen das du mir weiter Hilfe auf die einer oder andre art und weise.
z.b. bei jedem beitrag wird mir was Klarer *G*.

z.b. bei deinem letzten: das mit der Schwartzen kiste das ich z.b. mehre komponenten geschrieben habe und diese alle das "gleiche" create haben und somit das gleiche Create von der grundklasse aufgerufen wird wobei hat dies eigetnlich vorteile ?
weil wenn ich in der Grundkomponete ein Item defniere wird es ja überalle die item geben.

PS:
ich muss leider um ca 18 Uhr wieder nach Hause und da habe ich kein internet. währe schön wenn wir uns nochmal im IRC treffen könnten oder so weil ICQ habe ich nicht.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat