ubuntuusers.de

Welche Entwicklungsumgebung bietet echte OOP?

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

tom111

Anmeldungsdatum:
10. Juli 2020

Beiträge: 102

Hallo Ubuntuusers.

Habe vor einigen Monaten von Windows auf Ubuntu/Linux gewechselt. Bin schon längere Zeit auf der Suche nach einer Entwicklungsumgebung für C/C++ welche die Möglichkeit besitzt über Objekte zu Programmieren. Ich bin kein gelernter Programmierer, nur ein Hobbyist. Habe nun schon über GTKmm etwas gelernt und habe auch bereits versucht, damit etwas unter verschiedenen IDEs zu programmieren.

Erst einmal eine Info zu der Problematik. Unter Windows habe ich mit Borland Builder gearbeitet und das sogar als Hobbyprogrammierer sehr erfolgreich. Hier war die Programmierung auch sehr einfach. Man hatte eine Haupt- "Form" bzw. Grundrahmen worauf man die benötigten Objekte wie z.B. einen Button, Label oder Tabelle o.ä. aus einer Auswahlliste auswählen und auf dieser "Form" ablegen konnte. Zu jedem Objekt gab es eine mehr oder weniger lange Einstellungsliste, wo man die Position, Größe, Aussehen und vieles mehr des entsprechenden Objektes, einfach einstellen konnte.

Man musste sich also absolut keine Gedanken darüber machen, wie ein solches Objekt (wie z.B. ein Button) überhaupt programmiert werden muss. Man hat dann lediglich "nur" das programmiert, was z.B. bei einem Klick auf das Objekt ausgeführt werden sollte. Man konnte auch so z.B. bei einem Klick auf einen in die "Form" eingefügten Button auch sehr leicht und einfach die Zuweisung eines Textes in ein ebenfalls eingefügtes Label-Objekt machen, oder die Bezeichnung des Button-Objektes verändern. Auch die Kompilierung bzw. das Erstellen des Ausführbaren Programms war dann nur ein einziger Mouseklick!

Nun aber zu der eigentlichen Frage, wo ich euch bitte mir weiter zu helfen. Gibt es unter Linux auch ein solches Programmierwerkzeug ähnlich dem Borland Builder, wo man in einen vorhandenen "Haupt- bzw. Grundrahmen oder Startrahmen" Objekte wie z.B. einen Button o.ä. aus einer Liste auswählen und darin platzieren und anpassen kann? Wo man letztendlich nur noch den Programmcode einfügen bzw. programmieren muss, der abgearbeitet wird, wenn irgend eine Funktion wie z.B. ein Mouseklick auf dieses Objekt dann ausgeführt wird? Wo eventuell auch einfach ein "deb" File o.ä. unter Linux ausführbares Programm ganz einfach erzeugt werden kann? Oder zumindest ein Test des Programms in der IDE ausführbar ist?

Oder bin ich unter Linux aus irgendwelchen Gründen dazu gezwungen, solche Objekte wie Buttons, Labels usw. grundsätzlich immer selber mit entsprechenden Programmcode zu erzeugen und es deshalb auch kein solches Entwicklungswerkzeug gibt?

Denn ich bin schon lange in den Weiten des Internets unterwegs und stoße immer auf jede Menge an Informationen zur C++ Programmierung. Leider konnte ich aber noch keine wirkliche Antwort auf meine speziellen Fragen finden. Hoffe das es mir hier im Forum gelingt, etwas weiter zu kommen.

Ich danke allen die mir hier weiter helfen können. Gruß Tom.

NORACSA

Anmeldungsdatum:
31. Januar 2010

Beiträge: 182

OOP hat mit der Oberfläche nichts zu tun. Das was du meinst ist ein Editor für grafische Oberflächen.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Das kommt immer darauf an, was du für die Grafik zugrunde legst. Bei den Desktopumgebungen gibt es zwei große Möglichkeiten: GTK mit dem GNOME-Builder, so wie dem Design-Editor glade oder der Wechsel in die Qt-Welt (KDE/LxQt) mit dem QtCreator (nur C++/QML/Python). Dabei sind die herangehensweisen schon recht unterschiedlich und auch die Bearbeitungsschritte anders. Ich kann nur für letzteren Sprechen, aber Qt ist sehr auf Dynamik ausgelegt. Man kann Positionen und Größen festlegen, allerdings sieht das meistens nicht gut aus. Besser ist es die Größen zu berechnen — oder gar nicht erst fest anzugeben. Es gibt dort Policies, mit denen man einstellen kann, ob ein Objekt klein bleiben soll oder sich so viel Platz wie möglich ergaunert. Der QtCreator hat unmengen Beispiele, die auch dokumentiert sind. Mit GTK hab ich leider zu wenig gemacht, um da ein Fazit zu geben. Ich wollte mir Vala (Sprache) angucken, die wurde mir hier im Forum empfohlen, steht aber noch auf der Todo-Liste.

