Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphie anfang (https://www.delphipraxis.net/98680-delphie-anfang.html)

Tuxi 30. Aug 2007 20:54


Delphie anfang
 
Guten Tag alle miteinander


als absoluter neuling in delphie habe ich ein paar Fragen. Wir müssen diese Sprache im Informatik leistungskurs ( erstes Semester) lernen und ich möchte gut abschneiden. alles was er heute von sich gegeben hat verstehe ich nicht ganz. Ich werde erstmal mein wissen runterschreiben und hoffe dann dann auf anmerkungen und ergänzungen von euch. falls es das falsche forum ist, bitte ich ums verschieben :roll:



Objekt= Etwas abstraktes was aber aus der Umwelt genommen wurde. Objekte können alles sein. Ein mensch, ein tisch, alles was so in der umwelt vorhanden ist.


Objekte werden mit Klassen erstellt. Sie sind "Baupläne" für Objekte. Sie müssen initalisiert werden mit einer Instanz. die erstelle ich mit Konstrukt. wie genau weiß ich noch nicht. Irgendwie hat das zeichen
Delphi-Quellcode:
:=
damit was zu tun.

TObjekt ist die Standartklasse von der alle weiteren Vererbt werden.


Unser Projekt mit dem wir anfangen:

Wir möchten eine oberfläche erstellen mir der man Dreiecke zeichen kann. man gibt einen bezugspunkt ein und die punkte relativ zueinander und dann wird das ding gezeichnet. außerdem soll man die farbe ändern können und es nach oben unten rechts und links bewegen können mittels kleinen buttons ( sicherlich nicht sehr schön für die usabillity, aber wir fangen ja erst an)

Was muss ich dafür alles wissen oder so könnte es probleme geben ? Wir benutzen Delphie 6 Standart.
Bis jetzt hab ich die oberfläche fertig ohne funktionen.



Nun, auf erfolgreiche "zusammenarbeit" :corky:

scrat1979 30. Aug 2007 20:57

Re: Delphie anfang
 
Hier mal der wahrscheinlich am meisten zitierte Link für Neulinge :-)

Tutorial bei DSDT

... keine Panik, wir waren alle mal blutige Anfänger :-)

SCRaT

// EDIT: Insbesondere das müsste für Dich interessant sein: link

Ach so, herzlich willkommen im Forum!!! :dp:

mkinzler 30. Aug 2007 20:57

Re: Delphie anfang
 
:= ist eine Zuweisung in Delphi. Eine Instanz erzeugt man, indem man den Konstruktor der Klasse aufruft:
Zitat:

Objekt := TKlasse.Create(<Params>);

Phoenix 30. Aug 2007 21:23

Re: Delphie anfang
 
Erstmal herzlich Willkommen in der DP.

Dann heisst es Delphi, ohne e hinten. (Sorry für das Klugscheissen, das ist mir aber sofort ins Auge gesprungen ;-) ).

Was Euer Lehrer versucht hat Euch klarzumachen sind die Grundlagen der Objektorientierten Programmierung. Das kann man flott rüberbringen.

Mal ein konkretes Beispiel:
Ich will ein kleines Überweisungsprogramm schreiben.

Dazu brauche ich Objekte, die mir das ganze ermöglichen.
Einmal zum Beispiel ein Konto. Das hat als Eigenschaften eine Kontonummer und einen Saldo. Und dann hat das noch eine Methode, um Geld auf ein anderes Konto zu überweisen. Um ein Konto zu erstellen müssen wir Kontonummer und Anfangs-Saldo angeben. Das machen wir mit dem Konstruktor, der aus der Klasse dann das konkrete Objekt konstruiert.

Man kann nun aus einer Klasse (ganz richtig: Dem Bauplan, der eben diese Kontonummer, den Saldo, und die Überweisen-Methode beschreibt) ganz viele Konten instanzieren. Eine erstellte Instanz könnte z.B. so aussehen:

TMeinKonto := TKonto.Create(12345, 3.50);
TDeinKonto := TKonto.Create(54321, 10.30);

