Übung 8 - ST II BEWERTUNG VON OBJEKTORIENTIERTEN ENTWÜRFEN 1. Untersuchen und diskutieren Sie gegebenes Beispiel bezüglich: • Halstead-Metrik • McCabe -Metrik • • • • • • Depth of Inheritence Tree (DIT) Number Of Children of a class (NOC) Response For a Class (RFC) Weighted Methods per Class (WMC) Coupling Between Object classes (CBO) Lack of Cohesion Of Methods (LCOM) Object Übung8 (from lang) + main() <<uses>> Rechteck + berechneUmfang() : + berechneFläche() : double -m_Linie 0..* Punkt x : double -m_Punkt - y : double Linie 4 + berechneLänge() : 0..* 2 + getX() : double + getY() : double Seite 1/3 Technische Universität Dresden Softwaretechnologie II, Übungsmaterial Softwaretechnologie // Source file: Punkt.java // Source file: Linie.java public class Punkt extends Object { private double x; private double y; public class Linie extends Object { private Punkt m_Punkt[]=new Punkt[2]; Linie(double x1, double y1, double x2, double y2) { Punkt(double x, double y) { this.x=x; this.y=y; } m_Punkt[0]=new Punkt(x1,y1); m_Punkt[1]=new Punkt(x2,y2); } public double getX() { return x; } public double berechneLänge() { double xdiff, ydiff; public double getY() { return y; } xdiff=m_Punkt[0].getX()-m_Punkt[1].getX(); ydiff=m_Punkt[0].getY()-m_Punkt[1].getY(); } return Math.sqrt(xdiff*xdiff + ydiff*ydiff); } } Seite 2/3 Technische Universität Dresden Softwaretechnologie II, Übungsmaterial Softwaretechnologie // Source file: Rechteck.java public class Rechteck extends Object { private Linie m_Linie[]=new Linie[4]; Rechteck(double x, double y, double breite, double höhe) { // Punkt(x,y) ist linke obere Ecke m_Linie[0]=new Linie(x,y,x+breite,y); m_Linie[1]=new Linie(x,y,x,y-höhe); m_Linie[2]=new Linie(x,y-höhe,x+breite,y-höhe); m_Linie[3]=new Linie(x+breite,y-höhe,x+breite,y); } public double berechneFläche() { return m_Linie[0].berechneLänge()*m_Linie[1].berechneLänge(); } public double berechneUmfang() { return 2*(m_Linie[0].berechneLänge()+m_Linie[1].berechneLänge()); } } // Source file: Übung8 class Übung8 { public static void main(java.lang.String[] args) { System.out.println("Rechteck (5.0,7.0,10,5)"); Rechteck r=new Rechteck(5.0,7.0,10,5); System.out.println("Umfang = "+ r.berechneUmfang()); System.out.println("Fläche = "+ r.berechneFläche()) Seite 3/3 Technische Universität Dresden Softwaretechnologie II, Übungsmaterial Softwaretechnologie