![]() |
Pascal und Klassen
Hi,
Es gibt bei dem alten Pascal (bzw Turbo Pascal 7) keine Klassen oder ? Kann man das nicht irgendwie einrichten ? Wie hat man denn früher bitte Spiele oder größere Projekte ohne Klassen programmiert ?? Das geht doch niemals... Ich programmiere im Moment gerne mit Pascal. Und ich versuche grad eine Art Textadventure/RPG hinzubekommen aber wenn man nichtmal ne Klasse für den Charakter machen kann ... Gruß Michael |
Re: Pascal und Klassen
Zitat:
Turbo Pascal ab einer bestimmten Version unterstützt OOP. Ich weiß nicht mehr sicher welche das war, deshalb sollte jemand antworten der sich auskennt ;) |
Re: Pascal und Klassen
doch, es gibt object...der vorläufer der "echten klassen"
aber da gab es vor kurzer Zeit schonmal ne disskussion drüber ;) |
Re: Pascal und Klassen
Danke für die Antworten schonmal :)
Also das freut mich das das anscheinend doch geht^^ Kann mir jemand mal ein Beispiel zeigen pls ? Ah ok ich habs raus. Ist ja wie in Delphi :) Juhuuu :mrgreen:
Delphi-Quellcode:
type
PascalKlasse = Object Eigenschaft: String; Zahl: Integer; end; |
Re: Pascal und Klassen
Jetzt mal frei ausm kopf:
Delphi-Quellcode:
also imho kannst du damit alles machen wie auch mit class, ausser:
TMyDings = object
procedure MySuperProc; function MyExtraWowFunction:Boolean; end; - ableiten - public/published/... - propertys gibbet noch mehr einschränkungen? |
Re: Pascal und Klassen
Man kann auch ohne eine objektorientierte Sprache oder einen objektorientierten Programmierstil komplexe Software entwickeln, siehe z.B. Quake 3.
Denn es ist ja letztendlich egal ob du schreibst
Code:
oder
Mensch.Laufen();
Code:
Laufen(Mensch);
|
Re: Pascal und Klassen
Zitat:
Da braucht man doch uuuunendlich globale Variablen oder ? Wie blickt man denn da durch ? |
Re: Pascal und Klassen
Und man kann auch ohne eine objektorientierte Sprache ein objektorientiertes Programm entwickeln ;)
|
Re: Pascal und Klassen
Zitat:
|
Re: Pascal und Klassen
Struktur ?
Was ist das denn ? Beispiele bitte :D |
Re: Pascal und Klassen
Delphi-Quellcode:
TMensch = record
Arme: array[0..1] of TArm; Beine: array[0..1] of TBein; Kopf: TKopf; Rest: TRest; IQ: Integer; end; |
Re: Pascal und Klassen
Zitat:
|
Re: Pascal und Klassen
Zitat:
Delphi-Quellcode:
Type
TFoo = Object (TBar) .... End; |
Re: Pascal und Klassen
Zitat:
Das wird immer besser... Pascal ist ja genial :mrgreen: Gut ich weiß zwar was Strukturen sind aber wie sieht denn so eine Struktur z.B in Pascal aus ? Und müssten die Klassen in Pascal nicht auch Strukturen sein ? Die Klassen in Pascal verhalten sich ja (fast) genauso wie die records in Delphi. Man muss sie nicht createn und sie haben nicht diesen ganzen TObject kram wie in Delphi, sondern nur die Eigenschaften die man ihnen gibt... |
Re: Pascal und Klassen
Der Unterschied ist, dass Klassen in Delphi dynamisch instantiiert sind und statische "objects" und Records eben nicht.
C++ ist noch konsequenter und macht bis auf die Standard-Sichtbarkeit keinen Unterschied zwischen "struct" und "class", ob statisch oder dynamisch instantiiert wird, entscheidet der Programmierer in beiden Fällen selbst. |
Re: Pascal und Klassen
Hi,
Turbo-Pascal ab 3.0 aufwärts konnte es. Dort war auch eine riesen Klassenbibliothek für Pseudo-Graphische Oberflächen dabei, TurboVision genannt. Wie schon gesagt: Vererbung war möglich, auch private, protected und public-Deklarationen gingen. Polymorphie, also Virtual-Methoden, ebenfalls. TurboVision wurde mit Quellcode geliefert, einige Demoprojekte waren auch dabei. Gruß tomsel |
Re: Pascal und Klassen
Man benutzt einfach module, in pascal Units. Man erstellt sich schnittstellen zwischen den Modulen
(Datenkapselung). |
Re: Pascal und Klassen
Zitat:
*Nostalgisch kuck* I :love: ch glaub heut abend kram ich mein altes Turbo Pascal 3.0 mal wieder aus dem Schrank und installier einen alten Green-Monitor mit 25 Hz Wiederholungsfrequenz :-)*Wieder nomal kuck* :evil: |
Re: Pascal und Klassen
Zitat:
|
Re: Pascal und Klassen
Zitat:
Da kommt man sich direkt mal ein paar Jahrzehnte zurückversetzt :) |
Re: Pascal und Klassen
Zitat:
Beispiel:
Delphi-Quellcode:
Alles vor private war public. Wenn man aber hinter der private Klausel die Klausel public verwendet hatte, konnten weitere public Methoden doeder Datenfelder folgen (ging ab Version 7.0) In Version 6 ging es nur so das zuerst alle öffentlicheen (public) Vereinbarungen (ohne public) angegeben werden mußten, dann mußten eingeleitet durch die private Klausel, alle privaten Vereinbarungen folgen. Vorher in Version 5.5 war alles öffentlich (public)
type
TMyObject = object Ein_Datenfeld: Integer; //oder ein anderer passender Typ, je nach Aufgabe Noch_ein_Datenfeld: Real; constructor Init; //auch Parameter durften hier übergeben werden destructor Done; //Wie in Delphi OHNE PARAMETER function ValueOfAnotherField: Integer; private AnotherField: Integer; end; [OT] Units gibt es seit Version 4. Vorher gingen nur Include Dateiein, die ins Hauptprogramm einzubinden waren. [/OT] Lernnix |
Re: Pascal und Klassen
:hi: Moin Leute,
für mich ist das keine Nostalgie, ich arbeite damit noch. Ja, OOP kam mit 5.50, ich arbeite aber von anfang an mit 7.0 wodurch ich gut verwöhnt bin. Die heutigen Properties werden mit Procedures und Funktionen gelöst: GetNamePerson wäre zum Lesen des Inhaltes und SetNamePerson wäre dann zum Setzen. Die Möglichkeiten unter Borland-/Turbo-Pascal sind schon immens. Auf die OOP Programmierung wollte ich auf jeden fall nicht mehr verzichten. Es geht aber wirklich ohne. Einen Record definiert und variabel an alle Funktionen übergeben. An manchen Stellen legen wir bewußt kein Object an, es lohnt sich nicht. So hatte ich eine VERAX-Liste implementier und alle Methodennamen fingen mit vrx an. So ist der Überblick auch kein Problem. In manchen Stellen in Delphi wünsche ich mir mein Pascal zurück. Ich kann dort genau sehen, wo und wieoft ich meine Methode/Variable/Konstante verwendet habe. Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 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-2025 by Thomas Breitkreuz