Datenkapselung in Java (private vs public) - Objektorientierte Programmierung mit Java 4

Поділитися
Вставка
  • Опубліковано 8 лип 2024
  • HOL DIR JETZT DIE SIMPLECLUB APP FÜR BESSERE NOTEN! 😎⤵️
    simpleclub.com/unlimited-yt?v... *
    (Über den Link bekommst du sogar 10% Rabatt auf simpleclub unlimited! 😇)
    *Werbung für unser eigenes Produkt
    📱DAS BEKOMMST DU MIT DER APP:
    ▸ Alle Videos (auch für Deutsch, Englisch, Französisch, etc.)
    ▸ Passende Übungsaufgaben (+ originale Abiturprüfungen!)
    ▸ Fertige Zusammenfassungen
    ▸ Persönliche Lernpläne für jede Klausur
    ▸ Wir sagen dir, wie gut du vorbereitet bist! ✅
    -----------
    🍿FOLGE SIMPLECLUB FÜR FETTEN CONTENT!
    ▸ Instagram: / simpleclub
    ▸ TikTok: / simpleclub
    🎓 WAS IST SIMPLECLUB?
    simpleclub ist die coolste und beliebteste Lernapp für Schülerinnen und Schüler in Deutschland. Wir glauben, dass neue Lernmittel wie z.B. unsere App in Zukunft das klassische Schulbuch ersetzen müssen, sodass DU alles genau so lernen kannst, wie DU es brauchst. 💪🏽
    Wir haben unsere App entwickelt, um dich mit interaktiven Übungsaufgaben, Zusammenfassungen, persönlichen Playlisten und noch vielem mehr perfekt auf alle Fächer vorzubereiten! Mit simpleclub sparst du dir Stress und Angst vor JEDER Prüfung und gehst gechillt durch deine Schulzeit. 🚀
    Es ist Zeit, das beste aus dir rauszuholen!
    KLICKE JETZT HIER UND LEG DIREKT LOS:
    ➡️ simpleclub.com/unlimited-yt?v... ⬅️*
    *Werbung für unser eigenes Produkt
    📺 ALLE KANÄLE
    ▸ Mathe: / mathesimpleclub
    ▸ Biologie: / biologiesimpleclub
    ▸ Physik: / physiksimpleclub
    ▸ Chemie: / chemiesimpleclub
    ▸ Deutsch: / @simpleclub_deutsch
    ▸ Englisch: / @simpleclub_englisch
    ▸ Latein: / @simpleclub_latein
    ▸ Französisch: / @simpleclub_franzoesisch
    ▸ Spanisch: / @simpleclub_spanisch
    ▸ Geschichte: / geschichtesimpleclub
    ▸ Geographie: / geographiesimpleclub
    ▸ Politik: / @simpleclub_politik
    ▸ Informatik: / informatiksimpleclub
    ▸ Wirtschaft: / wirtschaftsimpleclub
    ▸ Maschinenbau: / maschinenbausimpleclub
    ▸ Motivations- und Lerntipps: / simpleclubdielernapp
    -----------
    » CREDITS
    Ein Konzept von Alexander Giesecke und Nicolai Schork
    Geschrieben von: Niklas Müller
    Visuelle Konzeption: Marcel Schubert
    Ton: Alexander Giesecke
    Schnitt: Ullrich Köhler

