• Keine Ergebnisse gefunden

Einführung in die Programmierung

N/A
N/A
Protected

Academic year: 2022

Aktie "Einführung in die Programmierung"

Copied!
14
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einführung in die Programmierung

by André Karge

Übung - Packages, Kapselung

5. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 1/12

(2)

Heute

Packages

Kapselung

Einführung in die Programmierung | WS19/20 | André Karge 2/12

(3)

Anmerkungen

Umlaute im Programmcode

Bitte verwendet nirgendwo in eurem Programm Umlaute (vorallem nicht als Bezeichner von Variablen, Objekten oder Klassen)

Wenn ihr trotzdem eure Variablen in Deutsch benennen wollt, nutzt die International verfügbaren Buchstaben des lateinischen Alphabetes: ä ae, ü ue, ö oe, ß ss

Wenn ihr eine andere Dateiformatierung verwendet, als derjenige, der euer Programm compiled, werden Umlaute falsch dargestellt und der Compiler bricht ab.

5. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 3/12

(4)

Packages

Einführung in die Programmierung | WS19/20 | André Karge 4/12

(5)

Packages - Insel 3.6

muss in definiertem Schema geschrieben werden (siehe Vorlesung)

Pakete können überall eingebunden werden (damit alle Klassen, die das Paket kapselt)

Pakete und imports stehen immer am Anfang von Java-Dateien

Stichwort import

Wichtig: Die Packages geben einen Ordnerpfad an

Bspw: package de.uni_weimar.medien.karge.proggen muss im Ordner meinProjekt/src/de/uni_weimar/medien/karge/proggen liegen

Beispiel - Import

import java.util.Random; // lädt das Paket Random aus util //import java.util.*; //lädt alle Pakete in util

public class MyClass { // attribute

// methoden }

5. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 5/12

(6)

Packages - Insel 3.6

Beispiel - Paketdefinition

package de.uni_weimar.medien.karge.proggen; //definiert, dass die folgende Klasse teil dieses Pakets ist public class MyClass {

public static void sayHello() { System.out.println("Hello");

} }

Beispiel - Einbinden des Pakets (in einem anderen Paket)

package de.uni_weimar.medien.karge.apps

import de.uni_weimar.medien.karge.proggen.MyClass; // Einbindung der Klasse //import de.uni_weimar.medien.karge.proggen.*; // Einbindung des gesamten Packages public class Test {

public static void main(String[] args) {

MyClass.sayHello(); // Aufruf der statischen Methode sayHello aus der Klasse im Paket }

}

Einführung in die Programmierung | WS19/20 | André Karge 6/12

(7)

Packages - Insel 3.6

Übungsaufgabe - (10min)

1. Erstellen Sie ein neues Projekt mit 2 Packages:

de.uni_weimar.medien.proggen.application und de.uni_weimar.medien.proggen.aufg1 2. Erstellen Sie zwei Klassen im Paket aufg1: Person und Guess, mit jeweils einer statischen

Methode

3. Erstellen Sie eine Klasse Application im Paket application mit einer main-Methode 4. Importieren Sie das Paket aufg1 in der Datei der Klasse Application und testen Sie die

statischen Methoden der importierten Klassen

5. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 7/12

(8)

Packages - Insel 3.6

Standard Packages

Java bietet eine Hand voll Pakete, die Standardmäßig ausgeliefert werden

Beispiele:

▶ java.lang (fundamentale Java Klassen wie String)

▶ java.util (Hilfsklassen wie Random)

▶ java.io (System Klassen wie input und output Streams)

▶ java.text (Klassen zur Arbeit mit Text)

Eine vollständige Liste für alle Standardpaketen findet ihr hier: Link

Einführung in die Programmierung | WS19/20 | André Karge 8/12

(9)

Kapselung

5. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 9/12

(10)

Kapselung

Dient dem Information Hiding

haben wir schon letzte Woche gesehen

wir verbieten den direkten Zugriff auf bestimmte Attribute und Methoden und erlauben den Zugriff nur über explizite Funktionen

Ein Teil davon: private Attribute mit Getter & Setter Methoden

Beispielsweise für Modellierung von Kontos:

Einführung in die Programmierung | WS19/20 | André Karge 10/12

(11)

Einführung in die Programmierung: by André Karge,Übung - Packages, Kapselung Bauhaus-Universität Weimar

Kapselung

class Konto { double geld;

public Konto() {...} // Constructor public void überweiseGeldAn(double geld,

Konto ziel) { ziel.geld += geld;

this.geld -= geld;

} }

Direkter Zugriff auf das Geld in den Kontos

