Sens de l'orientation : Palourde vs Huitre

Attention, gros n'importe quoi inside.

Une nouvelle question existentielle à germé dans nos esprits fertiles. Cette fois-ci, à propos de sens de l'orientation :
Entre le sens de l'orientation de l'huître et celui de la palourde, lequel est le pire ?
Quelqu'un préférant rester dans l'anonymat

À esprit vaillant, ne pas avoir de réponse est impossible. Après de dures recherches, la réponse est apparue !

La palourde, selon la wikipédia, se déplace de 6 mètres par mois. Contrairement à cela, de par sa culture, les huîtres sont statiques, et ne se déplacent jamais.

On peut donc en conclure que, de part sa mobilité bien plus grande, la palourde possède un sens de l'orientation bien plus développé que celui de l'huître. L'insulte
Tu as le sens de l'orientation de l'huître
est donc pire que
Tu as le sens de l'orientation de la palourde

Un nouveau mystère de résolu !

Permalink  |  Commentaires (0)

Astuce Java #2 : abstract et final vs interface et enum

Nouvelle question existentielle (je commence à croire que les questions nous viennent au rythme de une par jour en ce moment...).

Ce fois ci : Quelles sont les combinaisons possible en mélangeant les mots clés abstract et final avec les mots clés interface et enum ?

On pourrait résumer l'intégralité de cette question de cette manière :
Lesquelles de ces différentes combinaisons de mots clés sont autorisées pour déclarer un type ?
abstract final
interface ? ?
enum ? ?

Voici ce à quoi on aurait pu s'attendre :
abstract final
interface Illégal Légal
enum Légal Illégal

Je m'explique :
  • Une interface est par définition abstraite, abstract serait donc bien absurde dans ce cas.
  • Une interface pourrait être finale comme les classes le sont pour interdire l'héritage. On pourrait donc continuer à implémenter une interface, mais on ne pourrait pas en hériter (pour rappel, une interface hérite d'une autre).
  • Une énumération peut contenir des méthodes. Donc pourquoi pas des méthodes abstraites ?
  • Les types "enum" se sont pas extensibles (on ne peut pas les hériter), donc un final ici serait absurde une fois de plus.

Et bien voilà, après tests, ce que l'on obtient :
abstract final
interface Légal Illégal
enum Illégal Illégal

Trois surprises :
  • Il est possible de rendre une interface abstraite. Le comportement de l'interface n'est en rien modifié. D'après la Java Language Specification (Third edition), § 9.1.1.1 :
    Every interface is implicitly abstract. This modifier is obsolete and should not be used in new programs.
    The Java Language Specification, Third Edition, § 9.1.1.1
  • Il n'est pas possible de rendre une interface finale.
  • Il n'est pas possible de mettre des méthodes abstraites dans une énumération.

Je m'attendais pas vraiment à ces résultats, je vais retourner traîner à la recherche d'une explication sur ces points (car explication il doit y avoir).

Permalink  |  Commentaires (1)

Astuce Java #1 : Multi-héritage d'interface

Encore une question existentielle née d'un débat passionné entre Colin et moi. La question cette fois-ci :
Est-ce qu'une interface peut hériter de plusieurs autres interfaces ?
Colin

Question justifiée par les faits suivants :
  • Une classe ne peut hériter que d'une seule autre classe
  • Une classe peut implémenter plusieurs interfaces
  • Une interface hérite d'une autre interface, et n'implémente pas une autre interface

Il semblerais logique que oui, une interface puisse hériter de plusieurs autres interfaces.

Après tests, la logique l'emporte. Une interface peut hériter de plusieurs autres interfaces. Le code suivant est entièrement valide :
package multiextendsinterface;

interface A { public void a(); }
interface B { public void b(); }
interface C extends A, B { public void c(); }

public class Main {
    public static void main(String[] args) {
        C c = new C() {
            public void a() { System.out.println("a"); }
            public void b() { System.out.println("b"); }
            public void c() { System.out.println("c"); }
        };
        c.a();
        c.b();
        c.c();
    }
}
Et la sortie sera la suivante :
a
b
c

A noter dans mon calepin de "choses à se souvenir" : une interface peut bel et bien hériter de plusieurs autres interfaces.

Permalink  |  Commentaires (0)

50 kilomètres de chute libre

Après être rentré de Montpellier vers Nîmes en fin de journée, une nouvelle question s'est imposée dans l'esprit de Colin et le mien :
Serait-il possible de parcourir 50 kilomètres (la distance Nîmes - Montpellier) en moins d'une minute en chute libre ?

Il semblerais que la réponse soit non. Du moins, pas sur Terre.

Prenons la formule suivante :
z = -1/2(g*t*t) + z0
Pour une altitude finale z de 0 mètres, une altitude initiale z0 de 50000 mètres et une gravité g de 9,81 (gravité sur terre), nous obtenons un temps t de 100,9 secondes, soit une minute 40.

Il semble donc impossible de parcourir 50 kilomètres en chute libre sur terre même sans frottements de l'air (qui n'ont pas été pris en compte dans ce calcul).

Prenons maintenant le cas du Soleil.

Toujours avec la même formule initiale
z = -1/2(g*t*t) + z0
Toujours avec une altitude finale z de 0 mètres, une altitude initiale z0 de 50000 mètres et une gravité g de 273,95 (gravité à la surface du soleil), nous nous retrouvons cette fois avec un temps de chute de 19 secondes.

Moralité de l'histoire : il est possible de parcourir la distance Nîmes - Montpellier en moins d'une minute en chute libre à la surface du soleil.

Je dormirais mieux ce soir.

Permalink  |  Commentaires (2)