1 import java.util.Arrays;
2
3
4
5
6
7 class A{
8 private int i;
9 private int j;
10 public A(int a, int b){i=a;j=b;}
11 public int getj(){return j;}
12 public String toString(){
13 return("i="+i+" j="+j);
14 }
15 }
16 class B extends A{
17 private int j;
18 public B(int a, int b, int c){
19 super(a,b);j=c;
20 }
21 public String toString(){
22 return(super.toString()+ " j="+j);
23 }
24
25 }
26
27 abstract class Stat{
28 abstract double f(int n);
29 double somme(int n){
30 double s=0;
31 for(int i=0;i<n;i++)s+=f(n);
32 return s;
33 }
34 double moyenne(int n){
35 return somme(n)/n;
36 }
37 double mediane(int n){
38 double[] tab=new double[n];
39 for(int i=0;i<n;i++)tab[i]=f(i);
40 Arrays.sort(tab);
41 return tab[(int) (n)/2];
42
43 }
44 }
45
46 class StatTab{
47 double[] data;
48 public StatTab(int n){data=new double[n];}
49 public StatTab(double [] t){data=t;}
50 public double somme(){
51 double s=0;
52 for(int i=0;i<data.length;i++)s+=data[i];
53 return s;
54 }
55 public double moyenne(){
56 return somme()/data.length;
57 }
58 public double mediane(){
59 double tmp[]=new double[data.length];
60 for(int i=0; i<data.length;i++)tmp[i]=data[i];
61 java.util.Arrays.sort(tmp);
62 return tmp[(int)(data.length)/2];
63 }
64 }
65 interface Iter{
66 void reset();
67 double suivant();
68 }
69
70 abstract class Fonction implements Iter{
71 int val=0;
72 abstract double f(int n);
73 public void reset(){val=0;}
74 public double suivant(){return f(val++);}
75
76 }
77
78 class VersTabIter extends StatTab{
79 int taille;
80 public VersTabIter(int n, Iter it){
81 super(n);
82 taille = n;
83 it.reset();
84 for(int i=0;i<n;i++) data[i]=it.suivant();
85 }
86
87 }
88 class examen008 {
89 static void main(String[] args) {
90 B b=new B(1,2,3);
91
92 System.out.println(b.getj());
93
94
95
96 A[] ta=new A[10];
97 for(int i=0; i<ta.length;i++){
98 ta[i]=new B(i,i+1,i+2);
99 }
100 System.out.println(ta[1]);
101
102 B[] tb=new B[10];
103 for(int i=0; i<tb.length;i++){
104 tb[i]=new B(i,i+1,i+2);
105 }
106 A[] tab=tb;
107 System.out.println(tab[1]);
108
109 A[] tac = new B[10];
110
111 System.out.println(tac[1]);
112
113
114
115
116
117
118 System.out.println((new Stat() {
119 double f(int n){return n;}}).mediane(10));
120
121 System.out.println(
122 (new VersTabIter(4,
123 new Fonction(){double f(int i){return 2*i;}})).moyenne());
124 }
125 }
126