Exercices de Programmation Orientée Objet en Java - MIS

A quel affichage conduit l'exécution du programme (éventuellement corrigé)? class Test { int i;. Test(Test t) { if(t == null) this.i = ...

Part of the document

Exercice 3.1 - solution : dans la classe Machin, ligne 4, la méthode doit être déclarée abstract. Dans la
classe Bidule, la méthode bidule() n'est pas concrétisée (et la classe n'est pas abstraite).
Exercice 3.2 - solution : le code compile sans problème.
Exercice 3.3 - solution : 3e ligne, il faut initialiser i, qui est une constante (non modifiable). 7e ligne, la
méthode doit ne rien retourner.
Exercice 3.4 - solution : le code compile sans problème.
Exercice 3.5 - solution : ligne 15, Toto est une classe abstraite donc non instanciable. Ligne 23, il n'y a
pas de super constructeur sans paramètre dans Toto. Ligne 27, le i de Toto est privé, donc invisible ici.
Une fois corrigé, l'affichage est 2, 1.
Exercice 3.6 - solution :
public interface List {
public Comparable get(int i);
public void swap(int i, int j);
}
public interface Comparable {
public int compare(Comparable o);
}
public void quickSort(List tab, int a, int b) {
int pivot;
if (b > a) {
pivot = a;
for (int i = a+1; i p.force) p.pointsVie=0;
}
}
public interface Localisable{
public int getX();
public int getY();
public void bouge(int dx, int dy);
}
public class Jedi extends CoteLumineux{
private java.awt.Color sabre;
public Jedi(String n, int p, Color c){
retour au sommaire
super(n,p);
this.sabre = c;
}
public void deplacer(Localisable l, int dx, int dy){
if(this.pointsVie>=10) l.bouge(dx,dy);
}
}
Question e : on créer une interface Rencontre qui ne contient qu'une méthode public void
rencontre(Personnage p) et deux classes RencontreLumineux et RencontreObscur qui implémentent
Rencontre des deux façons prévues. Dans la classe Personnage, on ajoute un attribut de type Rencontre
et on modifie la méthode rencontre pour qu'elle appelle celle de l'attribut.
Exercice 5. 10 - solution :
a.
public interface TabAsso{
public boolean put(Ordonnable o, ObjetNomme on);
public ObjetNomme get(Ordonnable o);
public boolean remove(ObjetNomme on);
public boolean contains(ObjetNomme on);
public int size();
}
b.
import java.util.ArrayList;
public class ListTabAsso implements TabAsso{
class Paire{
private ObjetNomme on;
private Ordonnable o;
Paire(ObjetNomme on, Ordonnable o){
this.on = on; this.o = o;
}
}
private ArrayList tab;
public ListTabAsso(){
this.tab = new ArrayList();
}
private boolean contains(Ordonnable o){
for(Paire p:this.tab){
if(p.o==o) return true;
}
return false;
}
public boolean put(Ordonnable o, ObjetNomme on){
if(this.contains(o)) return false;
else this.tab.add(new Paire(on,o));
retour au sommaire
return true;
}
public ObjetNomme get(Ordonnable o){
for(Paire p:this.tab){
if(p.o==o) return p.on;
}
return null;
}
public boolean remove(ObjetNomme on){
Paire x = null;
for(Paire p:this.tab){
if(p.on==on) x = p;
}
if(x!=null){
this.tab.remove(x);
return true;
}
else return false;
}
public boolean contains(ObjetNomme on){
for(Paire p:this.tab){
if(p.on==on) return true;
}
return false;
}
public int size(){
return this.tab.size();
}
public static void main(String[] t){
ListTabAsso tab = new ListTabAsso();
}
}
c.
public static void main(String[] t){
ListTabAsso tab = new ListTabAsso();
ObjetNomme on = new ObjetNomme();
tab.put(new Ordonnable(),on);
System.out.println("taille "+tab.size());
tab.remove(on);
}
d.
public interface TabAssoLimite extends TabAsso{
public int getTailleMax();
}
retour au sommaire
e.
import java.util.ArrayList;
public class ListTabAssoLimite extends ListTabAsso implements TabAssoLimite{
private int max;
public ListTabAssoLimite(int tailleMax){
super();
this.max = tailleMax;
}
public int getTailleMax(){
return this.max;
}
public boolean put(Ordonnable o, ObjetNomme on){
if(this.size()==this.max) return false;
else return super.put(o,on);
}
}
Exercice 5. 11 - solution :
package database;
public interface Value extends Comparable{
public int compareTo(Value v);
public String toString();
public Value copy();
}
package database;
public class Key implements Value{
private int i;
public Key(int i){
this.i=i;
}
public int compareTo(Value v){
if(v instanceof Key) return this.i-((Key) v).i;
else throw new ClassCastException();
}
public String toString(){
return this.i+"";
}
public Value copy(){
return new Key(this.i);
}
public Key next(){
return new Key(this.i+1);
}
public Key previous(){
return new Key(this.i-1);
retour au sommaire
}
}
package database;
import java.util.List;
import java.util.ArrayList;
public class Table{
protected String[] ids;
protected ArrayList rows;
protected Table(){
this.ids = new String[0];
this.rows = new ArrayList();
}
public Table(List cols){
this.ids = new String[cols.size()];
int i = 0;
for(String s:cols){
this.ids[i] = s;
i++;
}
this.rows = new ArrayList();
}
protected void setIDs(List cols){
this.ids = new String[cols.size()];
int i = 0;
for(String s:cols){
this.ids[i] = s;
i++;
}
this.rows = new ArrayList();
}
public void addRow(List l){
Value[] t = new Value[this.ids.length];
int i = 0;
for(Value v:l){
t[i] = v;
i++;
}
this.rows.add(t);
}
public void removeLastRow(){
this.rows.remove(this.rows.size()-1);
}
protected int getIndex(String id){
for(int i=0;i=minX && p.x=minY && p.y