Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » Gtk+ oder Qt

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
12.08.2003, 12:06 Uhr
0xdeadbeef
Gott
(Operator)


Wie willst du in C objektorientieren? Die Sprache kennt Polymorphismus überhaupt nicht. Das GTK kapselt bestimmte Strukturen, aber das macht es noch nicht objektorientiert.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
12.08.2003, 12:37 Uhr
Pablo
Supertux
(Operator)



Zitat:
BeS postete


@Pablo Yanez Trujillo:
kann ich dann darauf schließen, dass du GTK+ verwendest? Oder machst du garkeine GUI Sachen?




Nein, kannst du nicht. In Wirklichkeit mache ich keine GUI Sachen. Ich mag mehr die Console wenn ich was mache, dann mach ich es für die Console. Aber GUI interessiert mich schon, und ich bin jetzt am Lernen. Ich hab mir beide 2 Bücher von Adrian Nye besorgt, XLib Programming Manula und XLib Reference Manual. Sie sind sehr gut, man muss leider alles selber machen, aber dafür bin ich sicher, dass ich alles gemacht habe, was man braucht.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
12.08.2003, 12:49 Uhr
virtual
Sexiest Bit alive
(Operator)


@beefy
ich denke, BeS spricht ein Argument an, welches von vielen Protagonisten von Prozeduralen Sprachen angeführt wird. Und natürlich kann man auch in C eine VMT nachbilden. Einige der ersten C++ Compiler haben genau das gemacht: sie haben C++ erstmal in einen normalen C Code transformiert und dann eine C Datei mit dem C Compiler compiliert. Beispiele für aktuelle Libraries, die in C geschrieben sind und Polymorphismus verwenden, gibt es auch: zB die ONC RPC Library von Sun (OpenSource). Da wird den RPC Clienthandles eine tabelle von Funktionspointern mitgeliefert, so daß man ein und den selben Typ für TCP und UDP basierte verbindungen benutzen kann, obwohl complett unterschiedliche Implementationen angesprochen werden (gleiches gilt dann natürlich auch für den XDR layer, den man Speicher oder Filebasiert benutzen kann).
Natürlich besitzt C nicht das Sprachelement der Vererbung, dh man muß im Zweifel mehr casten, aber der Aspekt der Polymorphie ist dennoch realisierbar. Ich würde sogar mich den Leuten ansprechen, die behaupten, daß gute C Programme dazu tendieren, objektorient zu sein.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
12.08.2003, 12:56 Uhr
BeS




Zitat:
0xdeadbeef postete
Wie willst du in C objektorientieren? Die Sprache kennt Polymorphismus überhaupt nicht. Das GTK kapselt bestimmte Strukturen, aber das macht es noch nicht objektorientiert.


Also wie gesagt ich kenne mich in gtk+ noch nicht aus, kann deswegen diese Frage nur sehr schwer bis granicht beantworten. Ich kann nur sagen was ich bisher so gelesen habe und da steht z.B. im "GNOME 2.0 Entwickler Handbuch":

"...Irgendwann wurde GTK dann objektorientiert: Widgets konnten nun von anderen abgeleitet werden, und das prinzipiell noch heute vorhandene Signalsystem wurde eingeführt. Die Entwickler fühlten sich berechtigt, GTK in GTK+ umzubenennen, um diese Objektorientierung zu honorieren..."

Auch mit google findet man Aussagen wie:

"...OOP is a programming methodology, not necessarily a language
property. One can do oop programming in C just like someone can do
simple procedural programming in C++. Granted, some languages have built
in syntactic sugar that aids oop, while others don't have as much.

If you look up the source for gtk+, as well as some simple example
programs using it, you'll see how it is done in an oop way. ;-)..."

Das ist auch mein Verständnis von OOP, es ist in erster Linie eine Methode zu Programmieren nicht eine Programmiersprache. Es gibt lediglich Programmiersprachen die es besser "fördern" als andere und da gehört C++ auch lange nicht zu den besten, was ich so gehört bzw. gelesen habe.
Sicher kann man einige sachen "schöner" machen wenn es schon entsprechende Sprachelemente von der Programmiersprache gibt, das meinte ich in meinem ersten posting mit der Aussage:
"...QT Programme oft doch kürzer sind und "eleganter" aussehen. Dagegen wirkt GTK+ code doch oft etwas kompliziert und "holprig"..."

Auch auf gtk.org steht z.B.:

"The + was added to distinguish between the original version of gtk and the new version. You can think of it as being an enhancement to the original gtk that adds object oriented features."
--
If art interprets our dreams, the computer execute them in the guise of programs!

Dieser Post wurde am 12.08.2003 um 13:04 Uhr von BeS editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
12.08.2003, 13:19 Uhr
Pablo
Supertux
(Operator)



Zitat:
BeS postete


"...OOP is a programming methodology, not necessarily a language
property. One can do oop programming in C just like someone can do
simple procedural programming in C++. Granted, some languages have built
in syntactic sugar that aids oop, while others don't have as much.




Damit bin ich einverstanden. C ist zwar keine Sprache, die Klassen, Polymorphismus und andere Merkamle der OOP nicht kennt, trotzdem kann man schon "Objekt-Orientiert", auch wenn es nicht 100% OOP ist. Da muss ich dem Zitat zustimmen.

