![]() |
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: |
Re: Delphie anfang
Hier mal der wahrscheinlich am meisten zitierte Link für Neulinge :-)
![]() ... keine Panik, wir waren alle mal blutige Anfänger :-) SCRaT // EDIT: Insbesondere das müsste für Dich interessant sein: ![]() Ach so, herzlich willkommen im Forum!!! :dp: |
Re: Delphie anfang
:= ist eine Zuweisung in Delphi. Eine Instanz erzeugt man, indem man den Konstruktor der Klasse aufruft:
Zitat:
|
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. ;-) |
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 |
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:
Nunja das mit dem überweisen würde mich schon ncoh interesieren Zitat:
Ein schönes, unverregnetes wochenende wünsche ich euch. Tuxi |
Re: Delphie anfang
Zitat:
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 :-( |
Re: Delphie anfang
So, fangen wir dann mal an. Bis jetzt hab ich das hier:
Delphi-Quellcode:
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.
type
TDreieck=class BezugspunktX, BezugspunktY, Punkt1X, Punkt1Y, Punkt2X, Punkt2Y, Punkt3X, Punkt3Y:longint; Farbe:TColor; public end; 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: |
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; |
Re: Delphie anfang
Dann könntest du deiner Klasse auch noch eine Methode spendieren, die sie auch "malt", z.B.
Delphi-Quellcode:
Was ist der Vorteil?
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; 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:
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.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz