1 / 18

Verteilte Software - Java - Objektorientierte Programmierung 1

Verteilte Software - Java - Objektorientierte Programmierung 1. Klasse. [ public ] [ abstract | final ] class Bezeichner [ extends Klassentyp] [ implements Schnittstellenliste] { [Attribute] [Methoden] [Konstruktoren] [innere Klassen] }.

Download Presentation

Verteilte Software - Java - Objektorientierte Programmierung 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Verteilte Software - Java - Objektorientierte Programmierung 1 Klasse [public] [abstract | final] class Bezeichner [extends Klassentyp] [implements Schnittstellenliste] { [Attribute] [Methoden] [Konstruktoren] [innere Klassen] } Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  2. Verteilte Software - Java - Objektorientierte Programmierung 2 Attribute [public | protected | private] [static] [final] [transient] [volatile] Typ Variablenbezeichner [ = Initialisierung ] { , Variablenbezeichner [ = Initialisierung ] }; Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  3. Verteilte Software - Java - Objektorientierte Programmierung 3 Methode [public | protected | private] [static] [abstract | final] [native] [synchronized] Resultattyp Methodenname ( [Parameterliste] ) [throws Typnamenliste] { Vereinbarungen Anweisungen } Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  4. Verteilte Software - Java - Objektorientierte Programmierung 4 // Klassen und Objekte public class KlaObj { public static void main(String args []) { Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1 ("morgen", 11); a.show(); b.show(); new Klasse1("gestern", 2001).show(); new Klasse1("jetzt").show(); new Klasse1().show(); } } class Klasse1 { int i; String s; Klasse1 (String string, int i) { s = string; this.i = i;} Klasse1 (String string) { s = string; i = 123;} Klasse1 () {s = "default"; i = 0;} void show() { System.out.println (s + ' ' + i + " in Klasse1"); } } heute 47 in Klasse1 morgen 11 in Klasse1 gestern 2001 in Klasse1 jetzt 123 in Klasse1 default 0 in Klasse1 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  5. Verteilte Software - Java - Objektorientierte Programmierung 5 // static Member in Klassen public class Static { static A a; A b = new A ("morgen"); static { a = new A ("heute"); } public static void main(String args []) { System.out.println (A.count + " *** " + A.pi); // System.out.println (A.s); System.out.println (a.count); a.show(); // b.show(); new A().show(); } } class A { static int count = -1; static double pi; String s; static { count++; pi = Math.PI;} A () { this("kein s"); } A (String string) { count++; s = string; } void show() { System.out.print (count + " Objekte von A: hier "); System.out.println (s + '\t' + pi); } } 1 *** 3.141592653589793 1 1 Objekte von A: hier heute 3.141592653589793 2 Objekte von A: hier kein s 3.141592653589793 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  6. Verteilte Software - Java - Objektorientierte Programmierung 6 // Referenzen auf Objekte public class Ref { public static void main(String args []) { Kreis k1 = new Kreis(), k2; k2 = new Kreis (1, 2, 3); k1.show(); k2.show(); change_radius(k1, 4); k1.show(); k2 = k1; k2.show(); k2.move(5, 6); k1.show(); k2.show(); } static void change_radius (Kreis k, int new_radius) { k.r = new_radius; } } class Kreis { int x, y, r; Kreis () { this(0, 0, 1); } Kreis (int mx , int y, int r) { x = mx; this.y = y; this.r = r; } void move( int new_x, int new_y) { x = new_x; y = new_y; } void show() { System.out.print ("Kreis mit Mittelpunkt (" + x + ", " + y); System.out.println (") und Radius " + r); } } Kreis mit Mittelpunkt (0, 0) und Radius 1 Kreis mit Mittelpunkt (1, 2) und Radius 3 Kreis mit Mittelpunkt (0, 0) und Radius 4 Kreis mit Mittelpunkt (0, 0) und Radius 4 Kreis mit Mittelpunkt (5, 6) und Radius 4 Kreis mit Mittelpunkt (5, 6) und Radius 4 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  7. Verteilte Software - Java - Objektorientierte Programmierung 7 // Vererbung public class Vererb { public static void main(String args []) { Rotationskoerper rk; rk = new Rotationskoerper(5, 3); rk.print_art(); rk.show(); Kegel keg = new Kegel(2, 7); keg.print_art(); keg.show(); System.out.println ("Kegelvolumen " + keg. getVolumen()); } } class Rotationskoerper { int durchmesser, hoehe; Rotationskoerper (int d, int h) { durchmesser = d; hoehe = h; } void print_art() { System.out.println ("Rotationskoerper"); } void show() { System.out.print ("mit Durchmesser " + durchmesser); System.out.println (" und Hoehe " + hoehe); } } class Kegel extends Rotationskoerper { Kegel (int d, int h) { super (d, h); } void print_art() { System.out.println ("Kegel"); } double getVolumen() { return Math.PI / 12 * durchmesser * durchmesser * hoehe; } } Rotationskoerper mit Durchmesser 5 und Hoehe 3 Kegel mit Durchmesser 2 und Hoehe 7 Kegelvolumen 7.330382858376184 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  8. Verteilte Software - Java - Objektorientierte Programmierung 8 // Polymorphie public class Polym { public static void main(String args []) { int i; Rotationskoerper rk[] = new Rotationskoerper[3]; rk[0] = new Rotationskoerper(5, 3); rk[1] = new Kegel(6, 4); rk[2] = new Rotationskoerper(7, 5); for (i = 0; i < rk.length; i++) { rk[i].print_art(); rk[i].show(); if (rk[i] instanceof Kegel) System.out.println ("Kegelvolumen " + ((Kegel)rk[1]).getVolumen()); } } } class Rotationskoerper { int durchmesser, hoehe; Rotationskoerper (int d, int h) { durchmesser = d; hoehe = h; } void print_art() { System.out.println ("Rotationskoerper"); } void show() { System.out.print ("\tmit Durchmesser " + durchmesser); System.out.println (" und Hoehe " + hoehe); } } class Kegel extends Rotationskoerper { Kegel (int d, int h) { super (d, h); } void print_art() { System.out.println ("Kegel"); } double getVolumen() { return Math.PI / 12 * durchmesser * durchmesser * hoehe; } } Rotationskoerper mit Durchmesser 5 und Hoehe 3 Kegel mit Durchmesser 6 und Hoehe 4 Kegelvolumen 37.69911184307752 Rotationskoerper mit Durchmesser 7 und Hoehe 5 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  9. Verteilte Software - Java - Objektorientierte Programmierung 9 // Exception public class Except { public static void main(String args[]) { int i; Ausnahme a = new Ausnahme(); for(i = 0; i < 5; i++) { try { a.test(i); } catch (A2 ausn2) {System.out.println(ausn2);} catch (A1 ausn1) {System.out.println(ausn1);} catch (Exception e) {System.out.println(e);} finally {System.out.println("allgemein " + i);} } } } class Ausnahme { void test(int i) throws A1, A2 { if (i == 4 || i == 9) throw new A1 ("Quadratzahl"); else if (i % 3 == 0) throw new A2 ("durch drei teilbar"); } } class A1 extends Exception { A1 (String s) {super (s);} } class A2 extends Exception { A2 (String s) {super (s);} } A2: durch drei teilbar allgemein 0 allgemein 1 allgemein 2 A2: durch drei teilbar allgemein 3 A1: Quadratzahl allgemein 4 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  10. Verteilte Software - Java - Objektorientierte Programmierung 10 abstract class A_Base { abstract void work (); } // Dynamische Objekte und abstrakte Klasse public class Dyn_obj { public static void main(String args[]) { Object obj = AddClass.load (args[0]); if ( obj != null ) ((A_Base)obj).work(); } } class AddClass { static Object load (String cl_name) { Class new_cl = null; try { new_cl = Class.forName(cl_name); } catch (Exception e) { System.out.print ("Klasse "+ cl_name); System.out.println(".class nicht gefunden"); // return null; -- sofortiger Abbruch moeglich } try { return new_cl.newInstance(); } catch (Exception e) { System.out.println("Objekt nicht erzeugt"); return null; } } } class Maus extends A_Base { void work () { System.out.println ("Wo ist der Speck?"); } } class Katze extends A_Base { void work () { System.out.println ("Wo ist die Maus?"); } } C:\>java Dyn_obj Hund Klasse Hund.class nicht gefunden Objekt nicht erzeugt C:\>java Dyn_obj Katze Wo ist die Maus? C:\>java Dyn_obj Maus Wo ist der Speck? Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  11. Verteilte Software - Java - Objektorientierte Programmierung 11 // final - Daten und Methoden public class Final { public static void main(String args []) { Zylinder z; z = new Zylinder(10.0, 2.5, 3.3, 4.4); System.out.println ("Zylindervolumen " + z.getVolumen()); } } class Kreis { double radius, mx, my; final double pi = Math.PI; Kreis (double r, double x, double y) { // pi = 3.14; Can't assign a value to a final variable: pi radius = r; mx = x; my = y; } final double getFlaeche() { return pi * radius * radius; } } class Zylinder extends Kreis { double hoehe; Zylinder (double h, double r, double x, double y) { super (r, x, y); hoehe = h; } /* Final methods can't be overriden. Method double getFlaeche() is final in Kreis double getFlaeche() { return 3.0 * radius * radius; } */ double getVolumen() { return getFlaeche() * hoehe; } } Zylindervolumen 196.34954084936209 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  12. Verteilte Software - Java - Objektorientierte Programmierung 12 public class Inner { int j; Ci1 oi1; Inner() { j = 0; oi1 = new Ci1(); System.out.println("j = " + j); oi1.inc(); System.out.println("j = " + j); } public static void main (String args []) { Ci2 oi2 = new Ci2(); new Inner(); } class Ci1 { Ci11 oi11; Ci1 () {oi11 = new Ci11();} void inc(){j++; oi11.inc();} class Ci11 { void inc(){j++;} } } static class Ci2 { Ci2(){ System.out.println("Ci2 Objekt"); } } } Ci2 Objekt j = 0 j = 2 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  13. Verteilte Software - Java - Objektorientierte Programmierung 13 public class Anonym { String text; public Anonym() { text = "Anonyme Klasse"; new Print().pr(" nur Rahmen "); Print kopf = new Print() { void pr3(String text) { System.out.println("* " + text + " *"); } }; kopf.pr(text); } public static void main(String args[]) { new Anonym(); } } class Print { String rahmen; int breite; Print() { rahmen = "o"; breite = 20; } } void pr1() { for( int i = 0; i < breite; i++) System.out.print(rahmen); System.out.println(); } void pr2() { System.out.print(rahmen); for( int i = 0; i < breite - 2; i++) System.out.print(' '); System.out.println(rahmen); } void pr3(String s) { pr2(); } void pr(String s) { breite = s.length() + 4; pr1(); pr2(); pr3(s); pr2(); pr1();} } oooooooooooooooo o o o o o o oooooooooooooooo oooooooooooooooooo o o * Anonyme Klasse * o o oooooooooooooooooo Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  14. <<class>> IC <<class>> A <<implements>> <<interface>> BIF <<uses>> <<class>> B <<class>> Z <<implements>> <<interface>> IF <<uses>> <<class>> C <<implements>> Verteilte Software - Java - Objektorientierte Programmierung 14 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  15. Verteilte Software - Java - Objektorientierte Programmierung 15 // Interface - Class public class IC { public static void main(String args []) { Z oz = new Z(1, 2, 3, 4); oz.work(); } } class A implements BIF { int a; A (int x) { a = x; } public void show_bif() { System.out.println ("(A " + a + ") bif = " + bif); } } class B implements BIF { int b; B (int x) { b = x; } public void show_bif() { System.out.println ("(B " + b + ") b*i*f = " + bif); } } class C extends A implements IF { int c; C (int x, int y) { super(x); c = y; } public void show_if() { System.out.println ("(C " + a + ") #i#f# c = " + c + bif); } } class Z { A oa; B ob; C oc; Z (int x1, int x2, int x3, int x4) { oa = new A(x1); ob = new B(x2); oc = new C(x3, x4); } void work() { use_bif(oa); use_bif(ob); use_bif(oc); use_if(oc); } void use_bif(BIF obj) { obj.show_bif();} void use_if(IF obj) { obj.show_if();} } interface BIF { char bif = 'X'; void show_bif(); } interface IF extends BIF { void show_if(); } (A 1) bif = X (B 2) b*i*f = X (A 3) bif = X (C 3) #i#f# c = 4X Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  16. Verteilte Software - Java - Objektorientierte Programmierung 16 package Tiere; public abstract class Tier_Base { public abstract void work(); } // Packages import Starter.AddClass; import Tiere.*; public class Verhalten { public static void main(String args[]) { Object obj = AddClass.load (args[0]); if ( obj != null ) ((Tier_Base)obj).work(); } } package Tiere; public class Katze extends Tier_Base { public void work () { System.out.println ("Wo ist die Maus?"); } } package Starter; public class AddClass { public static Object load (String cl_name) { Class new_cl = null; try { new_cl = Class.forName(cl_name); } catch (Exception e) { System.out.print ("Klasse "+ cl_name); System.out.println(".class nicht gefunden") } try { return new_cl.newInstance(); } catch (Exception e) { System.out.println("Objekt nicht erzeugt"); return null; } } } package Tiere; public class Maus extends Tier_Base { public void work () { System.out.println ("Wo ist der Speck?"); } } C:\>java Verhalten Tiere.Hund Klasse Tiere.Hund.class nicht gefunden Objekt nicht erzeugt C:\>java Verhalten Tiere.Katze Wo ist die Maus? C:\>java Verhalten Tiere.Maus Wo ist der Speck? Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  17. Verteilte Software - Java - Objektorientierte Programmierung 17 // Zugriffsrechte import ZA.ZA; public class Zugriff { public static void main (String args []) { ZA a = new ZA((byte)1, (byte)2, (byte)3); ZB b = new ZB(); a.show(); // a.priv++; not accessible from Zugriff // a.prot++; not accessible from Zugriff a.pub++; // a.ohne++; not accessible from Zugriff a.show(); b.dec_2(); // b.dec_3(); No method matching dec_3() found in ZB b.show(); } } package ZA; public class ZA { private byte priv; protected byte prot; public byte pub; byte ohne; public ZA (byte a, byte b, byte c) { priv = a; prot = b; pub = c; ohne = -1; } public ZA () { priv = 0; prot = 8; pub = 1; ohne = -2; } public void show() { System.out.println ("priv = " + priv + " prot = " + prot + " pub = " + pub + "\tohne = " + ohne); } } import ZA.ZA; class ZB extends ZA { // void dec_1 () {priv--;} not accessible from ZB protected void dec_2 () {prot--;} private void dec_3 () {pub--;} // public void dec_4 () {ohne--;} // not accessible from ZB } priv = 1 prot = 2 pub = 3 ohne = -1 priv = 1 prot = 2 pub = 4 ohne = -1 priv = 0 prot = 7 pub = 15 ohne = -2 Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

  18. Verteilte Software - Java - Objektorientierte Programmierung 18 Javaprogramm [packagestatment] {importstatment} {typedeclaration} packagestatment: package packagename; importstatment: import packagenane.*; | import classname; | import interfacename; typedeclaration: classdeclaration | interfacedeclaration | ; classdeclaration: {modifier} class name[extends classname][implements interfacename {, interfacename}] { ... } interfacedeclaration: {modifier} interface name [extends interfacename {, interfacename} ] { ... } Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik

More Related