Gast
#3694258
Ich würde nein sagen, da beispielsweise bei int Typen keine Methoden benutzt werden können. Jedoch sagt man doch alles ist ein objekt in oop oder? Was stimmt jetzt?
|
Anzeige
|
Ist in Java jeder Typ ein Objekt?
Gast
#3694258
Ich würde nein sagen, da beispielsweise bei int Typen keine Methoden benutzt werden können. Jedoch sagt man doch alles ist ein objekt in oop oder? Was stimmt jetzt? Hmm... lange ist's her. Gibt es dafür nicht speziell Wrapper-Klassen? Aber ich mag mich irren. In Java ist nicht jeder Typ ein Objekt. Falls Deine Def von oop das verlangt, dann ist java nicht oop.
Gast
#3694267
Ero schrieb: > Jedoch sagt man doch alles ist ein objekt in oop > oder? sagt eigentlich niemand pauschal. http://de.wikibooks.org/wiki/Java_Standard:_Primitive_Datentypen
Gast
#3694276
Kommt drauf an was man unter "Objekt" versteht. In C++ zählt quasi alles als "Objekt", auch wenn es keine Member-Funktionen hat (wie int , pointer etc). Ist aber dann wohl nicht der klassische OOP-Begriff. Es gibt in Java auch primitive Datentypen (int, byte, float, double, ...). Zusätzlich gibt es für diese Typen Wrapper Klassen. Benötigt werden diese etwa bei der Vewendung von Maps, Sets, etc., da diese nur mit Objekten umgehen können. Alexander F. schrieb: > Es gibt in Java auch primitive Datentypen (int, byte, float, double, > ...). > Zusätzlich gibt es für diese Typen Wrapper Klassen. > Benötigt werden diese etwa bei der Vewendung von Maps, Sets, etc., da > diese nur mit Objekten umgehen können. So ist es. Die primitive Datentypen sind eine "Aufweichung" des streng objektorientierten Ansatzes, der für bessere Performance und weniger Speicherverbrauch bei großen Datenmengen sorgt. Dr. Sommer schrieb: > In C++ zählt quasi alles als "Objekt" Da gibt es genauso primitive Datentypen wie int und float, die sind auch keine Objekte. Eine Sprache bei der wirklich alles Objekte sind ist meines Wissens Smalltalk.
Gast
#3694324
Udo Schmitt schrieb: > Da gibt es genauso primitive Datentypen wie int und float Die heißen dort built-in Types. > die sind auch keine Objekte. Quelle? Nach dem C++ Standard sind das Objekte: https://isocpp.org/files/papers/N3797.pdf S. 7 (PDF-S. 21) > "The constructs in a C++ program create, destroy, refer to, access, and > manipulate objects. An object is a region of storage. [Note: A function is > not an object, regardless of whether or not it occupies storage in the way > that objects do. —end note ]" Kein Wort darüber, dass ein Objekt ein "class"/"struct" sein muss! Dort findet sich sogar ein Beispielcode für Objekte:
Ja, auch "char" ist ein Objekt. Dr. Sommer schrieb: >> […] An object is a region of storage. […] Das ist die aus von C übernommene Definition eines Objekts. Nach dieser Definition sind alle Inhalte von Variablen Objekte, d.h. die Forderung "alles ist ein Objekt" wäre sogar für C erfüllt ;-) Hier geht es aber um Objekte im engeren OOP-Sinn. Zur Unterscheidung von gewöhnlichen Objekten heißen diese im C++-Standard "class object". Da Datentypen wie int, double usw. keine Klassen sind, sind ihre Instanzen zwar Objekte, aber keine Klassenobjekte. Yalu hat das klargestellt was man normaler weise unter Objekt in einer OOP Sprache meint. C++ definiert "object" tatsächlich allgemeiner als "region of storage". Danke, wusste ich nicht, da ich eher selten mit der c++ spec. zu tun habe. Das was man in OOP klassisch als Objekt bezeichnet, dürfte in C++ dann ein "class object" sein. Dr. Sommer schrieb: > Udo Schmitt schrieb: >> Da gibt es genauso primitive Datentypen wie int und float > Die heißen dort built-in Types. >> die sind auch keine Objekte. > Quelle? Nach dem C++ Standard sind das Objekte: > https://isocpp.org/files/papers/N3797.pdf S. 7 (PDF-S. 21) >> "The constructs in a C++ program create, destroy, refer to, access, and >> manipulate objects. An object is a region of storage. [Note: A function is >> not an object, regardless of whether or not it occupies storage in the way >> that objects do. —end note ]" Das ist freundlich formuliert eine ähnlich "strange" Sicht durch die Sprachbrille wie es bei Java gemacht wird. Funktioniert in C++ bspw. (123 + 456).ToString() ? Nein. 123 und 456 sind keine Objekte wie in richtig objektorientierten Sprachen. Eine mögliche, verkürzte, Definition von Objekt wäre vielleicht: Alle Konstanten, Variablen etc. die Ziel von Nachrichten sein können.
Gast
#3695401
Udo Schmitt schrieb: > Yalu hat das klargestellt was man normaler weise unter Objekt in einer > OOP Sprache meint. Hö? Und was? Ich wollte eigentlich nur sagen, dass man sich erst einmal überlegen sollte, was man überhaupt unter einem "Objekt" versteht. .. Arc Net schrieb: > Alle Konstanten, Variablen etc. die Ziel von Nachrichten sein können Und was ist eine Nachricht? Die gibt's weder in C++ noch in Java... Vielleicht so etwas?
Arc Net schrieb: > Funktioniert in C++ bspw. (123 + 456).ToString() ? > Nein Dafür aber std::to_string (123+456) Udo Schmitt schrieb: > Eine Sprache bei der wirklich alles Objekte sind ist meines Wissens > Smalltalk. Python >3 auch:
Dr. Sommer schrieb: > Arc Net schrieb: >> Alle Konstanten, Variablen etc. die Ziel von Nachrichten sein können > Und was ist eine Nachricht? Die gibt's weder in C++ noch in Java... Bin grad zu faul selbst was zu schreiben: http://stackoverflow.com/questions/43777/method-vs-message-vs-function-vs > Vielleicht so etwas? >
Wo ist dort 123+456 Ziel der Nachricht wie im zitierten Beispiel? >> Funktioniert in C++ bspw. (123 + 456).ToString() ? >> Nein > > Dafür aber std::to_string (123+456) to_string ist das Ziel nicht 123+456
Gast
#3696320
Arc Net schrieb: > Bin grad zu faul selbst was zu schreiben: > http://stackoverflow.com/questions/43777/method-vs-message-vs-function-vs Also doch nur eine Funktion... Arc Net schrieb: > Wo ist dort 123+456 Ziel der Nachricht wie im zitierten Beispiel? Da: sendeNachrichtAn(123+455); Nachricht--^ ^-----^-- Ziel der Nachricht Arc Net schrieb: >> >> Dafür aber std::to_string (123+456) > > to_string ist das Ziel nicht 123+456 Warum? Warum kann man nicht 123+456 als Ziel ansehen und to_string als Nachricht?
Gast
#3696780
Lukas K. schrieb: > Udo Schmitt schrieb: >> Eine Sprache bei der wirklich alles Objekte sind ist meines Wissens >> Smalltalk. > > Python >3 auch:>>> 1..__class__ > <class 'float'> >>>> "hallo".__class__ > <class 'str'> Insbesondere sind auch die Klassen selbst wieder Objekte:
Und auch Funktionen sind Instanzen von Klassen:
Gast
#3711238
Ja, Java ist keine Objektorientierte Sprache (OO-Sprache), sondern eine Sprache, die Objektorientiertes Programmieren unterstützt (OOP-Sprache). Ob eine Sprache selbst komplett Objektorientiert ist oder nicht ist im Grunde egal. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|