01 Objekte und Klassen - wvsg.schulen2.regensburg.de · a) Erzeuge ein Objekt der Klasse Roboter...

Preview:

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

Recommended