Faculté des Sciences de Luminy
Programmation Orientée Objets, langage Java
 
Henri Garreta

Exo 7.1

Fonction principale (la même à tous les exercices, en replaçant Version1 par Version2, Version3, etc.)

public class DateEtHeure {
    public static void main(String[] args) {
        new Version1();
    }
}

Fichier Version1.java :

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DateFormat;

public class Version1 extends Frame {
    private DateFormat avecDate = DateFormat.getDateTimeInstance(
                            DateFormat.FULL, DateFormat.MEDIUM, Locale.FRANCE);
    private DateFormat sansDate = DateFormat.getTimeInstance(
                            DateFormat.MEDIUM, Locale.FRANCE);
    Checkbox court;

    class Afficheur extends Panel {
        public Afficheur() {
            setFont(new Font("SansSerif", Font.PLAIN, 24));
        }
        public void paint(Graphics g) {
            Date d = new Date();
            String s = court.getState() ? sansDate.format(d) : avecDate.format(d);
            g.drawString(s, 20, 35);
        }
    }

    public Version1() {
        super("Version 1");
        setSize(500, 100);
        court = new Checkbox("Format court");
        Panel afficheur = new Afficheur();
        Panel commande = new Panel();
        commande.add(court);
        add(afficheur, BorderLayout.CENTER);
        add(commande, BorderLayout.SOUTH);
        setVisible(true);
    }
}

Exo 7.2

Fichier Version2.java :
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DateFormat;

public class Version2 extends Frame {
    private DateFormat avecDate = DateFormat.getDateTimeInstance(
                            DateFormat.FULL, DateFormat.MEDIUM, Locale.FRANCE);
    private DateFormat sansDate = DateFormat.getTimeInstance(
                            DateFormat.MEDIUM, Locale.FRANCE);
    Checkbox court;

    class Afficheur extends Panel {
        public Afficheur() {
            setFont(new Font("SansSerif", Font.PLAIN, 24));
        }
        public void paint(Graphics g) {
            for (;;) {
                Date d = new Date();
                String s = court.getState() ? sansDate.format(d) : avecDate.format(d);
                g.drawString(s, 20, 35);
            }
        }
    }

    public Version2() {
        super("Version 2");
        setSize(500, 100);
        court = new Checkbox("Format court");
        Panel afficheur = new Afficheur();
        Panel commande = new Panel();
        commande.add(court);
        add(afficheur, BorderLayout.CENTER);
        add(commande, BorderLayout.SOUTH);
        setVisible(true);
    }
}

Exo 7.3

Fichier Version3.java :
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DateFormat;

public class Version3 extends Frame {
    private DateFormat avecDate = DateFormat.getDateTimeInstance(
                            DateFormat.FULL, DateFormat.MEDIUM, Locale.FRANCE);
    private DateFormat sansDate = DateFormat.getTimeInstance(
                            DateFormat.MEDIUM, Locale.FRANCE);
    Checkbox court;

    class Afficheur extends Panel {
        public Afficheur() {
            setFont(new Font("SansSerif", Font.PLAIN, 24));
        }
        public void paint(Graphics g) {
            for (;;) {
                Date d = new Date();
                String s = court.getState() ? sansDate.format(d) : avecDate.format(d);
                g.clearRect(0, 0, getSize().width, getSize().height);
                g.drawString(s, 20, 35);
            }
        }
    }

    public Version3() {
        super("Version 3");
        setSize(500, 100);
        court = new Checkbox("Format court");
        Panel afficheur = new Afficheur();
        Panel commande = new Panel();
        commande.add(court);
        add(afficheur, BorderLayout.CENTER);
        add(commande, BorderLayout.SOUTH);
        setVisible(true);
    }
}

Exo 7.4

Fichier Version4.java :
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DateFormat;

public class Version4 extends Frame {
    private DateFormat avecDate = DateFormat.getDateTimeInstance(
                            DateFormat.FULL, DateFormat.MEDIUM, Locale.FRANCE);
    private DateFormat sansDate = DateFormat.getTimeInstance(
                            DateFormat.MEDIUM, Locale.FRANCE);
    Checkbox court;