Ich kenn das persönlich nicht, aber mein Bruder hat mir davon erzählt, dass vor 2 Jahren in der Vorlesung Informatik I (als er sie gehört hat) der damalige Prof. OOP mit Scheme geschafft hat, wobei Functional Programming nichts mit OOP zu tun hat. Er hat nur die Idee der OOP genommen und sie in Scheme eingesetzt. Und das ist für mich schon OOP.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 12.08.2003 um 13:20 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
12.08.2003, 14:51 Uhr
0xdeadbeef
Gott
(Operator)


Naja, Teile des GTK erinnern an objektorientierung, und gute C-Programme tun das in Teilen auch. Das Ableiten von Klassen ist ja, was das Speichermanagement angeht, nichts anderes als

C++:
struct A { /* class A { */
    /*bla*/
};

struct B {  /* class B : public A { */
    struct A __parent;
};

struct C { /* class C : virtual public A { */
    struct A *__parent;
};


Aber zum Beispiel gleichnamige Funktionen mit unterschiedlichen Parametern, kriegt man meines Wissens nur über name mangling hin, und Funktionsnamen wie _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_ sind nun wirklich kein guter Programmierstil.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
12.08.2003, 16:58 Uhr
virtual
Sexiest Bit alive
(Operator)


Aber niemand hindert Dich daran, lesbare namen in Deinem Programm zu erfinden. Natürtlich wird man sowas nicht machen können:

C++:
char* toString(char);
char* toString(int);


Eben nur

C++:
char* CharToString(char);
char* IntToString(int);

oder

C++:
char* toString(int type_id, ...);


Aber man kann eben in dem Sinn OO Schreiben, daß man Strukturen eine VMT verpasst und damit auch polymorphie macht. Ich halte das Überladen von Funktionsnamen nicht unbedingt für die wichtigste Sache bei OO. Ist zwar angenehm, aber weil dahinter letztlich eine frühe Bindung steht verzichtbar.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
12.08.2003, 17:34 Uhr
0xdeadbeef
Gott
(Operator)


Naja, vermutlich geht es, aber es fehlen halt viele Dinge. Sowas wie die Automatisierung des Speichermanagements (Kon- bzw. Destruktoren automatisch aufrufen) kriegst du in C beim besten Willen nicht hin, und VMTs dürften dementsprechend umständlich sein. Man kriegt es in C wohl hin, etwas annähernd objektorientiertes zusammenzuschustern, aber wenn C als objektorientierte Sprache durchgeht, möchte ich fürs Protokoll gesagt haben, dass man das prinzipiell auch in Assembler hinkriegt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
12.08.2003, 18:05 Uhr
BeS



Hallo,


Zitat:
0xdeadbeef postete
Naja, vermutlich geht es, aber es fehlen halt viele Dinge. Sowas wie die Automatisierung des Speichermanagements (Kon- bzw. Destruktoren automatisch aufrufen) kriegst du in C beim besten Willen nicht hin, und VMTs dürften dementsprechend umständlich sein. Man kriegt es in C wohl hin, etwas annähernd objektorientiertes zusammenzuschustern,



C++ setzt sicher die OOP besser um als C aber auch C++ ist da noch nicht das beste was reines OOP betrifft.
Aber um mal wieder auf meine ursprüngliche Frage zurückzukommen.
Es ging ja ums toolkit, also qt oder gtk+. Da ist es erstmal egal mit welcher Sprache du das Toolkit nachher programmierst, beide Toolkits sind aber objektorientiert! Bei beiden werden die verschiedenen Elemente/widgets als Objekte verarbeitet. Du kannst neue widgets von bestehenden ableiten, beide haben ein Signalsystem über das du auf verschiedene Ereignisse reagieren kannst, und so weiter...
Also ist GTK+ erstmal genauso objektorientiert wie qt.
Wie du jetzt die Daten in einem Projekt anordnest ist natürlich wieder eine andere Sachen, da wirst du wahrscheinlich mit C++ objektorientierter arbeiten als mit C. Das ist jetzt aber keine Frage mehr des Toolkits sondern der Programmiersprache. Ich kann ja z.B. Ada95 mit GTK+ verwenden, dann habe ich schon einiges mehr an OOP Funktionen, u.a. auch die Generizität.


Zitat:

aber wenn C als objektorientierte Sprache durchgeht, möchte ich fürs Protokoll gesagt haben, dass man das prinzipiell auch in Assembler hinkriegt.



wurde hiermit im Protokoll vermerkt


@virtual: was verwendest du bei gui Anwendungen? Oder was würdest du aus welchen Gründen bevorzugen?
--
If art interprets our dreams, the computer execute them in the guise of programs!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
13.08.2003, 08:41 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich schreibe portable GUI Anwendungen inwzischen nur noch in Java.
Für nicht portable Sachen unter Linux benutze ich eine eigene Klassenlib, die direkt auf X aufsetzt.
QT lehne ich aus prinzipiellen Erwägungen ab.
GTK habe ich mich nicht näher mit auseinandergesetzt, weil es meinerseits kein Bedarf dafür gibt.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: