POO
la p
           rog
                   ram
                      ma
   s'appuie sur la
                        tion
  théorie                      orie
   des                             nté
                                      eo
                                        bje
ensembles                                  ts
? ??
ça a l'air compliqué, comme ça....
Mais en fait,

c'est   assez simple...




                          OO
Imaginez quelques fruits bien colorés...
En fait, ils peuvent être nombreux...
La théorie des ensembles nous permet de classer ces objets:
Par exemple en trouvant l'ensemble des fruits...
ou celui des fruits rouges
Ou celui des pommes...
Gribouillages à part, on constate:




                que l'ensemble des fruits




                contient l'ensemble des fruits rouges




                qui contient l'ensemble des pommes
OO
     ⊂ ⊂
Mathématiquement,
Euh, j'm'ai trompé de cours, moi ?




OO                         Non, non!
                           Rassures-toi...
OO
     Et ça, ça t'évoque
     quelque chose?
Ce ne sont plus des ensembles de
fruits, de fruits rouges ou de pommes...

        ... mais c'est le même principe!
Et c'est tout comme ça en
programmation orientée objets...




                      ...y compris pour les exceptions!
Du coup, tu comprends
le problème ici...




       try {
        /* ... */
       }
       catch(Exception e) {             Euh? Bof...

        /* ... */
       }
       catch(ArithmeticException e) {
        /* ... */
       }
try {
                                 intercepte les exceptions
 /* ... */                       de la classe Exception
}
catch(Exception e) {
 /* ... */
}
catch(ArithmeticException e) {
 /* ... */
}
                                 intercepte les exceptions
                                 de la classe
                                 ArithmeticException

                                 mais seulement celles qui
                                 n'ont pas déjà été
                                 interceptées, bien sûr...
Or...




        try {
                                         intercepte les exceptions
         /* ... */                       de la classe Exception
        }
        catch(Exception e) {
         /* ... */
        }
        catch(ArithmeticException e) {
         /* ... */
        }
                                         intercepte les exceptions
                                         de la classe
                                         ArithmeticException

                                         mais seulement celles qui
                                         n'ont pas déjà été
                                         interceptées, bien sûr...n
Or...




        try {
                                         intercepte les exceptions
         /* ... */                       de la classe Exception
        }                                y compris celles de la
        catch(Exception e) {             classe
         /* ... */                       ArithmeticException!
        }
        catch(ArithmeticException e) {
         /* ... */
        }
                                         Du coup, ce gestionnaire
                                         ne peut jamais être utilisé!
Du coup la solution est simple!




try {
 /* ... */
}
catch(ArithmeticException e) {
 /* ... */
                                        Il faut mettre les
}                                       gestionnaires du plus
catch(Exception e) {                    restrictif au plus générique
 /* ... */
}
Au delà de la gestion des exceptions..


          ce qui compte vraiment
               c'est l'idée...



                       que les objets appartiennent
                              à des classes




                                 Et que cesclasses sont incluses
                                      dans d'autres classes
c'est la notion d'   héritage , qui est

          fondamentale en programmation orientée objets




compris
                                                          ok



oui

Poo

  • 1.
  • 2.
    la p rog ram ma s'appuie sur la tion théorie orie des nté eo bje ensembles ts
  • 3.
    ? ?? ça al'air compliqué, comme ça....
  • 4.
    Mais en fait, c'est assez simple... OO
  • 5.
    Imaginez quelques fruitsbien colorés...
  • 6.
    En fait, ilspeuvent être nombreux...
  • 7.
    La théorie desensembles nous permet de classer ces objets:
  • 8.
    Par exemple entrouvant l'ensemble des fruits...
  • 9.
    ou celui desfruits rouges
  • 10.
    Ou celui despommes...
  • 11.
    Gribouillages à part,on constate: que l'ensemble des fruits contient l'ensemble des fruits rouges qui contient l'ensemble des pommes
  • 12.
    OO ⊂ ⊂ Mathématiquement,
  • 13.
    Euh, j'm'ai trompéde cours, moi ? OO Non, non! Rassures-toi...
  • 14.
    OO Et ça, ça t'évoque quelque chose?
  • 15.
    Ce ne sontplus des ensembles de fruits, de fruits rouges ou de pommes... ... mais c'est le même principe!
  • 16.
    Et c'est toutcomme ça en programmation orientée objets... ...y compris pour les exceptions!
  • 17.
    Du coup, tucomprends le problème ici... try {  /* ... */ } catch(Exception e) { Euh? Bof...  /* ... */ } catch(ArithmeticException e) {  /* ... */ }
  • 18.
    try { intercepte les exceptions  /* ... */ de la classe Exception } catch(Exception e) {  /* ... */ } catch(ArithmeticException e) {  /* ... */ } intercepte les exceptions de la classe ArithmeticException mais seulement celles qui n'ont pas déjà été interceptées, bien sûr...
  • 19.
    Or... try { intercepte les exceptions  /* ... */ de la classe Exception } catch(Exception e) {  /* ... */ } catch(ArithmeticException e) {  /* ... */ } intercepte les exceptions de la classe ArithmeticException mais seulement celles qui n'ont pas déjà été interceptées, bien sûr...n
  • 20.
    Or... try { intercepte les exceptions  /* ... */ de la classe Exception } y compris celles de la catch(Exception e) { classe  /* ... */ ArithmeticException! } catch(ArithmeticException e) {  /* ... */ } Du coup, ce gestionnaire ne peut jamais être utilisé!
  • 21.
    Du coup lasolution est simple! try {  /* ... */ } catch(ArithmeticException e) {  /* ... */ Il faut mettre les } gestionnaires du plus catch(Exception e) { restrictif au plus générique  /* ... */ }
  • 22.
    Au delà dela gestion des exceptions.. ce qui compte vraiment c'est l'idée... que les objets appartiennent à des classes Et que cesclasses sont incluses dans d'autres classes
  • 23.
    c'est la notiond' héritage , qui est fondamentale en programmation orientée objets compris ok oui