Damit habe ich ein Konto mit der Kontonummer 123456 und dem Bestand von 3,50 € und Du ein Konto mit der Nummer 54321 und 10,30 € drauf.

So können aus einer Klasse beliebig viele Konten erstellt werden. Und um das Überweisen zu beschreiben hab ich grad keinen nerv, das mach ich entweder morgen oder jemand anderes greift das Beispiel auf. ;-)

scrat1979 30. Aug 2007 21:35

Re: Delphie anfang
 
Mal eine Frage: Fangt Ihr denn mit der OOP an oder habt ihr schon grundlegende Dinge wie Variablen, IF-Anweisungen und Schleifen durchgenommen? Wenn nein, dann hätte ich persönlich an Deiner Stelle auch große Probleme mit der OOP. IMHO ist OOP für einen Anfänger (der im wahrsten Sinne des Wortes Delphie nicht richtig schreiben kann - nicht böse gemeint!) nicht so "flott rüberzubringen" - wenn ich mich an meine OOP-Anfänge erinnere, die auch nur wenige Jahre her sind!!

Ein Tip: Schau Dir wirklich mal ein Grundlagen-Tutorial an, dann wirst Du Dir bei der OOP auch viel einfacher tun!!! Weiterhin aber viel Glück und Spaß dabei!!

SCRaT

Tuxi 31. Aug 2007 14:35

Re: Delphie anfang
 
Puh ich bin ja verblüft über so viel Resonanz. ich sollte es immer mit einem e am ende schreiben damit ich viele antworten bekomme :mrgreen:

Die links werde ich mir am Wochenende zu gemüte führen, besten dank, scheint beim überfleigen genau das zu sein, was ich brauche.


Zitat:

Zitat von mkinzler
:= ist eine Zuweisung in Delphi. Eine Instanz erzeugt man, indem man den Konstruktor der Klasse aufruft:
Zitat:

Objekt := TKlasse.Create(<Params>);

aha :duck:

Nunja das mit dem überweisen würde mich schon ncoh interesieren
Zitat:

Zitat von scrat1979
Mal eine Frage: Fangt Ihr denn mit der OOP an oder habt ihr schon grundlegende Dinge wie Variablen, IF-Anweisungen und Schleifen durchgenommen? Wenn nein, dann hätte ich persönlich an Deiner Stelle auch große Probleme mit der OOP. IMHO ist OOP für einen Anfänger (der im wahrsten Sinne des Wortes Delphie nicht richtig schreiben kann - nicht böse gemeint!) nicht so "flott rüberzubringen" - wenn ich mich an meine OOP-Anfänge erinnere, die auch nur wenige Jahre her sind!!

SCRaT

Mla davon abgesehen das du es jetzt auch falsch geschrieben hast ( ich kann grade nicht interpretieren ob es gewollt ist oder eher zufall *g*) habe ich schon gut 1 jahr mich mit php beschäftigt. sicherlich gibt es in php keinen OOP "Zwang", drum habe ich es auch nicht benutzt und konnte damit eigentlich ganz gut leben. als ich dann erfahren habe das Java in S3 wohl thema sein wird, hab ich natürlich volle hosen gekriegt und mich versucht einzulesen. aber ich konnte mit diesen fachwörtern die dort alle waren überhaupt nichts anfangen, sicherlich mag ich auch aus diesem Grund JavaSkript nicht *g*. nun aber leuchtet es mir doch ein (langsam..). Ich denke es hätte für mich schlimmer kommen können. Ich bin dabei eine ganze seite mit php zu schreiben, ist auch schon ziemlich weit forgeschritten, so das ich vlt nicht professionell programmiere, aber da ich es alleine mache alles - reicht es. es soll funktionieren und gut is.

Ein schönes, unverregnetes wochenende wünsche ich euch. Tuxi

scrat1979 31. Aug 2007 16:24

Re: Delphie anfang
 
Zitat:

Zitat von Tuxi

Zitat:

