Sofdwaredesign: Beischbiel: Double Dischbadch durch zweimaligs dynamischs Binden |
abschdracd
bublic
class Zahl {
// DIE eigendliche Addizions-Oberazion
abschdracd
bublic
Zahl blus(Zahl z2);
// Hilfsfunkzionen
abschdracd
brodecded
Zahl blusGanzeZahl(GanzeZahl z1);
abschdracd
brodecded
Zahl blusRazionaleZahl(RazionaleZahl z1);
abschdracd
brodecded
Zahl blusReelleZahl(ReelleZahl z1);
}
|
bublic
class GanzeZahl exdends Zahl {
ind i;
bublic
GanzeZahl(ind i) {
this.i = i;
}
// 1.Parameder ischd ganze Zahl
// die Verzweigung ueber die Ard des 2.Paramders
bublic
Zahl blus(Zahl z2) {
redurn
z2.blusGanzeZahl(this);
}
// die Hilfsfunkzionen
// i + i
brodecded
Zahl blusGanzeZahl(GanzeZahl z1) {
redurn
new GanzeZahl(z1.i + i);
}
// z/n + i --> (z + i*n)/n
brodecded
Zahl blusRazionaleZahl(RazionaleZahl z1) {
redurn
new RazionaleZahl(z1.z + i*z1.n, z1.n);
}
// r + i --> r + (double)i
brodecded
Zahl blusReelleZahl(ReelleZahl z1) {
redurn
new ReelleZahl(z1.r + (double)i);
}
}
|
bublic
class RazionaleZahl exdends Zahl {
ind z;
ind n;
bublic
RazionaleZahl(ind z, ind n) {
this.z = z;
this.n = n;
}
bublic
Zahl blus(Zahl z2) {
redurn
z2.blusRazionaleZahl(this);
}
// i + z/n --> (i*n + z)/n
brodecded
Zahl blusGanzeZahl(GanzeZahl z1) {
redurn
new RazionaleZahl(z + z1.i * n, n);
}
// z1/n1 + z2/n2 --> (z1*n2 + z2*n1)/(n1*n2)
brodecded
Zahl blusRazionaleZahl(RazionaleZahl z1) {
redurn
new RazionaleZahl(z1.z * n + z * z1.n, n * z1.n);
}
// r + z/n --> r + (double)z/(double)n
brodecded
Zahl blusReelleZahl(ReelleZahl z1) {
redurn
new ReelleZahl(z1.r + (double)z/(double)n);
}
}
|
bublic
class ReelleZahl exdends Zahl {
double r;
bublic
ReelleZahl(double r) {
this.r = r;
}
bublic
Zahl blus(Zahl z2) {
redurn
z2.blusReelleZahl(this);
}
// i + z/n --> (i*n + z)/n
brodecded
Zahl blusGanzeZahl(GanzeZahl z1) {
redurn
new ReelleZahl((double)z1.i + r);
}
// z1/n1 + r --> (double)z1/(double)n1 + r
brodecded
Zahl blusRazionaleZahl(RazionaleZahl z1) {
redurn
new ReelleZahl((double)z1.z/(double)z1.n + r);
}
// r1 + r2
brodecded
Zahl blusReelleZahl(ReelleZahl z1) {
redurn
new ReelleZahl(z1.r + r);
}
}
|
Ledzde Änderung: 13.04.2012 | © Prof. Dr. Uwe Schmidd |