tom111

(Themenstarter)

Anmeldungsdatum:
10. Juli 2020

Beiträge: 102

Hallo.

Ich danke NORACSA und ChickenLipsRfun2eat, das Ihr euch die Zeit genommen habt, mir etwas weiter zu helfen.

Wenn ich das jetzt auf die Schnelle richtig verstehe, gibt es unter Linux keine IDE wo man Objekte wie Buttons o.ä. direkt mit dabei hat. Dafür gibt es dann externe Software wie z.B. einen Editor für grafische Oberflächen. Ist glade dann als ein solcher Editor anzusehen?

War jetzt mal kurz auf der Internetseite von glade und habe mir erst einmal einen kurzen Überblick dazu geholt. Soweit ich das verstehe, wählt man mit glade dann seine Objekte wie Buttons, Labels o.a. aus, setzt diese an die entsprechende Stelle wo diese Objekte im Programm erscheinen sollen und speichert dieses "Script" in einem Format ab, welches von der IDE eingelesen werden kann. Und über die IDE GTK_Builder wird dann sozusagen dazu programmiert was passieren soll, wenn auf eines der unter glade eingebauten und positionierten Objekte eine Aktion wie z.B. ein Mouseklick ausgeführt wird.

Wäre dieses erste Verständnis von der Zusammenarbeit von glade und GTK_Builder so erst einmal im Grunde richtig? Oder liege ich da vollkommen falsch?

Also wenn das so richtig wäre, dann wäre es zumindest ein guter Anfang.

Das Qt erscheint mir erst einmal etwas schwierig...

vmp

Anmeldungsdatum:
28. März 2018

Beiträge: 143

Auf der Seite von Qt5 findet man unter "Examples and Tutorials" zu jedem Programmierbeispiel unten auf jeder Seite den Quellcode unter "Example project @ code.qt.io"

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

deine Nomenklatur ist immer noch falsch. Wenn du von einem "Objekt" in Kontext von "Programmierung" sprichst, dann ist jeder bei Objektorientierter Programmierung. Und das hat nichts, so rein gar nichts mit GUI Programmierung zu tun. Was du als "Objekt" bezeichnet, nennt sich in den GUI-Frameworks üblicherweise "Widget".

Richtig ist wohl, dass man für die "großen" GUI-Framework die Elemente ("Widges") der GUI in einem GUI-Designer zusammenbaut, speichert und dann im Hauptprogramm, dass die Applikationslogik implementiert, einbindet.

Wenn du wirklich als Hobbyprogrammierer in C++ programmierst (warum man auch immer C++ als Hobby haben will *SCNR*), dann ist Qt schon 1. Wahl, weil Qt DAS GUI-Framework für C++ ist und generell auch eines der leistungsfähigsten GUI-Frameworks. Mit Qt Creator hast du eine IDE, den den GUI-Designer Qt Designer einbindet.

Wenn du mehr Richtung GTK tendierst, dann wäre vielleicht auch die Programmiersprache Vala interssant. Die ist auch objektorientiert, auf einem höheren Level als C++ und baut auf das GObject auf, auf das auch GTK aufbaut.

Gruß, noisefloor

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6502

Wohnort: Hamburg

Ich hatte in meinem früheren Leben auch mit Borland C++ gearbeitet. Das war schon sehr komfortabel, da alles aus einer Hand kam und somit alles passte. Da bekommt der Programmierer nicht alles mit, was da im Hintergrund abläuft. Man klickt zusammen was man benötigt. Aber ich hatte auch damals schon viel am "Layout-Designer" vorbei gearbeitet, indem ich direkt mit dem Windows API gearbeitet hatte.

Wenn du wirklich als Hobbyprogrammierer in C++ programmierst (warum man auch immer C++ als Hobby haben will *SCNR*), dann ist Qt schon 1. Wahl, ...