Ein Kontoinhaber kann demnach den Kontostand von jedem anderen Konto einsehen

schlecht!

public Konto() {...} // Constructor

public boolean geldEinzahlen(double betrag) { if(betrag > 0) { // check geld nicht negativ

this.geld += betrag; return true;

}

return false; }

public boolean geldAbheben(double betrag) { // verschiedene checks

if(betrag > 0 && this.geld - betrag >= 0) { this.geld -= betrag;

return true; }

return false; }

public void überweiseGeldAn(double betrag, Konto ziel) { if(this.geldAbheben(betrag) && betrag > 0)

ziel.geldEinzahlen(betrag); }

}

5. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 11/12

(12)

Einführung in die Programmierung: by André Karge,Übung - Packages, Kapselung Bauhaus-Universität Weimar

Kapselung

class Konto { double geld;

public Konto() {...} // Constructor public void überweiseGeldAn(double geld,

Konto ziel) { ziel.geld += geld;

this.geld -= geld;

} }

Direkter Zugriff auf das Geld in den Kontos

Ein Kontoinhaber kann demnach den Kontostand von jedem anderen Konto einsehen

schlecht!

public Konto() {...} // Constructor

public boolean geldEinzahlen(double betrag) { if(betrag > 0) { // check geld nicht negativ

this.geld += betrag; return true;

}

return false; }

public boolean geldAbheben(double betrag) { // verschiedene checks

if(betrag > 0 && this.geld - betrag >= 0) { this.geld -= betrag;

return true; }

return false; }

public void überweiseGeldAn(double betrag, Konto ziel) { if(this.geldAbheben(betrag) && betrag > 0)

ziel.geldEinzahlen(betrag); }

}

Einführung in die Programmierung | WS19/20 | André Karge 11/12

(13)

Kapselung

class Konto { double geld;

public Konto() {...} // Constructor public void überweiseGeldAn(double geld,

Konto ziel) { ziel.geld += geld;

this.geld -= geld;

} }

Direkter Zugriff auf das Geld in den Kontos

Ein Kontoinhaber kann demnach den Kontostand von jedem anderen Konto einsehen

schlecht!

class Konto {

private double geld; // information hiding public Konto() {...} // Constructor

public boolean geldEinzahlen(double betrag) { if(betrag > 0) { // check geld nicht negativ

this.geld += betrag;

return true;

}

return false;

}

public boolean geldAbheben(double betrag) { // verschiedene checks

if(betrag > 0 && this.geld - betrag >= 0) { this.geld -= betrag;

return true;

}

return false;

}

public void überweiseGeldAn(double betrag, Konto ziel) { if(this.geldAbheben(betrag) && betrag > 0)

ziel.geldEinzahlen(betrag);

} }

5. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 11/12

(14)

Fragen?

Einführung in die Programmierung | WS19/20 | André Karge 12/12

Referenzen

ÄHNLICHE DOKUMENTE

Es arbeitete aber schon 1657 im Stifte ein leider ungenannter Bildhauer, für den der Abt durch Christophorus Galprunner, Scriba et Caupo, Schreiber und Gastgeb, zweimal

Form von beruflicher Aus- und Weiterbildung 97 V. Die Berechnung des Ueberschusses 98 a) Das Familieneinkommen 98 b) Die Abzüge 99 aa) Während des Zusammenlebens 99 aaa) Allgemeines

Wir erklären, dass wir die Verpfän- dung beachten, vorrangige oder gleichrangige Rechte Dritter nicht vorliegen, auf die Gel- tendmachung eigener Rechte,

a) Die Trägerschaft ist verpflichtet, die Sportanlage der Öffentlichkeit und allen nicht ge- winnorientierten Benutzergruppen unentgeltlich oder zu höchstens kostendeckenden

Der Regierungsrat wird beauftragt, in der Ausführungsverordnung zum Einführungsgesetz zum Bundesgesetz über die Ergänzungsleistungen zur Alters-, Hinterlassenen- und

Stellen wir uns folgende Aufgabe vor: Es soll eine Zahl oder mehrere Zahlen auf der Zahlengerade bestimmt werden, deren Abstand von Null gleich 3 ist... Abstände

Zur Beantwortung dieser Frage erweitern wir zun¨achst Definition 2 (erste und zweite Hauptlage einer Gerade) und wenden hernach Satz 3 (Satz vom rechten Winkel) an:..

Eine kleine, an einem Faden der L¨ ange l aufgeh¨ angte Kugel der Masse m wird zun¨ achst so ausgelenkt, dass der Faden einen rechten Winkel mit der Vertikalen bildet, und