Java Grundlagen – Block2 (Java Basics) – Tag 3

Ich nehme derzeit an einer Akademie zum Java Fullstack Software Engineer teil. In den kommenden Wochen möchte ich hier meine Mitschrift, so gut es geht, aufzeichnen und mitteilen. Hier ist das, was ich vom dritten Tag in Block 2 gelernt und behalten habe:

Variablen innerhalb einer Methode heißen Variablen. Liegen die Variablen innerhalb einer Klasse, nennt man sie Eigenschaften.

Das folgende "this" bezieht sich auf die Eigenschaft er Klasse:

Objektverantwortlichkeiten:

Generate Methode "toString": (Cursor in der der Datenklasse positionieren):

Konstruktoren sind immer automatisch in jeder Klasse drin, wenn man nicht eigene baut. Sie haben eine leere Signatur. Man kann auch mehrere Konstruktoren in einer Klasse haben:

Wenn diese zweite Konstruktor-Methode in zukunft aufgerufen wird, gibt man automatisch den Vor- und Nachnamen mit. Würde man das nicht tun, wären diese Felder erst mal nicht (oder mit Default-Werten) belegt.
Wir erzeugen die Objekte aus dem Konstruktor indem wir sie in der Hauptklasse "PersonenApp" mit einem "new" erstellen:

 this(); //Ruft den Konstruktor der eigenen Klasse mit der Signatur() auf. Dadurch werden die Standartwerte übernommen. Das ist eine Konstruktorenverkettung:

PersonenApp.java

package de.firma;

import de.firma.model.Person;

public class PersonenApp {

public static void main(String [] args) {
    Person p1 = new Person();
    // p1.vorname = "Homer";
    // p1.nachname = "Simpson";
    //p1.alter = 37;
    //p1.puls = 120;

    p1.setVorname("Homer");
    p1.setNachname("Simpson");
    p1.setAlter(37);
    p1.setPuls(120);


    Person p2 = new Person();
    //p2.vorname = "Fred";
    //p2.nachname = "Feuerstein";
    //p2.alter = 41;
    //p2.puls = -120;

    p2.setVorname("Fred");
    p2.setNachname("Feuerstein");
    p2.setAlter(41);
    p2.setPuls(-120);


    Person p3 = new Person();

    Person p4 = new Person("Abe","Simpson");

    System.out.println("p1: " + p1.toString());
    System.out.println("p2: " + p2.toString());
    System.out.println("p3: " + p3.toString());
    System.out.println("p4: " + p4.toString());
}

}

Person.java

package de.firma.model;

public class Person extends Object {

//Eigenschaften
private String vorname;
private String nachname;
private int alter;
private int puls;

//Konstruktoren
public Person() {  // Default Constructor
    super(); // Ruft den Konstruktoren der Obertklasse auf    ->  Object()
    this.vorname = "Erwin";
    this.nachname = "Mustermann";
    this.alter = 37;
    this.setPuls(140);
}

public Person(String vorname, String nachname) {
    //super();   // Ruft den Konstruktoren der Obertklasse auf    ->  Object()
    this();      // Ruft den Konstruktoren der eigenen Klasse mit der Signatur () auf    ->  Person()
    this.vorname = vorname;
    this.nachname = nachname;
}



// Getter- und Setter-Methoden
public String getVorname() {
    return vorname;
}

public void setVorname(String vorname) {
    this.vorname = vorname;
}

public String getNachname() {
    return nachname;
}

public void setNachname(String nachname) {
    this.nachname = nachname;
}

public int getAlter() {
    return this.alter;
}

public void setAlter(int alter) {

    this.alter = alter;
}

public int getPuls() {
    return puls;
}

public void setPuls(int puls) {
    if(puls <= 0) {
        System.out.println("Wiederbelebung " + this.vorname);
        this.puls = 80;
    } else {
        this.puls = puls;
    }
}

// Business-Logik
/*
@Override
public String toString() {
   return this.vorname + " " + this.nachname + " " +this.alter + " " +this.puls;
}
*/

@Override
public String toString() {
    return "Person{" +
            "vorname='" + vorname + '\'' +
            ", nachname='" + nachname + '\'' +
            ", alter=" + alter +
            ", puls=" + puls +
            '}';
}

}

