Upload
ngokhue
View
214
Download
0
Embed Size (px)
Citation preview
Informatik10ObjektorientiertesModellierenundProgrammierenmitJava
1.KlassenundObjekte
Zunächst wollen wir mit Hilfe eines Miniprogramms dieEntwicklungsumgebung BlueJ kennen lernen.
Die Installation von Java und BlueJ ist in der DateiInstallation_Java_jdk_und_BlueJ.pdf im Ordner Material beschrieben.
Unter Informatikern ist es Tradition, zunächst ein Programm zuschreiben, das den Text "Hallo Welt!" auf dem Bildschirm ausgibt.
Informatik10- 1.KlassenundObjekte 2
Informatik10- 1.KlassenundObjekte
ÖffneBlueJ undstarteeinneuesProjektmitdemNamenHalloWelt:
3
Informatik10- 1.KlassenundObjekte
ErzeugeeineneueKlassemitdemNamenHallo.MiteinemDoppelklickaufdasSymbolöffnestdudenEditormitdemJava-QuelltextdeinerKlasse.
4
Informatik10- 1.KlassenundObjekte
LöschedengesamtenvorgegebenenTextundgibdannimEditorfolgendenTextein.AchtedabeigenauaufdieKlammern,ZeichensetzungsowieGroß-undKleinschreibung.
public class Hallo{Stringtext ="HalloWelt!";public Stringausgeben(){return text;
}}
KlickeanschließendaufCompile.DamitwirdderTextineinefürdenComputerverständlicheMaschinenspracheübersetzt.
5
Informatik10- 1.KlassenundObjekte
ErzeugemitderrechtenMaustasteundnew Hallo()einneuesObjekt(Instance)derKlasseHallo.DasObjektwirdinBlueJ imunterenBereichdesFenstersdargestellt.MitderrechtenMaustastekannstdudieMethode ausgeben()aufrufen.SiegibtdenWertdesAttributs textzurück.
6
Informatik10- 1.KlassenundObjekte
QuelltextineinerProgrammiersprache
ÜbersetzendurchdenCompiler Maschinensprache(fürdenComputerverständlich)
Programmiersprache/JavaVirtualMachine
AusführendesProgramms,Ausgabe
ProgrammbeiBedarfverbessern
BeiFehlermeldungen:Programmfehlerverbessern
VorgängeimComputerbeimProgrammieren:
7
Informatik10- 1.KlassenundObjekte 8
EinJavaprogramm bestehtausmehrerenKlassen.
EineKlasse isteineArtBauplan,diefestlegt,welcheAttribute (Farbe,Breite,Höhe,...)undwelcheMethoden (ausgeben(),setzeFarbe(...),...)dieObjektederKlassehabensollen.
VoneinerKlassekannmanverschiedeneObjekte (Instanzen)dieserKlasseerzeugen,diesichinihrenAttributwerten unterscheidenkönnen.
Informatik10- 1.KlassenundObjekte 9
DerlogischeAufbaueinerKlassewirddurcheineKlassenkarteveranschaulicht.
EineKlassenkarteisteinRechteck,dasausdreiBereichenbesteht:
Oben: NamederKlasseMitte: AttributeundDatentypenUnten: Methoden
Inf-10 NTG O O M / O O P – J A V A - G r u n d l a g e n O S t R M i c h a e l G a n s h o r n 1
Wiederholung
In der heutigen Betrachtungsweise der Informatik besteht die Welt aus Objekten. Jedem Objekt liegt ein Bauplan zugrunde, nach dem es erstellt wurde.
• Diesen Bauplan nennt man Klasse. Eine Klasse legt fest, welche Attribute (Farbe, Breite, Höhe, ...) und welche Methoden (speichern(), setzeFarbe(...) ...) solche Objekte haben sollen.
Der logische Aufbau einer Klasse wird in der Regel durcheine sog. Klassen-Karte veranschaulicht. Eine Klassen-Karte ist ein Rechteck, das von oben nach unten aus dreiBereichen besteht:
Oben: Name der Klasse
Mitte: Attribute und Daten-Typen
Unten: Methoden
• Hat man nun mehrere Objekte einer Klasse erzeugt, so können sich diese durch ihre Attribut-Werte (Farbe: ''rot'', Radius: 3cm, …) unterscheiden.
Objekte werden durch eine Objekt-Karteveranschaulicht. Objekt-Karten haben im Vergleich zu Klassen-Karten abgerundete Ecken. Jede Objekt-Karte besteht aus zwei Bereichen:
Oben: Name und Klasse des Objekts
Unten: Attribute und deren Werte
Objekte spricht man immer in Punktnotation an:susi.laecheln()
susi.schlafen(7 Stdunden)
allgemein: Objektname.Methodenaufruf
• Verändernde Methoden bringen das Objekt in einen anderen Zustand:
setzeSchriftgroesse(12)
• Sondierende Methoden geben eine Antwort auf eine Frage
nenneDeinenNamen()
• Übergabe-Parameter kommen in die runden Klammern:
schlafen(7 Stunden)
• Methoden ohne Übergabe-Parameter erkennt man an den leeren Klammern:
laecheln()
M E N S C H
geburtsdatum
name
groesse
schlaeft …
laecheln()
schlafen( dauer )
trinken( was , menge )
...
s u s i : M E N S C H
geburtsdatum = 27.04.1996name = '' Susanne ''groesse = 1.63schlaeft = Nein...
Informatik10- 1.KlassenundObjekte 10
ObjektewerdendurchObjektkartenveranschaulicht.
EineObjektkarteisteinRechteckmitabgerundetenEcken,dasauszweiBereichenbesteht:
Oben: NameundKlassedesObjektsMitte: AttributeundderenWerte
tina :MENSCH
geburtsdatum =29.02.1984name =“Tina“groesse =1.65schlaeft =nein...
Informatik10- 1.KlassenundObjekte 11
ObjektesprichtmaninderPunktnotation an:
Objektname.Methodenaufruf
Beispiele:
tina.laecheln()tina.schlafen(7Stunden)
Informatik10- 1.KlassenundObjekte 12
VerschiedeneArtenvonMethoden:
VeränderndeMethodenbringendasObjektineinenanderenZustand:setzeSchriftgroesse(12)
SondierendeMethodengebenInformationenaus:gibName()
MethodenmitÜbergabeparameterDerWertindenrundenKlammernwirdderMethodeübergeben:schlafen(7)
MethodenohneÜbergabeparametererkenntmanandenleerenrundenKlammernlaecheln()
Informatik10- 1.KlassenundObjekte 13
BeziehungenzwischendenKlassenkannmanineinemeinfachen Klassendiagramm darstellen:
DazunimmtmannurdieoberenTeilederKlassenkarteundverbindetsiedurcheineLinie,dieaussagekräftigbeschriftetwird.
ZusätzlichkannmannochdieKardinalitäten angeben.DiessindZahlen,diebeschreiben,wievieleObjektedereinenKlasseinBeziehungzuderanderenKlassestehen.
Informatik10- 1.KlassenundObjekte
ÖffnedasBlueJ-Projekt„GreifRoboter“.
a) ErzeugeeinObjektderKlasseRoboterundnenneesgreifi.
b) Veranlassegreifi,dieersteKugelzugreifen.
c) Lassegreifi denArmum20° nachrechtsdrehen.
d) Fragegreifi nachderFarbedergegriffenenKugel.
e) Fragegreifi nachdemaktuellenWinkel.
f) Findeheraus,woderWinkel0° ist.
g) SchreibedieMethodenaufrufevonb)bise)inPunktnotationauf.
14
Übung1mitBeispiel-Objekten,Greifroboter
Inf-10 NTG O O M / O O P – J A V A - G r u n d l a g e n O S t R M i c h a e l G a n s h o r n 3
2. Roboter Karol
a) Nenne alle Methoden mit Übergabe-Parametern.
b) Nenne alle sondierenden Methoden.
c) Nenne alle verändernden Methoden.
d) Was geschieht wohl bei den beiden Methoden ROBOTER(...)?Welchen besonderen Namen hat sie?
e) Die Klassenkarte von Karol zeigt keine Attribute.Welche Attribute könnte er haben?
f) Zeichne eine Objekt-Karte von Robot-Karol wie er im Bild gezeigt ist.
g) Kannst du dir eine weitere Klasse vorstellen, zu der die Klasse ROBOTER eine Beziehung aufweist?Zeichne dazu ein Klassen-Diagramm.
3. Übe mit dem Greif-Roboter in BlueJ
a) Erzeuge ein Roboter-Objekt und nenne es greifi.
b) Veranlasse greifi, die erste Kugel zu greifen.
c) Lasse greifi den Arm 20 Grad nach rechts drehen.
d) Frage greifi nach der Farbe der gegriffenen Kugel.
e) Frage greifi nach dem aktuellen Winkel.
f) Finde heraus, wo der Winkel 0° ist.
g) Schreibe die Methodenaufrufe von a) bis f) in Punktnotation auf.
Informatik10- 1.KlassenundObjekte
ÖffnedasBlueJ-Projekt„GreifRoboter“.
a) ZählealleMethodenmitÜbergabeparameterauf.
b) ZählealleMethodenohneÜbergabeparameterauf.
c) ZähleallesondierendenMethodenauf.
d) ZählealleveränderndenMethodenauf.
e) ZuwelchenKlassenhatderRobotereineBeziehung?ZeichnedazueineinfachesKlassendiagramm.
15
Übung2mitBeispiel-Objekten,Greifroboter
Inf-10 NTG O O M / O O P – J A V A - G r u n d l a g e n O S t R M i c h a e l G a n s h o r n 3
2. Roboter Karol
a) Nenne alle Methoden mit Übergabe-Parametern.
b) Nenne alle sondierenden Methoden.
c) Nenne alle verändernden Methoden.
d) Was geschieht wohl bei den beiden Methoden ROBOTER(...)?Welchen besonderen Namen hat sie?
e) Die Klassenkarte von Karol zeigt keine Attribute.Welche Attribute könnte er haben?
f) Zeichne eine Objekt-Karte von Robot-Karol wie er im Bild gezeigt ist.
g) Kannst du dir eine weitere Klasse vorstellen, zu der die Klasse ROBOTER eine Beziehung aufweist?Zeichne dazu ein Klassen-Diagramm.
3. Übe mit dem Greif-Roboter in BlueJ
a) Erzeuge ein Roboter-Objekt und nenne es greifi.
b) Veranlasse greifi, die erste Kugel zu greifen.
c) Lasse greifi den Arm 20 Grad nach rechts drehen.
d) Frage greifi nach der Farbe der gegriffenen Kugel.
e) Frage greifi nach dem aktuellen Winkel.
f) Finde heraus, wo der Winkel 0° ist.
g) Schreibe die Methodenaufrufe von a) bis f) in Punktnotation auf.
Informatik10- 1.KlassenundObjekte
ÖffnedasBlueJ-Projekt„JavaKarol“.
a) ErzeugeeinObjektderKlasseWELTmitBreite10,Länge10undHöhe5.Nennesiewelt1.
b) ErzeugeeinObjektderKlasseROBOTER,nenneesrob undsetzerob inwelt1.
c) NenneallesondierendenundalleveränderndenMethoden.
d) WodurchunterscheidensichimQuelltextdiebeidenMethodenROBOTER(...)wesentlichvondenanderenMethoden?Wasbewirkensie?
e) DieKlasseROBOTERzeigtkeineAttribute(siewerdenvoneinernichtsichtbarenKlassegeerbt).WelcheAttributekönntesiehaben?
f) ZeichneeineObjektkartevonrob,sowieerimBildgezeichnetist.
16
Übung3mitBeispiel-Objekten,JavaKarol
Informatik10- 1.KlassenundObjekte 17
FürAttributegibtesverschiedeneDatentypen.WichtigeDatentypeninJavasind:
Datentyp Bedeutung Beispiele
int integer,ganzeZahl 27;0;-1024
double rationaleZahl -3.14;5.0E+9
char character,Zeichen ʹeʹ;ʹDʹ;ʹ5ʹ;
String Zeichenkette ʺHalloWelt!ʺ;ʺ27ʺ;ʺeʺ;ʺ ʺ;
boolean logischeVariable true;false;4<5;4==5;4!=5;
Informatik10- 1.KlassenundObjekte
ÖffnedasBlueJ-Projekt„alphaFormen_Zeichnung_KoSy“.
a) ErzeugeeinObjektderKlasseKREISundnenneessonne.FärbeesgelbundverschiebeesinderZeichnung.ErforschedabeidasKoordinatensystem.
b) ErzeugeeinObjektderKlasseRECHTECK,nenneeswand undfärbeeshellgrau.
c) ErzeugeeinObjektderKlasseDREIECK,nenneesdach undfärbeesgrün.
d) ErstelledarauseinHausmitSonneähnlichwieinderAbbildung.
e) NotierediebenötigtenMethodenaufrufeinPunktnotation.
18
Übung4:Objekte,Klassen,Datentypen
Informatik10- 1.KlassenundObjekte
ÖffnedasBlueJ-Projekt„alphaFormen_Zeichnung_KoSy“.
a) ÖffnedieKlasseZEICHNUNGundsiehdirdenJavacode inRuhean.HastduFragen?
b) SchreibenunnachdenZeilen//...undlegstihrAussehenfest//(Fachsprache:initialisierenderAttribute)dieMethodenaufrufe,dieduinderÜbung4notierthast.BeendejedeZeilemiteinemStrichpunkt.KlickenachjederZeileaufcompile (übersetzen)undverbesseregegebenenfallsdeineFehler.
c) ErzeugeeinneuesObjektderKlasseZEICHNUNG.Siehtessoaus,wieduwolltest?BesserebeiBedarfnach.
19
Übung5:Objekte,Klassen,Javacode schreiben
Informatik10- 1.KlassenundObjekte
ÖffnedasBlueJ-Projekt„alphaFormen“.ErstelleindiesemProjekteineneueKlassemitdemNamenBALLundöffnedenEditor.LöschedengesamtenvorgegebenenQuelltextundschreibeimEditorfolgendenJava-Code:
public class BALL{ int radius; String farbe;
}
20
EigeneKlassenerstellen
Informatik10- 1.KlassenundObjekte
ErzeugeeinObjektderKlasseBALLundöffnedenObjektinspektor(DoppelklickaufdasObjektsymboloderrechteMaustasteundinspect)
21
EigeneKlassenerstellen
Informatik10- 1.KlassenundObjekte
DieAttributeradius undfarbe habendieStandardwerte0bzw.“null“.
Diesliegtdaran,dasswirAttributenurdeklariert (bestellt,beantragt),abernochnichtinitialisiert haben,alsoihnennochkeineWertezugewiesenhaben.
DieskannbeieinemneuenObjektmiteinerbesonderenMethode,demKonstruktor,erledigtwerden.
DenKonstruktorruftmanauchauf,wennmanmitnew BALL()einneuesObjekterzeugt.
22
EigeneKlassenerstellen,Konstruktor
Informatik10- 1.KlassenundObjekte
ErgänzenunimQuelltextdenKonstruktor:
ErzeugeeinneuesObjektundprüfeimObjektinspektor,obdieAttributedievondirprogrammiertenWertehaben.
23
EigeneKlassenerstellen,Konstruktor
public class BALL{ int radius; String farbe;
public BALL(){ this.radius = 10; this.farbe = "weiss";
}}
KonstruktorderKlasseBALL
DasWort“this“sprichtdasaktuelleObjektderKlassean.MankönnteesindiesemBeispielauchweglassen.
EineKlassekannmehrereKonstruktorenbesitzen:
ErzeugeauchmitdiesemKonstruktoreinneuesObjektundprüfeimObjektinspektor.
public class BALL{ int radius; String farbe;
public BALL(int radiusNeu, String farbeNeu){this.radius = radiusNeu;this.farbe = farbeNeu;
}}
Informatik10- 1.KlassenundObjekte 24
EigeneKlassenerstellen,Konstruktor
KonstruktormitÜbergabeparameter
DasWort“this“sprichtwiederdasaktuelleObjektderKlassean.AuchindiesemBeispielkönntemanesweglassen,esverdeutlichtaberdieZugehörigkeitderAttribute.
Informatik10- 1.KlassenundObjekte 25
ImKopfderKlassewerdenAttributedeklariert (bestellt,beantragt).
public class BALL{ int radius; String farbe;
//... }
Informatik10- 1.KlassenundObjekte 26
DerKonstruktor isteinespezielleMethode,inderAttribute initialisiert,d.h.ihnenWertezugewiesen,werden.
MitdemWortthis sprichtmandasakuelle ObjektderKlassean.
DerNamedesKonstruktorsmussgenausogeschriebenwerdenwiederKlassenname.
ErbekommtamEnderundeKlammern,umihnalsMethodezukennzeichnen.
public BALL(){ this.radius = 10; this.farbe = "weiss";
}
public class BALL{ int radius; String farbe;
public BALL(){ this.radius = 10; this.farbe = "weiss";
}
public BALL(int radiusNeu, String farbeNeu){this.radius = radiusNeu;this.farbe = farbeNeu;
}}
Informatik10- 1.KlassenundObjekte 27
EinKlassekannmehrereKonstruktorenbesitzen.EinKonstruktorkannauchÜbergabeparameter haben.
Konstruktor1
Konstruktor2
Informatik10- 1.KlassenundObjekte 28
DerKonstruktorwirdmitdemnew-Operatoraufgerufen,wennmaneinneuesObjektderKlasseerzeugenmöchte.z.B.new BALL() oder new BALL(20, “blau“)
Informatik10- 1.KlassenundObjekte
SchreibeanalogzurKlasseBALLeineweitereKlasseWAND.
DeklarieredieAttributehoehe, breite undfarbe.
InitialisieredieAttributeimKonstruktormitdenWerten230, 40 und“grau“.
SchreibeeinenzweitenKonstruktormitÜbergabeparameter.
ErzeugeeinObjektvonWANDundüberprüfedieWerte.
29
Übung6:EigeneKlassenerstellen,KlasseWAND
Informatik10- 1.KlassenundObjekte
DieKlasseBALLsolleinesondierendeMethodehaben,diedenRadiusdesObjektsausgibt:
ErgänzeinderKlasseBALLdenQuelltext:
30
EigeneKlassenerstellen,sondierendeMethoden
public int gibRadius(){return radius;
}
Informatik10- 1.KlassenundObjekte
ErgänzedieKlassenBALLundWANDumdiesondierendenMethoden:
31
Übung7:EigeneKlassenerstellen,sondierendeMethoden
Informatik10- 1.KlassenundObjekte
DieKlasseBALLsollnunaucheineveränderndeMethodehaben,diedenRadiusdesObjektsaktualisiert:
ErgänzeinderKlasseBALLdenQuelltext:
32
EigeneKlassenerstellen,veränderndeMethoden
public void setzeRadius(int rNeu){radius = rNeu;
}
Informatik10- 1.KlassenundObjekte
ErgänzedieKlassenBALLundWANDumdieveränderndenMethoden:
33
Übung8:EigeneKlassenerstellen,veränderndeMethoden
Informatik10- 1.KlassenundObjekte 34
EinesondierendeMethodehatdenfolgendenAufbau:
public Datentyp-der-Antwort Name-der-Methode () {return Attribut;
}
Beispiel:
public String gibFarbe(){return farbe;
}
Informatik10- 1.KlassenundObjekte 35
EineveränderndeMethodehatdenfolgendenAufbau:
public void Name-der-Methode (Datentyp Parameter) {Attribut = Parameter;
}
Beispiel:
public void setzeHoehe(int hNeu){hoehe = hNeu;
}
Informatik10- 1.KlassenundObjekte
VerwendedasBlueJ Projekt„alphaFormen_Ball_Lsg“.
ImProjektsolleseineweitereKlasseSPIELFELDgeben,diemitObjektenderKlassenBALLundWANDarbeitet:
36
EigeneKlassenerstellen,Referenzattribute
Informatik10- 1.KlassenundObjekte
KlassenkartevonSPIELFELD
37
EigeneKlassenerstellen,Referenzattribute
Informatik10- 1.KlassenundObjekte
KlassenkartevonSPIELFELD
38
EigeneKlassenerstellen,Referenzattribute
EinfacheAttribute
Informatik10- 1.KlassenundObjekte
KlassenkartevonSPIELFELD
39
EigeneKlassenerstellen,Referenzattribute
Referenzattribute
Informatik10- 1.KlassenundObjekte 40
ReferenzattributesindAttribute,diesichaufeineandereKlassebeziehen.
ImGegensatzzueinfachenAttributenwerdenvoneinemReferenzattributObjekteerzeugt.
Beispiel:
public class SPIELFELD {WAND wandLinks; //Referenzattribut...public SPIELFELD(){
wandLinks = new WAND(); //Erzeugen eines Objekts}
Informatik10- 1.KlassenundObjekte
ImplementieredieKlasseSPIELFELDmitdenvorgegebenenAttributen.
DerKonstruktorhatzweiÜbergabeparameterhoehe undbreite.
DerWertvonhoehe solldabeijeweilsanwandLinks undwandRechts weitergegebenwerden.
DerAufrufnew SPIELFELD(50,300)erzeugtalsodieObjektewandLinks undwandRechts,fürdiegiltwandLinks.hoehe=50undwandRechts.hoehe=50.
DieMethodedatenAusgeben()wirdaufdennächstenSeitenerklärt.
41
Übung9:EigeneKlassenerstellen,Referenzattribute
Informatik10- 1.KlassenundObjekte
AnstelledersondierendenMethodensollendiesmaleinigederAttributwerteineinemTextfensterausgegebenwerden.
42
EigeneKlassenerstellen;dieMethodeSystem.out.print(Stringtext)
Informatik10- 1.KlassenundObjekte
DieserfolgtdurchdieMethodeprint oderauchprintln.Beiprintln wirdnachderAusgabeeineneueZeilebegonnen,beiprint nicht.ÜbergabeparameteristjeweilseineZeichenkette.
AufrufderMethode:System.out.println(“Diese Zeichenkette wird ausgegeben.“);
MankannmehrereZeichenkettendurch+miteinanderverbinden.AuchdasLeerzeichenwirdalsZeichenkettebehandelt.
System.out.println(“Ich“ + “ “ + “programmiere.“);
DasselbeErgebniserhältmannatürlichauchso:System.out.println(“Ich “ + “programmiere.“);
43
EigeneKlassenerstellen;dieMethodeSystem.out.print(Stringtext)
Informatik10- 1.KlassenundObjekte
EinfacheDatentypenwiez.B.int ,char oderboolean werdenautomatischalsZeichenketteausgegeben:
System.out.println(“Breite des Spielfeldes: “ + breite);
Liefertz.B.dieAusgabe: BreitedesSpielfeldes:100
NatürlichdarfmanauchsondierendeMethodenaufrufen:
System.out.println(“Höhe wandLinks: “ + wandLinks.gibHoehe());
44
EigeneKlassenerstellen;dieMethodeSystem.out.print(Stringtext)
Informatik10- 1.KlassenundObjekte
ImplementiereinderKlasseSPIELFELDnundieMethode
public void datenAusgeben(){System.out.println(“Breite: “ +breite);...
}
LassmöglichstvieleAttributwerteausgeben.
45
Übung10:EigeneKlassenerstellen,Textausgabe