Discuss Scratch

fixundlos
Scratcher
100+ posts

Programmieren mit Java

Diese Topic soll zu folgenden zwecken dienen:
  • Zur Algemeinen Unterhaltung über Java
    Zum austauschen von Java-Codes
    Zum Gegenseitigen helfen bei Problemen
    und vielem mehr
Hier aber noch einige Regel:
  • Kein Spam
    Keine Unnötigen Beiträge
    Bei der Sprache Java Bleiben (Vom Java abweichenden Themen die zum lösen des Problemes benötigt werden sind natürlich erlaubt)
fixundlos
Scratcher
100+ posts

Programmieren mit Java

Hier hätte ich gleich die erste Frage:
Was sind private Variablen? bzw. Was bringen sie?/für was werden sie benötigt?
fixundlos
Scratcher
100+ posts

Programmieren mit Java

Hier ist ein Code zur Einlesung eines Wortes aus einer Tastatureingabe und der danachigen Ausgabe

import java.util.Scanner;

public class Main {

public static void main() {

Scanner scanner = new Scanner(System.in);
System.out.println(“Bitte gebe ein Wort ein”);
String wort = scanner.next();
System.out.println(“Sie haben das Wort” + wort + “eingegeben”);
}

}

Last edited by fixundlos (March 28, 2019 19:39:13)

Isajah
Scratcher
25 posts

Programmieren mit Java

das ist jetzt etwas allgemeingültig (ich programmiere kein java): auf Privat deklarierte Attribute hat man von außen keinen Zugriff.

Wenn man eine Klasse schreibt, weist man der Klasse Attribute zu. Attribute können recht einfache Variablen sein, die man ohne große Sorge manipulieren kann. es gibt aber Attribute, die entweder nur eine interne Funktion haben oder die nur über Methoden richtig beschrieben werden. Wenn man diese Attribute einfach beschreiben kann, wird es ggf für andere Methoden nicht mehr möglich ordentlich zu funktionieren.

In vielen Fachbüchern sieht man daher, dass Attribute lieber Private gesetzt werden und über sogenannte getter, setter Methoden beschrieben werden.
also kleine Methoden die den Einlesewert auf das Attribut schreiben. das wird oft als sauberer Programmierstil gesehen.


ein kleines Beispiel: die Klasse Vector hat die Attribute x,y und Länge.
während es relativ unproblematisch ist my_vec.x = 10 zu schreiben. macht es wenig Sinn my_vec.len zu beschreiben.
besser ist eine Methode get_len() zu definieren, die sqrt(x*x+y*y) als returnwert zurück gibt.

len = my_vec.len() bekommt dann die richtige Länge des Vektors zurück.

genauso kannst du eine Methode definieren die z.B. set_len_fixed_x(len, x) heißt und dir damit das korrekte y ermitteln lassen.

ich hoffe das war jetzt nicht noch verwirrender

fixundlos
Scratcher
100+ posts

Programmieren mit Java

Das beispiel hab ich nicht verstanden.
auf Privat deklarierte Attribute hat man von außen keinen Zugriff.
Was meinst du mit Außen?

Last edited by fixundlos (March 29, 2019 06:13:45)

Isajah
Scratcher
25 posts

Programmieren mit Java

Du schreibst eine Bibliothek, darin gibt es die Klasse Schüler.
Ich nehme die Bibliothek
Ich Erstelle die Schüler Tim, Tom, Marie und Lisa.
Ich weise Tim seine Noten zu:
Tim.Mathe = 2; Tim.Deutsch = 3; Tim.Sport = 1; Tim.Heimatkunde = 2;
Wie beschreibe ich die Durchschnittsnote von Tim ? Tim.Durchschnitt = ?? wäre ja blöd. das wollen wir vermeiden, weil der Durchschnitt dann falsch sein könnte. also brauchen wir eine Methode :

def Schüler.Berechne_Durchschnitt()
durchschnitt = (Mathe + Deutsch + Sport + Heimatkunde) / 4
return durchschnitt

