Objektorientierung in Java Java-Kurs LE 5
2 Objektorientierung in Java Java-Kurs LE 5 Human robert = new Human katrin = new Human("Katrin",
/ 37 3 Picture by Friedemann Wulff-Woesten, robert.talk( „Wozu Objektorientierung?“ );
/ 37 4 Name Alter Haarfarbe Geschlecht robert.talk( „Objekte haben Attribute“ );
/ 37 5 Name Alter Haarfarbe Geschlecht Picture by Joe Huminiak, flickr.com robert.talk( „Objekte haben Attribute“ );
/ 37 6 Klasse Mensch Instanzen robert.talk( „Klasse vs. Instanz“ );
/ 37 7 class Human { String name; int age; } robert.talk( „Klassen definieren“ );
/ 37 8 class Human { String name; int age; static void main(){ Human robert= new Human(); } robert.talk( „Instanzen erzeugen“ );
/ 37 9 class Human { String name; int age; } ____________________________________________ Human robert= new Human(); robert.name= "Robert Lubkoll"; robert.age= 29; System.out.println("Name: " + robert.name); System.out.println("Age: " + robert.age); z.B. HumanTest.java Main-Methode Human.java robert.talk( „Zugriff auf Attribute“ );
/ robert.talk( „Compilieren mehrerer Klassen“ ); Human.java HumanTest.java Compilieren: javac Human.java HumanTest.java Ausführen: java HumanTest
/ Picture by Kevin Cole, flickr.com laufen laufen laufen robert.talk( „Methoden implementieren Verhalten“ );
/ class Human { String name; int age; void celebrateBirthday() { this.age= this.age + 1; if(this.age >=18){ //TODO: sex drugs and rock'n'roll } robert.talk( „Methoden in Klassen definieren“ );
/ Human katrin= new Human(); katrin.age= 30; katrin.celebrateBirthday(); System.out.println(„Age: “ + katrin.age); ___________________________________________ Ausgabe Age: 31 robert.talk( „Methoden einer Instanz aufrufen“ );
/ Ich (Instanz) bin ein Mensch (Klasse), ich habe Beine (Attribute), ich kann laufen (Methoden). robert.talk( „Eselsbrücke“ );
/ Picture by TedsBlog, flickr.com robert.talk( „Konstruktoren“ );
/ class Human { String name; int age; Human() { this.name= "unnamed"; this.age= 0; } Human robert= new Human(); robert.talk( „Standard-Konstruktor“ );
/ class Human { String name; int age; Human( String aName, int anAge ) { this.name= aName; this.age= anAge; } Human robert = new Human("Robert", 29); robert.talk( „Konstruktoren mit Parametern“ );
/ Picture by yousoundhollow, flickr.com robert.talk( „Vorsicht: Kollisionsgefahr!“ );
/ BAAAAD class Human { String name; int age; Human(String name){ name= name; age= 0; } Human(String aName){ this.name= aName; this.age= 0; } GOOOOD robert.talk( „Namespace“ );
/ Picture by pizzo, flickr.com katrin.talk( „Objekte haben eine Identität“ );
/ Human a = new Human(); Human b = a; a.age = a.age + 1; int a = 0; int b = a; a = a + 1; Ergebnis: a ist: 1 b ist: 0 Ergebnis: a.age ist: 1 b.age ist: 1 !!! katrin.talk( „Objekte sind... anders“ );
/ Referenz a Referenz b katrin.talk( „Referenzen“ );
/ Referenz a Referenz b katrin.talk( „Referenzen“ );
/ Referenz a Referenz b katrin.talk( „Referenzen“ );
/ katrin.talk( „NULL-Referenzen“ );
/ Exception in thread "main" java.lang.NullPointerException at Human.shakeHands(Human.java:20) at Human.main(Human.java:26) katrin.talk( „NULL-Referenzen“ );
/ Human nobody; nobody.celebrateBirthday(); Human nobody = null; nobody.celebrateBirthday(); Human somebody = new Human(); somebody.celebrateBirthday(); Human alsoSomebody = somebody; alsoSomebody.celebrateBirthday(); Compilerfehler ! Laufzeitfehler ! OKOK OKOK katrin.talk( „Variablen initialisieren!“ );
/ Picture by Helga Kopp (Helga_262), flickr.com katrin.talk( „Kapselung“ );
/ Human katrin= new Human(); katrin.age= 30; katrin.celebrateBirthday(); System.out.println(„Age: “ + katrin.age); ___________________________________________ Ausgabe Age: 31 katrin.talk( „direkter Variablenzugriff -“ );
/ Human katrin= new Human(); katrin.age= -2; katrin.celebrateBirthday(); System.out.println(„Age: “ + katrin.age); ___________________________________________ Ausgabe Age: -1 katrin.talk( „Kein Schutz vor undefiniertem Zustand!“ );
/ class Human { String name; int age; void setAge(int anAge) { if(anAge > 0){ this.age= anAge; } int getAge(){ return this.age; } katrin.talk( „Getter- und Setter-Methoden“ );
/ Daten katrin.talk( „Idee von Kapselung“ );
/ int age katrin.talk( „Flexibilität durch Kapselung“ );
/ Date birthdate katrin.talk( „Flexibilität durch Kapselung“ );
36 class Human { String name; int age; Human( String aName, int anAge ){ this.name= aName; this.age= anAge; } void celebrateBirthday() { this.age++; } static void main(String [] args) { Human robert = new Human(„Robert“, 29); robert.celebrateBirthday(); }
/ katrin.talk( „Conclusion“ );
38 Danke! Quellen: Piktogramme: IIT Bombay Fotos: