Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Pascal und Klassen (https://www.delphipraxis.net/58489-pascal-und-klassen.html)

Neutral General 7. Dez 2005 18:52


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

Tubos 7. Dez 2005 18:56

Re: Pascal und Klassen
 
Zitat:

Wie hat man denn früher bitte Spiele oder größere Projekte ohne Klassen programmiert ??
Das geht doch niemals...
Das geht!

Turbo Pascal ab einer bestimmten Version unterstützt OOP. Ich weiß nicht mehr sicher welche das war, deshalb sollte jemand antworten der sich auskennt ;)

glkgereon 7. Dez 2005 18:57

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 ;)

Neutral General 7. Dez 2005 19:02

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;

glkgereon 7. Dez 2005 19:07

Re: Pascal und Klassen
 
Jetzt mal frei ausm kopf:

Delphi-Quellcode:
TMyDings = object
  procedure MySuperProc;
  function MyExtraWowFunction:Boolean;
end;
also imho kannst du damit alles machen wie auch mit class, ausser:
- ableiten
- public/published/...
- propertys

gibbet noch mehr einschränkungen?

Oxmyx 7. Dez 2005 19:11

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:
Mensch.Laufen();
oder
Code:
Laufen(Mensch);

Neutral General 7. Dez 2005 19:12

Re: Pascal und Klassen
 
Zitat:

Zitat von Oxmyx
Man kann auch ohne eine objektorientierte Sprache oder einen objektorientierten Programmierstil komplexe Software entwickeln, siehe z.B. Quake 3.

Ja anscheinend geht das aber wie behält man da den Überblick ?
Da braucht man doch uuuunendlich globale Variablen oder ?
Wie blickt man denn da durch ?

Chewie 7. Dez 2005 19:13

Re: Pascal und Klassen
 
Und man kann auch ohne eine objektorientierte Sprache ein objektorientiertes Programm entwickeln ;)

Oxmyx 7. Dez 2005 19:15

Re: Pascal und Klassen
 
Zitat:

Zitat von Neutral General
Ja anscheinend geht das aber wie behält man da den Überblick ?
Da braucht man doch uuuunendlich globale Variablen oder ?
Wie blickt man denn da durch ?

Wieso sollte man? Die Benutzung von globalen Variablen hat doch nichts mit OOP zu tun, sondern ist einfach nur schlechter Stil. Wie ich oben in der geänderten Nachricht schon angedeutet habe, hat man halt keine Klasse "Mensch", sondern eine Struktur "Mensch". Und dann übergibt man die Struktur halt als Parameter an diverse Funktionen, die damit arbeiten. Nichts anderes macht ja auch der Compiler bei OOP, nur dass der Parameter eben der unsichtbare this/self/me-etc.-Zeiger ist.

Neutral General 7. Dez 2005 19:16

Re: Pascal und Klassen
 
Struktur ?
Was ist das denn ?
Beispiele bitte :D

Oxmyx 7. Dez 2005 19:26

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;

malo 7. Dez 2005 19:30

Re: Pascal und Klassen
 
Zitat:

Zitat von Neutral General
Struktur ?
Was ist das denn ?
Beispiele bitte :D

Stuktur ist einfach ein Record. In den meisten Programmiersprachen gibt es keine Records. Dort gibt es nur "Structs". Ist aber (fast) das gleiche ;)

alzaimar 7. Dez 2005 20:05

Re: Pascal und Klassen
 
Zitat:

Zitat von glkgereon
also imho kannst du damit alles machen wie auch mit class, ausser:
- ableiten
- public/published/...
- propertys
gibbet noch mehr einschränkungen?

Nein, weniger: Ableiten ist kein Problem
Delphi-Quellcode:
Type
  TFoo = Object (TBar)
   ....
  End;

Neutral General 8. Dez 2005 13:03

Re: Pascal und Klassen
 
Zitat:

Zitat von alzaimar
Zitat:

Zitat von glkgereon
also imho kannst du damit alles machen wie auch mit class, ausser:
- ableiten
- public/published/...
- propertys
gibbet noch mehr einschränkungen?

Nein, weniger: Ableiten ist kein Problem
Delphi-Quellcode:
Type
  TFoo = Object (TBar)
   ....
  End;

Ableiten kann man ja auch :)
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...

Oxmyx 8. Dez 2005 14:15

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.

tomsel 8. Dez 2005 17:10

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

simonko 8. Dez 2005 17:24

Re: Pascal und Klassen
 
Man benutzt einfach module, in pascal Units. Man erstellt sich schnittstellen zwischen den Modulen
(Datenkapselung).

Jelly 8. Dez 2005 17:26

Re: Pascal und Klassen
 
Zitat:

Zitat von tomsel
Turbo-Pascal ab 3.0 aufwärts konnte es.

Ich habe nicht Version 3.0 in Erinnerung. War es nicht der Sprung von 5.0 auf 5.5, der Obekte mitbrachte. Version 3.0 war ja sogar noch ein uralt Editor... Nix mit Menüs oder Maussteurung. Da ging alles noch über kryptische Tastenkombination wie Ctrl-K-C zum Compilieren)...

*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:

Tubos 8. Dez 2005 17:29

Re: Pascal und Klassen
 
Zitat:

War es nicht der Sprung von 5.0 auf 5.5, der Obekte mitbrachte.
Genau das habe ich in einem anderen Thread hier gelesen. Wollte ich aber nicht sagen weil ich mir nicht sicher war ;)

Neutral General 8. Dez 2005 17:34

Re: Pascal und Klassen
 
Zitat:

Zitat von Jelly
*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:

hehe genau deswegen habe ich angefangen mit Pascal zu programmieren :mrgreen:
Da kommt man sich direkt mal ein paar Jahrzehnte zurückversetzt :)

Lernnix 8. Dez 2005 18:31

Re: Pascal und Klassen
 
Zitat:

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.
protected ging nicht. private in Kombination mit public ging ab Version 7. Objekte gingen ab Version 5.5. Es gab keine Properties. Stattdessen mussten Datenfelder verwendet werden. Für nur lesen gingen auch Funktionen.

Beispiel:

Delphi-Quellcode:
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;
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)

[OT]
Units gibt es seit Version 4. Vorher gingen nur Include Dateiein, die ins Hauptprogramm einzubinden waren.
[/OT]

Lernnix

MacGuyver 8. Dez 2005 23:17

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