КОМЕНТАРІ • 53

  • @michaelskoehler
    @michaelskoehler 6 років тому +107

    Datenkapselung bezieht sich eigentlich weniger auf die Sichtbarkeitsstufen als vielmehr auf das Prinzip, die Attribute privat zu deklarieren und den Zugriff durch get- und set- Methoden zu realisieren. Der Sinn privater Sichtbarkeit ist eigentlich nicht, dass man irgendwas geheim halten möchte (wie durch das Coco Cola Beispiel suggeriert). Es geht um die folgenden Vorteile:
    1. Es ist übersichtlicher, wenn dem Nutzer einer Klasse nur die für ihn relevanten Attribute und Klassen angezeigt werden und alles interne verborgen bleibt.
    2. Fehlerüberprüfungen: Ich lasse sensible Daten nicht von außen verändern, damit nicht jemand ungültige Werte eingeben kann, die dann zu Programmfehlern führen können. Beispiel: Wenn jemand das Attribut alter des Schülers auf -5 stellt, kann das nachher zu Fehlern führen. Geht das Verstellen nur über eine Methode setAlter(-5), kann man dort eine Fehlerabfrage implementieren, die das Verstellen gar nicht erst zulässt.
    3. Alles war man privat deklariert, kann man später noch ändern. Wenn hingegen schon jemand von einer anderen Klasse auf ein öffentliches Attribut zugreift, muss man von Änderungen die Finger lassen, weil man nie weiß, was man beim anderen dadurch kaputt macht. Beispiel: Ich habe als Position des Schülers ein Attribut name gespeichert. Nachher fällt mir aber ein, ich würde doch lieber zwei Attribute vorname und nachname daraus machen. Wenn das Attribut name jetzt public ist, muss ich sämtliche andere Klassen, die auf das Attribut name zugreifen, durchsuchen und abändern, weil sie sonst nicht mehr funktionieren, wenn ich name einfach lösche. Hätte ich hingegen das Attribut name privat gemacht und getName und setName verwendet, könnte ich name einfach in vorname und nachname abändern und dann eben in getName und setName implementieren, dass die Kombination aus vorname + nachname zurück gegeben wird.
    Ich hoffe das klärt ein wenig die Frage, wozu man sowas wie Sichtbarkeiten und get- und set-Methoden überhaupt braucht.

  • @manfredvonkarma8455
    @manfredvonkarma8455 6 років тому +12

    Ich finde, für das Programmbeispiel hätte die Krabbenburger-Geheimformel viel besser gepasst XD

  • @Lukas-ds4qp
    @Lukas-ds4qp 6 років тому +11

    Hey TheSimpleInformatics,
    könnt ihr eine Videoreihe für Netzwerk(-technik) Grundlagen und die Grundkenntnisse der Elektronischen Datenverarbeitung erklären in einer separaten Videoreihe???
    Mit freundlichen Grüßen
    Lukas

    • @simpleclub_informatik
      @simpleclub_informatik  6 років тому +4

      Moin Lukas, ist notiert :)

    • @umayma9021
      @umayma9021 6 років тому +1

      Das wäre wirklich top, wenn es eine Videoreihe zu Netzwerktechnik geben würde.

  • @_anatolius
    @_anatolius Місяць тому

    Hi, ich habe eine Frage: Wie soll man auf etwas zugreifen wenn ich naher eine .exe habe. Was macht es dann für unterschied ob Public oder Private? Ich starte ja die exe und nicht habe nicht mehr den code.

  • @trafalgardlaw7307
    @trafalgardlaw7307 6 років тому +1

    Hi
    Könnt ihr bitte eine neue Reihe an Videos der C-Programmierung eröffnen? Wär mega nice. Ich hab davon einfach mal überhaupt keinen Plan von, aber finde das übelst interessant. Ich hoffe ihr bekommt den Kommentar hier zu Gesicht :-D

  • @mad8359
    @mad8359 6 років тому +1

    könnt ihr mal ein Video zur Laufzeitanalyse machen bzw. die verschiedenenNotationen (Omega, Theta, O)

  • @ahlaalam1078
    @ahlaalam1078 Рік тому

    wallah ich liebe euch

  • @thomas3754
    @thomas3754 6 років тому +1

    Also sehr interessant. Ich programmiere schon seit 3 Jahren Java und habe nie irgendwo von dem access modifier package gehört oder gelesen. Ist das wirklich eine brauchbare Alternative zu protected?

    • @arifertugrul6146
      @arifertugrul6146 6 років тому

      package ist nur der Standard-modifier den man erhält, wenn man keinen expliziten Modifier angibt.
      Und nein, package (oder auch default genannt) ist keine Alternative zu protected, weil package im Gegensatz zu protected keine Vererbung außerhalb des Pakets zulässt.

  • @erichpoli6883
    @erichpoli6883 6 років тому

    Ich studiere die Lehrerbücher der parallel Programmierung und die Parallelrechner bzw. Feldrechner. Ich würde mich interessieren ob ihr noch darüber wisst. Ab einem Punkt gibt es Bücher oder andere entgeldlich Wissensspeicher.

  • @buseyil6340
    @buseyil6340 3 роки тому

    Könnt ihr bitte auch die Programmiersprache c# erklären also alles drum und dran

  • @xL11ghtx
    @xL11ghtx 6 років тому +1

    Moin,
    gerade für Einsteiger in die Programmierung könnte ein Video über Lambdas & Streams wirklich hilfreich sein.
    Wäre echt nice (y)

    • @lkw090900
      @lkw090900 5 років тому

      Auch wenn dein Kommentar schon etwas älter ist, versuche ich dir mal Labdas zu erklären.
      Zunächst: Was ist ein funktionales Interface?
      Ein Interface wird dann Funktional genannt, wenn es nur eine Methode enthält. Das ist beispielsweise bei dem Interface Runnable der Fall, hier gibt es nur die Methode void run();
      Das Runnable-Interface wird beim erstellen von Threads verwendet. Der Konstruktor der Klasse Thread erwartet ein Objekt der Klasse Runnable als Parameter. Eine Möglichkeit, ein solches Objekt zu erstellen, wäre also über eine neue Klasse.
      public class MyRunnable implements Runnable {
      @Override
      public void run() {
      System.out.println("Hallo Welt");
      }
      }
      new Thread (new MyRunnable());
      Das erstellen einer Eigenen Klasse ist aber bei diesen Fällen oft nicht nötig und verbraucht viel zu viel Platz. Eine Möglichkeit um Platz zu sparen ist es nun, dies als anonyme Klasse zu erstellen. Dazu wird die run()-Methode direkt in den Parametern implementiert:
      new Thread(new Runnable() {
      @Override
      public void run() {
      System.out.println("Hallo Welt");
      }
      });
      Jedes Interface kann als anonyme Klasse verwendet werden. Doch jetzt können wir uns eine Eingenschaft von funktionalen Interfaces zu nutze machen. Da diese nur eine Methode enthalten, ist sofort klar, welche Methode wir implementieren wollen. Ein Lambda-Ausdruck ist ein Literal eines Objektes, das ein
      funktionales Interface implementiert. Der allgemeine Aufbau ist dieser:
      (Parameterliste) -> {...}
      Unser Beispiel ist nun also folgendes:
      new Thread ( () -> {
      System.out.println("Hallo Welt");
      });
      Da wir nur ein Ausdruck haben, können die Klammern hier weggelassen werden:
      new Thread(() -> System.out.println("Hallo Welt"));
      Unser Code ist nun nur noch ein Einzeiler, der zuvor eine eigene Klasse und eigene Datei gebraucht hätte. Ich hoffe die Erklärung war verständlich.

  • @rubizockt4177
    @rubizockt4177 3 роки тому

    Kann es sein, dass ihr package und protected vertauscht habt in der Übersicht?

    • @breeaakz8170
      @breeaakz8170 2 роки тому

      nee stimmr ja garnich
      lg
      zwei bisexuelle simps

  • @traziverse
    @traziverse 6 років тому +11

    Ich habe ne frage könntet ihr videos über machine learning und neuronalen netze usw machen ? also alles rund ums AI programmierung bitte :D wäre mega cool und mit tutorials dazu wäre es einfach nur bombe !

    • @arifertugrul6146
      @arifertugrul6146 6 років тому +1

      Schau dir die UA-camr Brotcrunsher und The Morpheus Tutorials

  • @quakk47
    @quakk47 5 років тому

    Danke, mein Opa Klaus hats jetzt auch gut verstanden!

  • @henrytoepel4941
    @henrytoepel4941 6 років тому +1

    Ich fänds sehr cool, wenn ihr mal Tutorials über Swift machen könntet!

  • @MrKenny4422
    @MrKenny4422 6 років тому

    Moin Jungs und Jan ;D könnt ihr mal ein Video zum Thema Netzwerke machen. Am besten was zur Netzwerkkarte :D aber andere Bereiche würden mich auch interessieren.

  • @gowthamangobalasingam624
    @gowthamangobalasingam624 6 років тому

    könnt ich euch vorstellen ein tutorial über swift zu machen? (und vielleicht irgendwann mal C++, obwohl das nicht gross von Java unterscheidet)

    • @MrDomenic123
      @MrDomenic123 6 років тому +2

      Ähm was???? C++ unterscheidet sich nicht groß von Java??? Du verwechselst hier vermutlich C++ mit C# ^^

  • @MK-fy3hf
    @MK-fy3hf 6 років тому +1

    Könnt ihr villeicht ein Video zu dynamischer Programmierung machen?

  • @Kurtea00
    @Kurtea00 6 років тому +14

    bei 2:47 dürfte nichts passieren... Da fehlt ne Klammer... xD

    • @dertyp6833
      @dertyp6833 6 років тому +5

      Pepsi kann halt nicht programmieren.

    • @Kurtea00
      @Kurtea00 6 років тому +1

      Okay, das macht Sinn...

    • @GamerzEnte
      @GamerzEnte 6 років тому +1

      Kurt y00 xD

    • @dastomde1529
      @dastomde1529 5 років тому +1

      wahrscheinlich in zeile 13 hinter der konsole

  • @7Anilde
    @7Anilde 6 років тому +1

    Was ist mit Static? Jetzt fühlt sich static allein :c

    • @arifertugrul6146
      @arifertugrul6146 6 років тому +3

      Instanzvariable: Eine pro Instanz
      Statische Variable: Eine pro Klasse
      Alle Instanzen einer Klasse teilen sich eine gemeinsame Variable. Sie können eine statische Variable dazu verwenden, wie viele Instanzen einer Klasse erzeugt wurden, indem sie die Variable bei jeder Erzeugung inkrementieren.
      Statische Variablen können nur bei der Deklaration oder in einem statischen Initialisierer initialisiert werden.
      Und bei statischer Initialisierung werden Ihnen zwei Dinge garantiert:
      Statische Variablen in einer Klasse werden initialisiert, bevor irgendein Objekt dieser Klasse erzeugt werden kann.
      Statische Variablen in einer Klasse werden initialisiert, bevor irgendeine statische Methode der Klasse ausgeführt wird.

  • @Salamaleikum80
    @Salamaleikum80 3 роки тому

    Ich such so lange schon nach einer Antwort nach dem "Warum wir Datenkapselung verwenden" aber irgendwie erklärt das keiner wirklich. Kennt jemand ein Anwendungsbeispiel wo ein Mangel an Datenkapselung Probleme verursacht. Bzw. wo der Unterschied liegt, ob ich nun über Setter darauf indirekt zu greife oder direkt auf die Daten zugreifen?

    • @markusdavid5660
      @markusdavid5660 3 роки тому

      naja im Video selbst haben die ja schon gesagt, dass wenn viele Menschen an einem Programm arbeiten es nicht zu Verwechslung kommt mit irgendwelchen Variablen oder gar Klassen

    • @Salamaleikum80
      @Salamaleikum80 3 роки тому

      @@markusdavid5660 ne es wurde nur was gesagt nicht erklärt. Zum erklären braucht man ein Beispiel.

  • @elooser
    @elooser 6 років тому

    Bitte, bitte, bitte, bitte, bitte, bitte, bitte, macht etwas zu JavaFX!!!!!!!!!! Ich brauche das soooo dringend!!!

  • @blume1186
    @blume1186 Рік тому

    Hä, was macht mein Opa Klaus in eurem Video, und wieso hat er nen Schnurrbart...;)

  • @yrusb
    @yrusb 6 років тому +2

    Sacht ma könntet ihr mal erklären wie so´n Computer physikalisch funktioniert?
    Denn immer wenn ich nach "Wie funktioniert ein Computer" suche, finde ich nur "hier wird gerechnet, da wird gerechnet, da denkt der Computer als KOMPLETT SELBSTSTÄNDIGE ENTITÄT" okay so schlimm ist es nicht. Aber ich hab nie gefunden wie zum Beispiel aus "da fließen ein paar Elektronen auf einem Datenkabel lang" ein "deine Spielfigur geht drei Schritte nach rechts" wird.
    (Dass bei meinem Beispiel oben gerechnet wird ist mir klar aber wie diese Rechnung auf physikalischer Ebene zustandekommt hab ich noch nicht wirklich geblickt Oo)

    • @raver8056
      @raver8056 6 років тому

      Das übersteigt die Komplexität der normalen Inhalte auf TheSimpleClub. Wenn du dich damit wirklich beschäftigen möchtest, musst du an die nächste Universität, die eine Informatik Fakultät hat, fahren und in der Unibibliothek nach Büchern über Rechnerarchitektur suchen. Du solltest mit Büchern anfangen die schon ein paar Jahrzehnte alt sind und noch auf "einfachen" Methoden beruhen und dich langsam vorarbeiten. Wenn du wirklich Plan davon haben willst, sind das zwei ganze Semester im Infostudium. Und Advanced Computer Architecture ist meistens ein Master Studiengang. Also nicht ohne das Zeug..

    • @raver8056
      @raver8056 6 років тому +2

      Wenn du schlicht lernen möchtest, wie du im Kern mit dem Computer agieren möchtest, ohne ganz genau zu wissen, was da eigentlich passiert, kannst du auch Assembler lernen. Da kannste auch immer noch sagen, dass du mehr Plan vom Geschehen hast, als irgendein Webdesigner

    • @arifertugrul6146
      @arifertugrul6146 6 років тому

      Du kannst das Buch: "Grundlagen der Informatik" lesen. Dort werden Themen wie Zahlensysteme und Codierung, Programmierung, Rechnerarchitektur, Netzwerke und Sichert und co. behandelt.

  • @02orochi
    @02orochi 4 роки тому +1

    pepsi>cocacola

  • @eaglelp2109
    @eaglelp2109 6 років тому

    Könntet ihr mal zu Thema Antivirus Software reden. Danke

  • @maxbas2018
    @maxbas2018 6 років тому

    pakete sind wie schulen

  • @laurens9087
    @laurens9087 6 років тому +2

    Haha mein Opa heißt Klaus. Ohne Scheiß jetzt xDD

    • @dertyp6833
      @dertyp6833 6 років тому +8

      Was für eine Sensation ...

  • @dragonfirek
    @dragonfirek 6 років тому +2

    Bin ich der einzige, der das nächste Video nicht findet?

  • @_agent47_
    @_agent47_ 6 років тому

    So ein fail: Das bei 2:45 lässt sich nicht kompilieren!

  • @Leon-kf2tx
    @Leon-kf2tx 6 років тому +2

    Public nicht überrall.
    Mann kann es ja nicht aus einem anderen java Projekt nehmen xD