Video-Tut: Welchen Datentyp hat das Objekt?

    • Allgemein

      Video-Tut: Welchen Datentyp hat das Objekt?

      Jo, die Überschrift ist die berühmte sprichwörtliche Gretchenfrage der Objektorientierten Programmierung.
      Hat man an irgendeiner Stelle im Programm auch nur das geringste Problem, sie binnen 5s genau und sicher zu beantworten, so kann man schlicht nicht programmieren, jedenfalls nicht, bis man sich das nötige Verständnis angeeignet hat.

      Was ist ühaupt ein Datentyp?
      Der Datentyp gibt die Art eines Objekts inne OOP an. Es gibt eine Unmenge verschiedener Datentypen, und wenn die nicht ausreicht, kann man sich mit Leichtigkeit weitere Datentypen selbst programmieren.
      Einen Datentypen programmiert man, wenn man
      • eine Klasse programmiert
      • eine Structure
      • ein Interface
      • ein Enum
      • einen Delegaten
      • einen generischen Datentyp mit konkreten TypParametern bestückt (etwa List(Of Integer) ist ein annerer Datentyp als List(Of String))
      Datentypen sind Kern-Element der Sprache. Nur, wenn ich den Datentyp kenne, kann ich sinnvolle Anweisungen geben. Etwa eine Integer-Variable kann ich multiplizieren, und einen String kann ich in Kleinbuchstaben wandeln. Die Objekte arbeiten für den Programmierer, und zwar je nach ihrer Art - ihrem Datentyp. Objekte ohne Datentyp sind wortwörtlich un-denkbar, ebenso wie inne Realität jedes Ding irgendeiner Art angehört.

      Dass viele Progger Probleme haben, einen Datentyp von einem Objekt ühaupt zu unterscheiden, mag auch anne realen Sprache liegen: "Ich gehe in den Laden und frage die Kassiererin...". - kein Mensch denkt drüber nach, dass "Kassiererin" (Art des Objekts) was anneres ist als im gegebenen Laden die konkrete Kassiererin (Objekt).
      Beides wird sprach-schlampig mit "Kassiererin" bezeichnet.
      OOP-Sprachen sind da genauer. Es gibt vielleicht Vereinfachungen und Kurzschreibweisen, um einen Datentyp festzulegen, aber eindeutig festgelegt und klar ersichtlich ist er immer.
      Wer also die Gretchenfrage "Welchen Datentyp hat das?" nicht in jedem Fall und spielend leicht beantworten kann, gleicht einem Filialleiter, der eine Kassiererin nicht von einer Bierkiste unterscheiden kann. (Und mancher Code sieht wirklich aus, als sei auf gut Glück die Kassiererin ins Regal geräumt und anne Kasse eine Bierkiste - tja - funktioniert nicht ;) )

      Eine Übung
      Nicht nur Variablen haben je einen Datentyp, sondern Objekte haben ja auch Properties und Functions, welche wiederum einen Datentyp haben/zurückgeben. Oder es gibt Operatoren, mit denen man Ausdrücke zusammensetzen kann, und auch jeder Teilausdruck hat einen Datentyp.

      Hier mal bischen Sample-Code, und Fragen zu den Datentypen:

      VB.NET-Quellcode

      1. Dim dings = New DirectoryInfo("..\..\..").GetFiles.First.OpenRead
      2. Dim arr = Enumerable.Range(2, 3).ToArray
      3. Dim aClone = arr.Clone
      4. Dim aCloneX = CloneX(arr)
      5. aCloneX = arr.CloneX
      6. Dim tomorrow = Date.Today.AddDays(1)
      7. Dim item = (tomorrow - tomorrow.Subtract(Date.Today)).Ticks / 2

      Welchen Datentyp hat
      1. die Variable dings
      2. der Teilausdruck New DirectoryInfo("..\..\..") (das ist eine dumme Frage - es ist natürlich DirectoryInfo - steht ja da!)
      3. der Teilausdruck New DirectoryInfo("..\..\..").GetFiles
      4. New DirectoryInfo("..\..\..").GetFiles.First
      5. New DirectoryInfo("..\..\..").GetFiles.First.OpenRead (naja, denselben wie dings - wird ja daran zugewiesen)
      6. Enumerable.Range(2, 3)
      7. Enumerable.Range(2, 3).ToArray ( = arr)
      8. arr.Clone
      9. CloneX(arr)
      10. arr.CloneX
      11. tomorrow
      12. tomorrow.Subtract(Date.Today)
      13. tomorrow - tomorrow.Subtract(Date.Today)
      14. (tomorrow - tomorrow.Subtract(Date.Today)).Ticks
      15. (tomorrow - tomorrow.Subtract(Date.Today)).Ticks / 2 ( = item)

      Auflösung:
      DirectLink

      Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von „ErfinderDesRades“ ()