[Gelöst]Verständnisfrage zum Thema Units

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Marsmännchen
Beiträge: 294
Registriert: So 4. Mai 2014, 21:32
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
CPU-Target: 64bit
Wohnort: Oranienburg

[Gelöst]Verständnisfrage zum Thema Units

Beitrag von Marsmännchen »

Hi,

ich habe mir gerade das Wiki zum Thema Units angeschaut und habe da ein Ich-kapiers-einfach-nicht-Erlebnis.

Im Wiki steht:
Das Grundgerüst einer Unit:

// Name der Unit
unit uTest;

//ggf. diverse Compileranweisungen (Compilerdirektiven)
{$mode objfpc}{$H+}

// Der Interfaceteil:
// Dieser Abschnitt wird mit dem Schlüsselwort interface eingeleitet.
// Alles was in diesem Abschnitt steht, ist öffentlich und kann sobald die Unit in andere Units eingebunden ist,
// von diesen Units gesehen und verwendet werden.

// In anderen Programmiersprachen wäre dieser Abschnitt Public.
interface

// Alle Units die hier eingebunden sind werden von dieser Unit gesehen und deren öffentlichen Bestandteile
// können in dieser Unit gesehen und damit verwendet werden.
// Beispiel:
Uses
Windows, Sysutils;

// Hier schreiben Sie alle Konstanten, Typdefinitionen und Variablen hin, die von anderen Units gesehen werden sollen.

// Hier schreiben Sie alle Köpfe von Prozeduren, Funktionen, Objekten und Klassen hin, die von anderen Units gesehen werden sollen.


Ich hab mal die beiden Passagen, die mir Logikprobleme machen, fett gemacht. Da ist einmal der Interface-Teil. Alles, was ich da deklariere, ist öffentlich. Okay, sowas kennt man auch von anderen Sprachen her. Dort nennt man es public, bzw. das hat offenbar ähnliche Aufgaben, wie die Interface-Technick bei VB/C#/Java. Das ist - wie die Übersetzung des Wortes es vorgibt - halt die öffentliche Schnittstelle. Liege ich da richtig oder setzt da mein Denkfehler schon an?

Und dann soll man weiter unten vor dem Implementierungsteil nochmal(?) alle Funktions- (usw.) Köpfe hinschreiben, damit sie öffentlich zugänglich sind? Ich dachte, das wäre genau das, was man im Interface-Teil macht und so mache ich das auch zB in Java, dass in einem Interface oder auch in einer abstrakten Klasse nur die Methodenrümpfe stehen (und das Interface ist quasi der Vertrag, den jede impementierende Klasse eingeht, dass sie alle Bestandteile des Interfaces implementiert).

Muss ich jetzt tatsächlich alles doppelt schreiben (wenn ja: warum das denn?) oder wo besteht der Unterschied zwischen diesen beiden Bereichen?
Zuletzt geändert von Marsmännchen am Do 8. Mai 2014, 13:15, insgesamt 1-mal geändert.
Ich mag Pascal...

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2807
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Verständnisfrage zum Thema Units

Beitrag von m.fuchs »

Wo steht denn da was vom implementation-Bereich?

Beide Aussagen beziehen sich auf den Interface-Bereich. Einmal ist es eine allgemeine Beschreibung, dann nochmal eine Aufzählung an welchen Stellen was stehen soll.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Verständnisfrage zum Thema Units

Beitrag von theo »

Marsmännchen hat geschrieben: ich habe mir gerade das Wiki zum Thema Units angeschaut
Wo ist das? Bitte immer Quelle angeben.

Vllt. ist das klarer:
http://delphi.about.com/od/beginners/l/aa051199.htm

Und Achtung: Es gibt zwei völlig verschieden Dinge namens "Interface" in FreePascal.
Das eine ist der Unit Abschnitt, das andere ist hier beschrieben (brauchst du noch lange nicht).
http://www.freepascal.org/docs-html/ref ... fse41.html
Hat nichts miteinander zu tun.

EDIT: Ach so, du hast das von hier: http://wiki.freepascal.org/Unit/de
Das ist bloss verwirrend gegliedert.
Ab

Code: Alles auswählen

// Der Implementationteil:
// Dieser Abschnitt wird mit dem Schlüsselwort implementation eingeleitet.
bezieht es sich nat. auf den Teil unter "implementation".

Marsmännchen
Beiträge: 294
Registriert: So 4. Mai 2014, 21:32
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
CPU-Target: 64bit
Wohnort: Oranienburg

Re: Verständnisfrage zum Thema Units

Beitrag von Marsmännchen »

Ich glaub, ich kapiers jetzt.

Sorry, dass ich die Quelle nicht genannt hatte (Wiki kam mir so banal vor, da dachte ich, da weiß jeder gleich was gemeint ist).

Ich hatte nicht geschnallt, dass 'Interface' quasi die Überschrift ist und weiter unten dann die konkreten öffentlichen Teile erst genannt werden.

Danke für die Erläuterungen.

LG
Marsmännchen
Ich mag Pascal...

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Verständnisfrage zum Thema Units

Beitrag von Michl »

Habs mal ein bisschen verändert, weiss nicht, obs jetzt klarer ist?!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Verständnisfrage zum Thema Units

Beitrag von theo »

Michl hat geschrieben:Habs mal ein bisschen verändert, weiss nicht, obs jetzt klarer ist?!
Ja, sieht klarer aus, auch dank der gestrichelten Unterteilungen.
Stimmts, Marsmännchen?

EDIT: Habe auch noch eine kleine Änderung gemacht.
Der einheitl. Gliederung wegen habe ich die Beschreibung von "end." auch noch unter "end." geschoben.