Deklaration von Klassen

UML  - Unified Modelling Language

So sieht ein UML-Diagramm von unserem Programm:

Die Objekte (P1, P2) sind Zeiger auf reservierten Speicher.

This zeigt auf die Speicherpositionen innerhalb desselben Objektes.

Wir laden uns das Plugin "plantUML integration" und "PalntUML Parser":

Nun markieren wir unsere gewünschte Klasse, klicken mit der rechten Maustaste drauf und wählen PlantUML Parser:

---------------------------

Debugger

Breakpoint setzen:

Debugger starten:

Asci-Code:

H : 72

o: 111

m: 109

e: 101

r: 114

Die Klasse Schiff benutzt die Klasse Pos. Das ist eine gerichtet Assoziation.

In der Klasse Schiff sind Methoden, die aber nicht in einem Objekt gebaut werden können, weil sie abstrakt sind (Beschleunigen und Bremsen). Damit ist die ganze Klasse abstrakt.

Es gibt auch keine Mehrfachvererbung (also entweder werfe ich den Motor an oder setze die Segel):

Die Drei Schiffe Titanic, Olympic und Britanic kommen alle aus derselben Reederei (Klasse), dürfen aber nicht zum gleichen Zeitpunkt die gleichen Positionsdaten haben.

Attribute, Methoden, Botschaften,… sind Begriffe aus Klassen, Eigenschaften, Fähigkeiten,.. Sind Begriffe von Objekten

Botschaft = Methoden aufrufen


Objektorientierte Programmierung

Neues Projekt:

Wir definieren die Variable gebDate vom Typ LocalDate aus der Klasse java.time.

Es gibt aber einen Fehler, den wir mit Klicken auf das rote Lämpchen beheben konnten:

Wir bauen einen neuen Datentypen für das Geschlecht: New/Cass/Enum.

Ein Enum ist eine Aufzählungsliste:

Datumsvariable deklarieren:

Setzen des Datums:

p4.setGebDate(LocalDate.of(2019,05,01));

Wir bauen jetzt eine Klasse Schüler mit den Eigenschaften Schule und Taschengeld

New/Javaclass/

package de.firma.model;

public class Schueler extends Person { //Erbt von der Klasse Person
// Eigenschaften
private String schule;
private double taschengeld;

// Konstruktoren
public Schueler() { //Konstruktoren heissen wie die Klasse
    super (); // Das passiert sowieso
    this.setSchule("Springfield Elementary School");
    this.taschengeld = 2.0; //geht, schöner ist aber:
    this.setTaschengeld(2.0);
}
// Getter und Setter Methoden:
public String getSchule() {
    return schule;
}

public void setSchule(String schule) {
    this.schule = schule;
}

public double getTaschengeld() {
    return taschengeld;
}

public void setTaschengeld(double taschengeld) {
    this.taschengeld = taschengeld;
}

//Business Logik


@Override
public String toString() {
    return "Schueler{" +
            "schule='" + schule + '\'' +
            ", taschengeld=" + taschengeld +
            "} " + super.toString();
}

}

——————

Disclaimer

Alles was ich mitschrieb und verstanden habe ist ohne Gewähr.

Besten Dank an unseren

Trainer: Hans-Joachim Blanke [email protected]

Mehr dazu im nächsten Blog von mir.

Gruß, Achim Mertens



0
0
0.000
2 comments
avatar

pixresteemer_incognito_angel_mini.png
Bang, I did it again... I just rehived your post!
Week 82 of my contest just started...you can now check the winners of the previous week!
!BEER
7

0
0
0.000