This website requires a browser which supports HTML5.
Some elements of this site will not work correctly until you upgrade your browser.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
OOP
Fachklassenkonzept
Inhalt:
-
Ausgangssituation
-
Umsetzung
ohne
OOP
-
Umsetzung
mit
OOP
-
Fachklassenkonzept
-
OOP-Schablone
-
Simulation
des
OOP-Ablaufs
-
Fragen
-
Hinweise
zur
Namensgebung
bei
der
OOP
-
Aufgaben
Zusammenfassung:
Die
vorliegende
Webapp
“OOP_Fachklassenkonzept”
behandelt
anhand
eines
einfachen
Programmbeispiels
die
Vorteile
der
objektorientierten
Programmierung.
Dazu
wird
die
Umsetzung
des
Beispiels
zunächst
ohne
Anwendung
der
objektorientierten
Programmierung
betrachtet.
Danach
erfolgt
der
Vergleich
mit
der
objektorientierten
Programmierung
und
der
Herausstellung
der
Vorteile.
Das
dabei
verwendete
“Fachklassenkonzept”
ist
ein
vereinfachtes
didaktisches
Konzept
zur
Einführung
oder
Wiederholung
der
objektorientierten
Programmierung
und
kann
als
Überleitung
zur
Umsetzung
streng
objektorientiert
modellierter
Anwendungen
betrachtet
werden.
Erforderliche
Vorkenntnisse:
Umgang
mit
der
Java
Entwicklungsumgebung
zur
Erstellung
einfacher
Programme
mit
Startklasse,
einfachen
Datentypen,
einfachen
Berechnungen
und
Benutzerein-
und
Ausgabe.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Es
soll
ein
Programm
entwickelt
werden,
welches
das
Quadrat
des
Eingabewertes
berechnet.
Eingabe:
eingabewert
Verarbeitung:
quadrat
=
eingabewert
*
eingabewert;
Ausgabe:
quadrat
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Starte
Erläut
erung
public
class
Startklasse
{
public
static
void
main(String[]
args)
{
//
Eingabe
double
eingabewert
=
2.0;
double
quadrat
;
//Verarbeitung
quadrat
=
eingabewert
*
eingabewert
;
//
Ausgabe
System.
out
.print(
"Das
Quadrat
von
"
);
System.
out
.print(
eingabewert
);
System.
out
.print(
"
ist
"
);
System.
out
.println(
quadrat
);
}
}
Dadurch
ist
es
nur
sehr
umständlich
möglich
die
Verarbeitung
in
einem
anderen
Projekt
wiederzuverwenden.
Aus
diesem
Grund
wird
die
objektorientierte
Programmierung
eingeführt,
welche
u.A.
die
Ein-/Ausgabe
von
der
Programmlogik
trennt.
Die
nächsten
Folien
beschreiben,
wie
ein
OO-Programm
aufgebaut
ist.
Was
ist
der
Nachteil
dieser
Lösung?
Die
Programmlogik
(Verarbeitung)
und
die
Kommunikation
mit
dem
Anwender
(Ein-/Ausgabe)
sind
nicht
voneinander
getrennt.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Idee:
Jede
Klasse
erfüllt
eine
bestimmte
Aufgabe
im
objektorientierten
Programm.
Dabei
werden
die
Aufgaben
so
verteilt,
dass
jede
Klasse
nur
für
eine
Art
von
Aufgabe
zuständig
ist.
Dadurch
ist
es
möglich
einzelne
Klassen
auszutauschen
oder
in
anderen
Projekten
wiederzuverwenden.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Beispiel:
Startklasse
:
Startet
die
Anwendung
und
initialisiert
die
anderen
Klassen
Fachklasse(n)
:
Enthält
die
Programmlogik.
Häufig
werden
mehrere
Fachklassen
benötigt.
GUI-Klasse
:
Kommuniziert
mit
dem
Anwender
über
eine
grafische
Benutzeroberfläche.
Bei
rein
textbasierten
Anwendungen
übernimmt
die
Startklasse
die
Kommunikation
mit
dem
Anwender
Datenbanklasse(n)
:
Regelt
den
Zugriff
zu
einer
Datenbank.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Die
OOP-Schablone
soll
einen
Überblick
über
die
Grundstruktur
eines
einfachen
objektorientierten
Programms
mit
Startklasse
und
einer
Fachklasse
geben.
Das
Beispielprogramm
berechnet
das
Quadrat
des
Eingabewertes.
Eingabe:
eigenschaft1
Verarbeitung:
eigenschaft2
=
eigenschaft1
*
eigenschaft1;
Ausgabe:
eigenschaft2
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
UML-Diagramm:
grafische
Darstellung
der
Klassenstruktur
Hinweise:
Die
Methoden
zum
setzen
(setEigenschaft1,
setEigenschaft2)
und
lesen
(getEigenschaft1,
getEigenschaft2)
der
Eigenschaftswerte
werden
in
obigen
UML-Diagramm
zur
besseren
Übersicht
nicht
angezeigt.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
public
class
Startklasse
{
public
static
void
main(String[]
args)
{
//
Fachklassenobjekt
Fachklasse
objFK
=
new
Fachklasse();
//
Eingabe
objFK.setEigenschaft1(2.0);
//
Verarbeitung
objFK.rechne();
//
Ausgabe
System.
out
.print(
"Das
Quadrat
von
"
);
System.
out
.print(objFK.getEigenschaft1());
System.
out
.print(
"
ist
"
);
System.
out
.println(objFK.getEigenschaft2());
}
}
2.
ein
neues
Fachklassenobjekt
wird
erzeugt
(instanziiert)
und
dieser
Variablen
zugewiesen.
3.
Aufruf
der
Methode
setEigenschaft1
und
Übergabe
des
Wertes
2.0
an
das
Fachklassenobjekt
…
…
innerhalb
des
Fachklassenobjekts
weist
die
Methode
setEigenschaft1
der
Eigenschaft1
den
übergebenen
Wert
2.0
zu
Starte
Erläut
erung
4.
Aufruf
der
Methode
rechne
im
Fachklassenobjekt.
Dieses
berechnet
das
Quadrat
von
Eigenschaft1
und
speichert
das
Ergebnis
in
Eigenschaft
2
1.
Eine
Variable
mit
dem
Namen
objFK
vom
Typ
Fachklasse
wird
deklariert
und
…
5.
Mit
der
Methode
getEigenschaft1
wird
der
Wert
der
Eigenschaft1
des
Fachklassenobjektes
geholt
und
auf
der
Konsole
mit
System.out.println
ausgegeben
6.
Mit
der
Methode
getEigenschaft2
wird
der
Wert
der
Eigenschaft2
des
Fachklassenobjektes
geholt
und
auf
der
Konsole
mit
System.out.println
ausgegeben
Auf
der
nächsten
Folie
wird
simuliert,
wie
der
Datenaustausch
zwischen
Start-
und
Fachklasse
abläuft
…
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
public
class
Startklasse
{
public
static
void
main(…)
{
//
Fachklassenobjekt
Fachklasse
objFK
=
new
Fachklasse();
//
Eingabe
objFK.setEigenschaft1(2.0);
//
Verarbeitung
objFK.rechne();
//
Ausgabe
System.
out
.print(
"Das
Quadrat
von
"
);
System.
out
.print(objFK.
getEigenschaft1());
System.
out
.print(
"
ist
"
);
System.
out
.println(objFK.
getEigenschaft2());
}
}
Starte
Simulation
public
class
Fachklasse
{
private
double
eigenschaft1
;
public
double
getEigenschaft1()
{
return
eigenschaft1
;
}
public
void
setEigenschaft1(
double
eigenschaft1)
{
this
.
eigenschaft1
=
eigenschaft1;
}
private
double
eigenschaft2
;
public
double
getEigenschaft2()
{
return
eigenschaft2
;
}
public
void
rechne(){
eigenschaft2
=
eigenschaft1
*
eigenschaft1
;
}
}
Das
Quadrat
von
2
ist
4
Auf
der
nächsten
Folie
ist
der
komplette
Quelltext
der
Fachklasse
angegeben…
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
public
class
Fachklasse
{
private
double
eigenschaft1
;
public
double
getEigenschaft1()
{
return
eigenschaft1
;
}
public
void
setEigenschaft1(
double
eigenschaft1)
{
this
.
eigenschaft1
=
eigenschaft1;
}
private
double
eigenschaft2
;
public
double
getEigenschaft2()
{
return
eigenschaft2
;
}
public
void
setEigenschaft2(
double
eigenschaft2)
{
this
.
eigenschaft2
=
eigenschaft2;
}
public
void
rechne(){
eigenschaft2
=
eigenschaft1
*
eigenschaft1
;
}
}
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
enthält
die
Programmlogik
der
kompletten
Anwendung
ist
nicht
unbedingt
erforderlich
übernimmt
bei
rein
textbasierten
Anwendungen
die
Anwenderkommunikation
ist
nicht
die
einzige
Anwendung
die
System.out.println-Befehle
enthalten
sollte
Die
Startklasse…
Vervollständige
so,
dass
die
Aussage
korrekt
ist
Bei
rein
textbasierten
Anwendungen
übernimmt
die
Startklasse
die
Kommunikation
mit
dem
Anwender.
Submit
Answer
Punktestand:
Important
Note:
When
duplicating
questions
using
radio
buttons
you
must
use
the
Next
option
on
the
Radio
Button
Properties
to
assign
a
new
index
number
for
this
group.
Otherwise
this
group
of
buttons
will
display
the
settings
from
the
previous
group
as
it
will
have
the
same
index
number.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
sind
immer
“privat”
deklariert
sind
generell
nicht
erforderlich
dienen
zur
Übergabe
von
Eigenschaftsdaten
an
die
Fachklasse
dienen
zum
Lesen
von
Eigenschaftsdaten
der
Fachklasse
Die
Set-Methoden
einer
Fachklasse…
Vervollständige
so,
dass
die
Aussage
korrekt
ist
Die
Set-Methoden
einer
Fachklasse
dienen
zur
Dateneingabe
zum
Setzen
der
Eigenschaftswerte
der
Fachklasse
und
sind
immer
“public”
deklariert.
Submit
Answer
Punktestand:
Important
Note:
When
duplicating
questions
using
radio
buttons
you
must
use
the
Next
option
on
the
Radio
Button
Properties
to
assign
a
new
index
number
for
this
group.
Otherwise
this
group
of
buttons
will
display
the
settings
from
the
previous
group
as
it
will
have
the
same
index
number.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
sind
immer
“privat”
deklariert
sind
generell
nicht
erforderlich
dienen
zum
Lesen
von
Eigenschaftsdaten
der
Fachklasse
dienen
zur
Übergabe
von
Eigenschaftsdaten
an
die
Fachklasse
Die
Get-Methoden
einer
Fachklasse…
Vervollständige
so,
dass
die
Aussage
korrekt
ist
Die
“public”
deklarierten
Get-Methoden
einer
Fachklasse
dienen
zum
Lesen
der
aufgrund
der
Kapselung
immer
“private”
deklarierten
Eigenschaftswerte
einer
Fachklasse
Submit
Answer
Punktestand:
Important
Note:
When
duplicating
questions
using
radio
buttons
you
must
use
the
Next
option
on
the
Radio
Button
Properties
to
assign
a
new
index
number
for
this
group.
Otherwise
this
group
of
buttons
will
display
the
settings
from
the
previous
group
as
it
will
have
the
same
index
number.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Submit
Answer
Bringe
die
Anweisungen
in
die
richtige
Reihenfolge
so,
dass
das
Ergebnis
sinnvoll
ist
Punktestand:
Important
Note:
To
allow
users
to
change
their
mind,
answers
can
be
dragged
off
once
they’ve
been
dropped,
so
there
is
a
Reset
Score
action
to
adjust
the
score
for
the
object
being
removed.
Bitte
erst
alle
Antworten
zuordnen
-
Zum
Schließen
clicken
-
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Natürlich
sollte
für
die
Klassen,
Eigenschaften
und
Methoden
sinnvolle
Namen
vergeben
werden,
die
deren
Funktion
beschreiben.
Vorschläge
für
das
folgende
Beispiel,
wenn
wir
annehmen,
dass
das
Quadrieren
zur
Berechnung
der
Fläche
eines
Quadrats
dient:
Startklasse
Startklasse
Fachklasse
Quadrat
eigenschaft1
seitenlaenge
eigenschaft2
flaeche
rechne()
berechne_flaeche()
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Es
soll
ein
objektorientiertes
Programm
entwickelt
werden,
das
vom
Anwender
die
Seitenlaenge
eines
Quadrates
einliest
und
dann
die
Fläche
des
Quadrats
ausgibt.
a)
Erstelle
das
zugehörige
UML-Diagramm
b)
Implementiere
das
Projekt
mit
Java
c)
Erweitere
das
UML-Diagramm
und
dann
das
Projekt
um
die
Möglichkeit
den
Umfang
des
Quadrates
zu
berechnen
und
auszugeben.
>
<
M.
Neumann
30.06.2015
OOP:
Fachklassenkonzept
^
Name:
Important
Note:
Use
this
page
as
a
scoreboard
or
as
a
pass
certificate.
To
test
for
a
pass
mark
use
IF
from
the
Programming
tab
and
check
to
see
if
SCORE_VALUE_PERCENT
is
greater
than
your
pass
threshold.
hat
den
Kurs
mit
folgender
Punktzahl
abgeschlossen:
Abschlusszertifikat
Datum:
Punkzahl
Prozent