Ich bin auch nur ein Hobbysprogrammierer und Qt mag ich nicht, weil es mir zu fett ist und ich mich mit dem Meta-Object-Compiler nicht anfreunden kann. Als Funkamateur beschäftige ich mich auch mit digitaler Signalverarbeitung und lande da dann eher bei C und akzeptiert C++ wenn ich zusätzlich eine GUI benötige (wobei die auch anders realisiert werden könnte).

Auch für das von mir verwendete Toolkit FLTK gibt es einen "fast light user-interface designer" namens Fluid, den ich aber nicht verwende. Mir ist es wichtiger, die vollständige Kontrolle über das Layout zu haben. Da kann man dann auch Tricks anwenden, die mit einem Interface Designer nicht einfach möglich sind.

Also so etwas wie den Borland Builder wirst Du unter Linux nicht direkt finden, da es hier zu viele Köche gibt, die einander nicht kennen. Du musst also die Suche nach dem Layout-Designer von der Suche nach einer geeigneten IDE (und Programmiersprache) trennen.

Letztendlich hängt die Entscheidung davon ab, ob man ein spezielles Ziel hat (mit besonderen Anforderungen), oder ob man einfach nur programmieren will.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Ich bin auch nur ein Hobbysprogrammierer und Qt mag ich nicht, weil es mir zu fett ist ...

Es stimmt schon, dass Qt mega viel kann bzw. von den gängigen GUI-Frameworks am meisten kann - muss man aber halt nicht alles nutzen. Klar gibt es noch eine Reihe anderen Frameworks, aber Qt und GTK sind - unter Linux - am meisten Mainstream, d.h. wenn man als Einsteiger Fragen hat, bekommt man hier ziemlich sicher Hilfe.

Unter Python ist Tkinter noch recht populär - weil Python es an Bord hat. Mit Tkinter bekommt man auch ganz passable GUIs hinten, im Vergleich zu Qt und GTK kann es aber wenig. Was bei einfachen GUIs aber egal ist.

Mir ist es wichtiger, die vollständige Kontrolle über das Layout zu haben.

Wenn ich (mit Python) mal was mit einer GUI machen, bevorzuge ich es auch, das im Code und nicht im GUI-Designer zu machen. Wobei meine GUIs auch eher einfach sind, also nicht mit X verschachtelten Menüs und 20 oder 30 Widgets.

Gruß, noisefloor

tom111

(Themenstarter)

Anmeldungsdatum:
10. Juli 2020

Beiträge: 102

Hallo.

Ich bedanke mich bei allen Beteiligten das Ihr euch die Zeit genommen habt und mir dabei wirklich sehr unterstützend mit eurer Hilfe beiseite steht. Denn langsam kommt Licht in das Ganze durcheinander...

Dakuan hat ja glücklicherweise auch einmal mit dem Borland Builder gearbeitet und somit kann er natürlich auch sehr gut nachvollziehen, wo mein Problem liegt und was ich Oben geschrieben hatte.

Dakuan schrieb:

Das war schon sehr komfortabel, da alles aus einer Hand kam und somit alles passte.

Und genau das hat es für einen Hobbyprogrammierer auch sehr einfach gemacht. Man musste da nicht wissen, wie ein "Widget" programmiert bzw. erzeugt wird! Man hat es halt einfach per Drag & Drop auf dem Programmfenster platziert, den ausführbaren Programmcode im dazugehörigen Editor für z.B. einen Mouseklick o.ä. Aktionen eingetippt und das war es dann auch schon...

Danke auch noisefloor für die super tolle Erklärung der Begriffe. Der Grund warum ich so an C bzw. C++ festhalte ist der, weil ich mit dem Borland Builder halt einige Programme in C++ schon erstellt habe und diese gerne nach Linux übertragen wollte. Ich war der Meinung das es ein ähnliches Programmierwerkzeug wie den Borland Builder auch unter Linux gibt. Durch eure Hilfe habe ich aber jetzt lernen müssen, das eine Programmierung unter Linux ganz anders von statten geht als ich es vom Borland Builder her kenne.

Aber sehr wichtig war für mich erst einmal zu erkennen, das "Widgets" und die eigentliche Programmierung zwei Paar Schuhe sind. Hier danke ich noisefloor für seine gut verständliche Bestätigung.

noisefloor schrieb:

