diff --git a/README.md b/README.md index 8a494e4..6068cf5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,152 @@ -# Tp_ReactNative +# Énoncé semaine 1 +- [Énoncé - Semaine 1](#énoncé-semaine-1) +- [Délai de livraison](#délai-de-livraison) +- [Travail demandé](#travail-demandé) + - [Package 1 : Modèle](#package-1--modèle--stub) + - [Package 2 : Extensions pour les tests en CLI](#package-2--types--extensions-) + - [Premier test : Affichage des stubs](#premier-tests---affichage-des-stubs) +- [Critères d'évaluation](#critères-dévaluation) + +Durant cette première semaine, vous allez créer votre projet, le configurer pour la suite, écrire vos classes du modèle +et définir des données statiques dans un Stub que vous pourrez utiliser pour les prochains TP. + +# Délai de livraison + +Votre travail est à rendre sur une branche tp1 et doit être fusionné à la branche principale lorsqu'il est terminé. +La livraison est attendue à la fin du TP. +Un retard jusqu'à la fin du second ou du troisième TP est autorisé mais se verra attribué des pénalités ( +cf. [Critères d'évaluation](#critères-dévaluation)). + +# Travail demandé + +Durant la première semaine, il vous est demandé de : + +* Créer le projet +* Créer les classes Typescript du modèle +* Créer un Stub pour ce modèle (que vous utiliserez dans le TP suivant) + +## Package 1 : Modèle & Stub + +Voici un diagramme de classes de ce qui est attendu pour votre modèle : + +```mermaid +classDiagram +direction TB + +class Joke { + <> + +type : string + +setup : string + +punchline : string + +image: string + +summary() string + +description(): string +} + +class SampleJoke { + +id: number +} + +class CustomJoke { + +id: string +} + +class JokeFactory { + +createCustomJokes(jsonArray: string)$ CustomJoke[] + +createSampleJokes(jsonArray: string)$ SampleJoke[] +} + +Joke <|-- CustomJoke +Joke <|-- SampleJoke +``` + +En français, vous avez donc à préparer les classes suivantes : + +- ```Joke``` : Classe abstraite qui représente les propriétés communes au blagues du catalogue et aux blagues que vous + allez créer par la suite. Elle contient également une méthode _summary_ qui renvoit uniquement les 25 premiers + caractères de la blague suivis par "..." . + Elle contient également une méthode _description_ qui doit renvoyer le type de la blague suivi par son résumé et le + tout séparé par un tiret (par exemple: "general - What did the fish say wh..."). +- ```SampleJoke``` : Classe qui représente les blagues du catalogue (et qui hérite de ```AbstractJoke```) +- ```CustomJoke``` : Classe qui représente les blagues que vous allez créer par la suite (et qui hérite + de ```AbstractJoke```) +- ```JokeFactory``` : Une classe utilitaire qui vous permettra de convertir les données JSON que vous recevrez de l'API + vers vos classes Typescript. + +Maintenant que notre modèle est prêt, nous allons pouvoir utiliser la classe _JokeFactory_ pour générer un stub de +_SampleJoke_ et un stub +de _CustomJoke_ dans un nouveau fichier que vous pouvez par exemple appeler _JokeStub.ts_. + +## Package 2 : Types (Extensions) + +Pour cette partie, vous allez devoir ajouter un comportement sur les tableaux Typescript afin de définir une +fonction d'affichage que vous aller utiliser pour avoir un aperçu des données de vos stubs depuis l'application. + +Pour celà, vous devez vous appuyer sur la méthode _description_ de la partie précédente afin de n'avoir qu'un condensé +des +informations pour faciliter l'affichage. + +## Premier tests - Affichage des stubs + +Avec la méthode d'extension de la partie 2 de ce tp, vous allez devoir afficher sur la page d'accueil de votre +application +les données de vos deux stubs (Custom et Sample). +Le contenu de chaque stub devra être affiché avec une simple balise `` + +# Critères d'évaluation + +Pour être obtenir les points, vous devez faire valider vos aquis par l'enseignant à l'oral pendant les TP (ou si +l'enseignant le propose, lors d'une évaluation écrite). + +Cette validation doit avoir lieu avant la fin du TP pour obtenir tous les points. +Si la validation a lieu pendant le TP2, une pénalité de 50% est appliquée. +Si elle a lieu pendant le TP3, une pénalité de 75% est appliquée. +Par la suite, plus aucun point n'est attribué. + +**Légende** +symbole | signification +--- | --- +☢️ | si ce critère n'est pas respecté => 0/20 +🎬 | évalué à la fin du TP +1️⃣ | ctirère de niveau 1 : tant que vous n'avez pas obtenu tous les points sur les critères de niveau 1, les points sur les critères suivants ne sont pas attribués +2️⃣ | critère de niveau 2 : tant que vous n'avez pas obtenu tous les points sur les critères de niveau 1 et 2, les points sur les critères de niveau 3 ne sont pas attribués +3️⃣ | critère de niveau 3 + +**Critères** +niveau | description | coeff | pénalités TP2 | pénalités TP3 +--- | --- | --- | --- | --- +☢️ | Le dépôt doit être accessible par l'enseignant | ☢️ +☢️ | un .gitignore doit exister au premier push | ☢️ +🎬 | le projet compile et s'exécute | 4 | 50% | 75% +1️⃣ | j'ai créé le projet en typescript | 2 | 50% | 75% +1️⃣ | j'ai créé un *Package* *Model* | 2 | 50% | 75% +1️⃣ | j'ai créé la classe ```Joke``` | 1 | 50% | 75% +1️⃣ | j'ai créé la classe ```SampleJoke``` | 1 | 50% | 75% +1️⃣ | j'ai créé la classe ```CustomJoke``` | 1 | 50% | 75% +1️⃣ | mes classes sont bien des fichiers Typescript | 1 | 50% | 75% +1️⃣ | ```Joke``` contient des getters publics | 1 | 50% | 75% +1️⃣ | ```Joke``` possède une méthode qui renvoit les 25 premiers caractères de la blague | 1 | 50% | 75% +1️⃣ | ```Joke``` possède un constructeur | 1 | 50% | 75% +2️⃣ | ```Joke``` est accessible par les fichiers typescript | 1 | 50% | 75% +1️⃣ | ```SampleJoke``` contient des getters publics | 1 | 50% | 75% +1️⃣ | ```SampleJoke``` possède un constructeur | 1 | 50% | 75% +2️⃣ | ```SampleJoke``` est accessible par les fichiers typescript | 1 | 50% | 75% +1️⃣ | ```CustomJoke``` contient des getters publics | 1 | 50% | 75% +1️⃣ | ```CustomJoke``` possède un constructeur | 1 | 50% | 75% +2️⃣ | ```CustomJoke``` est accessible par les fichiers typescript | 1 | 50% | 75% +2️⃣ | ```JokeFactory``` est accessible par les fichiers typescript | 1 | 50% | 75% +1️⃣ | ```JokeFactory``` contient une méthode statique permettant de transformer un tableau de JSON au format _string_ en un tableau de _CustomJoke_ | 1 | 50% | 75% +1️⃣ | ```JokeFactory``` contient une méthode statique permettant de transformer un tableau de JSON au format _string_ en un tableau de _SampleJoke_ | 1 | 50% | 75% +2️⃣ | j'ai un stub pour les CustomJoke | 1 | 50% | 75% +2️⃣ | j'ai un stub pour les CustomJoke qui utilise la factory | 2 | 50% | 75% +2️⃣ | j'ai un stub pour les SampleJoke | 1 | 50% | 75% +2️⃣ | j'ai un stub pour les SampleJoke qui utilise la factory | 2 | 50% | 75% +3️⃣ | j'ai déclaré ma méthode d'extension | 2 | 50% | 75% +3️⃣ | j'ai fait l'implémentation de ma méthode d'extension | 2 | 50% | 75% +3️⃣ | j'ai correctement chargé mes extensions | 2 | 50% | 75% +2️⃣ | j'ai affiché le contenu de mon _CustomStub_ | 1 | 50% | 75% +2️⃣ | j'ai affiché le contenu de mon _SampleStub_ | 1 | 50% | 75% +2️⃣ | je sais utiliser `let` | 2 | 50% | 75% +3️⃣ | mon dépôt possède un readme qui apporte quelque chose... | 2 | 50% | 75% +3️⃣ | mon code est documenté | 1 | 50% | 75%