Instanzvariable: Unterschied zwischen den Versionen

Die Seite wurde neu angelegt: „== Einführung == Ein Attribut (auch Eigenschaft, Datenfeld oder Instanzvariable genannt) gilt im Allgemeinen als Merkmal, Kennzeichen, Informationsdetail etc., das einer konkreten Instanz zugeordnet ist. Daten über die Objekte werden in dieser Struktur mit ihrem Inhalt - den Attributwerten -gespeichert. Jedes Objekt repräsentiert sich somit durch die Gesamtheit seiner Attributwerte. Diese Gesamtheit aller Attributwerte bezeic…“
 
Keine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
Jede [[Methode]] und jeder [[Konstruktor]] einer [[Klasse]] kann lesend und schreibend auf die Instanzvariable zugreifen.
Jede [[Methode]] und jeder [[Konstruktor]] einer [[Klasse]] kann lesend und schreibend auf die Instanzvariable zugreifen.


<html>
<iframe width="450" height="300" src="https://www.youtube.com/embed/4Rh9_L97OyU?si=fjtrdDWj-FPysK3O" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></html>
<html>
<iframe width="450" height="300" src="https://www.youtube.com/embed/LYKRDQhpmbQ?si=7Z1mMrXmYw-FStpm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></html>
== Deklaration ==
== Deklaration ==
Wie jede Variable  müssen Instanzvariablen deklariert werden. Sie werden in der [[Objektorientierung|objektorientierten]] Programmierung in [[Klasse|Klassen]] definiert.  Hier muss der [[Datentyp]] und der Name der Instanzvariable festgelegt werden. Bei den Datentypen kann es sich um primitive und komplexe Datentypen handeln. Zusätzlich kann die [[Sichtbarkeit]] der Instanzvariable definiert werden. Wird keine Angabe zur Sichtbarkeit gemacht, ist die Sichtbarkeit standardmäßig public.
Wie jede Variable  müssen Instanzvariablen deklariert werden. Sie werden in der [[Objektorientierung|objektorientierten]] Programmierung in [[Klasse|Klassen]] definiert.  Hier muss der [[Datentyp]] und der Name der Instanzvariable festgelegt werden. Bei den Datentypen kann es sich um [[Primitiver Datentyp|primitive]] und komplexe Datentypen handeln. Zusätzlich kann die [[Sichtbarkeit]] der Instanzvariable definiert werden. Wird keine Angabe zur Sichtbarkeit gemacht, ist die Sichtbarkeit standardmäßig public.
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
private double rechnungsbetrag;</syntaxhighlight>
private double rechnungsbetrag;</syntaxhighlight>
Zeile 24: Zeile 30:
Die [[Sichtbarkeit]] von Instanzvariablen sollte als "private" gewählt werden. So wird sichergestellt, dass Daten nicht ungefiltert in die Instanzvariable hineingeschrieben und gelesen werden können. Der Zugriff auf eine private Instanzvariable erfolgt mittels einer öffentlichen (public)  sondierenden-[[Methode]]. Das Zuweisen von Werten erfolgt durch verändernde-Methoden.
Die [[Sichtbarkeit]] von Instanzvariablen sollte als "private" gewählt werden. So wird sichergestellt, dass Daten nicht ungefiltert in die Instanzvariable hineingeschrieben und gelesen werden können. Der Zugriff auf eine private Instanzvariable erfolgt mittels einer öffentlichen (public)  sondierenden-[[Methode]]. Das Zuweisen von Werten erfolgt durch verändernde-Methoden.


Der [[Datentyp]] (insbesondere primitive Datentypen) einer Instanzvariable legt fest, welche Art von Daten gespeichert werden können. Zudem wird der Wertebereich durch die Wahl des Datentyps eingeschränkt. Dennoch ist es sinnvoll die zulässigen Werte einer Instanzvariable sehr genau festzulegen.
Der [[Datentyp]] (insbesondere [[Primitiver Datentyp|primitive Datentypen]]) einer Instanzvariable legt fest, welche Art von Daten gespeichert werden können. Zudem wird der Wertebereich durch die Wahl des Datentyps eingeschränkt. Dennoch ist es sinnvoll die zulässigen Werte einer Instanzvariable sehr genau festzulegen.


So kann es sinnvoll sein, dass Rechnungsbeträge nur durch positive Gleitkommazahlen abgebildet werden sollen. Wählt man den Datentyp double, ist das Speichern von negativen Werten nach wie vor möglich.  Eine valide Postleitzahl wiederum besteht stets aus fünf Ziffern. Das Passwort eines Mitarbeiters soll mindestens aus sechs Zeichen bestehen und mindestens eine Ziffer beinhalten. Diese Auswahl an Beispielen zeigt, dass ein Mechanismus benötigt wird, der sicherstellt, dass die Wertzuweisung von Instanzvariablen einer Qualitätskontrolle unterzogen wird.
So kann es sinnvoll sein, dass Rechnungsbeträge nur durch positive Gleitkommazahlen abgebildet werden sollen. Wählt man den Datentyp double, ist das Speichern von negativen Werten nach wie vor möglich.  Eine valide Postleitzahl wiederum besteht stets aus fünf Ziffern. Das Passwort eines Mitarbeiters soll mindestens aus sechs Zeichen bestehen und mindestens eine Ziffer beinhalten. Diese Auswahl an Beispielen zeigt, dass ein Mechanismus benötigt wird, der sicherstellt, dass die Wertzuweisung von Instanzvariablen einer Qualitätskontrolle unterzogen wird.
Zeile 31: Zeile 37:
== Beispiel ==
== Beispiel ==
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
// Diese Klasse verwaltet Termine
// Diese Klasse verwaltet Termine
 