Richtig ist wohl, dass man für die "großen" GUI-Framework die Elemente ("Widges") der GUI in einem GUI-Designer zusammenbaut, speichert und dann im Hauptprogramm, dass die Applikationslogik implementiert, einbindet.

Ich habe durch euch jetzt erst einmal verstanden, wie Programmierung unter Linux grundsätzlich überhaupt abläuft. Ich sehe da aber auch noch sehr viel Lernarbeit auf mich zukommen, wenn ich daran festhalte, meine alten Programme nach Linux zu portieren.

Danke nochmals für eure wirklich sehr hilfreiche Beteiligung die mich doch schon wieder ein Stückchen weiter bringt. 😀 Gruß Tom

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13207

Es scheint für Qt ein Eclipse-Plugin für einen GUI-Designer zu geben. Eclipse ist generell eine sehr mächtige IDE und das könnte vielleicht etwas für Dich sein. Du fängst am besten mit der Eclipse IDE for C/C++ Developers an und installierst dann das in dem Foren-Thread angegebene Package.

realsuamor

Avatar von realsuamor

Anmeldungsdatum:
16. Mai 2010

Beiträge: 207

Wohnort: Renningen (BaWue)

Noch ein paar Anmerkungen zu Qt: Wie schon bekannt unterscheidet man ja zwischen Widgets und Layouts, in denen die Widgets eingebettet sind und die Logik hinter dem Gebilde, das Dein Layout enthält (ein Fenster, Dialog, ein zusammengesetztes komplexes Widget etc.).

Aktuell ist der Designer integriert im Qt Creator (gibt es aber immer noch extern als separate Anwendung) und dann gibt es noch ein 3D Design Studio, das ich nicht kenne. Technisch gesehen produziert der Designer ja dann QML Dateien oder eine ui-Datei, aus der dann in einem zweiten Schritt C++ generiert wird.

Nun wird es in Zukunft ein Design Studio geben, das den Designer und das 3D Studio ersetzt als eine gemeinsames Designstudio (was aus dem im QtCreator eingebetteten Designer wird ist mir nicht bekannt. Der Workflow, den Qt im Novmeber präsentiert hat, sieht vor, als Basis eine Photoshop Datei für das "Design" zu verwenden, wie es auf UI Design spezialisierte Personen tun. Die Entwickler waren bisher die "Dummen", die das ganze in ein zu 90% starres Layout einbetten mussten / müssen, da die Grafiken nicht skaliert werden dürfen...

Wer in dieser Richtung arbeitet wird feststellen, daß freie Programme erst gar nicht von diesem Designstudio unterstützt werden (bspw. gimp), da auch zukünftig wahrscheinlich nur wenige freie Softwareprojekte einen so großen Aufwand betreiben werden für die Erstellung einer schönen GUI.

Der Designer ist so eine Art Gegenstück zu gtk glade (und wahrscheinlich weitere Programme, die ich nicht kenne).

Es gibt aber noch einen anderen Ansatz: Ist die Anwendung weitesgehend datengetrieben (Formulare für Datensätze), bspw. Sammlungen, dann kann man auch mit libreoffice oder tellico bewerkstellingen, tw. ganz ohne programmieren zu müssen.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

realsuamor schrieb:

Nun wird es in Zukunft ein Design Studio geben, das den Designer und das 3D Studio ersetzt…

Das ist interessant. Die KDE-Community setzt immer mehr auf Kirigami, um ein für alle Endgeräte portables UI zu entwickeln. Zugegeben, mit dem Designer habe ich mich nie viel beschäftigt, ich bastel aber auch nur hobbymäßig damit rum. Was ich weiß ist, dass mit Qt6 der Weg weg von qmake hin zu cmake führt, das ist aber für die Erstellung eines UI uninteressant.

BaraMGB

Anmeldungsdatum:
9. September 2007

Beiträge: 122

Ich würde mir an deiner Stelle einfach qt creator installieren und mir das mal ansehen. Das, was du da beschrieben hast, ist mit dem qt Designer schon möglich. Button auf der Form platzieren, doppelklick öffnet den Editor an der richtigen Stelle (button click event) und da kannst du deinen Code reinschreiben. Klick auf das grüne Dreieck und alles wird zusammen gebaut und gestartet. Man hat alles aus einer Hand und kann im Zweifel auch alles für Windows oder Mac bauen.

Antworten |