Zitat von scrat1979
Mal eine Frage: Fangt Ihr denn mit der OOP an oder habt ihr schon grundlegende Dinge wie Variablen, IF-Anweisungen und Schleifen durchgenommen? Wenn nein, dann hätte ich persönlich an Deiner Stelle auch große Probleme mit der OOP. IMHO ist OOP für einen Anfänger (der im wahrsten Sinne des Wortes Delphie nicht richtig schreiben kann - nicht böse gemeint!) nicht so "flott rüberzubringen" - wenn ich mich an meine OOP-Anfänge erinnere, die auch nur wenige Jahre her sind!!

SCRaT

Mla davon abgesehen das du es jetzt auch falsch geschrieben hast ( ich kann grade nicht interpretieren ob es gewollt ist oder eher zufall *g*) habe ich schon gut 1 jahr mich mit php beschäftigt. sicherlich gibt es in php keinen OOP "Zwang", drum habe ich es auch nicht benutzt und konnte damit eigentlich ganz gut leben. als ich dann erfahren habe das Java in S3 wohl thema sein wird, hab ich natürlich volle hosen gekriegt und mich versucht einzulesen. aber ich konnte mit diesen fachwörtern die dort alle waren überhaupt nichts anfangen, sicherlich mag ich auch aus diesem Grund JavaSkript nicht *g*. nun aber leuchtet es mir doch ein (langsam..). Ich denke es hätte für mich schlimmer kommen können. Ich bin dabei eine ganze seite mit php zu schreiben, ist auch schon ziemlich weit forgeschritten, so das ich vlt nicht professionell programmiere, aber da ich es alleine mache alles - reicht es. es soll funktionieren und gut is.

Irgendwie habe ich das Gefühl, daß Du Dich angegriffen fühlst :-) Ich wollte Dir nicht vorwerfen oder unterstellen, daß Du vom Programmieren überhaupt keine Ahnung hast (Selbst wenn es so WÄRE, dann wäre das auch kein Beinbruch), ABER: Da es sich ja offensichtlich um ein Schulfach handelt, finde ich es VON DEINEM LEHRER sehr mutig, mit OOP ohne Grundlagen der Delphi Language anzufangen - Sollte es tatsächlich so sein. Denn es gibt ja sicherlich auch einige in der Klasse, welche bislang noch gar nicht mit Delphi / Pascal programmiert haben. Mit "Delphie" nicht richtig schreiben können wollte ich auf den Unterrichtsentwurf Deiner Lehrer hinweisen, weiter nichts.

Das wollte ich in meinem Post nur allgemein anmerken :cheers:

Wünsch Dir auch ein schönes Wochenende,

SCRaT

P.S.: BTW, es regnet schon :-(

Tuxi 5. Sep 2007 17:01

Re: Delphie anfang
 
So, fangen wir dann mal an. Bis jetzt hab ich das hier:
Delphi-Quellcode:
type
  TDreieck=class
  BezugspunktX,
  BezugspunktY,
  Punkt1X,
  Punkt1Y,
  Punkt2X,
  Punkt2Y,
  Punkt3X,
  Punkt3Y:longint;
  Farbe:TColor;
  public

  end;
selbst geschrieben, funktioniert auch soweit (Nunja Delphi beschwert sich nicht :) ). Nun möchte ich von dieser Klasse eine Instanz erzeugen, dazu brauche ich irgendwie constrctor oder ?, aber ich hab keine ahung wo und wie ich das reinfriemeln muss.

irgendwo muss oben ein constructor rein, und nach dem implementation teil. aber wie gesagt, keine ahung. Dann möchte ich wie gesagt eine Instanz erzeigen und ihr Werte übergeben die ich als parameter anhängen möchte. in php würde ich es so machen:

function ichbineinefunktion($para1,$para2...)


und zum aufrufen halt:
ichbineinefunktion("2",false);

wie geht sowas?

Anscheind mit := ( für die instanz), aber ich kann damit noch nichts direkt anfangen. und aus der hilfe werde ich auch nicht schlauer :-|