    class Afficheur extends Panel {
        public Afficheur() {
            setFont(new Font("SansSerif", Font.PLAIN, 24));
        }
        public void paint(Graphics g) {
            for (;;) {
                Date d = new Date();
                String s = court.getState() ? sansDate.format(d) : avecDate.format(d);
                g.clearRect(0, 0, getSize().width, getSize().height);
                g.drawString(s, 20, 35);
                try {
                    Thread.sleep(1000);
                }
                catch(InterruptedException e) {
                }
            }
        }
    }

    public Version4() {
        super("Version 4");
        setSize(500, 100);
        court = new Checkbox("Format court");
        Panel afficheur = new Afficheur();
        Panel commande = new Panel();
        commande.add(court);
        add(afficheur, BorderLayout.CENTER);
        add(commande, BorderLayout.SOUTH);
        setVisible(true);
    }
}

Exo 7.5

Fichier Version5.java :
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DateFormat;

public class Version5 extends Frame {
    private DateFormat avecDate = DateFormat.getDateTimeInstance(
                            DateFormat.FULL, DateFormat.MEDIUM, Locale.FRANCE);
    private DateFormat sansDate = DateFormat.getTimeInstance(
                            DateFormat.MEDIUM, Locale.FRANCE);
    Checkbox court;

    class Afficheur extends Panel {
        public Afficheur() {
            setFont(new Font("SansSerif", Font.PLAIN, 24));
        }
        public void paint(Graphics g) {
            Date d = new Date();
            String s = court.getState() ? sansDate.format(d) : avecDate.format(d);
            g.clearRect(0, 0, getSize().width, getSize().height);
            g.drawString(s, 20, 35);
        }
    }

    public Version5() {
        super("Version 5");
        setSize(500, 100);
        court = new Checkbox("Format court");
        Panel afficheur = new Afficheur();
        Panel commande = new Panel();
        commande.add(court);
        add(afficheur, BorderLayout.CENTER);
        add(commande, BorderLayout.SOUTH);
        setVisible(true);

        Thread t = new Agitateur(afficheur);
        t.start();
    }
}

class Agitateur extends Thread {
    private Component cible;
    public Agitateur(Component cible) {
        this.cible = cible;
    }
    public void run() {
        for (;;) {
            cible.repaint();
            try {
                sleep(1000);
            }
            catch(InterruptedException e) {
            }
        }
    }
}

Exo 7.6

Fichier Version6.java :
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DateFormat;

public class Version6 extends Frame implements Runnable {
    private DateFormat avecDate = DateFormat.getDateTimeInstance(
                            DateFormat.FULL, DateFormat.MEDIUM, Locale.FRANCE);
    private DateFormat sansDate = DateFormat.getTimeInstance(
                            DateFormat.MEDIUM, Locale.FRANCE);
    Checkbox court;
    Panel afficheur;

    class Afficheur extends Panel {
        public Afficheur() {
            setFont(new Font("SansSerif", Font.PLAIN, 24));
        }
        public void paint(Graphics g) {
            Date d = new Date();
            String s = court.getState() ? sansDate.format(d) : avecDate.format(d);
            g.clearRect(0, 0, getSize().width, getSize().height);
            g.drawString(s, 20, 35);
        }
    }
    public void run() {
        for (;;) {
            afficheur.repaint();
            try {
                Thread.sleep(1000);
            }
            catch(InterruptedException e) {
            }
        }
    }
    public Version6() {
        super("Version 6");
        setSize(500, 100);
        court = new Checkbox("Format court");
        afficheur = new Afficheur();
        Panel commande = new Panel();
        commande.add(court);
        add(afficheur, BorderLayout.CENTER);
        add(commande, BorderLayout.SOUTH);
        setVisible(true);

        Thread t = new Thread(this);
        t.start();
    }
}