public class Termin{
public class Termin
 
{
 
     // Deklaration von vier Instanzvariablen
     // Deklaration von vier Instanzvariablen
     // Grundsätzlich stehen die Sichtbarkeiten private, proteced und public zur Verfügung
     // Grundsätzlich stehen die Sichtbarkeiten private, proteced und public zur Verfügung
     // Standardmäßig werden Instanzvariablen jedoch mit der Sichtbarkeit private deklariert
     // Standardmäßig werden Instanzvariablen jedoch mit der Sichtbarkeit private deklariert
 
     private String datum; // Deklaration einer Instanzvariablen mit dem Namen datum und dem Datentyp String
     private String datum; // Deklaration einer Instanzvariablen mit dem Namen datum und dem Datentyp String
     private Kunde kunde; // Deklaration einer Instanzvariablen mit dem Namen kunde und dem komplexen Datentyp Kunde
     private Kunde kunde; // Deklaration einer Instanzvariablen mit dem Namen kunde und dem komplexen Datentyp Kunde
     private Mitarbeiter mitarbeiter; // Deklaration einer Instanzvariablen mit dem Namen mitarbeiter und dem komplexen Datentyp Mitarbeiter
     private Mitarbeiter mitarbeiter; // Deklaration einer Instanzvariablen mit dem Namen mitarbeiter und dem komplexen Datentyp Mitarbeiter
     private double rechnungsbetrag; // Deklaration einer Instanzvariablen mit dem Namen rechnungsbetrag und dem primitiven Datentyp double
     private double rechnungsbetrag; // Deklaration einer Instanzvariablen mit dem Namen rechnungsbetrag und dem primitiven Datentyp double
 
 
     // Konstruktor mit Eingabeparametern, die an die Instanzvariablen übergeben werden.
     // Konstruktor mit Eingabeparametern, die an die Instanzvariablen übergeben werden.


     public Termin(Kunde einKunde, Mitarbeiter einMitarbeiter,String einDatum, double einRechnungsbetrag){
     public Termin(Kunde einKunde, Mitarbeiter einMitarbeiter,String einDatum, double einRechnungsbetrag){
         this.kunde=einKunde;
         this.kunde=einKunde;
         this.mitarbeiter=einMitarbeiter;
         this.mitarbeiter=einMitarbeiter;
         this.datum=einDatum;
         this.datum=einDatum;
         this.rechnungsbetrag = einRechnungsbetrag;
         this.rechnungsbetrag = einRechnungsbetrag;
     }
     }
 
 
 
     // Sondierende und verändernde-Methoden für den Zugriff auf private Instanzvariablen
     // Sondierende und verändernde-Methoden für den Zugriff auf private Instanzvariablen
   
     public double getRechnungsbetrag  (){
     public double getRechnungsbetrag  (){
       return  rechnungsbetrag;
       return  rechnungsbetrag;
     }
     }
 
     public void setRechnungsbetrag (double rechnungsbetrag){
     public void setRechnungsbetrag (double rechnungsbetrag){
         this.rechnungsbetrag = rechnungsbetrag;
         this.rechnungsbetrag = rechnungsbetrag;
     }
     }
     public String getDatum(){
     public String getDatum(){
         return datum;
         return datum;
     }
     }
 
     public void setDatum (String datum){
     public void setDatum (String datum){
         this.datum=datum;
         this.datum=datum;
     }
     }
 


     public void setMitarbeiter(Mitarbeiter mitarbeiter){
     public void setMitarbeiter(Mitarbeiter mitarbeiter){
         this.mitarbeiter = mitarbeiter;
         this.mitarbeiter = mitarbeiter;
     }
     }
 


     public Mitarbeiter getMitarbeiter(){
     public Mitarbeiter getMitarbeiter(){
         return mitarbeiter;
         return mitarbeiter;
     }
     }
 
     public void setKunde(Kunde kunde){
     public void setKunde(Kunde kunde){
         this.kunde = kunde;
         this.kunde = kunde;
     }
     }
 
     public Kunde getKunde(){
     public Kunde getKunde(){
         return kunde;
         return kunde;
     }
     }
 
}</syntaxhighlight>
}</syntaxhighlight>
[[Kategorie:Programmierung]]
[[Kategorie:AHR_I_Informatik_LK]]
[[Kategorie:FI_I_SDM]]