Wofür brauche ich den kram überhaupt ? kann ich nicht einfach die werte aus den editfeldern auslesen und so n ding malen ? ich finde mein lehrer fängt etwas zu heftig an... achja, und ich nehme es nicht als vorwurf auf, egal was ihr sagt :bounce1:

Phoenix 5. Sep 2007 17:08

Re: Delphie anfang
 
Delphi-Quellcode:
type
  TDreieck=class
    BezugspunktX,
    BezugspunktY,
    Punkt1X,
    Punkt1Y,
    Punkt2X,
    Punkt2Y,
    Punkt3X,
    Punkt3Y:longint;
    Farbe:TColor;
  public
    constructor Create(Bp1, Bp2, P1x, P1y, P2x, P2y, P3x, P3y: Longint; Farbe: TColor);
  end;

implementation

constructor TDreieck.Create(Bp1, Bp2, P1x, P1y, P2x, P2y, P3x, P3y: Longint; Farbe: TColor);
begin
  BezugspunktX := Bp1;
  BezugspunktY := Bp2;
  Punkt1X := P1x;
  //... so weitermachen und alles zuweisen
end;

procedure Beispielfunktion_um_Instanz_zu_erzeugen;
var MeinDreieck: TDreieck;
begin
  MeinDreieck := TDreieck.Create(1,2,3,4,5,6,7,8, clBlack);
end;

guidok 6. Sep 2007 06:37

Re: Delphie anfang
 
Dann könntest du deiner Klasse auch noch eine Methode spendieren, die sie auch "malt", z.B.

Delphi-Quellcode:
type
  TDreieck=class
    BezugspunktX,
    BezugspunktY,
    Punkt1X,
    Punkt1Y,
    Punkt2X,
    Punkt2Y,
    Punkt3X,
    Punkt3Y:longint;
    Farbe:TColor;
  public
    constructor Create(Bp1, Bp2, P1x, P1y, P2x, P2y, P3x, P3y: Longint; Farbe: TColor);
    procedure Paint;
  end;

implementation

constructor TDreieck.Create(Bp1, Bp2, P1x, P1y, P2x, P2y, P3x, P3y: Longint; Farbe: TColor);
begin
  BezugspunktX := Bp1;
  BezugspunktY := Bp2;
  Punkt1X := P1x;
  //... so weitermachen und alles zuweisen
end;

procedure TDreieck.Paint;
begin
  //Hier kommt der Code, der das Dreieck mit den zugewiesenen Variablen auf die Zeichenfläche malt
end;

procedure Beispiel_um_Instanz_zu_erzeugen;
var MeinDreieck: TDreieck;
begin
  MeinDreieck := TDreieck.Create(1,2,3,4,5,6,7,8, clBlack);

  //und so rufst du sie später auf
  MeinDreieck.Paint;
 
end;
Was ist der Vorteil?

Naja, du kannst aus deiner Klasse jetzt einfach mehrere Instanzen erzeugen und so später in deinem Programm auf einfache Weise viele Dreiecke malen.

Delphi-Quellcode:
procedure Mehr_Dreiecke;
var D1, D2, D3, D4: TDreieck;
begin
  D1:=TDreieck.Create(1,2,3,4,5,6,7,8, clBlack);
  D2:=TDreieck.Create(9,10,11,12,13,14,15,16, clRed);
  D3:=TDreieck.Create(11,21,31,41,51,61,71,81, clBlack);
  D4:=TDreieck.Create(12,22,32,42,52,62,72,82, clRed);
  D1.Paint;
  D2.Paint;
  D3.Paint;
  D4.Paint;
end;
Grundsätzlich ist der Vorteil von Klassen, dass sie mehrfach verwendbar sind und ihre eignen Methoden mitbringen, um ihre Aufgabe erfüllen zu können. Zudem kannst du Klassen schreiben, die dies alles von ihrer Vorgängerklasse erben können und dir damit einiges an Arbeit ersparen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 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