wenn ich dann den durchschnitt haben will, rufe ich für Tim die Methode Tim.Durchschnitt() auf.





fixundlos
Scratcher
100+ posts

Programmieren mit Java

Hä?
Und was meinst du mit jetzt von Außen keinen Zugriff?

Programmierst du mit Javascript?
fixundlos
Scratcher
100+ posts

Programmieren mit Java

Kann man auch z.B:
public int beispiel = 2;

machen?
Isajah
Scratcher
25 posts

Programmieren mit Java

Ich programmiere C, C++, C#, Python, Diverse SPS/PLC Sprachen und wofür gerade Bedarf besteht. alles ein bisschen halt.

Warum man Variablen Public oder Private setzt, hat ja was mit dem Zugriff zu tun. Variablen, die Private sind, sind Zugriffsgeschützt.

Also wenn du eine Klasse schreibst, setzt du Variablen der Klasse (Attribute) auf private, die du nur innerhalb deiner Klasse verwendest/beschreibst.

Wenn du mir dann z.b. deine Bibliothek gibst und ich mache mir in meinem Script ein paar Objekte aus deiner Klasse, darf ich private Variablen der Objekte nicht verwenden (von meinem Script aus, programmiere ich ja nicht innerhalb deiner klasse, bin also außerhalb deiner klasse). dann meckert der Compiler/Interpreter mit mir.

Ich weiß nicht so recht, wie ich es noch erklären soll.


Vielleicht kannst du ja mal sagen, wie dein Kenntnisstand ist. Ich weiß gerade nicht so richtig wie ich ansetzen soll
fixundlos
Scratcher
100+ posts

Programmieren mit Java

Danke ich glaub ich habe es verstanden.
Wenn ich eine Variable private erstelle mit:private int normal = 12; in der Klasse Privat. Kann ich nur in der Klasse Privat mit der Variable arbeiten.
Bei Public kann ich sie über allle Klassen Bearbeiten.

Beim der ganz normalen Variable kann man sie auch über eine andere Klasse lesen aber nicht bearbeitbar(Mann kann die Werte übergeben).


Zu meinen Java-Kenntnissen:
Ich weiß wie man Variablen, Klassen, Methoden und Objekte erstellt
Ich weiß wie man Tastatureingaben einließt
Ich weiß wie man Packages importiert und benutzt
Ich weiß wie man Konsolenausgaben macht
Ich weiß wie FileWriter bzw. FileReader aus java.io.*; funktionieren
Ich weiß was Math.sqrt usw. ist
Ich Weiß wie man ein Programm beendet

Programmiert habe ich bereits folgendes mit Java(Konsolenprogramm):
Taschenrechner, Dateiersteller, LoginSystem
fixundlos
Scratcher
100+ posts

Programmieren mit Java

Gibt es in Java Cls so wie in Batch?
fixundlos
Scratcher
100+ posts

Programmieren mit Java

Wie erstelle ich ein eigenes Packet
M_S_72
Scratcher
76 posts

Programmieren mit Java

Übrigens, man kann [code]-Tags benutzen, um Code zu schreiben:
public static void main(String[] args) {
    System.out.println("Hello world!");
}

[M_S_72 | Platformer | Text Engine | Zigzag | Gravity | ☁ Cloud Chat | Obstacles | Die 3 Besten Projekte - Nachrichten]
Ich habe eine Erweiterung für Scratch 3.0 gemacht!
I made a Scratch 3.0 extension!
Probier es aus! / Try it!
M_S_72
Scratcher
76 posts

Programmieren mit Java

fixundlos wrote:

Wie erstelle ich ein eigenes Packet
Mit „package name.des.pakets;“ am Anfang der Java-Datei.

[M_S_72 | Platformer | Text Engine | Zigzag | Gravity | ☁ Cloud Chat | Obstacles | Die 3 Besten Projekte - Nachrichten]
Ich habe eine Erweiterung für Scratch 3.0 gemacht!
I made a Scratch 3.0 extension!
Probier es aus! / Try it!

Powered by DjangoBB