Java 2i002 - 2018-2019 Semestre2

Context

Why use Java?

As of 2016, Java is one of the most popular programming languages in use, particularly for client-server web applications, with a reported 9 million developers.

Principles

  • It must be “simple, object-oriented, and familiar”.
  • It must be “robust and secure”.
  • It must be “architecture-neutral and portable”.
  • It must execute with “high performance”.
  • It must be “interpreted, threaded, and dynamic”. (JVM)

Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of computer architecture.

source

Origin of Java

Sun Microsystems released the first public implementation as Java 1.0 in 1996. Acquired by Oracle in 2010.

source

UE

Planning

Pdf du planning

Dates importantes:

  • mardi 26 mars: petit contrôle (15 minutes) sur les deux derniers cours (héritage, abstract et final)
  • mardi 26 mars: proposition d’une premier diagramme UML de votre projet en binome
  • mardi 02 avril: TME solo durant 1h45
  • lundi 15 avril: rendu du mini-projet avant 11h59m59s
  • mardi 16 avril: oral du mini-projet

Barème

  • note finale (/100) = noteExamen + noteCC
    • noteExamen (/50) : note de l’examen de session
    • noteCC (/50) = noteTD + noteTMEsolo + noteProjet
      • noteTD (/20) : note des interros de TD
      • noteTMEsolo (/20) : note de TME solo
      • noteProjet (/10) : note du mini-projet

Corrections TDs

/!\ A ne pas partager aux étudiants de la prochaine promo, sinon ils ne vont pas en Tds, donc ils ont de mauvaises notes !!!

Mini-projet

Pdf du mini-projet

IMPORTANT:

Le mini-projet doit être rendu avant 11h59m59s.

Vous devez m’envoyer par mail (remi.cadene@lip6.fr) votre projet au format zip qui inclue seulement les fichiers java et le diagramme UML de votre projet dans un seul fichier “uml.pdf”.

Avant de zipper votre dossier de code, il doit être nommé “Nom1Prenom1_Nom2Prenom2” et doit contenir le fichier “uml.pdf”. Ainsi l’archive sera nommée “Nom1Prenom1_Nom2Prenom2.zip” et contiendra tout.

L’objet du mail doit être “LI2002-2018-2019-S2_Nom1Prenom1_Nom2Prenom2”.

Concernant l’oral, nous allons passer parmi vous. Vous allez devoir parler 3 minutes chacun pour nous présenter votre projet et répondre à nos questions. En vous donnera plus d’info sur le barème la semaine prochaine.

Notes

A apprendre par <3

equals

On veut créer une méthode equals afin de comparer deux objets de cette façon:

Ingredient ingr1 = new Ingredient("pain")
Ingredient ingr2 = new Ingredient("nutella")
Ingredient ingr3 = new Ingredient("pain")

System.out.println(ingr1.equals(ingr3)); // true, car "pain" == "pain"
System.out.println(ingr1 == ingr3); // false, car l'adesse ingr1 != ingr3
System.out.println(ingr1 == ingr1); // true, car l'adesse ingr1 == ingr1
System.out.println(ingr1.equals(ingr2)); // false, car "pain" != "nutella"

Donc on doit redéfinir la méthode public boolean equals(Object obj) définie dans la classe Object (lien vers javadoc):

public boolean equals(Object obj) { // signature à respecter /!\

    if (this == obj) { // même instance (adresse mémoire)
        return true;
    }
    if (obj == null) { // si null
        return false;
    }
    if (getClass() != obj.getClass()) { // pas la même classe
        return false;
    }

    Ingredient other = (Ingredient) obj;
    if (nom == null) {
        if (other.nom != null) {
            return false
        }
    } else if (!nom.equals(other.nom)) {
        return false;
    }
    return true;
}

ATTENTION: Si vous définissez public boolean equals(Ingredient ingr), vous ne redéfinissez pas la méthode de Object, donc vous perdez des points. Ici on veut définir une façon la plus discriminante de comparer deux objets.

Editeur de text conseillé

Sublime Text 3