Marsmännchen
Beiträge: 294
Registriert: So 4. Mai 2014, 21:32
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
CPU-Target: 64bit
Wohnort: Oranienburg

Re: Verständnisfrage zum Thema Units

Beitrag von Marsmännchen »

Jo, jetzt hätte sogar ich es gleich kapiert :lol:

Die andere Art Interface gehört dann zur fortgeschrittenen OO-Programmierung, richtig?
Ich mag Pascal...

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2807
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Verständnisfrage zum Thema Units

Beitrag von m.fuchs »

Marsmännchen hat geschrieben:Die andere Art Interface gehört dann zur fortgeschrittenen OO-Programmierung, richtig?
Genau, damit kann man unterschiedliche Klassen austauschbar machen, solange sie das Interface implementieren (d.h. die dort aufgeführten Methoden anbieten).

Eine allgemeine Einführung zu dem Thema gibt es hier: https://de.wikipedia.org/wiki/Schnittst ... tierung%29
Das musst du aber noch nicht verstehen, wenn du dich gerade in die Sprache einarbeitest.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Verständnisfrage zum Thema Units

Beitrag von theo »

Marsmännchen hat geschrieben: Die andere Art Interface gehört dann zur fortgeschrittenen OO-Programmierung, richtig?
Ja, allerdings kann es gut sein, dass du das nie (bewusst) benötigst.

Hier gibt's auch noch Infos: http://www.softwareschule.ch/download/interfaces3.pdf

Marsmännchen
Beiträge: 294
Registriert: So 4. Mai 2014, 21:32
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
CPU-Target: 64bit
Wohnort: Oranienburg

Re: Verständnisfrage zum Thema Units

Beitrag von Marsmännchen »

m.fuchs hat geschrieben: Eine allgemeine Einführung zu dem Thema gibt es hier: https://de.wikipedia.org/wiki/Schnittst ... tierung%29
Das musst du aber noch nicht verstehen, wenn du dich gerade in die Sprache einarbeitest.
Na ich kenn's von Java und VB her, jedenfalls dem Grundsatz nach. Mit Schnittstellen kann man Klassen, die an sich verschieden (nicht miteinander vererbt sind), gemeinsam ansprechen, bzw. gemeinsame Funktionalität verleihen. In Java kann man zB mit Hilfe der Schnittstelle <serializable> sicherstellen, dass ein Objekt serialisierbar ist. Ich schätze mal, in ObjectPascal haben Interfaces ähnliche Aufgaben. Aber du hast recht: noch brauche ich das nicht, ich bin gerade beim Funktionsoverloading.

Aber zu den Units hätte ich doch noch mal eine andere Frage: Ich habe da ein wenig gestöbert, weil das Wiki ja sagt, dass Free Pascal auch eigene Units mitbringt. Find ich prima, denn wozu das Rad immer wieder neu erfinden. Ich habe mich auf die Google-Suche gemacht, weil ich wissen wollte, welche Units es gibt. Nach etwas Hin und Her bin ich auf die FP-Doku gestoßen: http://www.freepascal.org/docs-html/user/userse47.html.
Das ist schon mal eine gute Übersicht, aber die geht noch nicht ins Detail (zB welche Funktionen, Parameter usw. konkret durch die Unit zur Verfügung gestellt werden). Weitere Suche hat mich da nicht weitergebracht. Wo findet man eine ausführliche Beschreibung der Standard Units?
Ich mag Pascal...

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Verständnisfrage zum Thema Units

Beitrag von Socke »

Marsmännchen hat geschrieben:Aber zu den Units hätte ich doch noch mal eine andere Frage: Ich habe da ein wenig gestöbert, weil das Wiki ja sagt, dass Free Pascal auch eigene Units mitbringt. Find ich prima, denn wozu das Rad immer wieder neu erfinden. Ich habe mich auf die Google-Suche gemacht, weil ich wissen wollte, welche Units es gibt. Nach etwas Hin und Her bin ich auf die FP-Doku gestoßen: http://www.freepascal.org/docs-html/user/userse47.html.
Das ist schon mal eine gute Übersicht, aber die geht noch nicht ins Detail (zB welche Funktionen, Parameter usw. konkret durch die Unit zur Verfügung gestellt werden). Weitere Suche hat mich da nicht weitergebracht. Wo findet man eine ausführliche Beschreibung der Standard Units?
Eine vollständige Beschreibung gibt es leider (noch) nicht. Vieles findest du aber im Run-Time Library reference manual und im FCL reference manual. Beides ist über http://www.freepascal.org/docs-html/ erreichbar.
Dazu kommen freilich noch die ganzen Komponenten und Steuerelemente, die Lazarus mitbringt (Lazarus Component Library, LCL). Die Zugehörige Dokumentation ist unter http://lazarus-ccr.sourceforge.net/docs/lcl/ oder auch im Wiki zu finden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Marsmännchen
Beiträge: 294
Registriert: So 4. Mai 2014, 21:32
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
CPU-Target: 64bit
Wohnort: Oranienburg

Re: [Gelöst]Verständnisfrage zum Thema Units

Beitrag von Marsmännchen »

Vielen Dank für die Links. Ich war sogar schon in anderen Teilen des Manuals unterwegs (da ist ja auch die Übersicht über die Standard Units drin).
Ich hab mir das erstmal in meinen Lesezeichen abgespeichert und wenn ich anfange eigene Sachen zu basteln, dann werde ich mich aus den Units bedienen. 8)
Ich mag Pascal...

Antworten