Git Product home page Git Product logo

cprog-td1's Introduction

Compléments de programmation - TD 1

Remarques préliminaires

  • Pour l'ensemble des TDs, vous créerez un compte individuel sur github si vous n'en possédez pas déjà un. Vous nommerez ce compte de la façon suivante: uvsq<MonNuméroÉtudiant>. Par exemple, pour un étudiant de numéro 21601234, le compte sera uvsq21601234.
  • Les commandes git sont à taper en ligne de commande dans un shell.
  • Vous pouvez utiliser l'IDE de votre choix. Sur le cartable numérique, Eclipse, IntelliJ IDEA et Visual Studio Code sont installés.
  • Vous répondrez aux questions directement dans ce fichier en complétant les emplacements correspondants. Ajoutez ensuite ce fichier au dépôt git.

Partie I (à faire durant le TD) : découverte de git

Dans cet exercice, vous créerez une classe Fraction représentant un nombre rationnel et une classe Main qui testera les méthodes de la classe Fraction avec des assertions (cf. Utilisation d'assertions). À chaque étape, consultez le statut des fichiers du projet (git status) ainsi que l'historique (git log).

  1. Sur la forge, créez le dépôt (repository) SimpleFraction; En terme de commits, quelle différence constatez-vous entre cocher une (ou plusieurs) des cases Initialize this repository with et n'en cocher aucune ?

    Répondre ici

    Pour la suite, ne cochez aucune de ces cases.

  2. Localement, configurez git avec votre nom (user.name) et votre email (user.email) (cf. Personnalisation de Git);

    # Répondre ici
  3. Initialisez le dépôt git local pour le projet (cf. Démarrer un dépôt Git);

    # Répondre ici
  4. Dans votre IDE, créez la classe Fraction (vide pour le moment) et la classe Main (avec un simple affichage) dans le projet (cf. Méthode main); Vérifiez que le projet compile et s'exécute dans l'IDE; Validez les changements (cf. Enregistrer des modifications dans le dépôt);

    # Commandes pour valider les changements
  5. Ajoutez la méthode toString à la classe Fraction (cf. Object.toString) qui retournera la chaîne "Je suis une fraction." et modifiez la classe Main en conséquence; Validez les changements;

    // Code pour tester toString
  6. Publiez vos modifications sur le dépôt distant (cf. Travailler avec des dépôts distants); Vous utiliserez le protocole https pour cela; Vérifiez avec le navigateur;

    # Commandes pour publier les modifications
  7. Sur la forge, ajoutez un fichier de documentation README.md. Quelle syntaxe est utilisée pour ce fichier ?

    Répondre ici

  8. Récupérez localement les modifications effectuées sur la forge.

    # Répondre ici
  9. Ajoutez les répertoires et fichiers issus de la compilation aux fichiers ignorés par git (cf. .gitignore pour Java);

    # Copier ici le contenu de `.gitignore`
  10. Retirez les fichiers de configuration de l'IDE du projet;

    # Répondre ici

    Ajoutez-les aux fichiers ignorés par git.

    # Copier ici les modifications de `.gitignore`
  11. Configurez l'accès par clé publique/clé privée à la forge (cf. Connecting to GitHub with SSH).

    Expliquez la procédure de façon synthétique

Partie II (à faire durant le TD) : compléter la classe Fraction

Dans cet partie, vous compléterez les classes Fraction et Main. Un exemple d'interface pour une telle classe est donné par la classe Fraction de la bibliothèque Apache Commons Math.

Vous respecterez les consignes ci-dessous :

  • chaque méthode de Fraction sera testée dans Main avec des assertions (cf. Utilisation d'assertions);
  • à la fin de chaque question, consultez le statut des fichiers du projet (git status) ainsi que l'historique (git log) puis validez les changements.
  1. Ajoutez les attributs représentants le numérateur et le dénominateur (nombres entiers).
    // Déclaration des attributs
  2. Ajoutez les constructeurs (cf. Constructor Declarations) suivants :
    • initialisation avec un numérateur et un dénominateur,
    • initialisation avec juste le numérateur (dénominateur égal à 1),
    • initialisation sans argument (numérateur égal 0 et dénominateur égal à 1),
    // Assertions pour tester les constructeurs (avec toString)
  3. Ajoutez les fractions constantes ZERO (0, 1) et UN (1, 1) (cf. Constants in Java),
    // Déclaration des constantes
  4. Ajoutez une méthode de consultation du numérateur et du dénominateur (par convention, en Java, une méthode retournant la valeur de l'attribut anAttribute est nommée getAnAttribute),
    // Définition des getters
  5. Ajoutez une méthode de consultation de la valeur sous la forme d'un nombre en virgule flottante (méthode doubleValue()) (cf. java.lang.Number),
     // Assertions pour tester la conversion
  6. Ajoutez une méthode permettant l'addition de deux fractions (la méthode add prend en paramètre une fraction et retourne la somme de la fraction courante et du paramètre),
     // Assertions pour tester l'addition
  7. Ajoutez le test d'égalité entre fractions (deux fractions sont égales si elles représentent la même fraction réduite) (cf. java.lang.Object.equals),
     // Assertions pour tester l'égalité
  8. Ajoutez la comparaison de fractions selon l'ordre naturel (cf. java.lang.Comparable).
     // Assertions pour tester la comparaison
  9. Faites hériter votre classe Fraction de la classe java.lang.Number et complétez les méthodes
     // Vérifiez avec le code ci-dessous
     Number aNumber = java.math.BigDecimal.ONE;
     Number anotherNumber = new Fraction(1, 2);
     assert java.lang.Math.abs(aNumber.doubleValue() + anotherNumber.doubleValue() - 1.5) < 1E-8;

Partie III (à faire à la maison) : révisions et perfectionnement shell et IDE

Maîtriser le shell de commandes

L'objectif de cet exercice est de vous faire réviser/découvrir les commandes de base du shell de votre machine. Vous pouvez répondre en utilisant le shell de votre choix (bash, Powershell, …). Pour répondre à ces questions, vous devez effectuer les recherches documentaires adéquates (livre, web, …).

  1. Quel OS et quel shell de commande utilisez-vous ?

    Répondre ici

  2. Quelle commande permet d'obtenir de l'aide ? Donnez un exemple.
    # Répondre ici
  3. Donnez la ou les commandes shell permettant de
    1. afficher les fichiers d'un répertoire triés par taille (taille affichée lisiblement)
      # Répondre ici
    2. compter le nombre de ligne d'un fichier
      # Répondre ici
    3. afficher les lignes du fichier Main.java contenant la chaîne uneVariable
      # Répondre ici
    4. afficher récursivement les fichiers .java contenant la chaîne uneVariable
      # Répondre ici
    5. trouver les fichiers (pas les répertoires) nommés README.md dans une arborescence de répertoires
      # Répondre ici
    6. afficher les différences entre deux fichiers textes
      # Répondre ici
  4. Expliquez en une ou deux phrases le rôle de ces commandes et dans quel contexte elles peuvent être utiles pour un développeur.
    • ssh

      Répondre ici

    • screen/tmux

      Répondre ici

    • curl/HTTPie

      Répondre ici

    • jq

      Répondre ici

Découverte de votre IDE

Dans cet exercice, vous expliquerez en quelques phrases comment vous réalisez les actions ci-dessous dans votre IDE. Vous pouvez choisir l'IDE/éditeur de texte de votre choix. Pour réaliser cette exercice, vous devez bien évidemment vous reporter à la documentations de l'IDE (IntelliJ IDEA, Visual Studio Code, Eclipse, …).

  1. Quels IDE ou éditeurs de texte utilisez-vous pour le développement Java ?

    Répondre ici

    Pour la suite, ne considérez que l'un de vos choix.

  2. Comment vérifier/définir que l'encodage utilisé est UTF-8 ?

    Répondre ici

  3. Comment choisir le JDK à utiliser dans un projet ?

    Répondre ici

  4. Comment préciser la version Java des sources dans un projet ?

    Répondre ici

  5. Comment ajouter une bibliothèque externe dans un projet ?

    Répondre ici

  6. Comment reformater un fichier source Java ?

    Répondre ici

  7. Comment trouver la déclaration d'une variable ou méthode ?

    Répondre ici

  8. Comment insérer un bloc de code prédéfini (snippet) ?

    Répondre ici

  9. Comment renommer une classe dans l'ensemble du projet ?

    Répondre ici

  10. Comment exécuter le programme en lui passant un paramètre en ligne de commande ?

    Répondre ici

  11. Comment déboguer le programme en visualisant le contenu d'une ou plusieurs variables ?

    Répondre ici

  12. Quels paramètres ou fonctionnalités vous semblent particulièrement importants/utiles pour le développement Java ?

    Répondre ici

cprog-td1's People

Contributors

hal91190 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.